Name: series-workflowt7r7x Phase: Succeeded StartedAt: 2026-07-21 14:16:48 +0000 UTC FinishedAt: 2026-07-21 19:04:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[0] Phase: Succeeded StartedAt: 2026-07-21 14:16:48 +0000 UTC FinishedAt: 2026-07-21 14:34:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[0].run-triage Phase: Succeeded StartedAt: 2026-07-21 14:16:48 +0000 UTC FinishedAt: 2026-07-21 14:34:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1c975de3343cdef506f2eecc833cc1f14b0401c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PTP_1588_CLOCK", "PTP_1588_CLOCK_MOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1c975de3343cdef506f2eecc833cc1f14b0401c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PTP_1588_CLOCK", "PTP_1588_CLOCK_MOCK" ], "series_id": "508a151c-58fe-4c6d-9fb0-af929ff8a020" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ptp_clock_adjtime" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLX01PQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwdHBfY2xvY2tfYWRqdGltZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBwdHBfY2xvY2tfYWRqdGltZWAgd2hlbiBjb252ZXJ0aW5nIGB0eC1cdTAwM2VmcmVxYCB0byBgcHBiYCB1c2luZyBgc2NhbGVkX3BwbV90b19wcGIoKWAuIFRoaXMgb3ZlcmZsb3cgYWxsb3dlZCBieXBhc3NpbmcgdGhlIGBtYXhfYWRqYCBjaGVjay4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGBjbG9ja19hZGp0aW1lYCBzeXNjYWxsIG9uIGEgUFRQIGNsb2NrIGRldmljZS4gRnV6emluZyB0aGlzIGZ1bmN0aW9uIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGNoZWNrIGlzIGNvcnJlY3QgYW5kIG5vIG90aGVyIHNpbWlsYXIgaXNzdWVzIGV4aXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTQyYmMyNWM5MjdlYjc1NTUwMzBhMzY0OWI1ZTdjNjBlY2FiOTBhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjMyOjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jIGIvZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNcbmluZGV4IGQ2ZjU0Y2NhZjkzYmI1Li40MTExMzQyZDY0ZjAzZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9wdHBfY2xvY2suY1xuQEAgLTksNiAmIzQzOzksNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2luaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvb3ZlcmZsb3cuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bvc2l4LWNsb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcHNfa2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG5AQCAtMTU5LDcgJiM0MzsxNjAsMTggQEAgc3RhdGljIGludCBwdHBfY2xvY2tfYWRqdGltZShzdHJ1Y3QgcG9zaXhfY2xvY2sgKnBjLCBzdHJ1Y3QgX19rZXJuZWxfdGltZXggKnR4KVxuIFx0XHRkZWx0YSA9IGt0aW1lX3RvX25zKGt0KTtcbiBcdFx0ZXJyID0gb3BzLVx1MDAzZWFkanRpbWUob3BzLCBkZWx0YSk7XG4gXHR9IGVsc2UgaWYgKHR4LVx1MDAzZW1vZGVzIFx1MDAyNiBBREpfRlJFUVVFTkNZKSB7XG4tXHRcdGxvbmcgcHBiID0gc2NhbGVkX3BwbV90b19wcGIodHgtXHUwMDNlZnJlcSk7XG4mIzQzO1x0XHRsb25nIHBwYjtcbiYjNDM7XHRcdHM2NCB0bXA7XG4mIzQzO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIHNjYWxlZF9wcG1fdG9fcHBiKCkgbXVsdGlwbGllcyAoMSAmIzQzOyBmcmVxKSBieSAxMjUgaW4gczY0O1xuJiM0MztcdFx0ICogcmVqZWN0IGEgLVx1MDAzZWZyZXEgbGFyZ2UgZW5vdWdoIHRvIG92ZXJmbG93IHRoYXQsIHdoaWNoIHdvdWxkXG4mIzQzO1x0XHQgKiBvdGhlcndpc2Ugd3JhcCB0aGUgcmVzdWx0IGJhY2sgaW50byB0aGUgbWF4X2FkaiByYW5nZS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdygoczY0KXR4LVx1MDAzZWZyZXEsIChzNjQpMSwgXHUwMDI2dG1wKSB8fFxuJiM0MztcdFx0ICAgIGNoZWNrX211bF9vdmVyZmxvdyh0bXAsIChzNjQpMTI1LCBcdTAwMjZ0bXApKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVSQU5HRTtcbiYjNDM7XHRcdHBwYiA9IHNjYWxlZF9wcG1fdG9fcHBiKHR4LVx1MDAzZWZyZXEpO1xuIFx0XHRpZiAocHBiIFx1MDAzZSBvcHMtXHUwMDNlbWF4X2FkaiB8fCBwcGIgXHUwMDNjIC1vcHMtXHUwMDNlbWF4X2FkailcbiBcdFx0XHRyZXR1cm4gLUVSQU5HRTtcbiBcdFx0ZXJyID0gb3BzLVx1MDAzZWFkamZpbmUob3BzLCB0eC1cdTAwM2VmcmVxKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvTWFrZWZpbGVcbmluZGV4IDhmNTdmODhlY2FkZDYzLi5kZDczNzZjYzliZjVkMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlXG5AQCAtMSw2ICYjNDM7MSw2IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuIENGTEFHUyAmIzQzOz0gJChLSERSX0lOQ0xVREVTKVxuLVRFU1RfR0VOX1BST0dTIDo9IHRlc3RwdHBcbiYjNDM7VEVTVF9HRU5fUFJPR1MgOj0gdGVzdHB0cCBwdHBfZnJlcV9vdmVyZmxvd1xuIExETElCUyAmIzQzOz0gLWxydFxuIFRFU1RfUFJPR1MgPSBwaGMuc2hcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQxN2MwNTE2NjIyZGE4XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuY1xuQEAgLTAsMCAmIzQzOzEsOTkgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LypcbiYjNDM7ICogUmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgc2NhbGVkX3BwbV90b19wcGIoKSBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgYWxsb3dlZFxuJiM0MzsgKiBhIGNyYWZ0ZWQgY2xvY2tfYWRqdGltZShBREpfRlJFUVVFTkNZKSB0byBieXBhc3MgdGhlIFBUUCBtYXhfYWRqIGNoZWNrLlxuJiM0MzsgKlxuJiM0MzsgKiB0ZXN0cHRwJiMzOTtzIC1mIG9wdGlvbiBzdG9yZXMgdGhlIGFkanVzdG1lbnQgYXMgYW4gaW50IHBwYiBhbmQgY2Fubm90IGV4cHJlc3NcbiYjNDM7ICogdGhlIDY0LWJpdCBzY2FsZWQtcHBtIHZhbHVlcyBuZWVkZWQgdG8gb3ZlcmZsb3cgdGhlIGNvbnZlcnNpb24sIHNvIHRoaXNcbiYjNDM7ICogdGVzdCBjcmFmdHMgc3RydWN0IHRpbWV4LmZyZXEgZGlyZWN0bHkuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIF9HTlVfU09VUkNFXG4mIzQzOyNkZWZpbmUgX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2Vycm5vLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdHJpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzeXMvaW9jdGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzeXMvdGltZXguaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2N0aW1lLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7Li4va3NlbGZ0ZXN0LmhcJiMzNDtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgRkRfVE9fQ0xPQ0tJRChmZClcdCgoY2xvY2tpZF90KSgoKCh1bnNpZ25lZCBpbnQpfihmZCkpIFx1MDAzY1x1MDAzYyAzKSB8IDMpKVxuJiM0MztcbiYjNDM7LyogY2xvY2tfYWRqdGltZSBpcyBub3QgYXZhaWxhYmxlIGluIEdMSUJDIFx1MDAzYyAyLjE0ICovXG4mIzQzOyNpZiAhX19HTElCQ19QUkVSRVEoMiwgMTQpXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbiYjNDM7c3RhdGljIGludCBjbG9ja19hZGp0aW1lKGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWV4ICp0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBzeXNjYWxsKF9fTlJfY2xvY2tfYWRqdGltZSwgaWQsIHR4KTtcbiYjNDM7fVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzO2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBjaGFyICpkZXZpY2UgPSBhcmdjIFx1MDAzZSAxID8gYXJndlsxXSA6IFwmIzM0Oy9kZXYvcHRwMFwmIzM0OztcbiYjNDM7XHRzdHJ1Y3QgcHRwX2Nsb2NrX2NhcHMgY2FwcztcbiYjNDM7XHRzdHJ1Y3QgdGltZXggcmVzdG9yZSA9IHsgMCB9O1xuJiM0MztcdHN0cnVjdCB0aW1leCB0eCA9IHsgMCB9O1xuJiM0MztcdGNsb2NraWRfdCBjbGtpZDtcbiYjNDM7XHRpbnQgZmQsIHJldDtcbiYjNDM7XG4mIzQzO1x0a3NmdF9wcmludF9oZWFkZXIoKTtcbiYjNDM7XHRrc2Z0X3NldF9wbGFuKDEpO1xuJiM0MztcbiYjNDM7XHRpZiAoc2l6ZW9mKHR4LmZyZXEpIFx1MDAzYyA4KVxuJiM0MztcdFx0a3NmdF9leGl0X3NraXAoXCYjMzQ7dGhlIG92ZXJmbG93IG9ubHkgYWZmZWN0cyA2NC1iaXQga2VybmVsc1xcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdGZkID0gb3BlbihkZXZpY2UsIE9fUkRXUik7XG4mIzQzO1x0aWYgKGZkIFx1MDAzYyAwKVxuJiM0MztcdFx0a3NmdF9leGl0X3NraXAoXCYjMzQ7Y2Fubm90IG9wZW4gJXM6ICVzXFxuXCYjMzQ7LCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1xuJiM0MztcdGNsa2lkID0gRkRfVE9fQ0xPQ0tJRChmZCk7XG4mIzQzO1xuJiM0MztcdGlmIChpb2N0bChmZCwgUFRQX0NMT0NLX0dFVENBUFMsIFx1MDAyNmNhcHMpKVxuJiM0MztcdFx0a3NmdF9leGl0X3NraXAoXCYjMzQ7UFRQX0NMT0NLX0dFVENBUFMgb24gJXM6ICVzXFxuXCYjMzQ7LCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1x0aWYgKCFjYXBzLm1heF9hZGopXG4mIzQzO1x0XHRrc2Z0X2V4aXRfc2tpcChcJiMzNDslcyBkb2VzIG5vdCBzdXBwb3J0IGZyZXF1ZW5jeSBhZGp1c3RtZW50XFxuXCYjMzQ7LCBkZXZpY2UpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFJlbWVtYmVyIHRoZSBjdXJyZW50IGZyZXF1ZW5jeS4gIEEgdnVsbmVyYWJsZSBrZXJuZWwgYWNjZXB0cyB0aGVcbiYjNDM7XHQgKiBib2d1cyB2YWx1ZSBiZWxvdyBhbmQgcHJvZ3JhbXMgaXQgaW50byB0aGUgaGFyZHdhcmUsIHNvIHJlc3RvcmUgdGhlXG4mIzQzO1x0ICogb3JpZ2luYWwgYWZ0ZXJ3YXJkcyBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlIGNsb2NrIGNvcnJ1cHRlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoY2xvY2tfYWRqdGltZShjbGtpZCwgXHUwMDI2cmVzdG9yZSkpXG4mIzQzO1x0XHRrc2Z0X2V4aXRfc2tpcChcJiMzNDtjbG9ja19hZGp0aW1lKGdldCkgb24gJXM6ICVzXFxuXCYjMzQ7LCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1x0cmVzdG9yZS5tb2RlcyA9IEFESl9GUkVRVUVOQ1k7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogKDEgJiM0MzsgMTQ3NTczOTUyNTg5Njc2NDEyKSAqIDEyNSA9PSAyXjY0ICYjNDM7IDksIHdoaWNoIG92ZXJmbG93cyBzNjQgaW5cbiYjNDM7XHQgKiBzY2FsZWRfcHBtX3RvX3BwYigpIGFuZCB3cmFwcyB0aGUgcmVzdWx0IHRvIGEgcHBiIG9mIDAuICBBIGtlcm5lbFxuJiM0MztcdCAqIHRoYXQgZG9lcyBub3QgZGV0ZWN0IHRoZSBvdmVyZmxvdyBsZXRzIHRoaXMgYWJzdXJkIGZyZXF1ZW5jeSBwYXN0XG4mIzQzO1x0ICogdGhlIG1heF9hZGogY2hlY2s7IGEgZml4ZWQga2VybmVsIHJlamVjdHMgaXQgd2l0aCAtRVJBTkdFLlxuJiM0MztcdCAqL1xuJiM0MztcdHR4Lm1vZGVzID0gQURKX0ZSRVFVRU5DWTtcbiYjNDM7I2lmIF9fU0laRU9GX0xPTkdfXyBcdTAwM2U9IDhcbiYjNDM7XHR0eC5mcmVxID0gMTQ3NTczOTUyNTg5Njc2NDEyTDtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztcdHJldCA9IGNsb2NrX2FkanRpbWUoY2xraWQsIFx1MDAyNnR4KTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiBlcnJubyA9PSBFQlVTWSkge1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIEEgZnJlZS1ydW5uaW5nIHBoeXNpY2FsIGNsb2NrICh2aXJ0dWFsIGNsb2NrcyBhY3RpdmUpIHJlamVjdHNcbiYjNDM7XHRcdCAqIGZyZXF1ZW5jeSBhZGp1c3RtZW50IHdpdGggLUVCVVNZIGJlZm9yZSB0aGUgb3ZlcmZsb3cgaXMgZXZlblxuJiM0MztcdFx0ICogZXZhbHVhdGVkLCBzbyB0aGUgdGVzdCBjYW5ub3QgcnVuIGhlcmUuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcChcJiMzNDslczogZnJlcXVlbmN5IGFkanVzdG1lbnQgcmV0dXJuZWQgRUJVU1ksIHNraXBwaW5nXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICAgIGRldmljZSk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGtzZnRfdGVzdF9yZXN1bHQocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiBlcnJubyA9PSBFUkFOR0UsXG4mIzQzO1x0XHRcdFx0IFwmIzM0O292ZXJmbG93aW5nIGZyZXF1ZW5jeSBhZGp1c3RtZW50IGlzIHJlamVjdGVkIChyZXQ9JWQgZXJybm89JWQpXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCByZXQsIHJldCBcdTAwM2MgMCA/IGVycm5vIDogMCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBwdXQgdGhlIGZyZXF1ZW5jeSBiYWNrIHRoZSB3YXkgd2UgZm91bmQgaXQgKi9cbiYjNDM7XHRjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZyZXN0b3JlKTtcbiYjNDM7XG4mIzQzO1x0Y2xvc2UoZmQpO1xuJiM0MztcdGtzZnRfZmluaXNoZWQoKTtcbiYjNDM7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DS19NT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHRwX2Nsb2NrX2FkanRpbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBgcHRwX2Nsb2NrX2FkanRpbWVgIHdoZW4gY29udmVydGluZyBgdHgtXHUwMDNlZnJlcWAgdG8gYHBwYmAgdXNpbmcgYHNjYWxlZF9wcG1fdG9fcHBiKClgLiBUaGlzIG92ZXJmbG93IGFsbG93ZWQgYnlwYXNzaW5nIHRoZSBgbWF4X2FkamAgY2hlY2suIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzY2FsbCBvbiBhIFBUUCBjbG9jayBkZXZpY2UuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoZSBvdmVyZmxvdyBjaGVjayBpcyBjb3JyZWN0IGFuZCBubyBvdGhlciBzaW1pbGFyIGlzc3VlcyBleGlzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTQyYmMyNWM5MjdlYjc1NTUwMzBhMzY0OWI1ZTdjNjBlY2FiOTBhNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDIxIDE0OjMyOjQyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMgYi9kcml2ZXJzL3B0cC9wdHBfY2xvY2suYwppbmRleCBkNmY1NGNjYWY5M2JiNS4uNDExMTM0MmQ2NGYwM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jCkBAIC05LDYgJiM0Mzs5LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9pbml0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L292ZXJmbG93LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcG9zaXgtY2xvY2suaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wcHNfa2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKQEAgLTE1OSw3ICYjNDM7MTYwLDE4IEBAIHN0YXRpYyBpbnQgcHRwX2Nsb2NrX2FkanRpbWUoc3RydWN0IHBvc2l4X2Nsb2NrICpwYywgc3RydWN0IF9fa2VybmVsX3RpbWV4ICp0eCkKIAkJZGVsdGEgPSBrdGltZV90b19ucyhrdCk7CiAJCWVyciA9IG9wcy0mZ3Q7YWRqdGltZShvcHMsIGRlbHRhKTsKIAl9IGVsc2UgaWYgKHR4LSZndDttb2RlcyAmYW1wOyBBREpfRlJFUVVFTkNZKSB7Ci0JCWxvbmcgcHBiID0gc2NhbGVkX3BwbV90b19wcGIodHgtJmd0O2ZyZXEpOwomIzQzOwkJbG9uZyBwcGI7CiYjNDM7CQlzNjQgdG1wOwomIzQzOwomIzQzOwkJLyoKJiM0MzsJCSAqIHNjYWxlZF9wcG1fdG9fcHBiKCkgbXVsdGlwbGllcyAoMSAmIzQzOyBmcmVxKSBieSAxMjUgaW4gczY0OwomIzQzOwkJICogcmVqZWN0IGEgLSZndDtmcmVxIGxhcmdlIGVub3VnaCB0byBvdmVyZmxvdyB0aGF0LCB3aGljaCB3b3VsZAomIzQzOwkJICogb3RoZXJ3aXNlIHdyYXAgdGhlIHJlc3VsdCBiYWNrIGludG8gdGhlIG1heF9hZGogcmFuZ2UuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChjaGVja19hZGRfb3ZlcmZsb3coKHM2NCl0eC0mZ3Q7ZnJlcSwgKHM2NCkxLCAmYW1wO3RtcCkgfHwKJiM0MzsJCSAgICBjaGVja19tdWxfb3ZlcmZsb3codG1wLCAoczY0KTEyNSwgJmFtcDt0bXApKQomIzQzOwkJCXJldHVybiAtRVJBTkdFOwomIzQzOwkJcHBiID0gc2NhbGVkX3BwbV90b19wcGIodHgtJmd0O2ZyZXEpOwogCQlpZiAocHBiICZndDsgb3BzLSZndDttYXhfYWRqIHx8IHBwYiAmbHQ7IC1vcHMtJmd0O21heF9hZGopCiAJCQlyZXR1cm4gLUVSQU5HRTsKIAkJZXJyID0gb3BzLSZndDthZGpmaW5lKG9wcywgdHgtJmd0O2ZyZXEpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlCmluZGV4IDhmNTdmODhlY2FkZDYzLi5kZDczNzZjYzliZjVkMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9NYWtlZmlsZQpAQCAtMSw2ICYjNDM7MSw2IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiBDRkxBR1MgJiM0Mzs9ICQoS0hEUl9JTkNMVURFUykKLVRFU1RfR0VOX1BST0dTIDo9IHRlc3RwdHAKJiM0MztURVNUX0dFTl9QUk9HUyA6PSB0ZXN0cHRwIHB0cF9mcmVxX292ZXJmbG93CiBMRExJQlMgJiM0Mzs9IC1scnQKIFRFU1RfUFJPR1MgPSBwaGMuc2gKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uNDE3YzA1MTY2MjJkYTgKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYwpAQCAtMCwwICYjNDM7MSw5OSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyoKJiM0MzsgKiBSZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBzY2FsZWRfcHBtX3RvX3BwYigpIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBhbGxvd2VkCiYjNDM7ICogYSBjcmFmdGVkIGNsb2NrX2FkanRpbWUoQURKX0ZSRVFVRU5DWSkgdG8gYnlwYXNzIHRoZSBQVFAgbWF4X2FkaiBjaGVjay4KJiM0MzsgKgomIzQzOyAqIHRlc3RwdHAmIzM5O3MgLWYgb3B0aW9uIHN0b3JlcyB0aGUgYWRqdXN0bWVudCBhcyBhbiBpbnQgcHBiIGFuZCBjYW5ub3QgZXhwcmVzcwomIzQzOyAqIHRoZSA2NC1iaXQgc2NhbGVkLXBwbSB2YWx1ZXMgbmVlZGVkIHRvIG92ZXJmbG93IHRoZSBjb252ZXJzaW9uLCBzbyB0aGlzCiYjNDM7ICogdGVzdCBjcmFmdHMgc3RydWN0IHRpbWV4LmZyZXEgZGlyZWN0bHkuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBfR05VX1NPVVJDRQomIzQzOyNkZWZpbmUgX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fCiYjNDM7I2luY2x1ZGUgJmx0O2Vycm5vLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0cmluZy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzeXMvaW9jdGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3lzL3RpbWV4LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3RpbWUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3B0cF9jbG9jay5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7Li4va3NlbGZ0ZXN0LmgmIzM0OwomIzQzOwomIzQzOyNkZWZpbmUgRkRfVE9fQ0xPQ0tJRChmZCkJKChjbG9ja2lkX3QpKCgoKHVuc2lnbmVkIGludCl+KGZkKSkgJmx0OyZsdDsgMykgfCAzKSkKJiM0MzsKJiM0MzsvKiBjbG9ja19hZGp0aW1lIGlzIG5vdCBhdmFpbGFibGUgaW4gR0xJQkMgJmx0OyAyLjE0ICovCiYjNDM7I2lmICFfX0dMSUJDX1BSRVJFUSgyLCAxNCkKJiM0MzsjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsKJiM0MztzdGF0aWMgaW50IGNsb2NrX2FkanRpbWUoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXggKnR4KQomIzQzO3sKJiM0MzsJcmV0dXJuIHN5c2NhbGwoX19OUl9jbG9ja19hZGp0aW1lLCBpZCwgdHgpOwomIzQzO30KJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQomIzQzO3sKJiM0MzsJY29uc3QgY2hhciAqZGV2aWNlID0gYXJnYyAmZ3Q7IDEgPyBhcmd2WzFdIDogJiMzNDsvZGV2L3B0cDAmIzM0OzsKJiM0MzsJc3RydWN0IHB0cF9jbG9ja19jYXBzIGNhcHM7CiYjNDM7CXN0cnVjdCB0aW1leCByZXN0b3JlID0geyAwIH07CiYjNDM7CXN0cnVjdCB0aW1leCB0eCA9IHsgMCB9OwomIzQzOwljbG9ja2lkX3QgY2xraWQ7CiYjNDM7CWludCBmZCwgcmV0OwomIzQzOwomIzQzOwlrc2Z0X3ByaW50X2hlYWRlcigpOwomIzQzOwlrc2Z0X3NldF9wbGFuKDEpOwomIzQzOwomIzQzOwlpZiAoc2l6ZW9mKHR4LmZyZXEpICZsdDsgOCkKJiM0MzsJCWtzZnRfZXhpdF9za2lwKCYjMzQ7dGhlIG92ZXJmbG93IG9ubHkgYWZmZWN0cyA2NC1iaXQga2VybmVsc1xuJiMzNDspOwomIzQzOwomIzQzOwlmZCA9IG9wZW4oZGV2aWNlLCBPX1JEV1IpOwomIzQzOwlpZiAoZmQgJmx0OyAwKQomIzQzOwkJa3NmdF9leGl0X3NraXAoJiMzNDtjYW5ub3Qgb3BlbiAlczogJXNcbiYjMzQ7LCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7CiYjNDM7CiYjNDM7CWNsa2lkID0gRkRfVE9fQ0xPQ0tJRChmZCk7CiYjNDM7CiYjNDM7CWlmIChpb2N0bChmZCwgUFRQX0NMT0NLX0dFVENBUFMsICZhbXA7Y2FwcykpCiYjNDM7CQlrc2Z0X2V4aXRfc2tpcCgmIzM0O1BUUF9DTE9DS19HRVRDQVBTIG9uICVzOiAlc1xuJiMzNDssIGRldmljZSwgc3RyZXJyb3IoZXJybm8pKTsKJiM0MzsJaWYgKCFjYXBzLm1heF9hZGopCiYjNDM7CQlrc2Z0X2V4aXRfc2tpcCgmIzM0OyVzIGRvZXMgbm90IHN1cHBvcnQgZnJlcXVlbmN5IGFkanVzdG1lbnRcbiYjMzQ7LCBkZXZpY2UpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBSZW1lbWJlciB0aGUgY3VycmVudCBmcmVxdWVuY3kuICBBIHZ1bG5lcmFibGUga2VybmVsIGFjY2VwdHMgdGhlCiYjNDM7CSAqIGJvZ3VzIHZhbHVlIGJlbG93IGFuZCBwcm9ncmFtcyBpdCBpbnRvIHRoZSBoYXJkd2FyZSwgc28gcmVzdG9yZSB0aGUKJiM0MzsJICogb3JpZ2luYWwgYWZ0ZXJ3YXJkcyBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlIGNsb2NrIGNvcnJ1cHRlZC4KJiM0MzsJICovCiYjNDM7CWlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCAmYW1wO3Jlc3RvcmUpKQomIzQzOwkJa3NmdF9leGl0X3NraXAoJiMzNDtjbG9ja19hZGp0aW1lKGdldCkgb24gJXM6ICVzXG4mIzM0OywgZGV2aWNlLCBzdHJlcnJvcihlcnJubykpOwomIzQzOwlyZXN0b3JlLm1vZGVzID0gQURKX0ZSRVFVRU5DWTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogKDEgJiM0MzsgMTQ3NTczOTUyNTg5Njc2NDEyKSAqIDEyNSA9PSAyXjY0ICYjNDM7IDksIHdoaWNoIG92ZXJmbG93cyBzNjQgaW4KJiM0MzsJICogc2NhbGVkX3BwbV90b19wcGIoKSBhbmQgd3JhcHMgdGhlIHJlc3VsdCB0byBhIHBwYiBvZiAwLiAgQSBrZXJuZWwKJiM0MzsJICogdGhhdCBkb2VzIG5vdCBkZXRlY3QgdGhlIG92ZXJmbG93IGxldHMgdGhpcyBhYnN1cmQgZnJlcXVlbmN5IHBhc3QKJiM0MzsJICogdGhlIG1heF9hZGogY2hlY2s7IGEgZml4ZWQga2VybmVsIHJlamVjdHMgaXQgd2l0aCAtRVJBTkdFLgomIzQzOwkgKi8KJiM0MzsJdHgubW9kZXMgPSBBREpfRlJFUVVFTkNZOwomIzQzOyNpZiBfX1NJWkVPRl9MT05HX18gJmd0Oz0gOAomIzQzOwl0eC5mcmVxID0gMTQ3NTczOTUyNTg5Njc2NDEyTDsKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsJcmV0ID0gY2xvY2tfYWRqdGltZShjbGtpZCwgJmFtcDt0eCk7CiYjNDM7CWlmIChyZXQgJmx0OyAwICZhbXA7JmFtcDsgZXJybm8gPT0gRUJVU1kpIHsKJiM0MzsJCS8qCiYjNDM7CQkgKiBBIGZyZWUtcnVubmluZyBwaHlzaWNhbCBjbG9jayAodmlydHVhbCBjbG9ja3MgYWN0aXZlKSByZWplY3RzCiYjNDM7CQkgKiBmcmVxdWVuY3kgYWRqdXN0bWVudCB3aXRoIC1FQlVTWSBiZWZvcmUgdGhlIG92ZXJmbG93IGlzIGV2ZW4KJiM0MzsJCSAqIGV2YWx1YXRlZCwgc28gdGhlIHRlc3QgY2Fubm90IHJ1biBoZXJlLgomIzQzOwkJICovCiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoJiMzNDslczogZnJlcXVlbmN5IGFkanVzdG1lbnQgcmV0dXJuZWQgRUJVU1ksIHNraXBwaW5nXG4mIzM0OywKJiM0MzsJCQkJICAgICAgZGV2aWNlKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWtzZnRfdGVzdF9yZXN1bHQocmV0ICZsdDsgMCAmYW1wOyZhbXA7IGVycm5vID09IEVSQU5HRSwKJiM0MzsJCQkJICYjMzQ7b3ZlcmZsb3dpbmcgZnJlcXVlbmN5IGFkanVzdG1lbnQgaXMgcmVqZWN0ZWQgKHJldD0lZCBlcnJubz0lZClcbiYjMzQ7LAomIzQzOwkJCQkgcmV0LCByZXQgJmx0OyAwID8gZXJybm8gOiAwKTsKJiM0MzsJfQomIzQzOwomIzQzOwkvKiBwdXQgdGhlIGZyZXF1ZW5jeSBiYWNrIHRoZSB3YXkgd2UgZm91bmQgaXQgKi8KJiM0MzsJY2xvY2tfYWRqdGltZShjbGtpZCwgJmFtcDtyZXN0b3JlKTsKJiM0MzsKJiM0MzsJY2xvc2UoZmQpOwomIzQzOwlrc2Z0X2ZpbmlzaGVkKCk7CiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjg2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgUFRQIENsb2NrIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gaXQuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIHNlcmllcyBhbmQgZmlndXJlIG91dCBpZiBpdCBpbnRyb2R1Y2VzIGFueSBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwmIzM5O3MgZnVuY3Rpb25hbGl0eSB0aGF0IHJlcXVpcmUgdXMgdG8ga2ljayBvZmYgc29tZSBmdXp6aW5nLiBUaGUga2V5IGZpbGUgc2VlbXMgdG8gYmUgYGRyaXZlcnMvcHRwL3B0cF9jbG9jay5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgcHRwX2Nsb2NrX2FkanRpbWUoKWAgZnVuY3Rpb24uCgpGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBwdHBfY2xvY2tfYWRqdGltZSgpYCBhbmQgYWRkaW5nIHNvbWUgb3ZlcmZsb3cgY2hlY2tzIHJlbGF0ZWQgdG8gYHR4LSZndDtmcmVxYCB3aGVuIGB0eC0mZ3Q7bW9kZXNgIGhhcyB0aGUgYEFESl9GUkVRVUVOQ1lgIGJpdCBzZXQuIE9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgKnJlYWwqIGNoYW5nZSwgd2hpY2ggaXMgZ29vZC4gUHJldmVudGluZyB0aGF0IGludGVnZXIgb3ZlcmZsb3cgaW4gYHNjYWxlZF9wcG1fdG9fcHBiKHR4LSZndDtmcmVxKWAgY291bGQgYmUgaW1wb3J0YW50LgoKTm93LCB0aGUgbmV4dCBzdGVwLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgYHB0cF9jbG9ja19hZGp0aW1lKClgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBjYWxsZWQgd2l0aGluIHRoZSBrZXJuZWwgYW5kIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIGZvciBpdCB0byBiZSBhY3RpdmUuIFRoYXQgc2hvdWxkIHRlbGwgbWUganVzdCBob3cgaW1wb3J0YW50IHRoZSBmaXggaXMgYW5kIGhvdyBoaWdoIG9uIHRoZSBmdXp6aW5nIHByaW9yaXR5IGxpc3QgaXQgbmVlZHMgdG8gYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHRwX2Nsb2NrX2FkanRpbWUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MTExPXN0YXRpYyBpbnQgcHRwX2Nsb2NrX2dldHRpbWUoc3RydWN0IHBvc2l4X2Nsb2NrICpwYywgc3RydWN0IHRpbWVzcGVjNjQgKnRwKVxuLS1cbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTEyMi1cbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jOjEyMzpzdGF0aWMgaW50IHB0cF9jbG9ja19hZGp0aW1lKHN0cnVjdCBwb3NpeF9jbG9jayAqcGMsIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqdHgpXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0xMjQte1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jPTIwMT1zdGF0aWMgc3RydWN0IHBvc2l4X2Nsb2NrX29wZXJhdGlvbnMgcHRwX2Nsb2NrX29wcyA9IHtcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTIwMi1cdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6MjAzOlx0LmNsb2NrX2FkanRpbWVcdD0gcHRwX2Nsb2NrX2FkanRpbWUsXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0yMDQtXHQuY2xvY2tfZ2V0dGltZVx0PSBwdHBfY2xvY2tfZ2V0dGltZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzk1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgUFRQIENsb2NrIEFkanVzdG1lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgbmV3IHRhcmdldCwgYC5jbG9ja19hZGp0aW1lYCB3aXRoaW4gYHB0cF9jbG9ja19vcHNgLiAgVGhhdCBzZWVtcyB0byBiZSB1c2VkIGJ5IGBwb3NpeF9jbG9ja19vcGVyYXRpb25zYCwgd2hpY2gsIGJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGlzIGEgcHJldHR5IGNydWNpYWwgbGluay4gQW5kLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHRoZSBQVFAgY2xvY2sgc3Vic3lzdGVtIGlzIGFjY2Vzc2libGUgdmlhIGAvZGV2L3B0cFhgIGRldmljZXMgYW5kIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzdGVtIGNhbGwuIEJpbmdvISBUaGlzIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgZ2l2ZW4gaXRzIGltcG9ydGFuY2UgaW4gdGltZSBzeW5jaHJvbml6YXRpb24sIGl0JiMzOTtzIGFic29sdXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZyBwb3RlbnRpYWwuIEkgdGhpbmsgdGhpcyBzdWJzeXN0ZW0gY291bGQgYmUgYSByZWFsIGdvbGRtaW5lLiBOb3csIEkgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFBUUCB0byBzZWUgd2hhdCBrbm9icyBJIGNhbiBhZGp1c3QgdG8gaGVscCB0YWlsb3IgdGhlIGZ1enppbmcgY2FtcGFpZ24uIFRoaXMgaXMgZ29pbmcgdG8gYmUgZ29vZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFRQXzE1ODhfQ0xPQ0smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc9MjE9Y29uZmlnIElYUDRYWF9FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnOjMxOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JWFA0NlhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtJbnRlbCBJWFA0NnggYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz02PW1lbnUgXCYjMzQ7UFRQIGNsb2NrIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvcHRwL0tjb25maWctNy1cbmRyaXZlcnMvcHRwL0tjb25maWc6ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0yOS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MzA6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL3B0cC9LY29uZmlnLTMxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQxLVxuZHJpdmVycy9wdHAvS2NvbmZpZzo0Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRFRFXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQzLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gRFRFIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctNTctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjU4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19RT1JJUVxuZHJpdmVycy9wdHAvS2NvbmZpZy01OS1cdHRyaXN0YXRlIFwmIzM0O0ZyZWVzY2FsZSBRb3JJUSAxNTg4IHRpbWVyIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWc9NzU9Y29uZmlnIERQODM2NDBfUEhZXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy05MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6OTI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lORVNcbmRyaXZlcnMvcHRwL0tjb25maWctOTMtXHR0cmlzdGF0ZSBcJiMzNDtaSEFXIEluRVMgUFRQIHRpbWUgc3RhbXBpbmcgSVAgY29yZVwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTAyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMDM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBQQ0ggRUcyMFQgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjEtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEyMjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfS1ZNXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMy1cdHRyaXN0YXRlIFwmIzM0O0tWTSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTMzLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMzQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNQ0xPQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctMTM1LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBtYWNoaW5lIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTUwLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVDgyUDMzXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1Mi1cdHRyaXN0YXRlIFwmIzM0O0lEVCA4MlAzM3h4eCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2Mi1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTYzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFRDTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjQtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgQ0xPQ0tNQVRSSVggYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzQtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE3NTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRkMzV1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzYtXHR0cmlzdGF0ZSBcJiMzNDtSRU5FU0FTIEZlbXRvQ2xvY2szIFdpcmVsZXNzIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTg2LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxODc6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctMTg4LVx0dHJpc3RhdGUgXCYjMzQ7TW9jay11cCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE5Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTk4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTVdcbmRyaXZlcnMvcHRwL0tjb25maWctMTk5LVx0dHJpc3RhdGUgXCYjMzQ7Vk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMDktXG5kcml2ZXJzL3B0cC9LY29uZmlnOjIxMDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT0NQXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O09wZW5Db21wdXRlIFRpbWVDYXJkIGFzIFBUUCBjbG9ja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NzcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25zaWRlcmluZyBQVFAgQ2xvY2sgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uLCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSBnb2luZyB0byBiZSBgUFRQXzE1ODhfQ0xPQ0tgLiBCdXQgd2FpdCwgdGhlcmUgYXJlIGEgY291cGxlIG9mIG90aGVyIG9wdGlvbnMgdGhhdCBtaWdodCBiZSBiZW5lZmljaWFsLCBlc3BlY2lhbGx5IGZvciBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgYW5kIGBQVFBfMTU4OF9DTE9DS19LVk1gIGNvbWUgdG8gbWluZCDigJMgY291bGQgYmUgaGVscGZ1bCB0byBzaW11bGF0ZSBhIFBUUCBjbG9jay4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgYW5kIHNlZSB3aGF0IGl0IG9mZmVycy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhcGFiaWxpdGllcyBiZXR0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZz0xNzU9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ni1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTg3OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OC1cdHRyaXN0YXRlIFwmIzM0O01vY2stdXAgUFRQIGNsb2NrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEzMAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIFBUUF8xNTg4X0NMT0NLX01PQ0sqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgcHVycG9zZSBvZiBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AuIFdoYXQgZXhhY3RseSBkb2VzIHRoaXMgY29tcG9uZW50IHJlcHJlc2VudD8gSXMgaXQgYSBzaW11bGF0aW9uLCBhIHRlc3QgZml4dHVyZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBhbmFseXppbmcgaXRzIGNvZGUsIGRvY3VtZW50YXRpb24sIG9yIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZGV0ZXJtaW5lIHdoYXQgaXRzIGludGVuZGVkIGJlaGF2aW9yIGlzLiBXaGF0IGFyZSBpdHMgaW5wdXRzLCBvdXRwdXRzLCBhbmQgaW50ZXJuYWwgbWVjaGFuaXNtcz8gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBUaGlzIGlzIHRoZSBpbml0aWFsIHN0ZXAgaW4gcmVhbGx5IHVuZGVyc3RhbmRpbmcgaXRzIGNhcGFiaWxpdGllcyBhbmQgbGltaXRhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3B0cF9tb2NrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O01BSU5UQUlORVJTPTIxNzQ4PVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoyMTc0OTpGOlx0ZHJpdmVycy9wdHAvcHRwX21vY2suY1xuTUFJTlRBSU5FUlM6MjE3NTA6RjpcdGluY2x1ZGUvbGludXgvcHRwX21vY2suaFxuTUFJTlRBSU5FUlMtMjE3NTEtXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjQ6I2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX21vY2suaFx1MDAzZVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI1LSNpbmNsdWRlIFx1MDAzY25ldC9kZXZsaW5rLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTE4Nz1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTk1LVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5NjpcdCAgd2lsbCBiZSBjYWxsZWQgcHRwX21vY2suXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE5Ny1cbi0tXG5kcml2ZXJzL3B0cC9NYWtlZmlsZT0xOD1vYmotJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzMpXHQmIzQzOz0gcHRwX2lkdDgycDMzLm9cbmRyaXZlcnMvcHRwL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19QVFBfMTU4OF9DTE9DS19NT0NLKVx0JiM0Mzs9IHB0cF9tb2NrLm9cbmRyaXZlcnMvcHRwL01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19QVFBfMTU4OF9DTE9DS19WTVcpXHQmIzQzOz0gcHRwX3Ztdy5vXG4tLVxuZHJpdmVycy9wdHAvcHRwX21vY2suYy0xMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcdTAwM2VcbmRyaXZlcnMvcHRwL3B0cF9tb2NrLmM6MTI6I2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX21vY2suaFx1MDAzZVxuZHJpdmVycy9wdHAvcHRwX21vY2suYy0xMy0jaW5jbHVkZSBcdTAwM2NsaW51eC90aW1lY291bnRlci5oXHUwMDNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MjAKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqQ2xvY2sgU291cmNlIENvbnNpZGVyYXRpb25zKioKClJpZ2h0LCBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgaXMgYSBzb2xpZCBvcHRpb24gZm9yIHRlc3RpbmcgYW5kIHNpbXVsYXRpb24uIEl0IGdpdmVzIG1lIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudCwgd2hpY2ggaXMgaW52YWx1YWJsZS4gQnV0IEkgbmVlZCB0byBhbHNvIGNvbnNpZGVyIG90aGVyIHBvc3NpYmlsaXRpZXMgdG8gZW5zdXJlIGNvbXByZWhlbnNpdmUgY292ZXJhZ2UuCgpNeSBtaW5kIGltbWVkaWF0ZWx5IHR1cm5zIHRvIGBQVFBfMTU4OF9DTE9DS19LVk1gLiBJJiMzOTttIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IGhvdyB0aGF0IG1pZ2h0IGludGVyYWN0IHdpdGggdGhpcyBzeXN0ZW0uIENvdWxkIHRoYXQgb2ZmZXIgYSBtb3JlIHJlYWxpc3RpYyB0ZXN0LCBvciBwb3RlbnRpYWxseSByZXZlYWwgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSBLVk0gdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQ/IEkgbmVlZCB0byB0aGluayB0aHJvdWdoIGhvdyBpdCBpbnRlcmZhY2VzLCBpZiBpdCYjMzk7cyB0aGUgcmlnaHQgY2hvaWNlIGZvciB0aGUgc2NhbGUgb2YgdGVzdCBJJiMzOTttIHBsYW5uaW5nLCBhbmQgaG93IGl0IGRpZmZlcnMgaW4gdGVybXMgb2YgcmVzb3VyY2UgdXRpbGl6YXRpb24gZnJvbSB0aGUgbW9jay4gTXkgZGVjaXNpb24gaGluZ2VzIG9uIGhvdyByZWxldmFudCBlYWNoIG9wdGlvbiBpcyB0byB0aGUgYWN0dWFsIGRlcGxveW1lbnQgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZz0xMDM9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSFxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTIxLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjMtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE3NQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYHB0cF9jbG9ja19hZGp0aW1lYCoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzLiBUaGUgdGFzayBhdCBoYW5kIGludm9sdmVzIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBQVFAgY2xvY2sgYWRqdXN0cyB0aW1lLCBzbyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYHB0cF9jbG9ja19hZGp0aW1lYCBmdW5jdGlvbi4gUmlnaHQsIHRoYXQmIzM5O3MgZGVmaW5lZCBpbiBgZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNgLCBzbyBJJiMzOTtsbCBoZWFkIG92ZXIgdGhlcmUuIEkmIzM5O20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIHRoZSBQVFAgY2xvY2sgZHJpdmVyIGNvZGUgYmFzZSwgc28gSSBleHBlY3QgdGhpcyB0byBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBhbmFseXNpcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1MDpcdFxuIDE1MTpcdFx0XHQvKiBNYWtlIHN1cmUgdGhlIG9mZnNldCBpcyB2YWxpZCAqL1xuIDE1MjpcdFx0XHRlcnIgPSBwdHBfY2xvY2tfZ2V0dGltZShwYywgXHUwMDI2dHMyKTtcbiAxNTM6XHRcdFx0aWYgKGVycilcbiAxNTQ6XHRcdFx0XHRyZXR1cm4gZXJyO1xuIDE1NTpcdFx0XHR0czIgPSB0aW1lc3BlYzY0X2FkZCh0czIsIHRzKTtcbiAxNTY6XHRcdFx0aWYgKCF0aW1lc3BlYzY0X3ZhbGlkX3NldHRvZChcdTAwMjZ0czIpKVxuIDE1NzpcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDE1ODpcdFxuIDE1OTpcdFx0XHRrdCA9IHRpbWVzcGVjNjRfdG9fa3RpbWUodHMpO1xuIDE2MDpcdFx0XHRkZWx0YSA9IGt0aW1lX3RvX25zKGt0KTtcbiAxNjE6XHRcdFx0ZXJyID0gb3BzLVx1MDAzZWFkanRpbWUob3BzLCBkZWx0YSk7XG4gMTYyOlx0XHR9IGVsc2UgaWYgKHR4LVx1MDAzZW1vZGVzIFx1MDAyNiBBREpfRlJFUVVFTkNZKSB7XG4gMTYzOlx0XHRcdGxvbmcgcHBiO1xuIDE2NDpcdFx0XHRzNjQgdG1wO1xuIDE2NTpcdFxuIDE2NjpcdFx0XHQvKlxuIDE2NzpcdFx0XHQgKiBzY2FsZWRfcHBtX3RvX3BwYigpIG11bHRpcGxpZXMgKDEgJiM0MzsgZnJlcSkgYnkgMTI1IGluIHM2NDtcbiAxNjg6XHRcdFx0ICogcmVqZWN0IGEgLVx1MDAzZWZyZXEgbGFyZ2UgZW5vdWdoIHRvIG92ZXJmbG93IHRoYXQsIHdoaWNoIHdvdWxkXG4gMTY5Olx0XHRcdCAqIG90aGVyd2lzZSB3cmFwIHRoZSByZXN1bHQgYmFjayBpbnRvIHRoZSBtYXhfYWRqIHJhbmdlLlxuIDE3MDpcdFx0XHQgKi9cbiAxNzE6XHRcdFx0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdygoczY0KXR4LVx1MDAzZWZyZXEsIChzNjQpMSwgXHUwMDI2dG1wKSB8fFxuIDE3MjpcdFx0XHQgICAgY2hlY2tfbXVsX292ZXJmbG93KHRtcCwgKHM2NCkxMjUsIFx1MDAyNnRtcCkpXG4gMTczOlx0XHRcdFx0cmV0dXJuIC1FUkFOR0U7XG4gMTc0Olx0XHRcdHBwYiA9IHNjYWxlZF9wcG1fdG9fcHBiKHR4LVx1MDAzZWZyZXEpO1xuIDE3NTpcdFx0XHRpZiAocHBiIFx1MDAzZSBvcHMtXHUwMDNlbWF4X2FkaiB8fCBwcGIgXHUwMDNjIC1vcHMtXHUwMDNlbWF4X2FkailcbiAxNzY6XHRcdFx0XHRyZXR1cm4gLUVSQU5HRTtcbiAxNzc6XHRcdFx0ZXJyID0gb3BzLVx1MDAzZWFkamZpbmUob3BzLCB0eC1cdTAwM2VmcmVxKTtcbiAxNzg6XHRcdFx0aWYgKCFlcnIpXG4gMTc5Olx0XHRcdFx0cHRwLVx1MDAzZWRpYWxlZF9mcmVxdWVuY3kgPSB0eC1cdTAwM2VmcmVxO1xuIDE4MDpcdFx0fSBlbHNlIGlmICh0eC1cdTAwM2Vtb2RlcyBcdTAwMjYgQURKX09GRlNFVCkge1xuIDE4MTpcdFx0XHRpZiAob3BzLVx1MDAzZWFkanBoYXNlKSB7XG4gMTgyOlx0XHRcdFx0czMyIG1heF9waGFzZV9hZGogPSBvcHMtXHUwMDNlZ2V0bWF4cGhhc2Uob3BzKTtcbiAxODM6XHRcdFx0XHRzMzIgb2Zmc2V0ID0gdHgtXHUwMDNlb2Zmc2V0O1xuIDE4NDpcdFxuIDE4NTpcdFx0XHRcdGlmICghKHR4LVx1MDAzZW1vZGVzIFx1MDAyNiBBREpfTkFOTykpXG4gMTg2Olx0XHRcdFx0XHRvZmZzZXQgKj0gTlNFQ19QRVJfVVNFQztcbiAxODc6XHRcbiAxODg6XHRcdFx0XHRpZiAob2Zmc2V0IFx1MDAzZSBtYXhfcGhhc2VfYWRqIHx8IG9mZnNldCBcdTAwM2MgLW1heF9waGFzZV9hZGopXG4gMTg5Olx0XHRcdFx0XHRyZXR1cm4gLUVSQU5HRTtcbiAxOTA6XHRcbiAxOTE6XHRcdFx0XHRlcnIgPSBvcHMtXHUwMDNlYWRqcGhhc2Uob3BzLCBvZmZzZXQpO1xuIDE5MjpcdFx0XHR9XG4gMTkzOlx0XHR9IGVsc2UgaWYgKHR4LVx1MDAzZW1vZGVzID09IDApIHtcbiAxOTQ6XHRcdFx0dHgtXHUwMDNlZnJlcSA9IHB0cC1cdTAwM2VkaWFsZWRfZnJlcXVlbmN5O1xuIDE5NTpcdFx0XHRlcnIgPSAwO1xuIDE5NjpcdFx0fVxuIDE5NzpcdFxuIDE5ODpcdFx0cmV0dXJuIGVycjtcbiAxOTk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNzYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgcHRwX2Nsb2NrX2FkanRpbWUqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiByZXZpZXdpbmcgdGhlIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGZvY3VzIGZvciBmdXp6aW5nIG5lZWRzIHRvIGJlIG9uIGBwdHBfY2xvY2tfYWRqdGltZWAuIEl0IHNlZW1zIHRoYXQgZnVuY3Rpb24gaGFzIGJlZW4gbW9kaWZpZWQgYW5kIHRodXMgcmVxdWlyZXMgY2xvc2VyIHNjcnV0aW55LiBMZXQmIzM5O3MgbWFrZSBzdXJlIHdlJiMzOTtyZSBjb3ZlcmluZyBhbGwgYmFzZXMuCgpUaGUgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb25zIGFyZSBgUFRQXzE1ODhfQ0xPQ0tgIGFuZCwgY3J1Y2lhbGx5LCBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgKG9yIHBvc3NpYmx5IGBQVFBfMTU4OF9DTE9DS19LVk1gLCB0aG91Z2ggSSYjMzk7bGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIpLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNlZSBpZiBgUFRQXzE1ODhfQ0xPQ0tgIGFsb25lIGlzIHN1ZmZpY2llbnQgZm9yIG91ciBwdXJwb3Nlcywgb3IgaWYgYSBzcGVjaWZpYyBkcml2ZXIgaXMgYWxzbyByZXF1aXJlZC4gQ29uc2lkZXJpbmcgaG93IHN5emthbGxlciBvcGVyYXRlcyB3aXRoIGBuZXRkZXZzaW1gIGFuZCBzaW1pbGFyIHRvb2xzLCB0aGUgaW5jbHVzaW9uIG9mIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBpcyBkZWZpbml0ZWx5IGEgZ29vZCBjYWxsLiBJdCBhbGxvd3MgZm9yIG1vcmUgZWZmaWNpZW50IHRlc3Rpbmcgd2l0aGluIHRoYXQgZnJhbWV3b3JrLiBUaGVyZWZvcmUsIHRoZSBwbGFuIGlzIHRvIGluY2x1ZGUgYm90aCBgUFRQXzE1ODhfQ0xPQ0tgIGFuZCBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgaW4gdGhlIGZ1enppbmcgY29uZmlndXJhdGlvbi4KCk5vdywgbGV0JiMzOTtzIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgYHB0cF9jbG9ja19hZGp0aW1lYCBpcyBpbmRlZWQgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZS4gUXVpY2sgY2hlY2suLi4gWWVwLCBpdCYjMzk7cyBhc3NpZ25lZCB0byBgcHRwX2Nsb2NrX29wcy5jbG9ja19hZGp0aW1lYCwgYW5kIHRoYXQgc3RydWN0LCBgcHRwX2Nsb2NrX29wc2AsIGlzIHV0aWxpemVkIGluIGBwb3NpeF9jbG9ja19yZWdpc3RlcmAuIFRoYXQgY29uZmlybXMgaXQg4oCTIHRoZSBmdW5jdGlvbiAqaXMqIHJlYWNoYWJsZS4gRXhjZWxsZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwb3NpeF9jbG9ja19yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9wdHBfY2xvY2suYz0zMjg9c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy00NTEtXHQvKiBDcmVhdGUgYSBwb3NpeCBjbG9jayBhbmQgbGluayBpdCB0byB0aGUgZGV2aWNlLiAqL1xuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6NDUyOlx0ZXJyID0gcG9zaXhfY2xvY2tfcmVnaXN0ZXIoXHUwMDI2cHRwLVx1MDAzZWNsb2NrLCBcdTAwMjZwdHAtXHUwMDNlZGV2KTtcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTQ1My1cdGlmIChlcnIpIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmg9Mzk9c3RydWN0IHBvc2l4X2Nsb2NrX29wZXJhdGlvbnMge1xuLS1cbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC04MS0gKiBEcml2ZXJzIHNob3VsZCBzdXBwbHkgYW4gaW5pdGlhbGl6ZWQgYnV0IG5vdCBleHBvc2VkIHN0cnVjdCBkZXZpY2VcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDo4MjogKiB0byBwb3NpeF9jbG9ja19yZWdpc3RlcigpLiBJdCBpcyB1c2VkIHRvIG1hbmFnZSBsaWZldGltZSBvZiB0aGVcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC04My0gKiBkcml2ZXImIzM5O3MgcHJpdmF0ZSBzdHJ1Y3R1cmUuIEl0JiMzOTtzICYjMzk7cmVsZWFzZSYjMzk7IGZpZWxkIHNob3VsZCBiZSBzZXQgdG9cbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmg9MTEwPXN0cnVjdCBwb3NpeF9jbG9ja19jb250ZXh0IHtcbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMTE2LS8qKlxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oOjExNzogKiBwb3NpeF9jbG9ja19yZWdpc3RlcigpIC0gcmVnaXN0ZXIgYSBuZXcgY2xvY2tcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC0xMTgtICogQGNsazogICBQb2ludGVyIHRvIHRoZSBjbG9jay4gQ2FsbGVyIG11c3QgcHJvdmlkZSAmIzM5O29wcyYjMzk7IGZpZWxkXG4tLVxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oLTEyOC0gKi9cbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDoxMjk6aW50IHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwb3NpeF9jbG9jayAqY2xrLCBzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oLTEzMC1cbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMTMyLSAqIHBvc2l4X2Nsb2NrX3VucmVnaXN0ZXIoKSAtIHVucmVnaXN0ZXIgYSBjbG9ja1xuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oOjEzMzogKiBAY2xrOiBDbG9jayBpbnN0YW5jZSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgdmlhIHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKClcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC0xMzQtICpcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jPTE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwb3NpeF9jbG9ja19maWxlX29wZXJhdGlvbnMgPSB7XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYy0xNTktXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jOjE2MDppbnQgcG9zaXhfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IHBvc2l4X2Nsb2NrICpjbGssIHN0cnVjdCBkZXZpY2UgKmRldilcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMTYxLXtcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTE3Ny19XG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jOjE3ODpFWFBPUlRfU1lNQk9MX0dQTChwb3NpeF9jbG9ja19yZWdpc3Rlcik7XG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTE3OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQ2NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkRlbHZpbmcgaW50byB0aGUgUE9TSVggQ2xvY2sgTWVjaGFuaXNtKioKClJpZ2h0LCBzbyBgcG9zaXhfY2xvY2tfcmVnaXN0ZXJgIOKAkyB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCB0aGUgY2hhcmFjdGVyIGRldmljZSwgaXNuJiMzOTt0IGl0PyBPa2F5LCBzbyB0aGF0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBpbnRlcmZhY2UsIGEgd2F5IGZvciB1c2VyIHNwYWNlIHRvIGludGVyYWN0IHdpdGggdGhlIGNsb2NrIGl0c2VsZi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZXRhaWxzLiBMZXQgbWUganVtcCBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCBga2VybmVsL3RpbWUvcG9zaXgtY2xvY2suY2AgaGFzIHRvIHRlbGwgbWUuIEkgYmV0IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgbGllcy4gSSYjMzk7bGwgc3RhcnQgZGlnZ2luZyBpbiB0aGVyZSwgbG9va2luZyBmb3IgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiwgdGhlIGNoYXJhY3RlciBkZXZpY2UgcmVnaXN0cmF0aW9uIGl0c2VsZiwgYW5kIGhvdyBpdCBoYW5kbGVzIHRoZSBmdW5kYW1lbnRhbCBjbG9jayBvcGVyYXRpb25zLiBJJiMzOTttIGtlZW4gdG8gc2VlIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgdXNlZCBhbmQgdGhlIG1ldGhvZHMgaW52b2x2ZWQgaW4gaW50ZXJmYWNpbmcgaXQgd2l0aCB0aGUgVkZTLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgaG93IFBPU0lYIGNsb2NrcyBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGtlcm5lbCBsZXZlbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNTA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwb3NpeF9jbG9ja19maWxlX29wZXJhdGlvbnMgPSB7XG4gMTUxOlx0XHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiAxNTI6XHRcdC5yZWFkXHRcdD0gcG9zaXhfY2xvY2tfcmVhZCxcbiAxNTM6XHRcdC5wb2xsXHRcdD0gcG9zaXhfY2xvY2tfcG9sbCxcbiAxNTQ6XHRcdC51bmxvY2tlZF9pb2N0bFx0PSBwb3NpeF9jbG9ja19pb2N0bCxcbiAxNTU6XHRcdC5jb21wYXRfaW9jdGxcdD0gcG9zaXhfY2xvY2tfaW9jdGwsXG4gMTU2Olx0XHQub3Blblx0XHQ9IHBvc2l4X2Nsb2NrX29wZW4sXG4gMTU3Olx0XHQucmVsZWFzZVx0PSBwb3NpeF9jbG9ja19yZWxlYXNlLFxuIDE1ODpcdH07XG4gMTU5Olx0XG4gMTYwOlx0aW50IHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwb3NpeF9jbG9jayAqY2xrLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gMTYxOlx0e1xuIDE2MjpcdFx0aW50IGVycjtcbiAxNjM6XHRcbiAxNjQ6XHRcdGluaXRfcndzZW0oXHUwMDI2Y2xrLVx1MDAzZXJ3c2VtKTtcbiAxNjU6XHRcbiAxNjY6XHRcdGNkZXZfaW5pdChcdTAwMjZjbGstXHUwMDNlY2RldiwgXHUwMDI2cG9zaXhfY2xvY2tfZmlsZV9vcGVyYXRpb25zKTtcbiAxNjc6XHRcdGVyciA9IGNkZXZfZGV2aWNlX2FkZChcdTAwMjZjbGstXHUwMDNlY2RldiwgZGV2KTtcbiAxNjg6XHRcdGlmIChlcnIpIHtcbiAxNjk6XHRcdFx0cHJfZXJyKFwmIzM0OyVzIHVuYWJsZSB0byBhZGQgZGV2aWNlICVkOiVkXFxuXCYjMzQ7LFxuIDE3MDpcdFx0XHRcdGRldl9uYW1lKGRldiksIE1BSk9SKGRldi1cdTAwM2VkZXZ0KSwgTUlOT1IoZGV2LVx1MDAzZWRldnQpKTtcbiAxNzE6XHRcdFx0cmV0dXJuIGVycjtcbiAxNzI6XHRcdH1cbiAxNzM6XHRcdGNsay1cdTAwM2VjZGV2Lm93bmVyID0gY2xrLVx1MDAzZW9wcy5vd25lcjtcbiAxNzQ6XHRcdGNsay1cdTAwM2VkZXYgPSBkZXY7XG4gMTc1Olx0XG4gMTc2Olx0XHRyZXR1cm4gMDtcbiAxNzc6XHR9XG4gMTc4Olx0RVhQT1JUX1NZTUJPTF9HUEwocG9zaXhfY2xvY2tfcmVnaXN0ZXIpO1xuIDE3OTpcdFxuIDE4MDpcdHZvaWQgcG9zaXhfY2xvY2tfdW5yZWdpc3RlcihzdHJ1Y3QgcG9zaXhfY2xvY2sgKmNsaylcbiAxODE6XHR7XG4gMTgyOlx0XHRjZGV2X2RldmljZV9kZWwoXHUwMDI2Y2xrLVx1MDAzZWNkZXYsIGNsay1cdTAwM2VkZXYpO1xuIDE4MzpcdFxuIDE4NDpcdFx0ZG93bl93cml0ZShcdTAwMjZjbGstXHUwMDNlcndzZW0pO1xuIDE4NTpcdFx0Y2xrLVx1MDAzZXpvbWJpZSA9IHRydWU7XG4gMTg2Olx0XHR1cF93cml0ZShcdTAwMjZjbGstXHUwMDNlcndzZW0pO1xuIDE4NzpcdFxuIDE4ODpcdFx0cHV0X2RldmljZShjbGstXHUwMDNlZGV2KTtcbiAxODk6XHR9XG4gMTkwOlx0RVhQT1JUX1NZTUJPTF9HUEwocG9zaXhfY2xvY2tfdW5yZWdpc3Rlcik7XG4gMTkxOlx0XG4gMTkyOlx0c3RydWN0IHBvc2l4X2Nsb2NrX2Rlc2Mge1xuIDE5MzpcdFx0c3RydWN0IGZpbGUgKmZwO1xuIDE5NDpcdFx0c3RydWN0IHBvc2l4X2Nsb2NrICpjbGs7XG4gMTk1Olx0fTtcbiAxOTY6XHRcbiAxOTc6XHRzdGF0aWMgaW50IGdldF9jbG9ja19kZXNjKGNvbnN0IGNsb2NraWRfdCBpZCwgc3RydWN0IHBvc2l4X2Nsb2NrX2Rlc2MgKmNkKVxuIDE5ODpcdHtcbiAxOTk6XHRcdHN0cnVjdCBmaWxlICpmcCA9IGZnZXQoY2xvY2tpZF90b19mZChpZCkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUwNQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBUaW1la2VlcGluZyBNYXplKioKCkhvbGQgb24gYSBzZWNvbmQuLi4gSSB3YXMganVzdCB0aGlua2luZyBhYm91dCBgcG9zaXhfY2xvY2tfYWRqdGltZWAuIElzbiYjMzk7dCB0aGF0IGZ1bmN0aW9uLCB0aGUgb25lIHRoYXQgaGFuZGxlcyBhZGp1c3RtZW50cyB0byB0aGUgc3lzdGVtIGNsb2NrLCBzdXBwb3NlZCB0byBiZSBob29rZWQgaW50byB0aGUgc3RhbmRhcmQgZmlsZSBvcGVyYXRpb25zIHN0cnVjdHVyZXM/IEJ1dCB3YWl0LCBubywgdGhhdCBkb2VzbiYjMzk7dCBzZWVtIHJpZ2h0LiBJdCBzZWVtcyB0byBiZSBwYXJ0IG9mIHRoZSBzeXNjYWxsIGltcGxlbWVudGF0aW9uIGZvciBgY2xvY2tfYWRqdGltZWAuIEl0JiMzOTtzIHVzZWQgYXQgdGhlIHN5c2NhbGwgbGF5ZXIgaXRzZWxmLCBub3QgYm91bmQgdXAgYXMgYW4gb3BlcmF0aW9uIG9uIHNvbWUgVkZTIG5vZGUuCgpBbHJpZ2h0LCBzbyBpZiBgY2xvY2tfYWRqdGltZWAgaXRzZWxmIGlzIGEgc3lzY2FsbCwgdGhlbiB0aGF0IG1lYW5zIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcG9zaXhfY2xvY2tfYWRqdGltZWAgc2hvdWxkIGJlIHNvbWV3aGVyZSBpbiB0aGUgY29yZSB0aW1la2VlcGluZyBpbmZyYXN0cnVjdHVyZS4gTXkgZ3V0IGZlZWxpbmcgaXMgaXQmIzM5O3MgcHJvYmFibHkgbG9jYXRlZCBpbiBga2VybmVsL3RpbWUvcG9zaXgtY2xvY2suY2AuIExldCBtZSBqdXN0IHZlcmlmeSBieSBzZWFyY2hpbmcgZm9yIGBjbG9ja19hZGp0aW1lYCB3aXRoaW4gdGhhdCBmaWxlIGFuZCBzZWUgd2hhdCBJIGZpbmQuIFRoYXQgc2hvdWxkIHF1aWNrbHkgcG9pbnQgbWUgdG8gdGhlIHJlbGV2YW50IGNvZGUgcGF0aC4gVGltZSB0byBqdW1wIGluIGFuZCBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjbG9ja19hZGp0aW1lJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wdHAucnN0PTQ0PVBUUCBoYXJkd2FyZSBjbG9jayB1c2VyIHNwYWNlIEFQSVxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wdHAucnN0LTQ5LSAgIHRoZSBjaGFyYWN0ZXIgZGV2aWNlIGFzIGEgUE9TSVggY2xvY2sgaWQgYW5kIG1heSBjYWxsXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHRwLnJzdDo1MDogICBjbG9ja19nZXR0aW1lLCBjbG9ja19zZXR0aW1lLCBhbmQgY2xvY2tfYWRqdGltZS4gIFRoZXNlIGNhbGxzXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHRwLnJzdC01MS0gICBpbXBsZW1lbnQgdGhlIGJhc2ljIGNsb2NrIG9wZXJhdGlvbnMuXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDI5LTQ5OFx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbmFyY2gvYWxwaGEva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQzMDo0OTlcdGNvbW1vblx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MzEtNTAwXHRjb21tb25cdHN5bmNmc1x0XHRcdFx0c3lzX3N5bmNmc1xuLS1cbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTM4OS0zNzFcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50Ymw6MzkwOjM3Mlx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTM5MS0zNzNcdGNvbW1vblx0c3luY2ZzXHRcdFx0c3lzX3N5bmNmc1xuLS1cbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQyMi00MDRcdGNvbW1vblx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsOjQyMzo0MDVcdGNvbW1vblx0Y2xvY2tfYWRqdGltZTY0XHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQyNC00MDZcdGNvbW1vblx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFx0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC0zODYtMzcxXHRjb21tb25cdG9wZW5fYnlfaGFuZGxlX2F0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcdGNvbXBhdF9zeXNfb3Blbl9ieV9oYW5kbGVfYXRcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50Ymw6Mzg3OjM3Mlx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtMzg4LTM3M1x0Y29tbW9uXHRzeW5jZnNcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC00MTktNDA0XHRjb21tb25cdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsOjQyMDo0MDVcdGNvbW1vblx0Y2xvY2tfYWRqdGltZTY0XHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDIxLTQwNlx0Y29tbW9uXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM1MS0zNDFcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM1MjozNDJcdGNvbW1vblx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzUzLTM0M1x0Y29tbW9uXHRzeW5jZnNcdFx0XHRcdHN5c19zeW5jZnNcbi0tXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQwNy00MDRcdGNvbW1vblx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDA4OjQwNVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lNjRcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MDktNDA2XHRjb21tb25cdGNsb2NrX2dldHJlc190aW1lNjRcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzgyLTM3Mlx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzgzOjM3M1x0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zODQtMzc0XHRjb21tb25cdHN5bmNmc1x0XHRcdFx0c3lzX3N5bmNmc1xuLS1cbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDEzLTQwNFx0Y29tbW9uXHRjbG9ja19zZXR0aW1lNjRcdFx0XHRzeXNfY2xvY2tfc2V0dGltZVxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MTQ6NDA1XHRjb21tb25cdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxNS00MDZcdGNvbW1vblx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFx0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMzE1LTMwNFx0bjMyXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsOjMxNjozMDVcdG4zMlx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTMxNy0zMDZcdG4zMlx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMzQ2LTQwNFx0bjMyXHRjbG9ja19zZXR0aW1lNjRcdFx0XHRzeXNfY2xvY2tfc2V0dGltZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50Ymw6MzQ3OjQwNVx0bjMyXHRjbG9ja19hZGp0aW1lNjRcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMzQ4LTQwNlx0bjMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zMTAtMjk5XHRuNjRcdG9wZW5fYnlfaGFuZGxlX2F0XHRcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MzExOjMwMFx0bjY0XHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTMxMi0zMDFcdG42NFx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtMzU0LTM0MFx0bzMyXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcdFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6MzU1OjM0MVx0bzMyXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtMzU2LTM0Mlx0bzMyXHRzeW5jZnNcdFx0XHRcdHN5c19zeW5jZnNcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0zOTUtNDA0XHRvMzJcdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibDozOTY6NDA1XHRvMzJcdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0zOTctNDA2XHRvMzJcdGNsb2NrX2dldHJlc190aW1lNjRcdFx0c3lzX2Nsb2NrX2dldHJlc1x0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM2Ny0zMjNcdGNvbW1vblx0ZmFub3RpZnlfbWFya1x0XHRzeXNfZmFub3RpZnlfbWFya1x0XHRjb21wYXRfc3lzX2Zhbm90aWZ5X21hcmtcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozNjg6MzI0XHQzMlx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfY2xvY2tfYWRqdGltZTMyXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzY5OjMyNFx0NjRcdGNsb2NrX2FkanRpbWVcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzAtMzI1XHRjb21tb25cdG5hbWVfdG9faGFuZGxlX2F0XHRzeXNfbmFtZV90b19oYW5kbGVfYXRcbi0tXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA2LTQwNFx0MzJcdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDA3OjQwNVx0MzJcdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA4LTQwNlx0MzJcdGNsb2NrX2dldHJlc190aW1lNjRcdFx0c3lzX2Nsb2NrX2dldHJlc1x0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NDgtMzQ2XHRjb21tb25cdG9wZW5fYnlfaGFuZGxlX2F0XHRcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFx0XHRjb21wYXRfc3lzX29wZW5fYnlfaGFuZGxlX2F0XG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ0OTozNDdcdDMyXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTA6MzQ3XHQ2NFx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1MTozNDdcdHNwdVx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1Mi0zNDhcdGNvbW1vblx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00OTgtNDA0XHQzMlx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDk5OjQwNVx0MzJcdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwMC00MDZcdDMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjkwLTMzNlx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjkxOjMzN1x0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjkyLTMzOFx0Y29tbW9uXHRzeW5jZnNcdFx0XHRcdHN5c19zeW5jZnNcbi0tXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzAtMzYwXHRjb21tb25cdG9wZW5fYnlfaGFuZGxlX2F0XHRcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzcxOjM2MVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcyLTM2Mlx0Y29tbW9uXHRzeW5jZnNcdFx0XHRcdHN5c19zeW5jZnNcbi0tXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTEtNDA0XHRjb21tb25cdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MTI6NDA1XHRjb21tb25cdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTMtNDA2XHRjb21tb25cdGNsb2NrX2dldHJlc190aW1lNjRcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbmFyY2gvc3BhcmMva2VybmVsL3N5c19zcGFyY182NC5jPTU2OD1TWVNDQUxMX0RFRklORTEoc3BhcmNfYWRqdGltZXgsIHN0cnVjdCBfX2tlcm5lbF90aW1leCBfX3VzZXIgKiwgdHhjX3ApXG4tLVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3NwYXJjXzY0LmMtNTkxLVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3NwYXJjXzY0LmM6NTkyOlNZU0NBTExfREVGSU5FMihzcGFyY19jbG9ja19hZGp0aW1lLCBjb25zdCBjbG9ja2lkX3QsIHdoaWNoX2Nsb2NrLFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3NwYXJjXzY0LmMtNTkzLVx0XHRzdHJ1Y3QgX19rZXJuZWxfdGltZXggX191c2VyICosIHR4Y19wKVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL3N5c19zcGFyY182NC5jLTYxOC1cdHR4Yy50aW1lLnR2X3VzZWMgPSB0di1cdTAwM2V0dl91c2VjO1xuYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3NwYXJjXzY0LmM6NjE5Olx0cmV0ID0gZG9fY2xvY2tfYWRqdGltZSh3aGljaF9jbG9jaywgXHUwMDI2dHhjKTtcbmFyY2gvc3BhcmMva2VybmVsL3N5c19zcGFyY182NC5jLTYyMC1cdHR2LVx1MDAzZXR2X3VzZWMgPSB0eGMudGltZS50dl91c2VjO1xuLS1cbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQwMy0zMzNcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFx0XHRjb21wYXRfc3lzX29wZW5fYnlfaGFuZGxlX2F0XG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MDQ6MzM0XHQzMlx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfY2xvY2tfYWRqdGltZTMyXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MDU6MzM0XHQ2NFx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfc3BhcmNfY2xvY2tfYWRqdGltZVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA2LTMzNVx0Y29tbW9uXHRzeW5jZnNcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDUzLTQwNFx0MzJcdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTQ6NDA1XHQzMlx0Y2xvY2tfYWRqdGltZTY0XHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1NS00MDZcdDMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTM1Ny0zNDJcdGkzODZcdG9wZW5fYnlfaGFuZGxlX2F0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcdFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6MzU4OjM0M1x0aTM4Nlx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfY2xvY2tfYWRqdGltZTMyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0zNTktMzQ0XHRpMzg2XHRzeW5jZnNcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDEzLTQwNFx0aTM4Nlx0Y2xvY2tfc2V0dGltZTY0XHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MTQ6NDA1XHRpMzg2XHRjbG9ja19hZGp0aW1lNjRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxNS00MDZcdGkzODZcdGNsb2NrX2dldHJlc190aW1lNjRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zMTYtMzA0XHRjb21tb25cdG9wZW5fYnlfaGFuZGxlX2F0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsOjMxNzozMDVcdGNvbW1vblx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfY2xvY2tfYWRqdGltZVxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzE4LTMwNlx0Y29tbW9uXHRzeW5jZnNcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM1MS0zMjhcdGNvbW1vblx0cnRfdGdzaWdxdWV1ZWluZm9cdFx0c3lzX3J0X3Rnc2lncXVldWVpbmZvXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzUyOjMyOVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM1My0zMzBcdGNvbW1vblx0cHJsaW1pdDY0XHRcdFx0c3lzX3BybGltaXQ2NFxuLS1cbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzgtNDA0XHRjb21tb25cdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mzc5OjQwNVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lNjRcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM4MC00MDZcdGNvbW1vblx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFx0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MTExPXN0YXRpYyBpbnQgcHRwX2Nsb2NrX2dldHRpbWUoc3RydWN0IHBvc2l4X2Nsb2NrICpwYywgc3RydWN0IHRpbWVzcGVjNjQgKnRwKVxuLS1cbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTEyMi1cbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jOjEyMzpzdGF0aWMgaW50IHB0cF9jbG9ja19hZGp0aW1lKHN0cnVjdCBwb3NpeF9jbG9jayAqcGMsIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqdHgpXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0xMjQte1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jPTIwMT1zdGF0aWMgc3RydWN0IHBvc2l4X2Nsb2NrX29wZXJhdGlvbnMgcHRwX2Nsb2NrX29wcyA9IHtcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTIwMi1cdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6MjAzOlx0LmNsb2NrX2FkanRpbWVcdD0gcHRwX2Nsb2NrX2FkanRpbWUsXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0yMDQtXHQuY2xvY2tfZ2V0dGltZVx0PSBwdHBfY2xvY2tfZ2V0dGltZSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmM9NDU9c3RhdGljIGludCBwdHBfdmNsb2NrX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbi0tXG5kcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmMtNjEtXG5kcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmM6NjI6c3RhdGljIGludCBwdHBfdmNsb2NrX2FkanRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbmRyaXZlcnMvcHRwL3B0cF92Y2xvY2suYy02My17XG4tLVxuZHJpdmVycy9wdHAvcHRwX3ZjbG9jay5jPTE2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHB0cF9jbG9ja19pbmZvIHB0cF92Y2xvY2tfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmMtMTY4LVx0LmFkamZpbmVcdD0gcHRwX3ZjbG9ja19hZGpmaW5lLFxuZHJpdmVycy9wdHAvcHRwX3ZjbG9jay5jOjE2OTpcdC5hZGp0aW1lXHQ9IHB0cF92Y2xvY2tfYWRqdGltZSxcbmRyaXZlcnMvcHRwL3B0cF92Y2xvY2suYy0xNzAtXHQuc2V0dGltZTY0XHQ9IHB0cF92Y2xvY2tfc2V0dGltZSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfdm1jbG9jay5jPTI4Nz1zdGF0aWMgaW50IHB0cF92bWNsb2NrX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgZGVsdGEpXG4tLVxuZHJpdmVycy9wdHAvcHRwX3ZtY2xvY2suYy0yOTEtXG5kcml2ZXJzL3B0cC9wdHBfdm1jbG9jay5jOjI5MjpzdGF0aWMgaW50IHB0cF92bWNsb2NrX2FkanRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmMtMjkzLXtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfdm1jbG9jay5jPTMxOD1zdGF0aWMgY29uc3Qgc3RydWN0IHB0cF9jbG9ja19pbmZvIHB0cF92bWNsb2NrX2luZm8gPSB7XG4tLVxuZHJpdmVycy9wdHAvcHRwX3ZtY2xvY2suYy0zMjQtXHQuYWRqZmluZVx0PSBwdHBfdm1jbG9ja19hZGpmaW5lLFxuZHJpdmVycy9wdHAvcHRwX3ZtY2xvY2suYzozMjU6XHQuYWRqdGltZVx0PSBwdHBfdm1jbG9ja19hZGp0aW1lLFxuZHJpdmVycy9wdHAvcHRwX3ZtY2xvY2suYy0zMjYtXHQuZ2V0dGltZXg2NFx0PSBwdHBfdm1jbG9ja19nZXR0aW1leCxcbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmg9MTc9c3RydWN0IHBvc2l4X2Nsb2NrX2NvbnRleHQ7XG4tLVxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oLTI4LSAqIEBvd25lcjogICAgICAgICAgVGhlIGNsb2NrIGRyaXZlciBzaG91bGQgc2V0IHRvIFRISVNfTU9EVUxFXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmg6Mjk6ICogQGNsb2NrX2FkanRpbWU6ICBBZGp1c3QgdGhlIGNsb2NrXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMzAtICogQGNsb2NrX2dldHRpbWU6ICBSZWFkIHRoZSBjdXJyZW50IHRpbWVcbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmg9Mzk9c3RydWN0IHBvc2l4X2Nsb2NrX29wZXJhdGlvbnMge1xuLS1cbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC00MS1cbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDo0MjpcdGludCAgKCpjbG9ja19hZGp0aW1lKShzdHJ1Y3QgcG9zaXhfY2xvY2sgKnBjLCBzdHJ1Y3QgX19rZXJuZWxfdGltZXggKnR4KTtcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC00My1cbi0tXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg9OTAxPWFzbWxpbmthZ2UgbG9uZyBzeXNfb3Blbl9ieV9oYW5kbGVfYXQoaW50IG1vdW50ZGlyZmQsXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oLTkwMy1cdFx0XHRcdCAgICAgIGludCBmbGFncyk7XG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6OTA0OmFzbWxpbmthZ2UgbG9uZyBzeXNfY2xvY2tfYWRqdGltZShjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtOTA1LVx0XHRcdFx0c3RydWN0IF9fa2VybmVsX3RpbWV4IF9fdXNlciAqdHgpO1xuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjkwNjphc21saW5rYWdlIGxvbmcgc3lzX2Nsb2NrX2FkanRpbWUzMihjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtOTA3LVx0XHRcdFx0c3RydWN0IG9sZF90aW1leDMyIF9fdXNlciAqdHgpO1xuLS1cbmluY2x1ZGUvbGludXgvdGltZXguaD0xNTQ9ZXh0ZXJuIGludCBkb19hZGp0aW1leChzdHJ1Y3QgX19rZXJuZWxfdGltZXggKik7XG5pbmNsdWRlL2xpbnV4L3RpbWV4Lmg6MTU1OmV4dGVybiBpbnQgZG9fY2xvY2tfYWRqdGltZShjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqIGt0eCk7XG5pbmNsdWRlL2xpbnV4L3RpbWV4LmgtMTU2LVxuLS1cbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD02NDQ9X19TWVNDQUxMKF9fTlJfb3Blbl9ieV9oYW5kbGVfYXQsIHN5c19vcGVuX2J5X2hhbmRsZV9hdClcbi0tXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtNjQ2LSNpZiBkZWZpbmVkKF9fQVJDSF9XQU5UX1RJTUUzMl9TWVNDQUxMUykgfHwgX19CSVRTX1BFUl9MT05HICE9IDMyXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NjQ3OiNkZWZpbmUgX19OUl9jbG9ja19hZGp0aW1lIDI2NlxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjY0ODpfX1NDXzMyNjQoX19OUl9jbG9ja19hZGp0aW1lLCBzeXNfY2xvY2tfYWRqdGltZTMyLCBzeXNfY2xvY2tfYWRqdGltZSlcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC02NDktI2VuZGlmXG4tLVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTcxOD1fX1NZU0NBTEwoX19OUl9jbG9ja19zZXR0aW1lNjQsIHN5c19jbG9ja19zZXR0aW1lKVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjcxOTojZGVmaW5lIF9fTlJfY2xvY2tfYWRqdGltZTY0IDQwNVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjcyMDpfX1NZU0NBTEwoX19OUl9jbG9ja19hZGp0aW1lNjQsIHN5c19jbG9ja19hZGp0aW1lKVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTcyMS0jZGVmaW5lIF9fTlJfY2xvY2tfZ2V0cmVzX3RpbWU2NCA0MDZcbi0tXG5pbml0L0tjb25maWc9MTc1Nz1jb25maWcgUE9TSVhfVElNRVJTXG4tLVxuaW5pdC9LY29uZmlnLTE3NjYtXHQgIGF2YWlsYWJsZTogdGltZXJfY3JlYXRlLCB0aW1lcl9nZXR0aW1lOiB0aW1lcl9nZXRvdmVycnVuLFxuaW5pdC9LY29uZmlnOjE3Njc6XHQgIHRpbWVyX3NldHRpbWUsIHRpbWVyX2RlbGV0ZSwgY2xvY2tfYWRqdGltZSwgZ2V0aXRpbWVyLFxuaW5pdC9LY29uZmlnLTE3NjgtXHQgIHNldGl0aW1lciwgYWxhcm0uIEZ1cnRoZXJtb3JlLCB0aGUgY2xvY2tfc2V0dGltZSwgY2xvY2tfZ2V0dGltZSxcbi0tXG5rZXJuZWwvc3lzX25pLmM9MjExPUNPTkRfU1lTQ0FMTCh0aW1lcl9kZWxldGUpO1xua2VybmVsL3N5c19uaS5jOjIxMjpDT05EX1NZU0NBTEwoY2xvY2tfYWRqdGltZSk7XG5rZXJuZWwvc3lzX25pLmMtMjEzLUNPTkRfU1lTQ0FMTChnZXRpdGltZXIpO1xuLS1cbmtlcm5lbC9zeXNfbmkuYz0zNTI9Q09ORF9TWVNDQUxMKHV0aW1lbnNhdF90aW1lMzIpO1xua2VybmVsL3N5c19uaS5jOjM1MzpDT05EX1NZU0NBTEwoY2xvY2tfYWRqdGltZTMyKTtcbmtlcm5lbC9zeXNfbmkuYy0zNTQtXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYz0yMTg9c3RhdGljIHZvaWQgcHV0X2Nsb2NrX2Rlc2Moc3RydWN0IHBvc2l4X2Nsb2NrX2Rlc2MgKmNkKVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMjIzLVxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYzoyMjQ6c3RhdGljIGludCBwY19jbG9ja19hZGp0aW1lKGNsb2NraWRfdCBpZCwgc3RydWN0IF9fa2VybmVsX3RpbWV4ICp0eClcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMjI1LXtcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTIzNy1cbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmM6MjM4Olx0aWYgKGNkLmNsay1cdTAwM2VvcHMuY2xvY2tfYWRqdGltZSlcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmM6MjM5Olx0XHRlcnIgPSBjZC5jbGstXHUwMDNlb3BzLmNsb2NrX2FkanRpbWUoY2QuY2xrLCB0eCk7XG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTI0MC1cdGVsc2Vcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jPTMxMz1jb25zdCBzdHJ1Y3Qga19jbG9jayBjbG9ja19wb3NpeF9keW5hbWljID0ge1xuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMzE2LVx0LmNsb2NrX2dldF90aW1lc3BlY1x0PSBwY19jbG9ja19nZXR0aW1lLFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYzozMTc6XHQuY2xvY2tfYWRqXHRcdD0gcGNfY2xvY2tfYWRqdGltZSxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMzE4LX07XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM9MTE0Mj1TWVNDQUxMX0RFRklORTIoY2xvY2tfZ2V0dGltZSwgY29uc3QgY2xvY2tpZF90LCB3aGljaF9jbG9jayxcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy0xMTU5LVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM6MTE2MDppbnQgZG9fY2xvY2tfYWRqdGltZShjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqIGt0eClcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTExNjEte1xuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTExNzEtXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzoxMTcyOlNZU0NBTExfREVGSU5FMihjbG9ja19hZGp0aW1lLCBjb25zdCBjbG9ja2lkX3QsIHdoaWNoX2Nsb2NrLFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtMTE3My1cdFx0c3RydWN0IF9fa2VybmVsX3RpbWV4IF9fdXNlciAqLCB1dHgpXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtMTE4MC1cbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jOjExODE6XHRlcnIgPSBkb19jbG9ja19hZGp0aW1lKHdoaWNoX2Nsb2NrLCBcdTAwMjZrdHgpO1xua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtMTE4Mi1cbi0tXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYz0xMjk3PVNZU0NBTExfREVGSU5FMihjbG9ja19nZXR0aW1lMzIsIGNsb2NraWRfdCwgd2hpY2hfY2xvY2ssXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtMTMxNC1cbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jOjEzMTU6U1lTQ0FMTF9ERUZJTkUyKGNsb2NrX2FkanRpbWUzMiwgY2xvY2tpZF90LCB3aGljaF9jbG9jayxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTEzMTYtXHRcdHN0cnVjdCBvbGRfdGltZXgzMiBfX3VzZXIgKiwgdXRwKVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTEzMjQtXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzoxMzI1Olx0ZXJyID0gZG9fY2xvY2tfYWRqdGltZSh3aGljaF9jbG9jaywgXHUwMDI2a3R4KTtcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTEzMjYtXG4tLVxua2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYz0zMjI3PXN0YXRpYyB2b2lkIGF1eF9jbG9ja19lbmFibGUoY2xvY2tpZF90IGlkKVxuLS1cbmtlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmMtMzIzOC1cdCAqIGNsb2NrIGZyZXF1ZW5jeSBjb252ZXJzaW9uIGlzIGNsb3NlIGVub3VnaC4gVXNlcnNwYWNlIGhhcyB0b1xua2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYzozMjM5Olx0ICogYWRqdXN0IGZvciB0aGUgZGV2aWF0aW9uIHZpYSBjbG9ja19hZGp0aW1lKDIpLlxua2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYy0zMjQwLVx0ICovXG4tLVxucnVzdC9rZXJuZWwvdGltZS5ycz05OT0gICAgZm4ga3RpbWVfZ2V0KCkgLVx1MDAzZSBiaW5kaW5nczo6a3RpbWVfdCB7XG4tLVxucnVzdC9rZXJuZWwvdGltZS5ycy0xMTAtLy8vIHBlcmZvcm1lZCBieSBOVFAgYW5kIHNpbWlsYXIgYXBwbGljYXRpb25zIHZpYSBhZGp0aW1lKDMpLCBhZGp0aW1leCgyKSxcbnJ1c3Qva2VybmVsL3RpbWUucnM6MTExOi8vLyBjbG9ja19hZGp0aW1lKDIpLCBhbmQgbnRwX2FkanRpbWUoMykuIFRoaXMgY2xvY2sgbm9ybWFsbHkgY291bnRzIHRoZVxucnVzdC9rZXJuZWwvdGltZS5ycy0xMTItLy8vIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6MDAgQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWVcbi0tXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2g9MTg9Y2F0IFx1MDAzY1x1MDAzYyBFT0Zcbi0tXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2gtOTYtI2RlZmluZSBfX0lHTk9SRV9jbG9ja19zZXR0aW1lNjRcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaDo5NzojZGVmaW5lIF9fSUdOT1JFX2Nsb2NrX2FkanRpbWU2NFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTk4LSNkZWZpbmUgX19JR05PUkVfY2xvY2tfZ2V0cmVzX3RpbWU2NFxuLS1cbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMjktI2RlZmluZSBfX0lHTk9SRV9jbG9ja19zZXR0aW1lXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2g6MTMwOiNkZWZpbmUgX19JR05PUkVfY2xvY2tfYWRqdGltZVxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTEzMS0jZGVmaW5lIF9fSUdOT1JFX2Nsb2NrX2dldHJlc1xuLS1cbnNjcmlwdHMvc3lzY2FsbC50YmwtMzE0LTI2NVx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbnNjcmlwdHMvc3lzY2FsbC50Ymw6MzE1OjI2Nlx0dGltZTMyXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxuc2NyaXB0cy9zeXNjYWxsLnRibDozMTY6MjY2XHQ2NFx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5zY3JpcHRzL3N5c2NhbGwudGJsLTMxNy0yNjdcdGNvbW1vblx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxuc2NyaXB0cy9zeXNjYWxsLnRibC0zNDgtNDA0XHQzMlx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbnNjcmlwdHMvc3lzY2FsbC50Ymw6MzQ5OjQwNVx0MzJcdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5zY3JpcHRzL3N5c2NhbGwudGJsLTM1MC00MDZcdDMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9NjQ0PV9fU1lTQ0FMTChfX05SX29wZW5fYnlfaGFuZGxlX2F0LCBzeXNfb3Blbl9ieV9oYW5kbGVfYXQpXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTY0Ni0jaWYgZGVmaW5lZChfX0FSQ0hfV0FOVF9USU1FMzJfU1lTQ0FMTFMpIHx8IF9fQklUU19QRVJfTE9ORyAhPSAzMlxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjY0NzojZGVmaW5lIF9fTlJfY2xvY2tfYWRqdGltZSAyNjZcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo2NDg6X19TQ18zMjY0KF9fTlJfY2xvY2tfYWRqdGltZSwgc3lzX2Nsb2NrX2FkanRpbWUzMiwgc3lzX2Nsb2NrX2FkanRpbWUpXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtNjQ5LSNlbmRpZlxuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD03MTg9X19TWVNDQUxMKF9fTlJfY2xvY2tfc2V0dGltZTY0LCBzeXNfY2xvY2tfc2V0dGltZSlcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo3MTk6I2RlZmluZSBfX05SX2Nsb2NrX2FkanRpbWU2NCA0MDVcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo3MjA6X19TWVNDQUxMKF9fTlJfY2xvY2tfYWRqdGltZTY0LCBzeXNfY2xvY2tfYWRqdGltZSlcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC03MjEtI2RlZmluZSBfX05SX2Nsb2NrX2dldHJlc190aW1lNjQgNDA2XG4tLVxudG9vbHMvcGVyZi9hcmNoL2FscGhhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyOS00OThcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDMwOjQ5OVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbnRvb2xzL3BlcmYvYXJjaC9hbHBoYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MzEtNTAwXHRjb21tb25cdHN5bmNmc1x0XHRcdFx0c3lzX3N5bmNmc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzg5LTM3MVx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM5MDozNzJcdGNvbW1vblx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfY2xvY2tfYWRqdGltZTMyXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5MS0zNzNcdGNvbW1vblx0c3luY2ZzXHRcdFx0c3lzX3N5bmNmc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDIyLTQwNFx0Y29tbW9uXHRjbG9ja19zZXR0aW1lNjRcdFx0XHRzeXNfY2xvY2tfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0MjM6NDA1XHRjb21tb25cdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyNC00MDZcdGNvbW1vblx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFx0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTM4Ni0zNzFcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjM4NzozNzJcdGNvbW1vblx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfY2xvY2tfYWRqdGltZTMyXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtMzg4LTM3M1x0Y29tbW9uXHRzeW5jZnNcdFx0XHRzeXNfc3luY2ZzXG4tLVxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxOS00MDRcdGNvbW1vblx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MjA6NDA1XHRjb21tb25cdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDIxLTQwNlx0Y29tbW9uXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzEwLTI5OVx0bjY0XHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibDozMTE6MzAwXHRuNjRcdGNsb2NrX2FkanRpbWVcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxudG9vbHMvcGVyZi9hcmNoL21pcHMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTMxMi0zMDFcdG42NFx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNjctMzIzXHRjb21tb25cdGZhbm90aWZ5X21hcmtcdFx0c3lzX2Zhbm90aWZ5X21hcmtcdFx0Y29tcGF0X3N5c19mYW5vdGlmeV9tYXJrXG50b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM2ODozMjRcdDMyXHRjbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzY5OjMyNFx0NjRcdGNsb2NrX2FkanRpbWVcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcwLTMyNVx0Y29tbW9uXHRuYW1lX3RvX2hhbmRsZV9hdFx0c3lzX25hbWVfdG9faGFuZGxlX2F0XG4tLVxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MDYtNDA0XHQzMlx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDA3OjQwNVx0MzJcdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lXG50b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQwOC00MDZcdDMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ0OC0zNDZcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XHRcdGNvbXBhdF9zeXNfb3Blbl9ieV9oYW5kbGVfYXRcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ0OTozNDdcdDMyXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDUwOjM0N1x0NjRcdGNsb2NrX2FkanRpbWVcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDUxOjM0N1x0c3B1XHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1Mi0zNDhcdGNvbW1vblx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDk4LTQwNFx0MzJcdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXHRcdHN5c19jbG9ja19zZXR0aW1lXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0OTk6NDA1XHQzMlx0Y2xvY2tfYWRqdGltZTY0XHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwMC00MDZcdDMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI5MC0zMzZcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyOTE6MzM3XHRjb21tb25cdGNsb2NrX2FkanRpbWVcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjkyLTMzOFx0Y29tbW9uXHRzeW5jZnNcdFx0XHRcdHN5c19zeW5jZnNcbi0tXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcwLTM2MFx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozNzE6MzYxXHRjb21tb25cdGNsb2NrX2FkanRpbWVcdFx0XHRzeXNfY2xvY2tfYWRqdGltZTMyXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcyLTM2Mlx0Y29tbW9uXHRzeW5jZnNcdFx0XHRcdHN5c19zeW5jZnNcbi0tXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDExLTQwNFx0Y29tbW9uXHRjbG9ja19zZXR0aW1lNjRcdFx0XHRzeXNfY2xvY2tfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxMjo0MDVcdGNvbW1vblx0Y2xvY2tfYWRqdGltZTY0XHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTMtNDA2XHRjb21tb25cdGNsb2NrX2dldHJlc190aW1lNjRcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MDMtMzMzXHRjb21tb25cdG9wZW5fYnlfaGFuZGxlX2F0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcdFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQwNDozMzRcdDMyXHRjbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0MDU6MzM0XHQ2NFx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfc3BhcmNfY2xvY2tfYWRqdGltZVxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQwNi0zMzVcdGNvbW1vblx0c3luY2ZzXHRcdFx0c3lzX3N5bmNmc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTMtNDA0XHQzMlx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTQ6NDA1XHQzMlx0Y2xvY2tfYWRqdGltZTY0XHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTUtNDA2XHQzMlx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFx0XHRzeXNfY2xvY2tfZ2V0cmVzXHRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTM1Ny0zNDJcdGkzODZcdG9wZW5fYnlfaGFuZGxlX2F0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcdFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDozNTg6MzQzXHRpMzg2XHRjbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtMzU5LTM0NFx0aTM4Nlx0c3luY2ZzXHRcdFx0c3lzX3N5bmNmc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDEzLTQwNFx0aTM4Nlx0Y2xvY2tfc2V0dGltZTY0XHRcdHN5c19jbG9ja19zZXR0aW1lXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQxNDo0MDVcdGkzODZcdGNsb2NrX2FkanRpbWU2NFx0XHRzeXNfY2xvY2tfYWRqdGltZVxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00MTUtNDA2XHRpMzg2XHRjbG9ja19nZXRyZXNfdGltZTY0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zMTYtMzA0XHRjb21tb25cdG9wZW5fYnlfaGFuZGxlX2F0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6MzE3OjMwNVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTMxOC0zMDZcdGNvbW1vblx0c3luY2ZzXHRcdFx0c3lzX3N5bmNmc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzUxLTMyOFx0Y29tbW9uXHRydF90Z3NpZ3F1ZXVlaW5mb1x0XHRzeXNfcnRfdGdzaWdxdWV1ZWluZm9cbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzUyOjMyOVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNTMtMzMwXHRjb21tb25cdHBybGltaXQ2NFx0XHRcdHN5c19wcmxpbWl0NjRcbi0tXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM3OC00MDRcdGNvbW1vblx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mzc5OjQwNVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lNjRcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zODAtNDA2XHRjb21tb25cdGNsb2NrX2dldHJlc190aW1lNjRcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzE0LTI2NVx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50Ymw6MzE1OjI2Nlx0dGltZTMyXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDozMTY6MjY2XHQ2NFx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTMxNy0yNjdcdGNvbW1vblx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibC0zNDgtNDA0XHQzMlx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50Ymw6MzQ5OjQwNVx0MzJcdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTM1MC00MDZcdDMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy0zLSAqIFJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIHNjYWxlZF9wcG1fdG9fcHBiKCkgaW50ZWdlciBvdmVyZmxvdyB0aGF0IGFsbG93ZWRcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjQ6ICogYSBjcmFmdGVkIGNsb2NrX2FkanRpbWUoQURKX0ZSRVFVRU5DWSkgdG8gYnlwYXNzIHRoZSBQVFAgbWF4X2FkaiBjaGVjay5cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTUtICpcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy0yMy1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjI0Oi8qIGNsb2NrX2FkanRpbWUgaXMgbm90IGF2YWlsYWJsZSBpbiBHTElCQyBcdTAwM2MgMi4xNCAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtMjUtI2lmICFfX0dMSUJDX1BSRVJFUSgyLCAxNClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTI2LSNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjI3OnN0YXRpYyBpbnQgY2xvY2tfYWRqdGltZShjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1leCAqdHgpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy0yOC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYzoyOTpcdHJldHVybiBzeXNjYWxsKF9fTlJfY2xvY2tfYWRqdGltZSwgaWQsIHR4KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTMwLX1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYz0zMz1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTYzLVx0ICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYzo2NDpcdGlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZyZXN0b3JlKSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjY1Olx0XHRrc2Z0X2V4aXRfc2tpcChcJiMzNDtjbG9ja19hZGp0aW1lKGdldCkgb24gJXM6ICVzXFxuXCYjMzQ7LCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy02Ni1cdHJlc3RvcmUubW9kZXMgPSBBREpfRlJFUVVFTkNZO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTc4LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmM6Nzk6XHRyZXQgPSBjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZ0eCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy04MC1cdGlmIChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGVycm5vID09IEVCVVNZKSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtOTQtXHQvKiBwdXQgdGhlIGZyZXF1ZW5jeSBiYWNrIHRoZSB3YXkgd2UgZm91bmQgaXQgKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjk1Olx0Y2xvY2tfYWRqdGltZShjbGtpZCwgXHUwMDI2cmVzdG9yZSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy05Ni1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jLTM5LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzo0MDovKiBjbG9ja19hZGp0aW1lIGlzIG5vdCBhdmFpbGFibGUgaW4gR0xJQkMgXHUwMDNjIDIuMTQgKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtNDEtI2lmICFfX0dMSUJDX1BSRVJFUSgyLCAxNClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtNDItI2luY2x1ZGUgXHUwMDNjc3lzL3N5c2NhbGwuaFx1MDAzZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzo0MzpzdGF0aWMgaW50IGNsb2NrX2FkanRpbWUoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXggKnR4KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy00NC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jOjQ1Olx0cmV0dXJuIHN5c2NhbGwoX19OUl9jbG9ja19hZGp0aW1lLCBpZCwgdHgpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy00Ni19XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYz0xNTY9aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jLTM2NC1cdFx0dHguZnJlcSA9IHBwYl90b19zY2FsZWRfcHBtKGFkamZyZXEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzozNjU6XHRcdGlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZ0eCkpIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmM6MzY2Olx0XHRcdHBlcnJvcihcJiMzNDtjbG9ja19hZGp0aW1lXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzY3LVx0XHR9IGVsc2Uge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzgxLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzozODI6XHRcdGlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZ0eCkgXHUwMDNjIDApIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmM6MzgzOlx0XHRcdHBlcnJvcihcJiMzNDtjbG9ja19hZGp0aW1lXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzg0LVx0XHR9IGVsc2Uge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzkzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzozOTQ6XHRcdGlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZ0eCkgXHUwMDNjIDApIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmM6Mzk1Olx0XHRcdHBlcnJvcihcJiMzNDtjbG9ja19hZGp0aW1lXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzk2LVx0XHR9IGVsc2Uge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jLTM3LSNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jOjM4OmludCBjbG9ja19hZGp0aW1lKGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWV4ICp0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jLTM5LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jOjQwOlx0cmV0dXJuIHN5c2NhbGwoX19OUl9jbG9ja19hZGp0aW1lLCBpZCwgdHgpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmMtNDEtfVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jPTE5Mz1pbnQgc2V0X29mZnNldChsb25nIGxvbmcgb2Zmc2V0LCBpbnQgdXNlX25hbm8pXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmMtMjE4LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmM6MjE5Olx0cmV0ID0gY2xvY2tfYWRqdGltZShDTE9DS19SRUFMVElNRSwgXHUwMDI2dG14KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jLTIyMC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYz0yMjg9aW50IHNldF9iYWRfb2Zmc2V0KGxvbmcgc2VjLCBsb25nIHVzZWMsIGludCB1c2VfbmFubylcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYy0yMzgtXHR0bXgudGltZS50dl91c2VjID0gdXNlYztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jOjIzOTpcdHJldCA9IGNsb2NrX2FkanRpbWUoQ0xPQ0tfUkVBTFRJTUUsIFx1MDAyNnRteCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYy0yNDAtXHRpZiAocmV0IFx1MDAzZT0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU5MQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGNsb2NrX2FkanRpbWUgU3lzY2FsbCBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzY2FsbCBhbmQgaG93IGl0JiMzOTtzIGltcGxlbWVudGVkLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgYHN5c19jbG9ja19hZGp0aW1lYCBpcyB0aGUgZW50cnkgcG9pbnQsIG5hdHVyYWxseS4gVGhpcyB0aGVuIGxlYWRzIHRvIGBkb19jbG9ja19hZGp0aW1lYCwgd2hpY2gsIGZvciB0aGUgcG9zaXggZHluYW1pYyBjbG9ja3MsIGNhbGxzIGBwY19jbG9ja19hZGp0aW1lYC4gVGhpcyB0aGVuIGJvaWxzIGRvd24gdG8gYSBjYWxsIHRvIGBjZC5jbGstJmd0O29wcy5jbG9ja19hZGp0aW1lKGNkLmNsaywgdHgpYC4gU28sIHRoZSBwYXRoIGlzIGRlZmluaXRlbHkgY2xlYXIgYW5kIHJlYWNoYWJsZSBmcm9tIHRoZSBzeXNjYWxsIGxldmVsLgoKTm93LCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFBUUF8xNTg4X0NMT0NLX01PQ0tgLiBCYXNlZCBvbiB0aGUgY29kZSwgaXQgc2VlbXMgdGhpcyBpcyBjbG9zZWx5IHJlbGF0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWcgcmVxdWlyZW1lbnRzLiBJdCBsb29rcyBsaWtlIGBQVFBfMTU4OF9DTE9DS2AgaXMgYSBtdXN0LWhhdmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBiZSByZWxldmFudCBoZXJlLiBMZXQgbWUgZG91YmxlLWNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnPTE3NT1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfRkMzV1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTg2LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxODc6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctMTg4LVx0dHJpc3RhdGUgXCYjMzQ7TW9jay11cCBQVFAgY2xvY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwNzQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgUFRQIEtjb25maWcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIGRpdmUgcmlnaHQgaW50byB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUuIEkmIzM5O20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gZ2V0dGluZyBteSBiZWFyaW5ncyBhcm91bmQgbGluZSAxODcsIGFzIHRoYXQmIzM5O3Mgb2Z0ZW4gYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGdyYXNwIHRoZSBjb3JlIG9wdGlvbnMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBkZXBlbmRlbmNpZXMsIGhlbHAgdGV4dCwgYW5kIGRlZmF1bHQgdmFsdWVzIHRoYXQmIzM5O2xsIHNoYXBlIHRoZSBtb2R1bGUmIzM5O3MgYmVoYXZpb3IuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZGV2ZWxvcGVycyBoYXZlIGRlZW1lZCBpbXBvcnRhbnQgdG8gZXhwb3NlIGF0IHRoZSBjb25maWd1cmF0aW9uIGxldmVsIGhlcmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGV5JiMzOTt2ZSBoYW5kbGVkIHZhcmlvdXMgUFRQIGZlYXR1cmVzLCBwZXJoYXBzIGRpZmZlcmVudCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgb3IgcG90ZW50aWFsbHkgZXZlbiBjb21wYXRpYmlsaXR5IHNoaW1zLiBJIHdhbnQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVtLCBhbmQgaG93IGl0IGFsbCB0cmFuc2xhdGVzIGludG8gdGhlIHJ1bnRpbWUgUFRQIGJlaGF2aW9yLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGltcGxpY2F0aW9ucyBvZiBjaGFuZ2luZyB0aG9zZSBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxODA6XHRcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciB1c2luZyBSZW5lc2FzIEZlbXRvQ2xvY2szIFdpcmVsZXNzXG4gMTgxOlx0XHQgIGFzIGEgUFRQIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdXIgdGltZSBzdGFtcGluZ1xuIDE4MjpcdFx0ICBNQUMgaXMgY29ubmVjdGVkIHRvIHRoZSBSRU5FU0FTIGNoaXAuXG4gMTgzOlx0XG4gMTg0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxODU6XHRcdCAgd2lsbCBiZSBjYWxsZWQgcHRwX2ZjMy5cbiAxODY6XHRcbiAxODc6XHRjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xuIDE4ODpcdFx0dHJpc3RhdGUgXCYjMzQ7TW9jay11cCBQVFAgY2xvY2tcJiMzNDtcbiAxODk6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcbiAxOTA6XHRcdGhlbHBcbiAxOTE6XHRcdCAgVGhpcyBkcml2ZXIgb2ZmZXJzIGEgc2V0IG9mIFBUUCBjbG9jayBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucyBvdmVyXG4gMTkyOlx0XHQgIHRoZSBzeXN0ZW0gbW9ub3RvbmljIHRpbWUuIEl0IGNhbiBiZSB1c2VkIGJ5IHZpcnR1YWwgbmV0d29yayBkZXZpY2VcbiAxOTM6XHRcdCAgZHJpdmVycyB0byBlbXVsYXRlIFBUUCBjYXBhYmlsaXRpZXMuXG4gMTk0Olx0XG4gMTk1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxOTY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgcHRwX21vY2suXG4gMTk3Olx0XG4gMTk4Olx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNV1xuIDE5OTpcdFx0dHJpc3RhdGUgXCYjMzQ7Vk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjgzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQVFAgQ2xvY2sgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGhpbmdlIG9uIGBQVFBfMTU4OF9DTE9DS2AuIFNwZWNpZmljYWxseSwgdGhlIHZ1bG5lcmFiaWxpdHkgcmVzaWRlcyBpbiB0aGUgYHB0cF9jbG9ja19hZGp0aW1lYCBmdW5jdGlvbi4gTGV0IG1lIHRoaW5rLCBzbyB0aGVyZSBhcmUgc29tZSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBuZWVkZWQgdG9vOiBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgYW5kIHBvdGVudGlhbGx5IGBQVFBfMTU4OF9DTE9DS19LVk1gLCBhbHRob3VnaCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhhdCBsYXN0IG9uZS4KClJpZ2h0LCBJIG5lZWQgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcm9ibGVtLiBTbywgYHB0cF9jbG9ja19hZGp0aW1lYCBpbiBgZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdGhhdCB3YXMgbW9kaWZpZWQuIFdhaXQsIHRoZXJlJiMzOTtzIGFsc28gdGhhdCBzZWxmdGVzdCBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzaWduOyBpdCBjb25maXJtcyB0aGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzY2FsbC4gRXhjZWxsZW50IQoKU28sIHRoZSBjcnV4IG9mIHRoZSBpc3N1ZSBpcyB0aGUgaW50ZWdlciBvdmVyZmxvdyB3aXRoaW4gYHB0cF9jbG9ja19hZGp0aW1lYC4gSXQgc2VlbXMgd2hlbiBjb252ZXJ0aW5nIGB0eC0mZ3Q7ZnJlcWAgdG8gcGFydHMtcGVyLWJpbGxpb24gKHBwYikgdXNpbmcgYHNjYWxlZF9wcG1fdG9fcHBiKClgLCB0aGUgb3ZlcmZsb3cgYWxsb3dzIGJ5cGFzc2luZyB0aGUgYG1heF9hZGpgIGNoZWNrLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQmIzM5O3MgZXhwbG9pdGFibGUgdGhyb3VnaCB0aGUgc3RhbmRhcmQgYGNsb2NrX2FkanRpbWVgIHN5c3RlbSBjYWxsIG9uIGEgUFRQIGNsb2NrIGRldmljZS4KClRvIHN1bW1hcml6ZSBmb3IgZnV6emluZyBwdXJwb3NlczogbXkgZm9jdXMgaXMgc3F1YXJlbHkgb24gdGhlIHN5bWJvbCBgcHRwX2Nsb2NrX2FkanRpbWVgLiBJJiMzOTtsbCB3YW50IHRvIGVuc3VyZSB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbnMg4oCTIGBQVFBfMTU4OF9DTE9DS2AsIGBQVFBfMTU4OF9DTE9DS19NT0NLYCwgYW5kIHBvc3NpYmx5IGBQVFBfMTU4OF9DTE9DS19LVk1gIOKAkyBhcmUgZW5hYmxlZC4gQW5kIGFnYWluLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIGBQVFBfMTU4OF9DTE9DS19LVk1gIGlzIGluZGVlZCBhIGdvb2QgY29uZmlnIHRvIGhhdmUuIE15IGFpbSB3aWxsIGJlIHRvIGZ1enogdGhpcyBmdW5jdGlvbiB0aG9yb3VnaGx5IHRvIHZlcmlmeSB0aGUgb3ZlcmZsb3cgY2hlY2sgaXMgaW5kZWVkIGZpeGVkIGFuZCB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IHNpbWlsYXIgaXNzdWVzIGx1cmtpbmcgd2l0aGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvcHRwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEyMDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBwdHBfcGNoLlxuIDEyMTpcdFxuIDEyMjpcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cbiAxMjM6XHRcdHRyaXN0YXRlIFwmIzM0O0tWTSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuIDEyNDpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xuIDEyNTpcdFx0ZGVwZW5kcyBvbiAoS1ZNX0dVRVNUIFx1MDAyNlx1MDAyNiBYODYpIHx8IChIQVZFX0FSTV9TTUNDQ19ESVNDT1ZFUlkgXHUwMDI2XHUwMDI2IEFSTV9BUkNIX1RJTUVSKVxuIDEyNjpcdFx0ZGVmYXVsdCB5XG4gMTI3Olx0XHRoZWxwXG4gMTI4Olx0XHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcga3ZtIGluZnJhc3RydWN0dXJlIGFzIGEgUFRQXG4gMTI5Olx0XHQgIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgS1ZNIGd1ZXN0cy5cbiAxMzA6XHRcbiAxMzE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDEzMjpcdFx0ICB3aWxsIGJlIGNhbGxlZCBwdHBfa3ZtLlxuIDEzMzpcdFxuIDEzNDpcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXG4gMTM1Olx0XHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIG1hY2hpbmUgUFRQIGNsb2NrXCYjMzQ7XG4gMTM2Olx0XHRkZXBlbmRzIG9uIFg4Nl9UU0MgfHwgQVJNX0FSQ0hfVElNRVJcbiAxMzc6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0sgXHUwMDI2XHUwMDI2IEFSQ0hfU1VQUE9SVFNfSU5UMTI4XG4gMTM4Olx0XHRkZWZhdWx0IFBUUF8xNTg4X0NMT0NLX0tWTVxuIDEzOTpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTk5NAoJCQkJCQkJb3V0cHV0OiAxNjAKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTdHJlYW1saW5pbmcgUFRQIENsb2NrIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBgUFRQXzE1ODhfQ0xPQ0tfS1ZNYCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQsIHNldCB0byAmIzM5O3kmIzM5Oywgd2hlbiBpdHMgZGVwZW5kZW5jaWVzIGFyZSBhbGwgc2F0aXNmaWVkIOKAkyB3aGljaCBpcyB0aGUgaWRlYWwgc2l0dWF0aW9uLiBJIGNhbiBsZXZlcmFnZSB0aGlzIGV4aXN0aW5nIGRlcGVuZGVuY3kgc2V0dXAuIFdoeSBjb21wbGljYXRlIHRoaW5ncz8gSXQgbG9va3MgbGlrZSBJIGNhbiBzaW1wbGlmeSB0aGUgY29uZmlndXJhdGlvbiBieSBqdXN0IGluY2x1ZGluZyB0aGUgY29yZSBgUFRQXzE1ODhfQ0xPQ0tgIGFuZCB0aGUgYFBUUF8xNTg4X0NMT0NLX01PQ0tgIG9wdGlvbnMgZGlyZWN0bHkuIFRoYXQgc2hvdWxkIGhhbmRsZSBldmVyeXRoaW5nIGVmZmljaWVudGx5LiBOb3csIEkgc2hvdWxkIG1vdmUgdG8gdXNpbmcgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLX01PQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwdHBfY2xvY2tfYWRqdGltZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBwdHBfY2xvY2tfYWRqdGltZWAgd2hlbiBjb252ZXJ0aW5nIGB0eC1cdTAwM2VmcmVxYCB0byBgcHBiYCB1c2luZyBgc2NhbGVkX3BwbV90b19wcGIoKWAuIFRoaXMgb3ZlcmZsb3cgYWxsb3dlZCBieXBhc3NpbmcgdGhlIGBtYXhfYWRqYCBjaGVjay4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGBjbG9ja19hZGp0aW1lYCBzeXNjYWxsIG9uIGEgUFRQIGNsb2NrIGRldmljZS4gRnV6emluZyB0aGlzIGZ1bmN0aW9uIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGNoZWNrIGlzIGNvcnJlY3QgYW5kIG5vIG90aGVyIHNpbWlsYXIgaXNzdWVzIGV4aXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DS19NT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHRwX2Nsb2NrX2FkanRpbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBgcHRwX2Nsb2NrX2FkanRpbWVgIHdoZW4gY29udmVydGluZyBgdHgtXHUwMDNlZnJlcWAgdG8gYHBwYmAgdXNpbmcgYHNjYWxlZF9wcG1fdG9fcHBiKClgLiBUaGlzIG92ZXJmbG93IGFsbG93ZWQgYnlwYXNzaW5nIHRoZSBgbWF4X2FkamAgY2hlY2suIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzY2FsbCBvbiBhIFBUUCBjbG9jayBkZXZpY2UuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoZSBvdmVyZmxvdyBjaGVjayBpcyBjb3JyZWN0IGFuZCBubyBvdGhlciBzaW1pbGFyIGlzc3VlcyBleGlzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjMyOjQ0LjQ5MDM1MTkzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NjE2ODIxMDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS19NT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicHRwX2Nsb2NrX2FkanRpbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBwdHBfY2xvY2tfYWRqdGltZWAgd2hlbiBjb252ZXJ0aW5nIGB0eC1cXHUwMDNlZnJlcWAgdG8gYHBwYmAgdXNpbmcgYHNjYWxlZF9wcG1fdG9fcHBiKClgLiBUaGlzIG92ZXJmbG93IGFsbG93ZWQgYnlwYXNzaW5nIHRoZSBgbWF4X2FkamAgY2hlY2suIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzY2FsbCBvbiBhIFBUUCBjbG9jayBkZXZpY2UuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoZSBvdmVyZmxvdyBjaGVjayBpcyBjb3JyZWN0IGFuZCBubyBvdGhlciBzaW1pbGFyIGlzc3VlcyBleGlzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzI6NDQuNDkwMzYwMjU5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTUzNTkzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxNDJiYzI1YzkyN2ViNzU1NTAzMGEzNjQ5YjVlN2M2MGVjYWI5MGE1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjMyOjQyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jIGIvZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNcXG5pbmRleCBkNmY1NGNjYWY5M2JiNS4uNDExMTM0MmQ2NGYwM2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNcXG4rKysgYi9kcml2ZXJzL3B0cC9wdHBfY2xvY2suY1xcbkBAIC05LDYgKzksNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5pdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L292ZXJmbG93LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wb3NpeC1jbG9jay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHBzX2tlcm5lbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG5AQCAtMTU5LDcgKzE2MCwxOCBAQCBzdGF0aWMgaW50IHB0cF9jbG9ja19hZGp0aW1lKHN0cnVjdCBwb3NpeF9jbG9jayAqcGMsIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqdHgpXFxuIFxcdFxcdGRlbHRhID0ga3RpbWVfdG9fbnMoa3QpO1xcbiBcXHRcXHRlcnIgPSBvcHMtXFx1MDAzZWFkanRpbWUob3BzLCBkZWx0YSk7XFxuIFxcdH0gZWxzZSBpZiAodHgtXFx1MDAzZW1vZGVzIFxcdTAwMjYgQURKX0ZSRVFVRU5DWSkge1xcbi1cXHRcXHRsb25nIHBwYiA9IHNjYWxlZF9wcG1fdG9fcHBiKHR4LVxcdTAwM2VmcmVxKTtcXG4rXFx0XFx0bG9uZyBwcGI7XFxuK1xcdFxcdHM2NCB0bXA7XFxuK1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBzY2FsZWRfcHBtX3RvX3BwYigpIG11bHRpcGxpZXMgKDEgKyBmcmVxKSBieSAxMjUgaW4gczY0O1xcbitcXHRcXHQgKiByZWplY3QgYSAtXFx1MDAzZWZyZXEgbGFyZ2UgZW5vdWdoIHRvIG92ZXJmbG93IHRoYXQsIHdoaWNoIHdvdWxkXFxuK1xcdFxcdCAqIG90aGVyd2lzZSB3cmFwIHRoZSByZXN1bHQgYmFjayBpbnRvIHRoZSBtYXhfYWRqIHJhbmdlLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdygoczY0KXR4LVxcdTAwM2VmcmVxLCAoczY0KTEsIFxcdTAwMjZ0bXApIHx8XFxuK1xcdFxcdCAgICBjaGVja19tdWxfb3ZlcmZsb3codG1wLCAoczY0KTEyNSwgXFx1MDAyNnRtcCkpXFxuK1xcdFxcdFxcdHJldHVybiAtRVJBTkdFO1xcbitcXHRcXHRwcGIgPSBzY2FsZWRfcHBtX3RvX3BwYih0eC1cXHUwMDNlZnJlcSk7XFxuIFxcdFxcdGlmIChwcGIgXFx1MDAzZSBvcHMtXFx1MDAzZW1heF9hZGogfHwgcHBiIFxcdTAwM2MgLW9wcy1cXHUwMDNlbWF4X2FkailcXG4gXFx0XFx0XFx0cmV0dXJuIC1FUkFOR0U7XFxuIFxcdFxcdGVyciA9IG9wcy1cXHUwMDNlYWRqZmluZShvcHMsIHR4LVxcdTAwM2VmcmVxKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlXFxuaW5kZXggOGY1N2Y4OGVjYWRkNjMuLmRkNzM3NmNjOWJmNWQxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9NYWtlZmlsZVxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9NYWtlZmlsZVxcbkBAIC0xLDYgKzEsNiBAQFxcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuIENGTEFHUyArPSAkKEtIRFJfSU5DTFVERVMpXFxuLVRFU1RfR0VOX1BST0dTIDo9IHRlc3RwdHBcXG4rVEVTVF9HRU5fUFJPR1MgOj0gdGVzdHB0cCBwdHBfZnJlcV9vdmVyZmxvd1xcbiBMRExJQlMgKz0gLWxydFxcbiBURVNUX1BST0dTID0gcGhjLnNoXFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNDE3YzA1MTY2MjJkYThcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmNcXG5AQCAtMCwwICsxLDk5IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qXFxuKyAqIFJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIHNjYWxlZF9wcG1fdG9fcHBiKCkgaW50ZWdlciBvdmVyZmxvdyB0aGF0IGFsbG93ZWRcXG4rICogYSBjcmFmdGVkIGNsb2NrX2FkanRpbWUoQURKX0ZSRVFVRU5DWSkgdG8gYnlwYXNzIHRoZSBQVFAgbWF4X2FkaiBjaGVjay5cXG4rICpcXG4rICogdGVzdHB0cCdzIC1mIG9wdGlvbiBzdG9yZXMgdGhlIGFkanVzdG1lbnQgYXMgYW4gaW50IHBwYiBhbmQgY2Fubm90IGV4cHJlc3NcXG4rICogdGhlIDY0LWJpdCBzY2FsZWQtcHBtIHZhbHVlcyBuZWVkZWQgdG8gb3ZlcmZsb3cgdGhlIGNvbnZlcnNpb24sIHNvIHRoaXNcXG4rICogdGVzdCBjcmFmdHMgc3RydWN0IHRpbWV4LmZyZXEgZGlyZWN0bHkuXFxuKyAqL1xcbisjZGVmaW5lIF9HTlVfU09VUkNFXFxuKyNkZWZpbmUgX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fXFxuKyNpbmNsdWRlIFxcdTAwM2NlcnJuby5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjZmNudGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0cmluZy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3lzL2lvY3RsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzeXMvdGltZXguaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3RpbWUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3VuaXN0ZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX2Nsb2NrLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcXCIuLi9rc2VsZnRlc3QuaFxcXCJcXG4rXFxuKyNkZWZpbmUgRkRfVE9fQ0xPQ0tJRChmZClcXHQoKGNsb2NraWRfdCkoKCgodW5zaWduZWQgaW50KX4oZmQpKSBcXHUwMDNjXFx1MDAzYyAzKSB8IDMpKVxcbitcXG4rLyogY2xvY2tfYWRqdGltZSBpcyBub3QgYXZhaWxhYmxlIGluIEdMSUJDIFxcdTAwM2MgMi4xNCAqL1xcbisjaWYgIV9fR0xJQkNfUFJFUkVRKDIsIDE0KVxcbisjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXG4rc3RhdGljIGludCBjbG9ja19hZGp0aW1lKGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWV4ICp0eClcXG4re1xcbitcXHRyZXR1cm4gc3lzY2FsbChfX05SX2Nsb2NrX2FkanRpbWUsIGlkLCB0eCk7XFxuK31cXG4rI2VuZGlmXFxuK1xcbitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbit7XFxuK1xcdGNvbnN0IGNoYXIgKmRldmljZSA9IGFyZ2MgXFx1MDAzZSAxID8gYXJndlsxXSA6IFxcXCIvZGV2L3B0cDBcXFwiO1xcbitcXHRzdHJ1Y3QgcHRwX2Nsb2NrX2NhcHMgY2FwcztcXG4rXFx0c3RydWN0IHRpbWV4IHJlc3RvcmUgPSB7IDAgfTtcXG4rXFx0c3RydWN0IHRpbWV4IHR4ID0geyAwIH07XFxuK1xcdGNsb2NraWRfdCBjbGtpZDtcXG4rXFx0aW50IGZkLCByZXQ7XFxuK1xcbitcXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xcbitcXHRrc2Z0X3NldF9wbGFuKDEpO1xcbitcXG4rXFx0aWYgKHNpemVvZih0eC5mcmVxKSBcXHUwMDNjIDgpXFxuK1xcdFxcdGtzZnRfZXhpdF9za2lwKFxcXCJ0aGUgb3ZlcmZsb3cgb25seSBhZmZlY3RzIDY0LWJpdCBrZXJuZWxzXFxcXG5cXFwiKTtcXG4rXFxuK1xcdGZkID0gb3BlbihkZXZpY2UsIE9fUkRXUik7XFxuK1xcdGlmIChmZCBcXHUwMDNjIDApXFxuK1xcdFxcdGtzZnRfZXhpdF9za2lwKFxcXCJjYW5ub3Qgb3BlbiAlczogJXNcXFxcblxcXCIsIGRldmljZSwgc3RyZXJyb3IoZXJybm8pKTtcXG4rXFxuK1xcdGNsa2lkID0gRkRfVE9fQ0xPQ0tJRChmZCk7XFxuK1xcbitcXHRpZiAoaW9jdGwoZmQsIFBUUF9DTE9DS19HRVRDQVBTLCBcXHUwMDI2Y2FwcykpXFxuK1xcdFxcdGtzZnRfZXhpdF9za2lwKFxcXCJQVFBfQ0xPQ0tfR0VUQ0FQUyBvbiAlczogJXNcXFxcblxcXCIsIGRldmljZSwgc3RyZXJyb3IoZXJybm8pKTtcXG4rXFx0aWYgKCFjYXBzLm1heF9hZGopXFxuK1xcdFxcdGtzZnRfZXhpdF9za2lwKFxcXCIlcyBkb2VzIG5vdCBzdXBwb3J0IGZyZXF1ZW5jeSBhZGp1c3RtZW50XFxcXG5cXFwiLCBkZXZpY2UpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUmVtZW1iZXIgdGhlIGN1cnJlbnQgZnJlcXVlbmN5LiAgQSB2dWxuZXJhYmxlIGtlcm5lbCBhY2NlcHRzIHRoZVxcbitcXHQgKiBib2d1cyB2YWx1ZSBiZWxvdyBhbmQgcHJvZ3JhbXMgaXQgaW50byB0aGUgaGFyZHdhcmUsIHNvIHJlc3RvcmUgdGhlXFxuK1xcdCAqIG9yaWdpbmFsIGFmdGVyd2FyZHMgaW5zdGVhZCBvZiBsZWF2aW5nIHRoZSBjbG9jayBjb3JydXB0ZWQuXFxuK1xcdCAqL1xcbitcXHRpZiAoY2xvY2tfYWRqdGltZShjbGtpZCwgXFx1MDAyNnJlc3RvcmUpKVxcbitcXHRcXHRrc2Z0X2V4aXRfc2tpcChcXFwiY2xvY2tfYWRqdGltZShnZXQpIG9uICVzOiAlc1xcXFxuXFxcIiwgZGV2aWNlLCBzdHJlcnJvcihlcnJubykpO1xcbitcXHRyZXN0b3JlLm1vZGVzID0gQURKX0ZSRVFVRU5DWTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqICgxICsgMTQ3NTczOTUyNTg5Njc2NDEyKSAqIDEyNSA9PSAyXjY0ICsgOSwgd2hpY2ggb3ZlcmZsb3dzIHM2NCBpblxcbitcXHQgKiBzY2FsZWRfcHBtX3RvX3BwYigpIGFuZCB3cmFwcyB0aGUgcmVzdWx0IHRvIGEgcHBiIG9mIDAuICBBIGtlcm5lbFxcbitcXHQgKiB0aGF0IGRvZXMgbm90IGRldGVjdCB0aGUgb3ZlcmZsb3cgbGV0cyB0aGlzIGFic3VyZCBmcmVxdWVuY3kgcGFzdFxcbitcXHQgKiB0aGUgbWF4X2FkaiBjaGVjazsgYSBmaXhlZCBrZXJuZWwgcmVqZWN0cyBpdCB3aXRoIC1FUkFOR0UuXFxuK1xcdCAqL1xcbitcXHR0eC5tb2RlcyA9IEFESl9GUkVRVUVOQ1k7XFxuKyNpZiBfX1NJWkVPRl9MT05HX18gXFx1MDAzZT0gOFxcbitcXHR0eC5mcmVxID0gMTQ3NTczOTUyNTg5Njc2NDEyTDtcXG4rI2VuZGlmXFxuK1xcbitcXHRyZXQgPSBjbG9ja19hZGp0aW1lKGNsa2lkLCBcXHUwMDI2dHgpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiBlcnJubyA9PSBFQlVTWSkge1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBBIGZyZWUtcnVubmluZyBwaHlzaWNhbCBjbG9jayAodmlydHVhbCBjbG9ja3MgYWN0aXZlKSByZWplY3RzXFxuK1xcdFxcdCAqIGZyZXF1ZW5jeSBhZGp1c3RtZW50IHdpdGggLUVCVVNZIGJlZm9yZSB0aGUgb3ZlcmZsb3cgaXMgZXZlblxcbitcXHRcXHQgKiBldmFsdWF0ZWQsIHNvIHRoZSB0ZXN0IGNhbm5vdCBydW4gaGVyZS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcChcXFwiJXM6IGZyZXF1ZW5jeSBhZGp1c3RtZW50IHJldHVybmVkIEVCVVNZLCBza2lwcGluZ1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgICAgZGV2aWNlKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0a3NmdF90ZXN0X3Jlc3VsdChyZXQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IGVycm5vID09IEVSQU5HRSxcXG4rXFx0XFx0XFx0XFx0IFxcXCJvdmVyZmxvd2luZyBmcmVxdWVuY3kgYWRqdXN0bWVudCBpcyByZWplY3RlZCAocmV0PSVkIGVycm5vPSVkKVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IHJldCwgcmV0IFxcdTAwM2MgMCA/IGVycm5vIDogMCk7XFxuK1xcdH1cXG4rXFxuK1xcdC8qIHB1dCB0aGUgZnJlcXVlbmN5IGJhY2sgdGhlIHdheSB3ZSBmb3VuZCBpdCAqL1xcbitcXHRjbG9ja19hZGp0aW1lKGNsa2lkLCBcXHUwMDI2cmVzdG9yZSk7XFxuK1xcbitcXHRjbG9zZShmZCk7XFxuK1xcdGtzZnRfZmluaXNoZWQoKTtcXG4rfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMjo0NS4yNDcwOTM5MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwNjg2MDA2NDk0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tfTU9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInB0cF9jbG9ja19hZGp0aW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBgcHRwX2Nsb2NrX2FkanRpbWVgIHdoZW4gY29udmVydGluZyBgdHgtXFx1MDAzZWZyZXFgIHRvIGBwcGJgIHVzaW5nIGBzY2FsZWRfcHBtX3RvX3BwYigpYC4gVGhpcyBvdmVyZmxvdyBhbGxvd2VkIGJ5cGFzc2luZyB0aGUgYG1heF9hZGpgIGNoZWNrLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgYGNsb2NrX2FkanRpbWVgIHN5c2NhbGwgb24gYSBQVFAgY2xvY2sgZGV2aWNlLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgb3ZlcmZsb3cgY2hlY2sgaXMgY29ycmVjdCBhbmQgbm8gb3RoZXIgc2ltaWxhciBpc3N1ZXMgZXhpc3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTQyYmMyNWM5MjdlYjc1NTUwMzBhMzY0OWI1ZTdjNjBlY2FiOTBhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjMyOjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMgYi9kcml2ZXJzL3B0cC9wdHBfY2xvY2suY1xuaW5kZXggZDZmNTRjY2FmOTNiYjUuLjQxMTEzNDJkNjRmMDNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNcbisrKyBiL2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jXG5AQCAtOSw2ICs5LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbml0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb3ZlcmZsb3cuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bvc2l4LWNsb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcHNfa2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG5AQCAtMTU5LDcgKzE2MCwxOCBAQCBzdGF0aWMgaW50IHB0cF9jbG9ja19hZGp0aW1lKHN0cnVjdCBwb3NpeF9jbG9jayAqcGMsIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqdHgpXG4gXHRcdGRlbHRhID0ga3RpbWVfdG9fbnMoa3QpO1xuIFx0XHRlcnIgPSBvcHMtXHUwMDNlYWRqdGltZShvcHMsIGRlbHRhKTtcbiBcdH0gZWxzZSBpZiAodHgtXHUwMDNlbW9kZXMgXHUwMDI2IEFESl9GUkVRVUVOQ1kpIHtcbi1cdFx0bG9uZyBwcGIgPSBzY2FsZWRfcHBtX3RvX3BwYih0eC1cdTAwM2VmcmVxKTtcbitcdFx0bG9uZyBwcGI7XG4rXHRcdHM2NCB0bXA7XG4rXG4rXHRcdC8qXG4rXHRcdCAqIHNjYWxlZF9wcG1fdG9fcHBiKCkgbXVsdGlwbGllcyAoMSArIGZyZXEpIGJ5IDEyNSBpbiBzNjQ7XG4rXHRcdCAqIHJlamVjdCBhIC1cdTAwM2VmcmVxIGxhcmdlIGVub3VnaCB0byBvdmVyZmxvdyB0aGF0LCB3aGljaCB3b3VsZFxuK1x0XHQgKiBvdGhlcndpc2Ugd3JhcCB0aGUgcmVzdWx0IGJhY2sgaW50byB0aGUgbWF4X2FkaiByYW5nZS5cbitcdFx0ICovXG4rXHRcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coKHM2NCl0eC1cdTAwM2VmcmVxLCAoczY0KTEsIFx1MDAyNnRtcCkgfHxcbitcdFx0ICAgIGNoZWNrX211bF9vdmVyZmxvdyh0bXAsIChzNjQpMTI1LCBcdTAwMjZ0bXApKVxuK1x0XHRcdHJldHVybiAtRVJBTkdFO1xuK1x0XHRwcGIgPSBzY2FsZWRfcHBtX3RvX3BwYih0eC1cdTAwM2VmcmVxKTtcbiBcdFx0aWYgKHBwYiBcdTAwM2Ugb3BzLVx1MDAzZW1heF9hZGogfHwgcHBiIFx1MDAzYyAtb3BzLVx1MDAzZW1heF9hZGopXG4gXHRcdFx0cmV0dXJuIC1FUkFOR0U7XG4gXHRcdGVyciA9IG9wcy1cdTAwM2VhZGpmaW5lKG9wcywgdHgtXHUwMDNlZnJlcSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlXG5pbmRleCA4ZjU3Zjg4ZWNhZGQ2My4uZGQ3Mzc2Y2M5YmY1ZDEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvTWFrZWZpbGVcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9NYWtlZmlsZVxuQEAgLTEsNiArMSw2IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuIENGTEFHUyArPSAkKEtIRFJfSU5DTFVERVMpXG4tVEVTVF9HRU5fUFJPR1MgOj0gdGVzdHB0cFxuK1RFU1RfR0VOX1BST0dTIDo9IHRlc3RwdHAgcHRwX2ZyZXFfb3ZlcmZsb3dcbiBMRExJQlMgKz0gLWxydFxuIFRFU1RfUFJPR1MgPSBwaGMuc2hcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQxN2MwNTE2NjIyZGE4XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuY1xuQEAgLTAsMCArMSw5OSBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLypcbisgKiBSZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBzY2FsZWRfcHBtX3RvX3BwYigpIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBhbGxvd2VkXG4rICogYSBjcmFmdGVkIGNsb2NrX2FkanRpbWUoQURKX0ZSRVFVRU5DWSkgdG8gYnlwYXNzIHRoZSBQVFAgbWF4X2FkaiBjaGVjay5cbisgKlxuKyAqIHRlc3RwdHAncyAtZiBvcHRpb24gc3RvcmVzIHRoZSBhZGp1c3RtZW50IGFzIGFuIGludCBwcGIgYW5kIGNhbm5vdCBleHByZXNzXG4rICogdGhlIDY0LWJpdCBzY2FsZWQtcHBtIHZhbHVlcyBuZWVkZWQgdG8gb3ZlcmZsb3cgdGhlIGNvbnZlcnNpb24sIHNvIHRoaXNcbisgKiB0ZXN0IGNyYWZ0cyBzdHJ1Y3QgdGltZXguZnJlcSBkaXJlY3RseS5cbisgKi9cbisjZGVmaW5lIF9HTlVfU09VUkNFXG4rI2RlZmluZSBfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX19cbisjaW5jbHVkZSBcdTAwM2NlcnJuby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N0cmluZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3lzL2lvY3RsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzeXMvdGltZXguaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3RpbWUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3VuaXN0ZC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrLmhcdTAwM2VcbisjaW5jbHVkZSBcIi4uL2tzZWxmdGVzdC5oXCJcbitcbisjZGVmaW5lIEZEX1RPX0NMT0NLSUQoZmQpXHQoKGNsb2NraWRfdCkoKCgodW5zaWduZWQgaW50KX4oZmQpKSBcdTAwM2NcdTAwM2MgMykgfCAzKSlcbitcbisvKiBjbG9ja19hZGp0aW1lIGlzIG5vdCBhdmFpbGFibGUgaW4gR0xJQkMgXHUwMDNjIDIuMTQgKi9cbisjaWYgIV9fR0xJQkNfUFJFUkVRKDIsIDE0KVxuKyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbitzdGF0aWMgaW50IGNsb2NrX2FkanRpbWUoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXggKnR4KVxuK3tcbitcdHJldHVybiBzeXNjYWxsKF9fTlJfY2xvY2tfYWRqdGltZSwgaWQsIHR4KTtcbit9XG4rI2VuZGlmXG4rXG4raW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbit7XG4rXHRjb25zdCBjaGFyICpkZXZpY2UgPSBhcmdjIFx1MDAzZSAxID8gYXJndlsxXSA6IFwiL2Rldi9wdHAwXCI7XG4rXHRzdHJ1Y3QgcHRwX2Nsb2NrX2NhcHMgY2FwcztcbitcdHN0cnVjdCB0aW1leCByZXN0b3JlID0geyAwIH07XG4rXHRzdHJ1Y3QgdGltZXggdHggPSB7IDAgfTtcbitcdGNsb2NraWRfdCBjbGtpZDtcbitcdGludCBmZCwgcmV0O1xuK1xuK1x0a3NmdF9wcmludF9oZWFkZXIoKTtcbitcdGtzZnRfc2V0X3BsYW4oMSk7XG4rXG4rXHRpZiAoc2l6ZW9mKHR4LmZyZXEpIFx1MDAzYyA4KVxuK1x0XHRrc2Z0X2V4aXRfc2tpcChcInRoZSBvdmVyZmxvdyBvbmx5IGFmZmVjdHMgNjQtYml0IGtlcm5lbHNcXG5cIik7XG4rXG4rXHRmZCA9IG9wZW4oZGV2aWNlLCBPX1JEV1IpO1xuK1x0aWYgKGZkIFx1MDAzYyAwKVxuK1x0XHRrc2Z0X2V4aXRfc2tpcChcImNhbm5vdCBvcGVuICVzOiAlc1xcblwiLCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7XG4rXG4rXHRjbGtpZCA9IEZEX1RPX0NMT0NLSUQoZmQpO1xuK1xuK1x0aWYgKGlvY3RsKGZkLCBQVFBfQ0xPQ0tfR0VUQ0FQUywgXHUwMDI2Y2FwcykpXG4rXHRcdGtzZnRfZXhpdF9za2lwKFwiUFRQX0NMT0NLX0dFVENBUFMgb24gJXM6ICVzXFxuXCIsIGRldmljZSwgc3RyZXJyb3IoZXJybm8pKTtcbitcdGlmICghY2Fwcy5tYXhfYWRqKVxuK1x0XHRrc2Z0X2V4aXRfc2tpcChcIiVzIGRvZXMgbm90IHN1cHBvcnQgZnJlcXVlbmN5IGFkanVzdG1lbnRcXG5cIiwgZGV2aWNlKTtcbitcbitcdC8qXG4rXHQgKiBSZW1lbWJlciB0aGUgY3VycmVudCBmcmVxdWVuY3kuICBBIHZ1bG5lcmFibGUga2VybmVsIGFjY2VwdHMgdGhlXG4rXHQgKiBib2d1cyB2YWx1ZSBiZWxvdyBhbmQgcHJvZ3JhbXMgaXQgaW50byB0aGUgaGFyZHdhcmUsIHNvIHJlc3RvcmUgdGhlXG4rXHQgKiBvcmlnaW5hbCBhZnRlcndhcmRzIGluc3RlYWQgb2YgbGVhdmluZyB0aGUgY2xvY2sgY29ycnVwdGVkLlxuK1x0ICovXG4rXHRpZiAoY2xvY2tfYWRqdGltZShjbGtpZCwgXHUwMDI2cmVzdG9yZSkpXG4rXHRcdGtzZnRfZXhpdF9za2lwKFwiY2xvY2tfYWRqdGltZShnZXQpIG9uICVzOiAlc1xcblwiLCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7XG4rXHRyZXN0b3JlLm1vZGVzID0gQURKX0ZSRVFVRU5DWTtcbitcbitcdC8qXG4rXHQgKiAoMSArIDE0NzU3Mzk1MjU4OTY3NjQxMikgKiAxMjUgPT0gMl42NCArIDksIHdoaWNoIG92ZXJmbG93cyBzNjQgaW5cbitcdCAqIHNjYWxlZF9wcG1fdG9fcHBiKCkgYW5kIHdyYXBzIHRoZSByZXN1bHQgdG8gYSBwcGIgb2YgMC4gIEEga2VybmVsXG4rXHQgKiB0aGF0IGRvZXMgbm90IGRldGVjdCB0aGUgb3ZlcmZsb3cgbGV0cyB0aGlzIGFic3VyZCBmcmVxdWVuY3kgcGFzdFxuK1x0ICogdGhlIG1heF9hZGogY2hlY2s7IGEgZml4ZWQga2VybmVsIHJlamVjdHMgaXQgd2l0aCAtRVJBTkdFLlxuK1x0ICovXG4rXHR0eC5tb2RlcyA9IEFESl9GUkVRVUVOQ1k7XG4rI2lmIF9fU0laRU9GX0xPTkdfXyBcdTAwM2U9IDhcbitcdHR4LmZyZXEgPSAxNDc1NzM5NTI1ODk2NzY0MTJMO1xuKyNlbmRpZlxuK1xuK1x0cmV0ID0gY2xvY2tfYWRqdGltZShjbGtpZCwgXHUwMDI2dHgpO1xuK1x0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgZXJybm8gPT0gRUJVU1kpIHtcbitcdFx0LypcbitcdFx0ICogQSBmcmVlLXJ1bm5pbmcgcGh5c2ljYWwgY2xvY2sgKHZpcnR1YWwgY2xvY2tzIGFjdGl2ZSkgcmVqZWN0c1xuK1x0XHQgKiBmcmVxdWVuY3kgYWRqdXN0bWVudCB3aXRoIC1FQlVTWSBiZWZvcmUgdGhlIG92ZXJmbG93IGlzIGV2ZW5cbitcdFx0ICogZXZhbHVhdGVkLCBzbyB0aGUgdGVzdCBjYW5ub3QgcnVuIGhlcmUuXG4rXHRcdCAqL1xuK1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoXCIlczogZnJlcXVlbmN5IGFkanVzdG1lbnQgcmV0dXJuZWQgRUJVU1ksIHNraXBwaW5nXFxuXCIsXG4rXHRcdFx0XHQgICAgICBkZXZpY2UpO1xuK1x0fSBlbHNlIHtcbitcdFx0a3NmdF90ZXN0X3Jlc3VsdChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGVycm5vID09IEVSQU5HRSxcbitcdFx0XHRcdCBcIm92ZXJmbG93aW5nIGZyZXF1ZW5jeSBhZGp1c3RtZW50IGlzIHJlamVjdGVkIChyZXQ9JWQgZXJybm89JWQpXFxuXCIsXG4rXHRcdFx0XHQgcmV0LCByZXQgXHUwMDNjIDAgPyBlcnJubyA6IDApO1xuK1x0fVxuK1xuK1x0LyogcHV0IHRoZSBmcmVxdWVuY3kgYmFjayB0aGUgd2F5IHdlIGZvdW5kIGl0ICovXG4rXHRjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZyZXN0b3JlKTtcbitcbitcdGNsb3NlKGZkKTtcbitcdGtzZnRfZmluaXNoZWQoKTtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMjo0NS4yNDcwOTY0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NDc4NjU1NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBQVFAgQ2xvY2sgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gaXQuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIHNlcmllcyBhbmQgZmlndXJlIG91dCBpZiBpdCBpbnRyb2R1Y2VzIGFueSBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwncyBmdW5jdGlvbmFsaXR5IHRoYXQgcmVxdWlyZSB1cyB0byBraWNrIG9mZiBzb21lIGZ1enppbmcuIFRoZSBrZXkgZmlsZSBzZWVtcyB0byBiZSBgZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBwdHBfY2xvY2tfYWRqdGltZSgpYCBmdW5jdGlvbi5cblxuRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBgcHRwX2Nsb2NrX2FkanRpbWUoKWAgYW5kIGFkZGluZyBzb21lIG92ZXJmbG93IGNoZWNrcyByZWxhdGVkIHRvIGB0eC1cdTAwM2VmcmVxYCB3aGVuIGB0eC1cdTAwM2Vtb2Rlc2AgaGFzIHRoZSBgQURKX0ZSRVFVRU5DWWAgYml0IHNldC4gT2theSwgc28gd2UncmUgdGFsa2luZyBhYm91dCBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhICpyZWFsKiBjaGFuZ2UsIHdoaWNoIGlzIGdvb2QuIFByZXZlbnRpbmcgdGhhdCBpbnRlZ2VyIG92ZXJmbG93IGluIGBzY2FsZWRfcHBtX3RvX3BwYih0eC1cdTAwM2VmcmVxKWAgY291bGQgYmUgaW1wb3J0YW50LlxuXG5Ob3csIHRoZSBuZXh0IHN0ZXAuIExldCdzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB0aGUgcmVhY2hhYmlsaXR5IG9mIGBwdHBfY2xvY2tfYWRqdGltZSgpYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgY2FsbGVkIHdpdGhpbiB0aGUga2VybmVsIGFuZCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCBmb3IgaXQgdG8gYmUgYWN0aXZlLiBUaGF0IHNob3VsZCB0ZWxsIG1lIGp1c3QgaG93IGltcG9ydGFudCB0aGUgZml4IGlzIGFuZCBob3cgaGlnaCBvbiB0aGUgZnV6emluZyBwcmlvcml0eSBsaXN0IGl0IG5lZWRzIHRvIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjg2LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzI6NDkuNzk0OTc1NjI2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4Nzc3ODY1NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHRwX2Nsb2NrX2FkanRpbWVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MTExPXN0YXRpYyBpbnQgcHRwX2Nsb2NrX2dldHRpbWUoc3RydWN0IHBvc2l4X2Nsb2NrICpwYywgc3RydWN0IHRpbWVzcGVjNjQgKnRwKVxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMTIyLVxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jOjEyMzpzdGF0aWMgaW50IHB0cF9jbG9ja19hZGp0aW1lKHN0cnVjdCBwb3NpeF9jbG9jayAqcGMsIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqdHgpXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMTI0LXtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jPTIwMT1zdGF0aWMgc3RydWN0IHBvc2l4X2Nsb2NrX29wZXJhdGlvbnMgcHRwX2Nsb2NrX29wcyA9IHtcXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0yMDItXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYzoyMDM6XFx0LmNsb2NrX2FkanRpbWVcXHQ9IHB0cF9jbG9ja19hZGp0aW1lLFxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTIwNC1cXHQuY2xvY2tfZ2V0dGltZVxcdD0gcHRwX2Nsb2NrX2dldHRpbWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjMyOjU1LjY3Mjc2NzUxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDIzNTQxNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgUFRQIENsb2NrIEFkanVzdG1lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIG5ldyB0YXJnZXQsIGAuY2xvY2tfYWRqdGltZWAgd2l0aGluIGBwdHBfY2xvY2tfb3BzYC4gIFRoYXQgc2VlbXMgdG8gYmUgdXNlZCBieSBgcG9zaXhfY2xvY2tfb3BlcmF0aW9uc2AsIHdoaWNoLCBiYXNlZCBvbiBteSBleHBlcmllbmNlLCBpcyBhIHByZXR0eSBjcnVjaWFsIGxpbmsuIEFuZCwgYXMgSSB1bmRlcnN0YW5kIGl0LCB0aGUgUFRQIGNsb2NrIHN1YnN5c3RlbSBpcyBhY2Nlc3NpYmxlIHZpYSBgL2Rldi9wdHBYYCBkZXZpY2VzIGFuZCB0aGUgYGNsb2NrX2FkanRpbWVgIHN5c3RlbSBjYWxsLiBCaW5nbyEgVGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgYW5kIGdpdmVuIGl0cyBpbXBvcnRhbmNlIGluIHRpbWUgc3luY2hyb25pemF0aW9uLCBpdCdzIGFic29sdXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZyBwb3RlbnRpYWwuIEkgdGhpbmsgdGhpcyBzdWJzeXN0ZW0gY291bGQgYmUgYSByZWFsIGdvbGRtaW5lLiBOb3csIEkgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gUFRQIHRvIHNlZSB3aGF0IGtub2JzIEkgY2FuIGFkanVzdCB0byBoZWxwIHRhaWxvciB0aGUgZnV6emluZyBjYW1wYWlnbi4gVGhpcyBpcyBnb2luZyB0byBiZSBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzk1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzI6NTkuMzc1MTI0MjA5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTI1NzgwOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBUUF8xNTg4X0NMT0NLXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnPTIxPWNvbmZpZyBJWFA0WFhfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZzozMTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSVhQNDZYXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzItXFx0Ym9vbCBcXFwiSW50ZWwgSVhQNDZ4IGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWc9Nj1tZW51IFxcXCJQVFAgY2xvY2sgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTI5LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MzA6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0zMS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy00MS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjQyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19EVEVcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQzLVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBEVEUgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjU4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19RT1JJUVxcbmRyaXZlcnMvcHRwL0tjb25maWctNTktXFx0dHJpc3RhdGUgXFxcIkZyZWVzY2FsZSBRb3JJUSAxNTg4IHRpbWVyIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWc9NzU9Y29uZmlnIERQODM2NDBfUEhZXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTkxLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6OTI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lORVNcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTkzLVxcdHRyaXN0YXRlIFxcXCJaSEFXIEluRVMgUFRQIHRpbWUgc3RhbXBpbmcgSVAgY29yZVxcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTAyLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTAzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19QQ0hcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwNC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgUENIIEVHMjBUIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTIxLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTIyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMy1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHZpcnR1YWwgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzMtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMzQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNQ0xPQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBtYWNoaW5lIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTUwLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTUxOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFQ4MlAzM1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTUyLVxcdHRyaXN0YXRlIFxcXCJJRFQgODJQMzN4eHggUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjItXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVENNXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjQtXFx0dHJpc3RhdGUgXFxcIklEVCBDTE9DS01BVFJJWCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3NC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE3NTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRkMzV1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTc2LVxcdHRyaXN0YXRlIFxcXCJSRU5FU0FTIEZlbXRvQ2xvY2szIFdpcmVsZXNzIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTg2LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTg3OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODgtXFx0dHJpc3RhdGUgXFxcIk1vY2stdXAgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xOTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxOTg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNV1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTk5LVxcdHRyaXN0YXRlIFxcXCJWTXdhcmUgdmlydHVhbCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwOS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjIxMDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT0NQXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcIk9wZW5Db21wdXRlIFRpbWVDYXJkIGFzIFBUUCBjbG9ja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzM6MDUuOTg3NzA4NzA0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgxODI2NTQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyBQVFAgQ2xvY2sgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiwgYW5kIGl0J3MgZGVmaW5pdGVseSBnb2luZyB0byBiZSBgUFRQXzE1ODhfQ0xPQ0tgLiBCdXQgd2FpdCwgdGhlcmUgYXJlIGEgY291cGxlIG9mIG90aGVyIG9wdGlvbnMgdGhhdCBtaWdodCBiZSBiZW5lZmljaWFsLCBlc3BlY2lhbGx5IGZvciBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgYW5kIGBQVFBfMTU4OF9DTE9DS19LVk1gIGNvbWUgdG8gbWluZCDigJMgY291bGQgYmUgaGVscGZ1bCB0byBzaW11bGF0ZSBhIFBUUCBjbG9jay4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBhbmQgc2VlIHdoYXQgaXQgb2ZmZXJzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FwYWJpbGl0aWVzIGJldHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc3NywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjMzOjA5LjgwNTk3NzAxN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzQwNzE1ODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcHRwL0tjb25maWc9MTc1PWNvbmZpZyBQVFBfMTU4OF9DTE9DS19GQzNXXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ni1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4Nzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTg4LVxcdHRyaXN0YXRlIFxcXCJNb2NrLXVwIFBUUCBjbG9ja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzM6MTUuMTQ2NzAwNzdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODg0MDE5MDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgUFRQXzE1ODhfQ0xPQ0tfTU9DSyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHB1cnBvc2Ugb2YgYFBUUF8xNTg4X0NMT0NLX01PQ0tgLiBXaGF0IGV4YWN0bHkgZG9lcyB0aGlzIGNvbXBvbmVudCByZXByZXNlbnQ/IElzIGl0IGEgc2ltdWxhdGlvbiwgYSB0ZXN0IGZpeHR1cmUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIEknbSBnb2luZyB0byBzdGFydCBieSBhbmFseXppbmcgaXRzIGNvZGUsIGRvY3VtZW50YXRpb24sIG9yIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZGV0ZXJtaW5lIHdoYXQgaXRzIGludGVuZGVkIGJlaGF2aW9yIGlzLiBXaGF0IGFyZSBpdHMgaW5wdXRzLCBvdXRwdXRzLCBhbmQgaW50ZXJuYWwgbWVjaGFuaXNtcz8gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBUaGlzIGlzIHRoZSBpbml0aWFsIHN0ZXAgaW4gcmVhbGx5IHVuZGVyc3RhbmRpbmcgaXRzIGNhcGFiaWxpdGllcyBhbmQgbGltaXRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzAsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMzoyMi4wMzA3MjI2NDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MTg0OTQ5MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHRwX21vY2tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiTUFJTlRBSU5FUlM9MjE3NDg9UzpcXHRNYWludGFpbmVkXFxuTUFJTlRBSU5FUlM6MjE3NDk6RjpcXHRkcml2ZXJzL3B0cC9wdHBfbW9jay5jXFxuTUFJTlRBSU5FUlM6MjE3NTA6RjpcXHRpbmNsdWRlL2xpbnV4L3B0cF9tb2NrLmhcXG5NQUlOVEFJTkVSUy0yMTc1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI0OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9wdHBfbW9jay5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNS0jaW5jbHVkZSBcXHUwMDNjbmV0L2RldmxpbmsuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWc9MTg3PWNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE5NS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5NjpcXHQgIHdpbGwgYmUgY2FsbGVkIHB0cF9tb2NrLlxcbmRyaXZlcnMvcHRwL0tjb25maWctMTk3LVxcbi0tXFxuZHJpdmVycy9wdHAvTWFrZWZpbGU9MTg9b2JqLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLX0lEVDgyUDMzKVxcdCs9IHB0cF9pZHQ4MnAzMy5vXFxuZHJpdmVycy9wdHAvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLX01PQ0spXFx0Kz0gcHRwX21vY2sub1xcbmRyaXZlcnMvcHRwL01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19QVFBfMTU4OF9DTE9DS19WTVcpXFx0Kz0gcHRwX3Ztdy5vXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfbW9jay5jLTExLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcXHUwMDNlXFxuZHJpdmVycy9wdHAvcHRwX21vY2suYzoxMjojaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX21vY2suaFxcdTAwM2VcXG5kcml2ZXJzL3B0cC9wdHBfbW9jay5jLTEzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC90aW1lY291bnRlci5oXFx1MDAzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMzoyNy40NDkyMjgyNzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4OTQ4ODQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbm5lciBtb25vbG9ndWU6XG5cbioqQ2xvY2sgU291cmNlIENvbnNpZGVyYXRpb25zKipcblxuUmlnaHQsIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBpcyBhIHNvbGlkIG9wdGlvbiBmb3IgdGVzdGluZyBhbmQgc2ltdWxhdGlvbi4gSXQgZ2l2ZXMgbWUgYSBjb250cm9sbGVkIGVudmlyb25tZW50LCB3aGljaCBpcyBpbnZhbHVhYmxlLiBCdXQgSSBuZWVkIHRvIGFsc28gY29uc2lkZXIgb3RoZXIgcG9zc2liaWxpdGllcyB0byBlbnN1cmUgY29tcHJlaGVuc2l2ZSBjb3ZlcmFnZS5cblxuTXkgbWluZCBpbW1lZGlhdGVseSB0dXJucyB0byBgUFRQXzE1ODhfQ0xPQ0tfS1ZNYC4gSSdtIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IGhvdyB0aGF0IG1pZ2h0IGludGVyYWN0IHdpdGggdGhpcyBzeXN0ZW0uIENvdWxkIHRoYXQgb2ZmZXIgYSBtb3JlIHJlYWxpc3RpYyB0ZXN0LCBvciBwb3RlbnRpYWxseSByZXZlYWwgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSBLVk0gdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQ/IEkgbmVlZCB0byB0aGluayB0aHJvdWdoIGhvdyBpdCBpbnRlcmZhY2VzLCBpZiBpdCdzIHRoZSByaWdodCBjaG9pY2UgZm9yIHRoZSBzY2FsZSBvZiB0ZXN0IEknbSBwbGFubmluZywgYW5kIGhvdyBpdCBkaWZmZXJzIGluIHRlcm1zIG9mIHJlc291cmNlIHV0aWxpemF0aW9uIGZyb20gdGhlIG1vY2suIE15IGRlY2lzaW9uIGhpbmdlcyBvbiBob3cgcmVsZXZhbnQgZWFjaCBvcHRpb24gaXMgdG8gdGhlIGFjdHVhbCBkZXBsb3ltZW50IGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODIwLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzM6MzAuODM4NzE5MDU4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjkyOTQ1MDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZz0xMDM9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSFxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTIzLVxcdHRyaXN0YXRlIFxcXCJLVk0gdmlydHVhbCBQVFAgY2xvY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjMzOjM1LjEzMTY3MDc2M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc4MjYzODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIGBwdHBfY2xvY2tfYWRqdGltZWAqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzLiBUaGUgdGFzayBhdCBoYW5kIGludm9sdmVzIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBQVFAgY2xvY2sgYWRqdXN0cyB0aW1lLCBzbyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYHB0cF9jbG9ja19hZGp0aW1lYCBmdW5jdGlvbi4gUmlnaHQsIHRoYXQncyBkZWZpbmVkIGluIGBkcml2ZXJzL3B0cC9wdHBfY2xvY2suY2AsIHNvIEknbGwgaGVhZCBvdmVyIHRoZXJlLiBJJ20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIHRoZSBQVFAgY2xvY2sgZHJpdmVyIGNvZGUgYmFzZSwgc28gSSBleHBlY3QgdGhpcyB0byBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBhbmFseXNpcy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTc1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzM6MzguMzA5OTM4MDU1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9wdHBfY2xvY2suY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNTA6XFx0XFxuIDE1MTpcXHRcXHRcXHQvKiBNYWtlIHN1cmUgdGhlIG9mZnNldCBpcyB2YWxpZCAqL1xcbiAxNTI6XFx0XFx0XFx0ZXJyID0gcHRwX2Nsb2NrX2dldHRpbWUocGMsIFxcdTAwMjZ0czIpO1xcbiAxNTM6XFx0XFx0XFx0aWYgKGVycilcXG4gMTU0OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDE1NTpcXHRcXHRcXHR0czIgPSB0aW1lc3BlYzY0X2FkZCh0czIsIHRzKTtcXG4gMTU2OlxcdFxcdFxcdGlmICghdGltZXNwZWM2NF92YWxpZF9zZXR0b2QoXFx1MDAyNnRzMikpXFxuIDE1NzpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTU4OlxcdFxcbiAxNTk6XFx0XFx0XFx0a3QgPSB0aW1lc3BlYzY0X3RvX2t0aW1lKHRzKTtcXG4gMTYwOlxcdFxcdFxcdGRlbHRhID0ga3RpbWVfdG9fbnMoa3QpO1xcbiAxNjE6XFx0XFx0XFx0ZXJyID0gb3BzLVxcdTAwM2VhZGp0aW1lKG9wcywgZGVsdGEpO1xcbiAxNjI6XFx0XFx0fSBlbHNlIGlmICh0eC1cXHUwMDNlbW9kZXMgXFx1MDAyNiBBREpfRlJFUVVFTkNZKSB7XFxuIDE2MzpcXHRcXHRcXHRsb25nIHBwYjtcXG4gMTY0OlxcdFxcdFxcdHM2NCB0bXA7XFxuIDE2NTpcXHRcXG4gMTY2OlxcdFxcdFxcdC8qXFxuIDE2NzpcXHRcXHRcXHQgKiBzY2FsZWRfcHBtX3RvX3BwYigpIG11bHRpcGxpZXMgKDEgKyBmcmVxKSBieSAxMjUgaW4gczY0O1xcbiAxNjg6XFx0XFx0XFx0ICogcmVqZWN0IGEgLVxcdTAwM2VmcmVxIGxhcmdlIGVub3VnaCB0byBvdmVyZmxvdyB0aGF0LCB3aGljaCB3b3VsZFxcbiAxNjk6XFx0XFx0XFx0ICogb3RoZXJ3aXNlIHdyYXAgdGhlIHJlc3VsdCBiYWNrIGludG8gdGhlIG1heF9hZGogcmFuZ2UuXFxuIDE3MDpcXHRcXHRcXHQgKi9cXG4gMTcxOlxcdFxcdFxcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coKHM2NCl0eC1cXHUwMDNlZnJlcSwgKHM2NCkxLCBcXHUwMDI2dG1wKSB8fFxcbiAxNzI6XFx0XFx0XFx0ICAgIGNoZWNrX211bF9vdmVyZmxvdyh0bXAsIChzNjQpMTI1LCBcXHUwMDI2dG1wKSlcXG4gMTczOlxcdFxcdFxcdFxcdHJldHVybiAtRVJBTkdFO1xcbiAxNzQ6XFx0XFx0XFx0cHBiID0gc2NhbGVkX3BwbV90b19wcGIodHgtXFx1MDAzZWZyZXEpO1xcbiAxNzU6XFx0XFx0XFx0aWYgKHBwYiBcXHUwMDNlIG9wcy1cXHUwMDNlbWF4X2FkaiB8fCBwcGIgXFx1MDAzYyAtb3BzLVxcdTAwM2VtYXhfYWRqKVxcbiAxNzY6XFx0XFx0XFx0XFx0cmV0dXJuIC1FUkFOR0U7XFxuIDE3NzpcXHRcXHRcXHRlcnIgPSBvcHMtXFx1MDAzZWFkamZpbmUob3BzLCB0eC1cXHUwMDNlZnJlcSk7XFxuIDE3ODpcXHRcXHRcXHRpZiAoIWVycilcXG4gMTc5OlxcdFxcdFxcdFxcdHB0cC1cXHUwMDNlZGlhbGVkX2ZyZXF1ZW5jeSA9IHR4LVxcdTAwM2VmcmVxO1xcbiAxODA6XFx0XFx0fSBlbHNlIGlmICh0eC1cXHUwMDNlbW9kZXMgXFx1MDAyNiBBREpfT0ZGU0VUKSB7XFxuIDE4MTpcXHRcXHRcXHRpZiAob3BzLVxcdTAwM2VhZGpwaGFzZSkge1xcbiAxODI6XFx0XFx0XFx0XFx0czMyIG1heF9waGFzZV9hZGogPSBvcHMtXFx1MDAzZWdldG1heHBoYXNlKG9wcyk7XFxuIDE4MzpcXHRcXHRcXHRcXHRzMzIgb2Zmc2V0ID0gdHgtXFx1MDAzZW9mZnNldDtcXG4gMTg0OlxcdFxcbiAxODU6XFx0XFx0XFx0XFx0aWYgKCEodHgtXFx1MDAzZW1vZGVzIFxcdTAwMjYgQURKX05BTk8pKVxcbiAxODY6XFx0XFx0XFx0XFx0XFx0b2Zmc2V0ICo9IE5TRUNfUEVSX1VTRUM7XFxuIDE4NzpcXHRcXG4gMTg4OlxcdFxcdFxcdFxcdGlmIChvZmZzZXQgXFx1MDAzZSBtYXhfcGhhc2VfYWRqIHx8IG9mZnNldCBcXHUwMDNjIC1tYXhfcGhhc2VfYWRqKVxcbiAxODk6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FUkFOR0U7XFxuIDE5MDpcXHRcXG4gMTkxOlxcdFxcdFxcdFxcdGVyciA9IG9wcy1cXHUwMDNlYWRqcGhhc2Uob3BzLCBvZmZzZXQpO1xcbiAxOTI6XFx0XFx0XFx0fVxcbiAxOTM6XFx0XFx0fSBlbHNlIGlmICh0eC1cXHUwMDNlbW9kZXMgPT0gMCkge1xcbiAxOTQ6XFx0XFx0XFx0dHgtXFx1MDAzZWZyZXEgPSBwdHAtXFx1MDAzZWRpYWxlZF9mcmVxdWVuY3k7XFxuIDE5NTpcXHRcXHRcXHRlcnIgPSAwO1xcbiAxOTY6XFx0XFx0fVxcbiAxOTc6XFx0XFxuIDE5ODpcXHRcXHRyZXR1cm4gZXJyO1xcbiAxOTk6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMzozOC4zMTAwNzI5MzVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY0MjQ4NDkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBwdHBfY2xvY2tfYWRqdGltZSoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiByZXZpZXdpbmcgdGhlIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGZvY3VzIGZvciBmdXp6aW5nIG5lZWRzIHRvIGJlIG9uIGBwdHBfY2xvY2tfYWRqdGltZWAuIEl0IHNlZW1zIHRoYXQgZnVuY3Rpb24gaGFzIGJlZW4gbW9kaWZpZWQgYW5kIHRodXMgcmVxdWlyZXMgY2xvc2VyIHNjcnV0aW55LiBMZXQncyBtYWtlIHN1cmUgd2UncmUgY292ZXJpbmcgYWxsIGJhc2VzLlxuXG5UaGUgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb25zIGFyZSBgUFRQXzE1ODhfQ0xPQ0tgIGFuZCwgY3J1Y2lhbGx5LCBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgKG9yIHBvc3NpYmx5IGBQVFBfMTU4OF9DTE9DS19LVk1gLCB0aG91Z2ggSSdsbCBoYXZlIHRvIGludmVzdGlnYXRlIHRoYXQgZnVydGhlcikuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIGlmIGBQVFBfMTU4OF9DTE9DS2AgYWxvbmUgaXMgc3VmZmljaWVudCBmb3Igb3VyIHB1cnBvc2VzLCBvciBpZiBhIHNwZWNpZmljIGRyaXZlciBpcyBhbHNvIHJlcXVpcmVkLiBDb25zaWRlcmluZyBob3cgc3l6a2FsbGVyIG9wZXJhdGVzIHdpdGggYG5ldGRldnNpbWAgYW5kIHNpbWlsYXIgdG9vbHMsIHRoZSBpbmNsdXNpb24gb2YgYFBUUF8xNTg4X0NMT0NLX01PQ0tgIGlzIGRlZmluaXRlbHkgYSBnb29kIGNhbGwuIEl0IGFsbG93cyBmb3IgbW9yZSBlZmZpY2llbnQgdGVzdGluZyB3aXRoaW4gdGhhdCBmcmFtZXdvcmsuIFRoZXJlZm9yZSwgdGhlIHBsYW4gaXMgdG8gaW5jbHVkZSBib3RoIGBQVFBfMTU4OF9DTE9DS2AgYW5kIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBpbiB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uLlxuXG5Ob3csIGxldCdzIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgYHB0cF9jbG9ja19hZGp0aW1lYCBpcyBpbmRlZWQgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZS4gUXVpY2sgY2hlY2suLi4gWWVwLCBpdCdzIGFzc2lnbmVkIHRvIGBwdHBfY2xvY2tfb3BzLmNsb2NrX2FkanRpbWVgLCBhbmQgdGhhdCBzdHJ1Y3QsIGBwdHBfY2xvY2tfb3BzYCwgaXMgdXRpbGl6ZWQgaW4gYHBvc2l4X2Nsb2NrX3JlZ2lzdGVyYC4gVGhhdCBjb25maXJtcyBpdCDigJMgdGhlIGZ1bmN0aW9uICppcyogcmVhY2hhYmxlLiBFeGNlbGxlbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNzYsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMzo0My45NTI1NjExOTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTkxNDcwODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicG9zaXhfY2xvY2tfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MzI4PXN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9ja19yZWdpc3RlcihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy00NTEtXFx0LyogQ3JlYXRlIGEgcG9zaXggY2xvY2sgYW5kIGxpbmsgaXQgdG8gdGhlIGRldmljZS4gKi9cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYzo0NTI6XFx0ZXJyID0gcG9zaXhfY2xvY2tfcmVnaXN0ZXIoXFx1MDAyNnB0cC1cXHUwMDNlY2xvY2ssIFxcdTAwMjZwdHAtXFx1MDAzZWRldik7XFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtNDUzLVxcdGlmIChlcnIpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaD0zOT1zdHJ1Y3QgcG9zaXhfY2xvY2tfb3BlcmF0aW9ucyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtODEtICogRHJpdmVycyBzaG91bGQgc3VwcGx5IGFuIGluaXRpYWxpemVkIGJ1dCBub3QgZXhwb3NlZCBzdHJ1Y3QgZGV2aWNlXFxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oOjgyOiAqIHRvIHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKCkuIEl0IGlzIHVzZWQgdG8gbWFuYWdlIGxpZmV0aW1lIG9mIHRoZVxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC04My0gKiBkcml2ZXIncyBwcml2YXRlIHN0cnVjdHVyZS4gSXQncyAncmVsZWFzZScgZmllbGQgc2hvdWxkIGJlIHNldCB0b1xcbi0tXFxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oPTExMD1zdHJ1Y3QgcG9zaXhfY2xvY2tfY29udGV4dCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMTE2LS8qKlxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDoxMTc6ICogcG9zaXhfY2xvY2tfcmVnaXN0ZXIoKSAtIHJlZ2lzdGVyIGEgbmV3IGNsb2NrXFxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oLTExOC0gKiBAY2xrOiAgIFBvaW50ZXIgdG8gdGhlIGNsb2NrLiBDYWxsZXIgbXVzdCBwcm92aWRlICdvcHMnIGZpZWxkXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMTI4LSAqL1xcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDoxMjk6aW50IHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwb3NpeF9jbG9jayAqY2xrLCBzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC0xMzAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMTMyLSAqIHBvc2l4X2Nsb2NrX3VucmVnaXN0ZXIoKSAtIHVucmVnaXN0ZXIgYSBjbG9ja1xcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDoxMzM6ICogQGNsazogQ2xvY2sgaW5zdGFuY2UgcHJldmlvdXNseSByZWdpc3RlcmVkIHZpYSBwb3NpeF9jbG9ja19yZWdpc3RlcigpXFxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oLTEzNC0gKlxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYz0xNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcG9zaXhfY2xvY2tfZmlsZV9vcGVyYXRpb25zID0ge1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYy0xNTktXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYzoxNjA6aW50IHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwb3NpeF9jbG9jayAqY2xrLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYy0xNjEte1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYy0xNzctfVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmM6MTc4OkVYUE9SVF9TWU1CT0xfR1BMKHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKTtcXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTE3OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzM6NDkuNDUxNzE0NzA3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDY3OTU3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkRlbHZpbmcgaW50byB0aGUgUE9TSVggQ2xvY2sgTWVjaGFuaXNtKipcblxuUmlnaHQsIHNvIGBwb3NpeF9jbG9ja19yZWdpc3RlcmAg4oCTIHRoYXQncyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIGNoYXJhY3RlciBkZXZpY2UsIGlzbid0IGl0PyBPa2F5LCBzbyB0aGF0IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIGludGVyZmFjZSwgYSB3YXkgZm9yIHVzZXIgc3BhY2UgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgY2xvY2sgaXRzZWxmLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGRldGFpbHMuIExldCBtZSBqdW1wIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IGBrZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jYCBoYXMgdG8gdGVsbCBtZS4gSSBiZXQgdGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIGxpZXMuIEknbGwgc3RhcnQgZGlnZ2luZyBpbiB0aGVyZSwgbG9va2luZyBmb3IgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiwgdGhlIGNoYXJhY3RlciBkZXZpY2UgcmVnaXN0cmF0aW9uIGl0c2VsZiwgYW5kIGhvdyBpdCBoYW5kbGVzIHRoZSBmdW5kYW1lbnRhbCBjbG9jayBvcGVyYXRpb25zLiBJJ20ga2VlbiB0byBzZWUgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyB1c2VkIGFuZCB0aGUgbWV0aG9kcyBpbnZvbHZlZCBpbiBpbnRlcmZhY2luZyBpdCB3aXRoIHRoZSBWRlMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBob3cgUE9TSVggY2xvY2tzIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUga2VybmVsIGxldmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDY2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzM6NTIuNjk4NTEzMjg0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE1MDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwb3NpeF9jbG9ja19maWxlX29wZXJhdGlvbnMgPSB7XFxuIDE1MTpcXHRcXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbiAxNTI6XFx0XFx0LnJlYWRcXHRcXHQ9IHBvc2l4X2Nsb2NrX3JlYWQsXFxuIDE1MzpcXHRcXHQucG9sbFxcdFxcdD0gcG9zaXhfY2xvY2tfcG9sbCxcXG4gMTU0OlxcdFxcdC51bmxvY2tlZF9pb2N0bFxcdD0gcG9zaXhfY2xvY2tfaW9jdGwsXFxuIDE1NTpcXHRcXHQuY29tcGF0X2lvY3RsXFx0PSBwb3NpeF9jbG9ja19pb2N0bCxcXG4gMTU2OlxcdFxcdC5vcGVuXFx0XFx0PSBwb3NpeF9jbG9ja19vcGVuLFxcbiAxNTc6XFx0XFx0LnJlbGVhc2VcXHQ9IHBvc2l4X2Nsb2NrX3JlbGVhc2UsXFxuIDE1ODpcXHR9O1xcbiAxNTk6XFx0XFxuIDE2MDpcXHRpbnQgcG9zaXhfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IHBvc2l4X2Nsb2NrICpjbGssIHN0cnVjdCBkZXZpY2UgKmRldilcXG4gMTYxOlxcdHtcXG4gMTYyOlxcdFxcdGludCBlcnI7XFxuIDE2MzpcXHRcXG4gMTY0OlxcdFxcdGluaXRfcndzZW0oXFx1MDAyNmNsay1cXHUwMDNlcndzZW0pO1xcbiAxNjU6XFx0XFxuIDE2NjpcXHRcXHRjZGV2X2luaXQoXFx1MDAyNmNsay1cXHUwMDNlY2RldiwgXFx1MDAyNnBvc2l4X2Nsb2NrX2ZpbGVfb3BlcmF0aW9ucyk7XFxuIDE2NzpcXHRcXHRlcnIgPSBjZGV2X2RldmljZV9hZGQoXFx1MDAyNmNsay1cXHUwMDNlY2RldiwgZGV2KTtcXG4gMTY4OlxcdFxcdGlmIChlcnIpIHtcXG4gMTY5OlxcdFxcdFxcdHByX2VycihcXFwiJXMgdW5hYmxlIHRvIGFkZCBkZXZpY2UgJWQ6JWRcXFxcblxcXCIsXFxuIDE3MDpcXHRcXHRcXHRcXHRkZXZfbmFtZShkZXYpLCBNQUpPUihkZXYtXFx1MDAzZWRldnQpLCBNSU5PUihkZXYtXFx1MDAzZWRldnQpKTtcXG4gMTcxOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDE3MjpcXHRcXHR9XFxuIDE3MzpcXHRcXHRjbGstXFx1MDAzZWNkZXYub3duZXIgPSBjbGstXFx1MDAzZW9wcy5vd25lcjtcXG4gMTc0OlxcdFxcdGNsay1cXHUwMDNlZGV2ID0gZGV2O1xcbiAxNzU6XFx0XFxuIDE3NjpcXHRcXHRyZXR1cm4gMDtcXG4gMTc3OlxcdH1cXG4gMTc4OlxcdEVYUE9SVF9TWU1CT0xfR1BMKHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKTtcXG4gMTc5OlxcdFxcbiAxODA6XFx0dm9pZCBwb3NpeF9jbG9ja191bnJlZ2lzdGVyKHN0cnVjdCBwb3NpeF9jbG9jayAqY2xrKVxcbiAxODE6XFx0e1xcbiAxODI6XFx0XFx0Y2Rldl9kZXZpY2VfZGVsKFxcdTAwMjZjbGstXFx1MDAzZWNkZXYsIGNsay1cXHUwMDNlZGV2KTtcXG4gMTgzOlxcdFxcbiAxODQ6XFx0XFx0ZG93bl93cml0ZShcXHUwMDI2Y2xrLVxcdTAwM2Vyd3NlbSk7XFxuIDE4NTpcXHRcXHRjbGstXFx1MDAzZXpvbWJpZSA9IHRydWU7XFxuIDE4NjpcXHRcXHR1cF93cml0ZShcXHUwMDI2Y2xrLVxcdTAwM2Vyd3NlbSk7XFxuIDE4NzpcXHRcXG4gMTg4OlxcdFxcdHB1dF9kZXZpY2UoY2xrLVxcdTAwM2VkZXYpO1xcbiAxODk6XFx0fVxcbiAxOTA6XFx0RVhQT1JUX1NZTUJPTF9HUEwocG9zaXhfY2xvY2tfdW5yZWdpc3Rlcik7XFxuIDE5MTpcXHRcXG4gMTkyOlxcdHN0cnVjdCBwb3NpeF9jbG9ja19kZXNjIHtcXG4gMTkzOlxcdFxcdHN0cnVjdCBmaWxlICpmcDtcXG4gMTk0OlxcdFxcdHN0cnVjdCBwb3NpeF9jbG9jayAqY2xrO1xcbiAxOTU6XFx0fTtcXG4gMTk2OlxcdFxcbiAxOTc6XFx0c3RhdGljIGludCBnZXRfY2xvY2tfZGVzYyhjb25zdCBjbG9ja2lkX3QgaWQsIHN0cnVjdCBwb3NpeF9jbG9ja19kZXNjICpjZClcXG4gMTk4OlxcdHtcXG4gMTk5OlxcdFxcdHN0cnVjdCBmaWxlICpmcCA9IGZnZXQoY2xvY2tpZF90b19mZChpZCkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMzo1Mi42OTg2OTA4MjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1MjU2MzA3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgVGltZWtlZXBpbmcgTWF6ZSoqXG5cbkhvbGQgb24gYSBzZWNvbmQuLi4gSSB3YXMganVzdCB0aGlua2luZyBhYm91dCBgcG9zaXhfY2xvY2tfYWRqdGltZWAuIElzbid0IHRoYXQgZnVuY3Rpb24sIHRoZSBvbmUgdGhhdCBoYW5kbGVzIGFkanVzdG1lbnRzIHRvIHRoZSBzeXN0ZW0gY2xvY2ssIHN1cHBvc2VkIHRvIGJlIGhvb2tlZCBpbnRvIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3RydWN0dXJlcz8gQnV0IHdhaXQsIG5vLCB0aGF0IGRvZXNuJ3Qgc2VlbSByaWdodC4gSXQgc2VlbXMgdG8gYmUgcGFydCBvZiB0aGUgc3lzY2FsbCBpbXBsZW1lbnRhdGlvbiBmb3IgYGNsb2NrX2FkanRpbWVgLiBJdCdzIHVzZWQgYXQgdGhlIHN5c2NhbGwgbGF5ZXIgaXRzZWxmLCBub3QgYm91bmQgdXAgYXMgYW4gb3BlcmF0aW9uIG9uIHNvbWUgVkZTIG5vZGUuXG5cbkFscmlnaHQsIHNvIGlmIGBjbG9ja19hZGp0aW1lYCBpdHNlbGYgaXMgYSBzeXNjYWxsLCB0aGVuIHRoYXQgbWVhbnMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBwb3NpeF9jbG9ja19hZGp0aW1lYCBzaG91bGQgYmUgc29tZXdoZXJlIGluIHRoZSBjb3JlIHRpbWVrZWVwaW5nIGluZnJhc3RydWN0dXJlLiBNeSBndXQgZmVlbGluZyBpcyBpdCdzIHByb2JhYmx5IGxvY2F0ZWQgaW4gYGtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmNgLiBMZXQgbWUganVzdCB2ZXJpZnkgYnkgc2VhcmNoaW5nIGZvciBgY2xvY2tfYWRqdGltZWAgd2l0aGluIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgSSBmaW5kLiBUaGF0IHNob3VsZCBxdWlja2x5IHBvaW50IG1lIHRvIHRoZSByZWxldmFudCBjb2RlIHBhdGguIFRpbWUgdG8ganVtcCBpbiBhbmQgY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MDUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjMzOjU2LjI1MTI1NzcxN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczMzc4OTQ2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjbG9ja19hZGp0aW1lXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wdHAucnN0PTQ0PVBUUCBoYXJkd2FyZSBjbG9jayB1c2VyIHNwYWNlIEFQSVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B0cC5yc3QtNDktICAgdGhlIGNoYXJhY3RlciBkZXZpY2UgYXMgYSBQT1NJWCBjbG9jayBpZCBhbmQgbWF5IGNhbGxcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHRwLnJzdDo1MDogICBjbG9ja19nZXR0aW1lLCBjbG9ja19zZXR0aW1lLCBhbmQgY2xvY2tfYWRqdGltZS4gIFRoZXNlIGNhbGxzXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B0cC5yc3QtNTEtICAgaW1wbGVtZW50IHRoZSBiYXNpYyBjbG9jayBvcGVyYXRpb25zLlxcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDI5LTQ5OFxcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDMwOjQ5OVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbmFyY2gvYWxwaGEva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQzMS01MDBcXHRjb21tb25cXHRzeW5jZnNcXHRcXHRcXHRcXHRzeXNfc3luY2ZzXFxuLS1cXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC0zODktMzcxXFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDozOTA6MzcyXFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC0zOTEtMzczXFx0Y29tbW9uXFx0c3luY2ZzXFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50YmwtNDIyLTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50Ymw6NDIzOjQwNVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50YmwtNDI0LTQwNlxcdGNvbW1vblxcdGNsb2NrX2dldHJlc190aW1lNjRcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTM4Ni0zNzFcXHRjb21tb25cXHRvcGVuX2J5X2hhbmRsZV9hdFxcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxcdGNvbXBhdF9zeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsOjM4NzozNzJcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lXFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtMzg4LTM3M1xcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDE5LTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibDo0MjA6NDA1XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTQyMS00MDZcXHRjb21tb25cXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zNTEtMzQxXFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM1MjozNDJcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lXFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzUzLTM0M1xcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA3LTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MDg6NDA1XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQwOS00MDZcXHRjb21tb25cXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zODItMzcyXFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM4MzozNzNcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lXFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzg0LTM3NFxcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDEzLTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MTQ6NDA1XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxNS00MDZcXHRjb21tb25cXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMzE1LTMwNFxcdG4zMlxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50Ymw6MzE2OjMwNVxcdG4zMlxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMzE3LTMwNlxcdG4zMlxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTM0Ni00MDRcXHRuMzJcXHRjbG9ja19zZXR0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsOjM0Nzo0MDVcXHRuMzJcXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTM0OC00MDZcXHRuMzJcXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzEwLTI5OVxcdG42NFxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MzExOjMwMFxcdG42NFxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTMxMi0zMDFcXHRuNjRcXHRzeW5jZnNcXHRcXHRcXHRcXHRzeXNfc3luY2ZzXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0zNTQtMzQwXFx0bzMyXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRjb21wYXRfc3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6MzU1OjM0MVxcdG8zMlxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtMzU2LTM0MlxcdG8zMlxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsLTM5NS00MDRcXHRvMzJcXHRjbG9ja19zZXR0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6Mzk2OjQwNVxcdG8zMlxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0zOTctNDA2XFx0bzMyXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzY3LTMyM1xcdGNvbW1vblxcdGZhbm90aWZ5X21hcmtcXHRcXHRzeXNfZmFub3RpZnlfbWFya1xcdFxcdGNvbXBhdF9zeXNfZmFub3RpZnlfbWFya1xcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozNjg6MzI0XFx0MzJcXHRjbG9ja19hZGp0aW1lXFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozNjk6MzI0XFx0NjRcXHRjbG9ja19hZGp0aW1lXFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcwLTMyNVxcdGNvbW1vblxcdG5hbWVfdG9faGFuZGxlX2F0XFx0c3lzX25hbWVfdG9faGFuZGxlX2F0XFxuLS1cXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA2LTQwNFxcdDMyXFx0Y2xvY2tfc2V0dGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MDc6NDA1XFx0MzJcXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQwOC00MDZcXHQzMlxcdGNsb2NrX2dldHJlc190aW1lNjRcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NDgtMzQ2XFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRjb21wYXRfc3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NDk6MzQ3XFx0MzJcXHRjbG9ja19hZGp0aW1lXFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDUwOjM0N1xcdDY0XFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTE6MzQ3XFx0c3B1XFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTItMzQ4XFx0Y29tbW9uXFx0c3luY2ZzXFx0XFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00OTgtNDA0XFx0MzJcXHRjbG9ja19zZXR0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0OTk6NDA1XFx0MzJcXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MDAtNDA2XFx0MzJcXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcdFxcdHN5c19jbG9ja19nZXRyZXNcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjkwLTMzNlxcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDoyOTE6MzM3XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yOTItMzM4XFx0Y29tbW9uXFx0c3luY2ZzXFx0XFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcwLTM2MFxcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzcxOjM2MVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcyLTM2MlxcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxMS00MDRcXHRjb21tb25cXHRjbG9ja19zZXR0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxMjo0MDVcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxMy00MDZcXHRjb21tb25cXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3NwYXJjXzY0LmM9NTY4PVNZU0NBTExfREVGSU5FMShzcGFyY19hZGp0aW1leCwgc3RydWN0IF9fa2VybmVsX3RpbWV4IF9fdXNlciAqLCB0eGNfcClcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL3N5c19zcGFyY182NC5jLTU5MS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNfc3BhcmNfNjQuYzo1OTI6U1lTQ0FMTF9ERUZJTkUyKHNwYXJjX2Nsb2NrX2FkanRpbWUsIGNvbnN0IGNsb2NraWRfdCwgd2hpY2hfY2xvY2ssXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3NwYXJjXzY0LmMtNTkzLVxcdFxcdHN0cnVjdCBfX2tlcm5lbF90aW1leCBfX3VzZXIgKiwgdHhjX3ApXFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNfc3BhcmNfNjQuYy02MTgtXFx0dHhjLnRpbWUudHZfdXNlYyA9IHR2LVxcdTAwM2V0dl91c2VjO1xcbmFyY2gvc3BhcmMva2VybmVsL3N5c19zcGFyY182NC5jOjYxOTpcXHRyZXQgPSBkb19jbG9ja19hZGp0aW1lKHdoaWNoX2Nsb2NrLCBcXHUwMDI2dHhjKTtcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNfc3BhcmNfNjQuYy02MjAtXFx0dHYtXFx1MDAzZXR2X3VzZWMgPSB0eGMudGltZS50dl91c2VjO1xcbi0tXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDAzLTMzM1xcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFx0XFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQwNDozMzRcXHQzMlxcdGNsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDA1OjMzNFxcdDY0XFx0Y2xvY2tfYWRqdGltZVxcdFxcdHN5c19zcGFyY19jbG9ja19hZGp0aW1lXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA2LTMzNVxcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1My00MDRcXHQzMlxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTQ6NDA1XFx0MzJcXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDU1LTQwNlxcdDMyXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0zNTctMzQyXFx0aTM4NlxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFx0XFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjM1ODozNDNcXHRpMzg2XFx0Y2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0zNTktMzQ0XFx0aTM4NlxcdHN5bmNmc1xcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxMy00MDRcXHRpMzg2XFx0Y2xvY2tfc2V0dGltZTY0XFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MTQ6NDA1XFx0aTM4NlxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDE1LTQwNlxcdGkzODZcXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzE2LTMwNFxcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6MzE3OjMwNVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTMxOC0zMDZcXHRjb21tb25cXHRzeW5jZnNcXHRcXHRcXHRzeXNfc3luY2ZzXFxuLS1cXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzUxLTMyOFxcdGNvbW1vblxcdHJ0X3Rnc2lncXVldWVpbmZvXFx0XFx0c3lzX3J0X3Rnc2lncXVldWVpbmZvXFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM1MjozMjlcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lXFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zNTMtMzMwXFx0Y29tbW9uXFx0cHJsaW1pdDY0XFx0XFx0XFx0c3lzX3BybGltaXQ2NFxcbi0tXFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM3OC00MDRcXHRjb21tb25cXHRjbG9ja19zZXR0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozNzk6NDA1XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzgwLTQwNlxcdGNvbW1vblxcdGNsb2NrX2dldHJlc190aW1lNjRcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYz0xMTE9c3RhdGljIGludCBwdHBfY2xvY2tfZ2V0dGltZShzdHJ1Y3QgcG9zaXhfY2xvY2sgKnBjLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHApXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0xMjItXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6MTIzOnN0YXRpYyBpbnQgcHRwX2Nsb2NrX2FkanRpbWUoc3RydWN0IHBvc2l4X2Nsb2NrICpwYywgc3RydWN0IF9fa2VybmVsX3RpbWV4ICp0eClcXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0xMjQte1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MjAxPXN0YXRpYyBzdHJ1Y3QgcG9zaXhfY2xvY2tfb3BlcmF0aW9ucyBwdHBfY2xvY2tfb3BzID0ge1xcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTIwMi1cXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jOjIwMzpcXHQuY2xvY2tfYWRqdGltZVxcdD0gcHRwX2Nsb2NrX2FkanRpbWUsXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMjA0LVxcdC5jbG9ja19nZXR0aW1lXFx0PSBwdHBfY2xvY2tfZ2V0dGltZSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF92Y2xvY2suYz00NT1zdGF0aWMgaW50IHB0cF92Y2xvY2tfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX3ZjbG9jay5jLTYxLVxcbmRyaXZlcnMvcHRwL3B0cF92Y2xvY2suYzo2MjpzdGF0aWMgaW50IHB0cF92Y2xvY2tfYWRqdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbmRyaXZlcnMvcHRwL3B0cF92Y2xvY2suYy02My17XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmM9MTY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gcHRwX3ZjbG9ja19pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX3ZjbG9jay5jLTE2OC1cXHQuYWRqZmluZVxcdD0gcHRwX3ZjbG9ja19hZGpmaW5lLFxcbmRyaXZlcnMvcHRwL3B0cF92Y2xvY2suYzoxNjk6XFx0LmFkanRpbWVcXHQ9IHB0cF92Y2xvY2tfYWRqdGltZSxcXG5kcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmMtMTcwLVxcdC5zZXR0aW1lNjRcXHQ9IHB0cF92Y2xvY2tfc2V0dGltZSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmM9Mjg3PXN0YXRpYyBpbnQgcHRwX3ZtY2xvY2tfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBkZWx0YSlcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmMtMjkxLVxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmM6MjkyOnN0YXRpYyBpbnQgcHRwX3ZtY2xvY2tfYWRqdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmMtMjkzLXtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmM9MzE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gcHRwX3ZtY2xvY2tfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmMtMzI0LVxcdC5hZGpmaW5lXFx0PSBwdHBfdm1jbG9ja19hZGpmaW5lLFxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmM6MzI1OlxcdC5hZGp0aW1lXFx0PSBwdHBfdm1jbG9ja19hZGp0aW1lLFxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmMtMzI2LVxcdC5nZXR0aW1leDY0XFx0PSBwdHBfdm1jbG9ja19nZXR0aW1leCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaD0xNz1zdHJ1Y3QgcG9zaXhfY2xvY2tfY29udGV4dDtcXG4tLVxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC0yOC0gKiBAb3duZXI6ICAgICAgICAgIFRoZSBjbG9jayBkcml2ZXIgc2hvdWxkIHNldCB0byBUSElTX01PRFVMRVxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDoyOTogKiBAY2xvY2tfYWRqdGltZTogIEFkanVzdCB0aGUgY2xvY2tcXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMzAtICogQGNsb2NrX2dldHRpbWU6ICBSZWFkIHRoZSBjdXJyZW50IHRpbWVcXG4tLVxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaD0zOT1zdHJ1Y3QgcG9zaXhfY2xvY2tfb3BlcmF0aW9ucyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtNDEtXFxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oOjQyOlxcdGludCAgKCpjbG9ja19hZGp0aW1lKShzdHJ1Y3QgcG9zaXhfY2xvY2sgKnBjLCBzdHJ1Y3QgX19rZXJuZWxfdGltZXggKnR4KTtcXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtNDMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg9OTAxPWFzbWxpbmthZ2UgbG9uZyBzeXNfb3Blbl9ieV9oYW5kbGVfYXQoaW50IG1vdW50ZGlyZmQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtOTAzLVxcdFxcdFxcdFxcdCAgICAgIGludCBmbGFncyk7XFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjkwNDphc21saW5rYWdlIGxvbmcgc3lzX2Nsb2NrX2FkanRpbWUoY2xvY2tpZF90IHdoaWNoX2Nsb2NrLFxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC05MDUtXFx0XFx0XFx0XFx0c3RydWN0IF9fa2VybmVsX3RpbWV4IF9fdXNlciAqdHgpO1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaDo5MDY6YXNtbGlua2FnZSBsb25nIHN5c19jbG9ja19hZGp0aW1lMzIoY2xvY2tpZF90IHdoaWNoX2Nsb2NrLFxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC05MDctXFx0XFx0XFx0XFx0c3RydWN0IG9sZF90aW1leDMyIF9fdXNlciAqdHgpO1xcbi0tXFxuaW5jbHVkZS9saW51eC90aW1leC5oPTE1ND1leHRlcm4gaW50IGRvX2FkanRpbWV4KHN0cnVjdCBfX2tlcm5lbF90aW1leCAqKTtcXG5pbmNsdWRlL2xpbnV4L3RpbWV4Lmg6MTU1OmV4dGVybiBpbnQgZG9fY2xvY2tfYWRqdGltZShjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqIGt0eCk7XFxuaW5jbHVkZS9saW51eC90aW1leC5oLTE1Ni1cXG4tLVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD02NDQ9X19TWVNDQUxMKF9fTlJfb3Blbl9ieV9oYW5kbGVfYXQsIHN5c19vcGVuX2J5X2hhbmRsZV9hdClcXG4tLVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC02NDYtI2lmIGRlZmluZWQoX19BUkNIX1dBTlRfVElNRTMyX1NZU0NBTExTKSB8fCBfX0JJVFNfUEVSX0xPTkcgIT0gMzJcXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NjQ3OiNkZWZpbmUgX19OUl9jbG9ja19hZGp0aW1lIDI2NlxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo2NDg6X19TQ18zMjY0KF9fTlJfY2xvY2tfYWRqdGltZSwgc3lzX2Nsb2NrX2FkanRpbWUzMiwgc3lzX2Nsb2NrX2FkanRpbWUpXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTY0OS0jZW5kaWZcXG4tLVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD03MTg9X19TWVNDQUxMKF9fTlJfY2xvY2tfc2V0dGltZTY0LCBzeXNfY2xvY2tfc2V0dGltZSlcXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NzE5OiNkZWZpbmUgX19OUl9jbG9ja19hZGp0aW1lNjQgNDA1XFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjcyMDpfX1NZU0NBTEwoX19OUl9jbG9ja19hZGp0aW1lNjQsIHN5c19jbG9ja19hZGp0aW1lKVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC03MjEtI2RlZmluZSBfX05SX2Nsb2NrX2dldHJlc190aW1lNjQgNDA2XFxuLS1cXG5pbml0L0tjb25maWc9MTc1Nz1jb25maWcgUE9TSVhfVElNRVJTXFxuLS1cXG5pbml0L0tjb25maWctMTc2Ni1cXHQgIGF2YWlsYWJsZTogdGltZXJfY3JlYXRlLCB0aW1lcl9nZXR0aW1lOiB0aW1lcl9nZXRvdmVycnVuLFxcbmluaXQvS2NvbmZpZzoxNzY3OlxcdCAgdGltZXJfc2V0dGltZSwgdGltZXJfZGVsZXRlLCBjbG9ja19hZGp0aW1lLCBnZXRpdGltZXIsXFxuaW5pdC9LY29uZmlnLTE3NjgtXFx0ICBzZXRpdGltZXIsIGFsYXJtLiBGdXJ0aGVybW9yZSwgdGhlIGNsb2NrX3NldHRpbWUsIGNsb2NrX2dldHRpbWUsXFxuLS1cXG5rZXJuZWwvc3lzX25pLmM9MjExPUNPTkRfU1lTQ0FMTCh0aW1lcl9kZWxldGUpO1xcbmtlcm5lbC9zeXNfbmkuYzoyMTI6Q09ORF9TWVNDQUxMKGNsb2NrX2FkanRpbWUpO1xcbmtlcm5lbC9zeXNfbmkuYy0yMTMtQ09ORF9TWVNDQUxMKGdldGl0aW1lcik7XFxuLS1cXG5rZXJuZWwvc3lzX25pLmM9MzUyPUNPTkRfU1lTQ0FMTCh1dGltZW5zYXRfdGltZTMyKTtcXG5rZXJuZWwvc3lzX25pLmM6MzUzOkNPTkRfU1lTQ0FMTChjbG9ja19hZGp0aW1lMzIpO1xcbmtlcm5lbC9zeXNfbmkuYy0zNTQtXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jPTIxOD1zdGF0aWMgdm9pZCBwdXRfY2xvY2tfZGVzYyhzdHJ1Y3QgcG9zaXhfY2xvY2tfZGVzYyAqY2QpXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTIyMy1cXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jOjIyNDpzdGF0aWMgaW50IHBjX2Nsb2NrX2FkanRpbWUoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgX19rZXJuZWxfdGltZXggKnR4KVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMjI1LXtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMjM3LVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmM6MjM4OlxcdGlmIChjZC5jbGstXFx1MDAzZW9wcy5jbG9ja19hZGp0aW1lKVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmM6MjM5OlxcdFxcdGVyciA9IGNkLmNsay1cXHUwMDNlb3BzLmNsb2NrX2FkanRpbWUoY2QuY2xrLCB0eCk7XFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYy0yNDAtXFx0ZWxzZVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYz0zMTM9Y29uc3Qgc3RydWN0IGtfY2xvY2sgY2xvY2tfcG9zaXhfZHluYW1pYyA9IHtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMzE2LVxcdC5jbG9ja19nZXRfdGltZXNwZWNcXHQ9IHBjX2Nsb2NrX2dldHRpbWUsXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYzozMTc6XFx0LmNsb2NrX2FkalxcdFxcdD0gcGNfY2xvY2tfYWRqdGltZSxcXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTMxOC19O1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM9MTE0Mj1TWVNDQUxMX0RFRklORTIoY2xvY2tfZ2V0dGltZSwgY29uc3QgY2xvY2tpZF90LCB3aGljaF9jbG9jayxcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTExNTktXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM6MTE2MDppbnQgZG9fY2xvY2tfYWRqdGltZShjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqIGt0eClcXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy0xMTYxLXtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTExNzEtXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM6MTE3MjpTWVNDQUxMX0RFRklORTIoY2xvY2tfYWRqdGltZSwgY29uc3QgY2xvY2tpZF90LCB3aGljaF9jbG9jayxcXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy0xMTczLVxcdFxcdHN0cnVjdCBfX2tlcm5lbF90aW1leCBfX3VzZXIgKiwgdXR4KVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtMTE4MC1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzoxMTgxOlxcdGVyciA9IGRvX2Nsb2NrX2FkanRpbWUod2hpY2hfY2xvY2ssIFxcdTAwMjZrdHgpO1xcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTExODItXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYz0xMjk3PVNZU0NBTExfREVGSU5FMihjbG9ja19nZXR0aW1lMzIsIGNsb2NraWRfdCwgd2hpY2hfY2xvY2ssXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy0xMzE0LVxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jOjEzMTU6U1lTQ0FMTF9ERUZJTkUyKGNsb2NrX2FkanRpbWUzMiwgY2xvY2tpZF90LCB3aGljaF9jbG9jayxcXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy0xMzE2LVxcdFxcdHN0cnVjdCBvbGRfdGltZXgzMiBfX3VzZXIgKiwgdXRwKVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtMTMyNC1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzoxMzI1OlxcdGVyciA9IGRvX2Nsb2NrX2FkanRpbWUod2hpY2hfY2xvY2ssIFxcdTAwMjZrdHgpO1xcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTEzMjYtXFxuLS1cXG5rZXJuZWwvdGltZS90aW1la2VlcGluZy5jPTMyMjc9c3RhdGljIHZvaWQgYXV4X2Nsb2NrX2VuYWJsZShjbG9ja2lkX3QgaWQpXFxuLS1cXG5rZXJuZWwvdGltZS90aW1la2VlcGluZy5jLTMyMzgtXFx0ICogY2xvY2sgZnJlcXVlbmN5IGNvbnZlcnNpb24gaXMgY2xvc2UgZW5vdWdoLiBVc2Vyc3BhY2UgaGFzIHRvXFxua2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYzozMjM5OlxcdCAqIGFkanVzdCBmb3IgdGhlIGRldmlhdGlvbiB2aWEgY2xvY2tfYWRqdGltZSgyKS5cXG5rZXJuZWwvdGltZS90aW1la2VlcGluZy5jLTMyNDAtXFx0ICovXFxuLS1cXG5ydXN0L2tlcm5lbC90aW1lLnJzPTk5PSAgICBmbiBrdGltZV9nZXQoKSAtXFx1MDAzZSBiaW5kaW5nczo6a3RpbWVfdCB7XFxuLS1cXG5ydXN0L2tlcm5lbC90aW1lLnJzLTExMC0vLy8gcGVyZm9ybWVkIGJ5IE5UUCBhbmQgc2ltaWxhciBhcHBsaWNhdGlvbnMgdmlhIGFkanRpbWUoMyksIGFkanRpbWV4KDIpLFxcbnJ1c3Qva2VybmVsL3RpbWUucnM6MTExOi8vLyBjbG9ja19hZGp0aW1lKDIpLCBhbmQgbnRwX2FkanRpbWUoMykuIFRoaXMgY2xvY2sgbm9ybWFsbHkgY291bnRzIHRoZVxcbnJ1c3Qva2VybmVsL3RpbWUucnMtMTEyLS8vLyBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwLTAxLTAxIDAwOjAwOjAwIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lXFxuLS1cXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2g9MTg9Y2F0IFxcdTAwM2NcXHUwMDNjIEVPRlxcbi0tXFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTk2LSNkZWZpbmUgX19JR05PUkVfY2xvY2tfc2V0dGltZTY0XFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoOjk3OiNkZWZpbmUgX19JR05PUkVfY2xvY2tfYWRqdGltZTY0XFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTk4LSNkZWZpbmUgX19JR05PUkVfY2xvY2tfZ2V0cmVzX3RpbWU2NFxcbi0tXFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTEyOS0jZGVmaW5lIF9fSUdOT1JFX2Nsb2NrX3NldHRpbWVcXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2g6MTMwOiNkZWZpbmUgX19JR05PUkVfY2xvY2tfYWRqdGltZVxcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMzEtI2RlZmluZSBfX0lHTk9SRV9jbG9ja19nZXRyZXNcXG4tLVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzE0LTI2NVxcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuc2NyaXB0cy9zeXNjYWxsLnRibDozMTU6MjY2XFx0dGltZTMyXFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG5zY3JpcHRzL3N5c2NhbGwudGJsOjMxNjoyNjZcXHQ2NFxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzE3LTI2N1xcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzQ4LTQwNFxcdDMyXFx0Y2xvY2tfc2V0dGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXG5zY3JpcHRzL3N5c2NhbGwudGJsOjM0OTo0MDVcXHQzMlxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuc2NyaXB0cy9zeXNjYWxsLnRibC0zNTAtNDA2XFx0MzJcXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTY0ND1fX1NZU0NBTEwoX19OUl9vcGVuX2J5X2hhbmRsZV9hdCwgc3lzX29wZW5fYnlfaGFuZGxlX2F0KVxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTY0Ni0jaWYgZGVmaW5lZChfX0FSQ0hfV0FOVF9USU1FMzJfU1lTQ0FMTFMpIHx8IF9fQklUU19QRVJfTE9ORyAhPSAzMlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo2NDc6I2RlZmluZSBfX05SX2Nsb2NrX2FkanRpbWUgMjY2XFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjY0ODpfX1NDXzMyNjQoX19OUl9jbG9ja19hZGp0aW1lLCBzeXNfY2xvY2tfYWRqdGltZTMyLCBzeXNfY2xvY2tfYWRqdGltZSlcXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtNjQ5LSNlbmRpZlxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTcxOD1fX1NZU0NBTEwoX19OUl9jbG9ja19zZXR0aW1lNjQsIHN5c19jbG9ja19zZXR0aW1lKVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo3MTk6I2RlZmluZSBfX05SX2Nsb2NrX2FkanRpbWU2NCA0MDVcXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NzIwOl9fU1lTQ0FMTChfX05SX2Nsb2NrX2FkanRpbWU2NCwgc3lzX2Nsb2NrX2FkanRpbWUpXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTcyMS0jZGVmaW5lIF9fTlJfY2xvY2tfZ2V0cmVzX3RpbWU2NCA0MDZcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9hbHBoYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MjktNDk4XFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDMwOjQ5OVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9hbHBoYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MzEtNTAwXFx0Y29tbW9uXFx0c3luY2ZzXFx0XFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zODktMzcxXFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM5MDozNzJcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lXFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzkxLTM3M1xcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDIyLTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0MjM6NDA1XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyNC00MDZcXHRjb21tb25cXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTM4Ni0zNzFcXHRjb21tb25cXHRvcGVuX2J5X2hhbmRsZV9hdFxcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxcdGNvbXBhdF9zeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6Mzg3OjM3MlxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTM4OC0zNzNcXHRjb21tb25cXHRzeW5jZnNcXHRcXHRcXHRzeXNfc3luY2ZzXFxuLS1cXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDE5LTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQyMDo0MDVcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00MjEtNDA2XFx0Y29tbW9uXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zMTAtMjk5XFx0bjY0XFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MzExOjMwMFxcdG42NFxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zMTItMzAxXFx0bjY0XFx0c3luY2ZzXFx0XFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNjctMzIzXFx0Y29tbW9uXFx0ZmFub3RpZnlfbWFya1xcdFxcdHN5c19mYW5vdGlmeV9tYXJrXFx0XFx0Y29tcGF0X3N5c19mYW5vdGlmeV9tYXJrXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozNjg6MzI0XFx0MzJcXHRjbG9ja19hZGp0aW1lXFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzY5OjMyNFxcdDY0XFx0Y2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzAtMzI1XFx0Y29tbW9uXFx0bmFtZV90b19oYW5kbGVfYXRcXHRzeXNfbmFtZV90b19oYW5kbGVfYXRcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA2LTQwNFxcdDMyXFx0Y2xvY2tfc2V0dGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDA3OjQwNVxcdDMyXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA4LTQwNlxcdDMyXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NDgtMzQ2XFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRjb21wYXRfc3lzX29wZW5fYnlfaGFuZGxlX2F0XFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDQ5OjM0N1xcdDMyXFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTA6MzQ3XFx0NjRcXHRjbG9ja19hZGp0aW1lXFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTE6MzQ3XFx0c3B1XFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDUyLTM0OFxcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ5OC00MDRcXHQzMlxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0OTk6NDA1XFx0MzJcXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTAwLTQwNlxcdDMyXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yOTAtMzM2XFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyOTE6MzM3XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjkyLTMzOFxcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzAtMzYwXFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzcxOjM2MVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM3Mi0zNjJcXHRjb21tb25cXHRzeW5jZnNcXHRcXHRcXHRcXHRzeXNfc3luY2ZzXFxuLS1cXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDExLTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxMjo0MDVcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTMtNDA2XFx0Y29tbW9uXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MDMtMzMzXFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRjb21wYXRfc3lzX29wZW5fYnlfaGFuZGxlX2F0XFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQwNDozMzRcXHQzMlxcdGNsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQwNTozMzRcXHQ2NFxcdGNsb2NrX2FkanRpbWVcXHRcXHRzeXNfc3BhcmNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MDYtMzM1XFx0Y29tbW9uXFx0c3luY2ZzXFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1My00MDRcXHQzMlxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDU0OjQwNVxcdDMyXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTUtNDA2XFx0MzJcXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcdFxcdHN5c19jbG9ja19nZXRyZXNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtMzU3LTM0MlxcdGkzODZcXHRvcGVuX2J5X2hhbmRsZV9hdFxcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxcdFxcdGNvbXBhdF9zeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjM1ODozNDNcXHRpMzg2XFx0Y2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTM1OS0zNDRcXHRpMzg2XFx0c3luY2ZzXFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00MTMtNDA0XFx0aTM4NlxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MTQ6NDA1XFx0aTM4NlxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00MTUtNDA2XFx0aTM4NlxcdGNsb2NrX2dldHJlc190aW1lNjRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTMxNi0zMDRcXHRjb21tb25cXHRvcGVuX2J5X2hhbmRsZV9hdFxcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6MzE3OjMwNVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzE4LTMwNlxcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzUxLTMyOFxcdGNvbW1vblxcdHJ0X3Rnc2lncXVldWVpbmZvXFx0XFx0c3lzX3J0X3Rnc2lncXVldWVpbmZvXFxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozNTI6MzI5XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM1My0zMzBcXHRjb21tb25cXHRwcmxpbWl0NjRcXHRcXHRcXHRzeXNfcHJsaW1pdDY0XFxuLS1cXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM3OC00MDRcXHRjb21tb25cXHRjbG9ja19zZXR0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mzc5OjQwNVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zODAtNDA2XFx0Y29tbW9uXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXG4tLVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzE0LTI2NVxcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDozMTU6MjY2XFx0dGltZTMyXFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsOjMxNjoyNjZcXHQ2NFxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzE3LTI2N1xcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzQ4LTQwNFxcdDMyXFx0Y2xvY2tfc2V0dGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsOjM0OTo0MDVcXHQzMlxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibC0zNTAtNDA2XFx0MzJcXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtMy0gKiBSZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBzY2FsZWRfcHBtX3RvX3BwYigpIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBhbGxvd2VkXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmM6NDogKiBhIGNyYWZ0ZWQgY2xvY2tfYWRqdGltZShBREpfRlJFUVVFTkNZKSB0byBieXBhc3MgdGhlIFBUUCBtYXhfYWRqIGNoZWNrLlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTUtICpcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTIzLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjI0Oi8qIGNsb2NrX2FkanRpbWUgaXMgbm90IGF2YWlsYWJsZSBpbiBHTElCQyBcXHUwMDNjIDIuMTQgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy0yNS0jaWYgIV9fR0xJQkNfUFJFUkVRKDIsIDE0KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTI2LSNpbmNsdWRlIFxcdTAwM2NzeXMvc3lzY2FsbC5oXFx1MDAzZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjI3OnN0YXRpYyBpbnQgY2xvY2tfYWRqdGltZShjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1leCAqdHgpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtMjgte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjI5OlxcdHJldHVybiBzeXNjYWxsKF9fTlJfY2xvY2tfYWRqdGltZSwgaWQsIHR4KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy0zMC19XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYz0zMz1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtNjMtXFx0ICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmM6NjQ6XFx0aWYgKGNsb2NrX2FkanRpbWUoY2xraWQsIFxcdTAwMjZyZXN0b3JlKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYzo2NTpcXHRcXHRrc2Z0X2V4aXRfc2tpcChcXFwiY2xvY2tfYWRqdGltZShnZXQpIG9uICVzOiAlc1xcXFxuXFxcIiwgZGV2aWNlLCBzdHJlcnJvcihlcnJubykpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTY2LVxcdHJlc3RvcmUubW9kZXMgPSBBREpfRlJFUVVFTkNZO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtNzgtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmM6Nzk6XFx0cmV0ID0gY2xvY2tfYWRqdGltZShjbGtpZCwgXFx1MDAyNnR4KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy04MC1cXHRpZiAocmV0IFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiBlcnJubyA9PSBFQlVTWSkge1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtOTQtXFx0LyogcHV0IHRoZSBmcmVxdWVuY3kgYmFjayB0aGUgd2F5IHdlIGZvdW5kIGl0ICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmM6OTU6XFx0Y2xvY2tfYWRqdGltZShjbGtpZCwgXFx1MDAyNnJlc3RvcmUpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTk2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy0zOS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jOjQwOi8qIGNsb2NrX2FkanRpbWUgaXMgbm90IGF2YWlsYWJsZSBpbiBHTElCQyBcXHUwMDNjIDIuMTQgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jLTQxLSNpZiAhX19HTElCQ19QUkVSRVEoMiwgMTQpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy00Mi0jaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jOjQzOnN0YXRpYyBpbnQgY2xvY2tfYWRqdGltZShjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1leCAqdHgpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy00NC17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzo0NTpcXHRyZXR1cm4gc3lzY2FsbChfX05SX2Nsb2NrX2FkanRpbWUsIGlkLCB0eCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy00Ni19XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jPTE1Nj1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy0zNjQtXFx0XFx0dHguZnJlcSA9IHBwYl90b19zY2FsZWRfcHBtKGFkamZyZXEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmM6MzY1OlxcdFxcdGlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCBcXHUwMDI2dHgpKSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzozNjY6XFx0XFx0XFx0cGVycm9yKFxcXCJjbG9ja19hZGp0aW1lXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy0zNjctXFx0XFx0fSBlbHNlIHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzgxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmM6MzgyOlxcdFxcdGlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCBcXHUwMDI2dHgpIFxcdTAwM2MgMCkge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmM6MzgzOlxcdFxcdFxcdHBlcnJvcihcXFwiY2xvY2tfYWRqdGltZVxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzg0LVxcdFxcdH0gZWxzZSB7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jLTM5My1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jOjM5NDpcXHRcXHRpZiAoY2xvY2tfYWRqdGltZShjbGtpZCwgXFx1MDAyNnR4KSBcXHUwMDNjIDApIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jOjM5NTpcXHRcXHRcXHRwZXJyb3IoXFxcImNsb2NrX2FkanRpbWVcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jLTM5Ni1cXHRcXHR9IGVsc2Uge1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmMtMzctI2luY2x1ZGUgXFx1MDAzY3N5cy9zeXNjYWxsLmhcXHUwMDNlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmM6Mzg6aW50IGNsb2NrX2FkanRpbWUoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXggKnR4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jLTM5LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYzo0MDpcXHRyZXR1cm4gc3lzY2FsbChfX05SX2Nsb2NrX2FkanRpbWUsIGlkLCB0eCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmMtNDEtfVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmM9MTkzPWludCBzZXRfb2Zmc2V0KGxvbmcgbG9uZyBvZmZzZXQsIGludCB1c2VfbmFubylcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jLTIxOC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYzoyMTk6XFx0cmV0ID0gY2xvY2tfYWRqdGltZShDTE9DS19SRUFMVElNRSwgXFx1MDAyNnRteCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmMtMjIwLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYz0yMjg9aW50IHNldF9iYWRfb2Zmc2V0KGxvbmcgc2VjLCBsb25nIHVzZWMsIGludCB1c2VfbmFubylcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jLTIzOC1cXHR0bXgudGltZS50dl91c2VjID0gdXNlYztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYzoyMzk6XFx0cmV0ID0gY2xvY2tfYWRqdGltZShDTE9DS19SRUFMVElNRSwgXFx1MDAyNnRteCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmMtMjQwLVxcdGlmIChyZXQgXFx1MDAzZT0gMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozNDowMS45ODUwNTY4NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDMyMDA5ODUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGNsb2NrX2FkanRpbWUgU3lzY2FsbCBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGUgYGNsb2NrX2FkanRpbWVgIHN5c2NhbGwgYW5kIGhvdyBpdCdzIGltcGxlbWVudGVkLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgYHN5c19jbG9ja19hZGp0aW1lYCBpcyB0aGUgZW50cnkgcG9pbnQsIG5hdHVyYWxseS4gVGhpcyB0aGVuIGxlYWRzIHRvIGBkb19jbG9ja19hZGp0aW1lYCwgd2hpY2gsIGZvciB0aGUgcG9zaXggZHluYW1pYyBjbG9ja3MsIGNhbGxzIGBwY19jbG9ja19hZGp0aW1lYC4gVGhpcyB0aGVuIGJvaWxzIGRvd24gdG8gYSBjYWxsIHRvIGBjZC5jbGstXHUwMDNlb3BzLmNsb2NrX2FkanRpbWUoY2QuY2xrLCB0eClgLiBTbywgdGhlIHBhdGggaXMgZGVmaW5pdGVseSBjbGVhciBhbmQgcmVhY2hhYmxlIGZyb20gdGhlIHN5c2NhbGwgbGV2ZWwuXG5cbk5vdywgSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFBUUF8xNTg4X0NMT0NLX01PQ0tgLiBCYXNlZCBvbiB0aGUgY29kZSwgaXQgc2VlbXMgdGhpcyBpcyBjbG9zZWx5IHJlbGF0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWcgcmVxdWlyZW1lbnRzLiBJdCBsb29rcyBsaWtlIGBQVFBfMTU4OF9DTE9DS2AgaXMgYSBtdXN0LWhhdmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlnIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTkxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM0OjEyLjMwNTE1Nzc2NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMjU0MjY5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3B0cC9LY29uZmlnPTE3NT1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfRkMzV1xcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxODc6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OC1cXHR0cmlzdGF0ZSBcXFwiTW9jay11cCBQVFAgY2xvY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM0OjE2LjYzNzcwNzE4OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTAxODkyNjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgUFRQIEtjb25maWcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBMZXQncyBkaXZlIHJpZ2h0IGludG8gdGhlIGBkcml2ZXJzL3B0cC9LY29uZmlnYCBmaWxlLiBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gZ2V0dGluZyBteSBiZWFyaW5ncyBhcm91bmQgbGluZSAxODcsIGFzIHRoYXQncyBvZnRlbiBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZ3Jhc3AgdGhlIGNvcmUgb3B0aW9ucy4gSSdtIGV4cGVjdGluZyB0byBzZWUgZGVwZW5kZW5jaWVzLCBoZWxwIHRleHQsIGFuZCBkZWZhdWx0IHZhbHVlcyB0aGF0J2xsIHNoYXBlIHRoZSBtb2R1bGUncyBiZWhhdmlvci4gTGV0J3Mgc2VlIHdoYXQgdGhlIGRldmVsb3BlcnMgaGF2ZSBkZWVtZWQgaW1wb3J0YW50IHRvIGV4cG9zZSBhdCB0aGUgY29uZmlndXJhdGlvbiBsZXZlbCBoZXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGV5J3ZlIGhhbmRsZWQgdmFyaW91cyBQVFAgZmVhdHVyZXMsIHBlcmhhcHMgZGlmZmVyZW50IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zLCBvciBwb3RlbnRpYWxseSBldmVuIGNvbXBhdGliaWxpdHkgc2hpbXMuIEkgd2FudCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgdGhlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZW0sIGFuZCBob3cgaXQgYWxsIHRyYW5zbGF0ZXMgaW50byB0aGUgcnVudGltZSBQVFAgYmVoYXZpb3IuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbXBsaWNhdGlvbnMgb2YgY2hhbmdpbmcgdGhvc2UgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDc0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzQ6MjAuMTM5NjAyNjQ1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcgUmVuZXNhcyBGZW10b0Nsb2NrMyBXaXJlbGVzc1xcbiAxODE6XFx0XFx0ICBhcyBhIFBUUCBjbG9jay4gVGhpcyBjbG9jayBpcyBvbmx5IHVzZWZ1bCBpZiB5b3VyIHRpbWUgc3RhbXBpbmdcXG4gMTgyOlxcdFxcdCAgTUFDIGlzIGNvbm5lY3RlZCB0byB0aGUgUkVORVNBUyBjaGlwLlxcbiAxODM6XFx0XFxuIDE4NDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTg1OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgcHRwX2ZjMy5cXG4gMTg2OlxcdFxcbiAxODc6XFx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcXG4gMTg4OlxcdFxcdHRyaXN0YXRlIFxcXCJNb2NrLXVwIFBUUCBjbG9ja1xcXCJcXG4gMTg5OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gMTkwOlxcdFxcdGhlbHBcXG4gMTkxOlxcdFxcdCAgVGhpcyBkcml2ZXIgb2ZmZXJzIGEgc2V0IG9mIFBUUCBjbG9jayBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucyBvdmVyXFxuIDE5MjpcXHRcXHQgIHRoZSBzeXN0ZW0gbW9ub3RvbmljIHRpbWUuIEl0IGNhbiBiZSB1c2VkIGJ5IHZpcnR1YWwgbmV0d29yayBkZXZpY2VcXG4gMTkzOlxcdFxcdCAgZHJpdmVycyB0byBlbXVsYXRlIFBUUCBjYXBhYmlsaXRpZXMuXFxuIDE5NDpcXHRcXG4gMTk1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAxOTY6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBwdHBfbW9jay5cXG4gMTk3OlxcdFxcbiAxOTg6XFx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNV1xcbiAxOTk6XFx0XFx0dHJpc3RhdGUgXFxcIlZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzQ6MjAuMTM5NzcxOTA1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4NzM4MzcyNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBUUCBDbG9jayBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBoaW5nZSBvbiBgUFRQXzE1ODhfQ0xPQ0tgLiBTcGVjaWZpY2FsbHksIHRoZSB2dWxuZXJhYmlsaXR5IHJlc2lkZXMgaW4gdGhlIGBwdHBfY2xvY2tfYWRqdGltZWAgZnVuY3Rpb24uIExldCBtZSB0aGluaywgc28gdGhlcmUgYXJlIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgbmVlZGVkIHRvbzogYFBUUF8xNTg4X0NMT0NLX01PQ0tgIGFuZCBwb3RlbnRpYWxseSBgUFRQXzE1ODhfQ0xPQ0tfS1ZNYCwgYWx0aG91Z2ggSSdsbCBkb3VibGUtY2hlY2sgdGhhdCBsYXN0IG9uZS5cblxuUmlnaHQsIEkgbmVlZCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2JsZW0uIFNvLCBgcHRwX2Nsb2NrX2FkanRpbWVgIGluIGBkcml2ZXJzL3B0cC9wdHBfY2xvY2suY2AgaXMgdGhlIGtleSBmdW5jdGlvbiB0aGF0IHdhcyBtb2RpZmllZC4gV2FpdCwgdGhlcmUncyBhbHNvIHRoYXQgc2VsZnRlc3QgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jYC4gVGhhdCdzIGEgZ29vZCBzaWduOyBpdCBjb25maXJtcyB0aGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzY2FsbC4gRXhjZWxsZW50IVxuXG5TbywgdGhlIGNydXggb2YgdGhlIGlzc3VlIGlzIHRoZSBpbnRlZ2VyIG92ZXJmbG93IHdpdGhpbiBgcHRwX2Nsb2NrX2FkanRpbWVgLiBJdCBzZWVtcyB3aGVuIGNvbnZlcnRpbmcgYHR4LVx1MDAzZWZyZXFgIHRvIHBhcnRzLXBlci1iaWxsaW9uIChwcGIpIHVzaW5nIGBzY2FsZWRfcHBtX3RvX3BwYigpYCwgdGhlIG92ZXJmbG93IGFsbG93cyBieXBhc3NpbmcgdGhlIGBtYXhfYWRqYCBjaGVjay4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0J3MgZXhwbG9pdGFibGUgdGhyb3VnaCB0aGUgc3RhbmRhcmQgYGNsb2NrX2FkanRpbWVgIHN5c3RlbSBjYWxsIG9uIGEgUFRQIGNsb2NrIGRldmljZS5cblxuVG8gc3VtbWFyaXplIGZvciBmdXp6aW5nIHB1cnBvc2VzOiBteSBmb2N1cyBpcyBzcXVhcmVseSBvbiB0aGUgc3ltYm9sIGBwdHBfY2xvY2tfYWRqdGltZWAuIEknbGwgd2FudCB0byBlbnN1cmUgdGhlIGFwcHJvcHJpYXRlIGNvbmZpZ3VyYXRpb25zIOKAkyBgUFRQXzE1ODhfQ0xPQ0tgLCBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AsIGFuZCBwb3NzaWJseSBgUFRQXzE1ODhfQ0xPQ0tfS1ZNYCDigJMgYXJlIGVuYWJsZWQuIEFuZCBhZ2FpbiwgSSdsbCBuZWVkIHRvIGNoZWNrIGlmIGBQVFBfMTU4OF9DTE9DS19LVk1gIGlzIGluZGVlZCBhIGdvb2QgY29uZmlnIHRvIGhhdmUuIE15IGFpbSB3aWxsIGJlIHRvIGZ1enogdGhpcyBmdW5jdGlvbiB0aG9yb3VnaGx5IHRvIHZlcmlmeSB0aGUgb3ZlcmZsb3cgY2hlY2sgaXMgaW5kZWVkIGZpeGVkIGFuZCB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgc2ltaWxhciBpc3N1ZXMgbHVya2luZyB3aXRoaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjgzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzQ6MjguMDEzNjEyOTIyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyMDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHB0cF9wY2guXFxuIDEyMTpcXHRcXG4gMTIyOlxcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cXG4gMTIzOlxcdFxcdHRyaXN0YXRlIFxcXCJLVk0gdmlydHVhbCBQVFAgY2xvY2tcXFwiXFxuIDEyNDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXFxuIDEyNTpcXHRcXHRkZXBlbmRzIG9uIChLVk1fR1VFU1QgXFx1MDAyNlxcdTAwMjYgWDg2KSB8fCAoSEFWRV9BUk1fU01DQ0NfRElTQ09WRVJZIFxcdTAwMjZcXHUwMDI2IEFSTV9BUkNIX1RJTUVSKVxcbiAxMjY6XFx0XFx0ZGVmYXVsdCB5XFxuIDEyNzpcXHRcXHRoZWxwXFxuIDEyODpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcga3ZtIGluZnJhc3RydWN0dXJlIGFzIGEgUFRQXFxuIDEyOTpcXHRcXHQgIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgS1ZNIGd1ZXN0cy5cXG4gMTMwOlxcdFxcbiAxMzE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDEzMjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHB0cF9rdm0uXFxuIDEzMzpcXHRcXG4gMTM0OlxcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXFxuIDEzNTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBtYWNoaW5lIFBUUCBjbG9ja1xcXCJcXG4gMTM2OlxcdFxcdGRlcGVuZHMgb24gWDg2X1RTQyB8fCBBUk1fQVJDSF9USU1FUlxcbiAxMzc6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DSyBcXHUwMDI2XFx1MDAyNiBBUkNIX1NVUFBPUlRTX0lOVDEyOFxcbiAxMzg6XFx0XFx0ZGVmYXVsdCBQVFBfMTU4OF9DTE9DS19LVk1cXG4gMTM5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzQ6MjguMDEzNzIxMzIyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTY3NzA5MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU3RyZWFtbGluaW5nIFBUUCBDbG9jayBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBgUFRQXzE1ODhfQ0xPQ0tfS1ZNYCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQsIHNldCB0byAneScsIHdoZW4gaXRzIGRlcGVuZGVuY2llcyBhcmUgYWxsIHNhdGlzZmllZCDigJMgd2hpY2ggaXMgdGhlIGlkZWFsIHNpdHVhdGlvbi4gSSBjYW4gbGV2ZXJhZ2UgdGhpcyBleGlzdGluZyBkZXBlbmRlbmN5IHNldHVwLiBXaHkgY29tcGxpY2F0ZSB0aGluZ3M/IEl0IGxvb2tzIGxpa2UgSSBjYW4gc2ltcGxpZnkgdGhlIGNvbmZpZ3VyYXRpb24gYnkganVzdCBpbmNsdWRpbmcgdGhlIGNvcmUgYFBUUF8xNTg4X0NMT0NLYCBhbmQgdGhlIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBvcHRpb25zIGRpcmVjdGx5LiBUaGF0IHNob3VsZCBoYW5kbGUgZXZlcnl0aGluZyBlZmZpY2llbnRseS4gTm93LCBJIHNob3VsZCBtb3ZlIHRvIHVzaW5nIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTk0LCJPdXRwdXRUb2tlbnMiOjE2MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzQ6MzEuOTEwNDk2MzM4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2NjU3ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tfTU9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInB0cF9jbG9ja19hZGp0aW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBgcHRwX2Nsb2NrX2FkanRpbWVgIHdoZW4gY29udmVydGluZyBgdHgtXFx1MDAzZWZyZXFgIHRvIGBwcGJgIHVzaW5nIGBzY2FsZWRfcHBtX3RvX3BwYigpYC4gVGhpcyBvdmVyZmxvdyBhbGxvd2VkIGJ5cGFzc2luZyB0aGUgYG1heF9hZGpgIGNoZWNrLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgYGNsb2NrX2FkanRpbWVgIHN5c2NhbGwgb24gYSBQVFAgY2xvY2sgZGV2aWNlLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgb3ZlcmZsb3cgY2hlY2sgaXMgY29ycmVjdCBhbmQgbm8gb3RoZXIgc2ltaWxhciBpc3N1ZXMgZXhpc3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFRQXzE1ODhfQ0xPQ0tcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLX01PQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwdHBfY2xvY2tfYWRqdGltZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gYHB0cF9jbG9ja19hZGp0aW1lYCB3aGVuIGNvbnZlcnRpbmcgYHR4LVxcdTAwM2VmcmVxYCB0byBgcHBiYCB1c2luZyBgc2NhbGVkX3BwbV90b19wcGIoKWAuIFRoaXMgb3ZlcmZsb3cgYWxsb3dlZCBieXBhc3NpbmcgdGhlIGBtYXhfYWRqYCBjaGVjay4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGBjbG9ja19hZGp0aW1lYCBzeXNjYWxsIG9uIGEgUFRQIGNsb2NrIGRldmljZS4gRnV6emluZyB0aGlzIGZ1bmN0aW9uIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGNoZWNrIGlzIGNvcnJlY3QgYW5kIG5vIG90aGVyIHNpbWlsYXIgaXNzdWVzIGV4aXN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowt7r7x[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-21 14:16:48 +0000 UTC FinishedAt: 2026-07-21 14:34:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1c975de3343cdef506f2eecc833cc1f14b0401c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PTP_1588_CLOCK", "PTP_1588_CLOCK_MOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1c975de3343cdef506f2eecc833cc1f14b0401c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PTP_1588_CLOCK", "PTP_1588_CLOCK_MOCK" ], "series_id": "508a151c-58fe-4c6d-9fb0-af929ff8a020" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ptp_clock_adjtime" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLX01PQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwdHBfY2xvY2tfYWRqdGltZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBwdHBfY2xvY2tfYWRqdGltZWAgd2hlbiBjb252ZXJ0aW5nIGB0eC1cdTAwM2VmcmVxYCB0byBgcHBiYCB1c2luZyBgc2NhbGVkX3BwbV90b19wcGIoKWAuIFRoaXMgb3ZlcmZsb3cgYWxsb3dlZCBieXBhc3NpbmcgdGhlIGBtYXhfYWRqYCBjaGVjay4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGBjbG9ja19hZGp0aW1lYCBzeXNjYWxsIG9uIGEgUFRQIGNsb2NrIGRldmljZS4gRnV6emluZyB0aGlzIGZ1bmN0aW9uIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGNoZWNrIGlzIGNvcnJlY3QgYW5kIG5vIG90aGVyIHNpbWlsYXIgaXNzdWVzIGV4aXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTQyYmMyNWM5MjdlYjc1NTUwMzBhMzY0OWI1ZTdjNjBlY2FiOTBhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjMyOjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jIGIvZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNcbmluZGV4IGQ2ZjU0Y2NhZjkzYmI1Li40MTExMzQyZDY0ZjAzZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3B0cC9wdHBfY2xvY2suY1xuQEAgLTksNiAmIzQzOzksNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2luaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvb3ZlcmZsb3cuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bvc2l4LWNsb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcHNfa2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG5AQCAtMTU5LDcgJiM0MzsxNjAsMTggQEAgc3RhdGljIGludCBwdHBfY2xvY2tfYWRqdGltZShzdHJ1Y3QgcG9zaXhfY2xvY2sgKnBjLCBzdHJ1Y3QgX19rZXJuZWxfdGltZXggKnR4KVxuIFx0XHRkZWx0YSA9IGt0aW1lX3RvX25zKGt0KTtcbiBcdFx0ZXJyID0gb3BzLVx1MDAzZWFkanRpbWUob3BzLCBkZWx0YSk7XG4gXHR9IGVsc2UgaWYgKHR4LVx1MDAzZW1vZGVzIFx1MDAyNiBBREpfRlJFUVVFTkNZKSB7XG4tXHRcdGxvbmcgcHBiID0gc2NhbGVkX3BwbV90b19wcGIodHgtXHUwMDNlZnJlcSk7XG4mIzQzO1x0XHRsb25nIHBwYjtcbiYjNDM7XHRcdHM2NCB0bXA7XG4mIzQzO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIHNjYWxlZF9wcG1fdG9fcHBiKCkgbXVsdGlwbGllcyAoMSAmIzQzOyBmcmVxKSBieSAxMjUgaW4gczY0O1xuJiM0MztcdFx0ICogcmVqZWN0IGEgLVx1MDAzZWZyZXEgbGFyZ2UgZW5vdWdoIHRvIG92ZXJmbG93IHRoYXQsIHdoaWNoIHdvdWxkXG4mIzQzO1x0XHQgKiBvdGhlcndpc2Ugd3JhcCB0aGUgcmVzdWx0IGJhY2sgaW50byB0aGUgbWF4X2FkaiByYW5nZS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdygoczY0KXR4LVx1MDAzZWZyZXEsIChzNjQpMSwgXHUwMDI2dG1wKSB8fFxuJiM0MztcdFx0ICAgIGNoZWNrX211bF9vdmVyZmxvdyh0bXAsIChzNjQpMTI1LCBcdTAwMjZ0bXApKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVSQU5HRTtcbiYjNDM7XHRcdHBwYiA9IHNjYWxlZF9wcG1fdG9fcHBiKHR4LVx1MDAzZWZyZXEpO1xuIFx0XHRpZiAocHBiIFx1MDAzZSBvcHMtXHUwMDNlbWF4X2FkaiB8fCBwcGIgXHUwMDNjIC1vcHMtXHUwMDNlbWF4X2FkailcbiBcdFx0XHRyZXR1cm4gLUVSQU5HRTtcbiBcdFx0ZXJyID0gb3BzLVx1MDAzZWFkamZpbmUob3BzLCB0eC1cdTAwM2VmcmVxKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvTWFrZWZpbGVcbmluZGV4IDhmNTdmODhlY2FkZDYzLi5kZDczNzZjYzliZjVkMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlXG5AQCAtMSw2ICYjNDM7MSw2IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuIENGTEFHUyAmIzQzOz0gJChLSERSX0lOQ0xVREVTKVxuLVRFU1RfR0VOX1BST0dTIDo9IHRlc3RwdHBcbiYjNDM7VEVTVF9HRU5fUFJPR1MgOj0gdGVzdHB0cCBwdHBfZnJlcV9vdmVyZmxvd1xuIExETElCUyAmIzQzOz0gLWxydFxuIFRFU1RfUFJPR1MgPSBwaGMuc2hcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQxN2MwNTE2NjIyZGE4XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuY1xuQEAgLTAsMCAmIzQzOzEsOTkgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LypcbiYjNDM7ICogUmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgc2NhbGVkX3BwbV90b19wcGIoKSBpbnRlZ2VyIG92ZXJmbG93IHRoYXQgYWxsb3dlZFxuJiM0MzsgKiBhIGNyYWZ0ZWQgY2xvY2tfYWRqdGltZShBREpfRlJFUVVFTkNZKSB0byBieXBhc3MgdGhlIFBUUCBtYXhfYWRqIGNoZWNrLlxuJiM0MzsgKlxuJiM0MzsgKiB0ZXN0cHRwJiMzOTtzIC1mIG9wdGlvbiBzdG9yZXMgdGhlIGFkanVzdG1lbnQgYXMgYW4gaW50IHBwYiBhbmQgY2Fubm90IGV4cHJlc3NcbiYjNDM7ICogdGhlIDY0LWJpdCBzY2FsZWQtcHBtIHZhbHVlcyBuZWVkZWQgdG8gb3ZlcmZsb3cgdGhlIGNvbnZlcnNpb24sIHNvIHRoaXNcbiYjNDM7ICogdGVzdCBjcmFmdHMgc3RydWN0IHRpbWV4LmZyZXEgZGlyZWN0bHkuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIF9HTlVfU09VUkNFXG4mIzQzOyNkZWZpbmUgX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2Vycm5vLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzdHJpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzeXMvaW9jdGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NzeXMvdGltZXguaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2N0aW1lLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7Li4va3NlbGZ0ZXN0LmhcJiMzNDtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgRkRfVE9fQ0xPQ0tJRChmZClcdCgoY2xvY2tpZF90KSgoKCh1bnNpZ25lZCBpbnQpfihmZCkpIFx1MDAzY1x1MDAzYyAzKSB8IDMpKVxuJiM0MztcbiYjNDM7LyogY2xvY2tfYWRqdGltZSBpcyBub3QgYXZhaWxhYmxlIGluIEdMSUJDIFx1MDAzYyAyLjE0ICovXG4mIzQzOyNpZiAhX19HTElCQ19QUkVSRVEoMiwgMTQpXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbiYjNDM7c3RhdGljIGludCBjbG9ja19hZGp0aW1lKGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWV4ICp0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBzeXNjYWxsKF9fTlJfY2xvY2tfYWRqdGltZSwgaWQsIHR4KTtcbiYjNDM7fVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzO2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBjaGFyICpkZXZpY2UgPSBhcmdjIFx1MDAzZSAxID8gYXJndlsxXSA6IFwmIzM0Oy9kZXYvcHRwMFwmIzM0OztcbiYjNDM7XHRzdHJ1Y3QgcHRwX2Nsb2NrX2NhcHMgY2FwcztcbiYjNDM7XHRzdHJ1Y3QgdGltZXggcmVzdG9yZSA9IHsgMCB9O1xuJiM0MztcdHN0cnVjdCB0aW1leCB0eCA9IHsgMCB9O1xuJiM0MztcdGNsb2NraWRfdCBjbGtpZDtcbiYjNDM7XHRpbnQgZmQsIHJldDtcbiYjNDM7XG4mIzQzO1x0a3NmdF9wcmludF9oZWFkZXIoKTtcbiYjNDM7XHRrc2Z0X3NldF9wbGFuKDEpO1xuJiM0MztcbiYjNDM7XHRpZiAoc2l6ZW9mKHR4LmZyZXEpIFx1MDAzYyA4KVxuJiM0MztcdFx0a3NmdF9leGl0X3NraXAoXCYjMzQ7dGhlIG92ZXJmbG93IG9ubHkgYWZmZWN0cyA2NC1iaXQga2VybmVsc1xcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdGZkID0gb3BlbihkZXZpY2UsIE9fUkRXUik7XG4mIzQzO1x0aWYgKGZkIFx1MDAzYyAwKVxuJiM0MztcdFx0a3NmdF9leGl0X3NraXAoXCYjMzQ7Y2Fubm90IG9wZW4gJXM6ICVzXFxuXCYjMzQ7LCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1xuJiM0MztcdGNsa2lkID0gRkRfVE9fQ0xPQ0tJRChmZCk7XG4mIzQzO1xuJiM0MztcdGlmIChpb2N0bChmZCwgUFRQX0NMT0NLX0dFVENBUFMsIFx1MDAyNmNhcHMpKVxuJiM0MztcdFx0a3NmdF9leGl0X3NraXAoXCYjMzQ7UFRQX0NMT0NLX0dFVENBUFMgb24gJXM6ICVzXFxuXCYjMzQ7LCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1x0aWYgKCFjYXBzLm1heF9hZGopXG4mIzQzO1x0XHRrc2Z0X2V4aXRfc2tpcChcJiMzNDslcyBkb2VzIG5vdCBzdXBwb3J0IGZyZXF1ZW5jeSBhZGp1c3RtZW50XFxuXCYjMzQ7LCBkZXZpY2UpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFJlbWVtYmVyIHRoZSBjdXJyZW50IGZyZXF1ZW5jeS4gIEEgdnVsbmVyYWJsZSBrZXJuZWwgYWNjZXB0cyB0aGVcbiYjNDM7XHQgKiBib2d1cyB2YWx1ZSBiZWxvdyBhbmQgcHJvZ3JhbXMgaXQgaW50byB0aGUgaGFyZHdhcmUsIHNvIHJlc3RvcmUgdGhlXG4mIzQzO1x0ICogb3JpZ2luYWwgYWZ0ZXJ3YXJkcyBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlIGNsb2NrIGNvcnJ1cHRlZC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoY2xvY2tfYWRqdGltZShjbGtpZCwgXHUwMDI2cmVzdG9yZSkpXG4mIzQzO1x0XHRrc2Z0X2V4aXRfc2tpcChcJiMzNDtjbG9ja19hZGp0aW1lKGdldCkgb24gJXM6ICVzXFxuXCYjMzQ7LCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1x0cmVzdG9yZS5tb2RlcyA9IEFESl9GUkVRVUVOQ1k7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogKDEgJiM0MzsgMTQ3NTczOTUyNTg5Njc2NDEyKSAqIDEyNSA9PSAyXjY0ICYjNDM7IDksIHdoaWNoIG92ZXJmbG93cyBzNjQgaW5cbiYjNDM7XHQgKiBzY2FsZWRfcHBtX3RvX3BwYigpIGFuZCB3cmFwcyB0aGUgcmVzdWx0IHRvIGEgcHBiIG9mIDAuICBBIGtlcm5lbFxuJiM0MztcdCAqIHRoYXQgZG9lcyBub3QgZGV0ZWN0IHRoZSBvdmVyZmxvdyBsZXRzIHRoaXMgYWJzdXJkIGZyZXF1ZW5jeSBwYXN0XG4mIzQzO1x0ICogdGhlIG1heF9hZGogY2hlY2s7IGEgZml4ZWQga2VybmVsIHJlamVjdHMgaXQgd2l0aCAtRVJBTkdFLlxuJiM0MztcdCAqL1xuJiM0MztcdHR4Lm1vZGVzID0gQURKX0ZSRVFVRU5DWTtcbiYjNDM7I2lmIF9fU0laRU9GX0xPTkdfXyBcdTAwM2U9IDhcbiYjNDM7XHR0eC5mcmVxID0gMTQ3NTczOTUyNTg5Njc2NDEyTDtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztcdHJldCA9IGNsb2NrX2FkanRpbWUoY2xraWQsIFx1MDAyNnR4KTtcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiBlcnJubyA9PSBFQlVTWSkge1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIEEgZnJlZS1ydW5uaW5nIHBoeXNpY2FsIGNsb2NrICh2aXJ0dWFsIGNsb2NrcyBhY3RpdmUpIHJlamVjdHNcbiYjNDM7XHRcdCAqIGZyZXF1ZW5jeSBhZGp1c3RtZW50IHdpdGggLUVCVVNZIGJlZm9yZSB0aGUgb3ZlcmZsb3cgaXMgZXZlblxuJiM0MztcdFx0ICogZXZhbHVhdGVkLCBzbyB0aGUgdGVzdCBjYW5ub3QgcnVuIGhlcmUuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcChcJiMzNDslczogZnJlcXVlbmN5IGFkanVzdG1lbnQgcmV0dXJuZWQgRUJVU1ksIHNraXBwaW5nXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICAgIGRldmljZSk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGtzZnRfdGVzdF9yZXN1bHQocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiBlcnJubyA9PSBFUkFOR0UsXG4mIzQzO1x0XHRcdFx0IFwmIzM0O292ZXJmbG93aW5nIGZyZXF1ZW5jeSBhZGp1c3RtZW50IGlzIHJlamVjdGVkIChyZXQ9JWQgZXJybm89JWQpXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCByZXQsIHJldCBcdTAwM2MgMCA/IGVycm5vIDogMCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBwdXQgdGhlIGZyZXF1ZW5jeSBiYWNrIHRoZSB3YXkgd2UgZm91bmQgaXQgKi9cbiYjNDM7XHRjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZyZXN0b3JlKTtcbiYjNDM7XG4mIzQzO1x0Y2xvc2UoZmQpO1xuJiM0MztcdGtzZnRfZmluaXNoZWQoKTtcbiYjNDM7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DS19NT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHRwX2Nsb2NrX2FkanRpbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBgcHRwX2Nsb2NrX2FkanRpbWVgIHdoZW4gY29udmVydGluZyBgdHgtXHUwMDNlZnJlcWAgdG8gYHBwYmAgdXNpbmcgYHNjYWxlZF9wcG1fdG9fcHBiKClgLiBUaGlzIG92ZXJmbG93IGFsbG93ZWQgYnlwYXNzaW5nIHRoZSBgbWF4X2FkamAgY2hlY2suIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzY2FsbCBvbiBhIFBUUCBjbG9jayBkZXZpY2UuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoZSBvdmVyZmxvdyBjaGVjayBpcyBjb3JyZWN0IGFuZCBubyBvdGhlciBzaW1pbGFyIGlzc3VlcyBleGlzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTQyYmMyNWM5MjdlYjc1NTUwMzBhMzY0OWI1ZTdjNjBlY2FiOTBhNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDIxIDE0OjMyOjQyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMgYi9kcml2ZXJzL3B0cC9wdHBfY2xvY2suYwppbmRleCBkNmY1NGNjYWY5M2JiNS4uNDExMTM0MmQ2NGYwM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jCkBAIC05LDYgJiM0Mzs5LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9pbml0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L292ZXJmbG93LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcG9zaXgtY2xvY2suaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wcHNfa2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKQEAgLTE1OSw3ICYjNDM7MTYwLDE4IEBAIHN0YXRpYyBpbnQgcHRwX2Nsb2NrX2FkanRpbWUoc3RydWN0IHBvc2l4X2Nsb2NrICpwYywgc3RydWN0IF9fa2VybmVsX3RpbWV4ICp0eCkKIAkJZGVsdGEgPSBrdGltZV90b19ucyhrdCk7CiAJCWVyciA9IG9wcy0mZ3Q7YWRqdGltZShvcHMsIGRlbHRhKTsKIAl9IGVsc2UgaWYgKHR4LSZndDttb2RlcyAmYW1wOyBBREpfRlJFUVVFTkNZKSB7Ci0JCWxvbmcgcHBiID0gc2NhbGVkX3BwbV90b19wcGIodHgtJmd0O2ZyZXEpOwomIzQzOwkJbG9uZyBwcGI7CiYjNDM7CQlzNjQgdG1wOwomIzQzOwomIzQzOwkJLyoKJiM0MzsJCSAqIHNjYWxlZF9wcG1fdG9fcHBiKCkgbXVsdGlwbGllcyAoMSAmIzQzOyBmcmVxKSBieSAxMjUgaW4gczY0OwomIzQzOwkJICogcmVqZWN0IGEgLSZndDtmcmVxIGxhcmdlIGVub3VnaCB0byBvdmVyZmxvdyB0aGF0LCB3aGljaCB3b3VsZAomIzQzOwkJICogb3RoZXJ3aXNlIHdyYXAgdGhlIHJlc3VsdCBiYWNrIGludG8gdGhlIG1heF9hZGogcmFuZ2UuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChjaGVja19hZGRfb3ZlcmZsb3coKHM2NCl0eC0mZ3Q7ZnJlcSwgKHM2NCkxLCAmYW1wO3RtcCkgfHwKJiM0MzsJCSAgICBjaGVja19tdWxfb3ZlcmZsb3codG1wLCAoczY0KTEyNSwgJmFtcDt0bXApKQomIzQzOwkJCXJldHVybiAtRVJBTkdFOwomIzQzOwkJcHBiID0gc2NhbGVkX3BwbV90b19wcGIodHgtJmd0O2ZyZXEpOwogCQlpZiAocHBiICZndDsgb3BzLSZndDttYXhfYWRqIHx8IHBwYiAmbHQ7IC1vcHMtJmd0O21heF9hZGopCiAJCQlyZXR1cm4gLUVSQU5HRTsKIAkJZXJyID0gb3BzLSZndDthZGpmaW5lKG9wcywgdHgtJmd0O2ZyZXEpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlCmluZGV4IDhmNTdmODhlY2FkZDYzLi5kZDczNzZjYzliZjVkMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9NYWtlZmlsZQpAQCAtMSw2ICYjNDM7MSw2IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiBDRkxBR1MgJiM0Mzs9ICQoS0hEUl9JTkNMVURFUykKLVRFU1RfR0VOX1BST0dTIDo9IHRlc3RwdHAKJiM0MztURVNUX0dFTl9QUk9HUyA6PSB0ZXN0cHRwIHB0cF9mcmVxX292ZXJmbG93CiBMRExJQlMgJiM0Mzs9IC1scnQKIFRFU1RfUFJPR1MgPSBwaGMuc2gKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uNDE3YzA1MTY2MjJkYTgKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYwpAQCAtMCwwICYjNDM7MSw5OSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyoKJiM0MzsgKiBSZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBzY2FsZWRfcHBtX3RvX3BwYigpIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBhbGxvd2VkCiYjNDM7ICogYSBjcmFmdGVkIGNsb2NrX2FkanRpbWUoQURKX0ZSRVFVRU5DWSkgdG8gYnlwYXNzIHRoZSBQVFAgbWF4X2FkaiBjaGVjay4KJiM0MzsgKgomIzQzOyAqIHRlc3RwdHAmIzM5O3MgLWYgb3B0aW9uIHN0b3JlcyB0aGUgYWRqdXN0bWVudCBhcyBhbiBpbnQgcHBiIGFuZCBjYW5ub3QgZXhwcmVzcwomIzQzOyAqIHRoZSA2NC1iaXQgc2NhbGVkLXBwbSB2YWx1ZXMgbmVlZGVkIHRvIG92ZXJmbG93IHRoZSBjb252ZXJzaW9uLCBzbyB0aGlzCiYjNDM7ICogdGVzdCBjcmFmdHMgc3RydWN0IHRpbWV4LmZyZXEgZGlyZWN0bHkuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBfR05VX1NPVVJDRQomIzQzOyNkZWZpbmUgX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fCiYjNDM7I2luY2x1ZGUgJmx0O2Vycm5vLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0cmluZy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzeXMvaW9jdGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3lzL3RpbWV4LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3RpbWUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3B0cF9jbG9jay5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7Li4va3NlbGZ0ZXN0LmgmIzM0OwomIzQzOwomIzQzOyNkZWZpbmUgRkRfVE9fQ0xPQ0tJRChmZCkJKChjbG9ja2lkX3QpKCgoKHVuc2lnbmVkIGludCl+KGZkKSkgJmx0OyZsdDsgMykgfCAzKSkKJiM0MzsKJiM0MzsvKiBjbG9ja19hZGp0aW1lIGlzIG5vdCBhdmFpbGFibGUgaW4gR0xJQkMgJmx0OyAyLjE0ICovCiYjNDM7I2lmICFfX0dMSUJDX1BSRVJFUSgyLCAxNCkKJiM0MzsjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsKJiM0MztzdGF0aWMgaW50IGNsb2NrX2FkanRpbWUoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXggKnR4KQomIzQzO3sKJiM0MzsJcmV0dXJuIHN5c2NhbGwoX19OUl9jbG9ja19hZGp0aW1lLCBpZCwgdHgpOwomIzQzO30KJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQomIzQzO3sKJiM0MzsJY29uc3QgY2hhciAqZGV2aWNlID0gYXJnYyAmZ3Q7IDEgPyBhcmd2WzFdIDogJiMzNDsvZGV2L3B0cDAmIzM0OzsKJiM0MzsJc3RydWN0IHB0cF9jbG9ja19jYXBzIGNhcHM7CiYjNDM7CXN0cnVjdCB0aW1leCByZXN0b3JlID0geyAwIH07CiYjNDM7CXN0cnVjdCB0aW1leCB0eCA9IHsgMCB9OwomIzQzOwljbG9ja2lkX3QgY2xraWQ7CiYjNDM7CWludCBmZCwgcmV0OwomIzQzOwomIzQzOwlrc2Z0X3ByaW50X2hlYWRlcigpOwomIzQzOwlrc2Z0X3NldF9wbGFuKDEpOwomIzQzOwomIzQzOwlpZiAoc2l6ZW9mKHR4LmZyZXEpICZsdDsgOCkKJiM0MzsJCWtzZnRfZXhpdF9za2lwKCYjMzQ7dGhlIG92ZXJmbG93IG9ubHkgYWZmZWN0cyA2NC1iaXQga2VybmVsc1xuJiMzNDspOwomIzQzOwomIzQzOwlmZCA9IG9wZW4oZGV2aWNlLCBPX1JEV1IpOwomIzQzOwlpZiAoZmQgJmx0OyAwKQomIzQzOwkJa3NmdF9leGl0X3NraXAoJiMzNDtjYW5ub3Qgb3BlbiAlczogJXNcbiYjMzQ7LCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7CiYjNDM7CiYjNDM7CWNsa2lkID0gRkRfVE9fQ0xPQ0tJRChmZCk7CiYjNDM7CiYjNDM7CWlmIChpb2N0bChmZCwgUFRQX0NMT0NLX0dFVENBUFMsICZhbXA7Y2FwcykpCiYjNDM7CQlrc2Z0X2V4aXRfc2tpcCgmIzM0O1BUUF9DTE9DS19HRVRDQVBTIG9uICVzOiAlc1xuJiMzNDssIGRldmljZSwgc3RyZXJyb3IoZXJybm8pKTsKJiM0MzsJaWYgKCFjYXBzLm1heF9hZGopCiYjNDM7CQlrc2Z0X2V4aXRfc2tpcCgmIzM0OyVzIGRvZXMgbm90IHN1cHBvcnQgZnJlcXVlbmN5IGFkanVzdG1lbnRcbiYjMzQ7LCBkZXZpY2UpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBSZW1lbWJlciB0aGUgY3VycmVudCBmcmVxdWVuY3kuICBBIHZ1bG5lcmFibGUga2VybmVsIGFjY2VwdHMgdGhlCiYjNDM7CSAqIGJvZ3VzIHZhbHVlIGJlbG93IGFuZCBwcm9ncmFtcyBpdCBpbnRvIHRoZSBoYXJkd2FyZSwgc28gcmVzdG9yZSB0aGUKJiM0MzsJICogb3JpZ2luYWwgYWZ0ZXJ3YXJkcyBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlIGNsb2NrIGNvcnJ1cHRlZC4KJiM0MzsJICovCiYjNDM7CWlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCAmYW1wO3Jlc3RvcmUpKQomIzQzOwkJa3NmdF9leGl0X3NraXAoJiMzNDtjbG9ja19hZGp0aW1lKGdldCkgb24gJXM6ICVzXG4mIzM0OywgZGV2aWNlLCBzdHJlcnJvcihlcnJubykpOwomIzQzOwlyZXN0b3JlLm1vZGVzID0gQURKX0ZSRVFVRU5DWTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogKDEgJiM0MzsgMTQ3NTczOTUyNTg5Njc2NDEyKSAqIDEyNSA9PSAyXjY0ICYjNDM7IDksIHdoaWNoIG92ZXJmbG93cyBzNjQgaW4KJiM0MzsJICogc2NhbGVkX3BwbV90b19wcGIoKSBhbmQgd3JhcHMgdGhlIHJlc3VsdCB0byBhIHBwYiBvZiAwLiAgQSBrZXJuZWwKJiM0MzsJICogdGhhdCBkb2VzIG5vdCBkZXRlY3QgdGhlIG92ZXJmbG93IGxldHMgdGhpcyBhYnN1cmQgZnJlcXVlbmN5IHBhc3QKJiM0MzsJICogdGhlIG1heF9hZGogY2hlY2s7IGEgZml4ZWQga2VybmVsIHJlamVjdHMgaXQgd2l0aCAtRVJBTkdFLgomIzQzOwkgKi8KJiM0MzsJdHgubW9kZXMgPSBBREpfRlJFUVVFTkNZOwomIzQzOyNpZiBfX1NJWkVPRl9MT05HX18gJmd0Oz0gOAomIzQzOwl0eC5mcmVxID0gMTQ3NTczOTUyNTg5Njc2NDEyTDsKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsJcmV0ID0gY2xvY2tfYWRqdGltZShjbGtpZCwgJmFtcDt0eCk7CiYjNDM7CWlmIChyZXQgJmx0OyAwICZhbXA7JmFtcDsgZXJybm8gPT0gRUJVU1kpIHsKJiM0MzsJCS8qCiYjNDM7CQkgKiBBIGZyZWUtcnVubmluZyBwaHlzaWNhbCBjbG9jayAodmlydHVhbCBjbG9ja3MgYWN0aXZlKSByZWplY3RzCiYjNDM7CQkgKiBmcmVxdWVuY3kgYWRqdXN0bWVudCB3aXRoIC1FQlVTWSBiZWZvcmUgdGhlIG92ZXJmbG93IGlzIGV2ZW4KJiM0MzsJCSAqIGV2YWx1YXRlZCwgc28gdGhlIHRlc3QgY2Fubm90IHJ1biBoZXJlLgomIzQzOwkJICovCiYjNDM7CQlrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoJiMzNDslczogZnJlcXVlbmN5IGFkanVzdG1lbnQgcmV0dXJuZWQgRUJVU1ksIHNraXBwaW5nXG4mIzM0OywKJiM0MzsJCQkJICAgICAgZGV2aWNlKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWtzZnRfdGVzdF9yZXN1bHQocmV0ICZsdDsgMCAmYW1wOyZhbXA7IGVycm5vID09IEVSQU5HRSwKJiM0MzsJCQkJICYjMzQ7b3ZlcmZsb3dpbmcgZnJlcXVlbmN5IGFkanVzdG1lbnQgaXMgcmVqZWN0ZWQgKHJldD0lZCBlcnJubz0lZClcbiYjMzQ7LAomIzQzOwkJCQkgcmV0LCByZXQgJmx0OyAwID8gZXJybm8gOiAwKTsKJiM0MzsJfQomIzQzOwomIzQzOwkvKiBwdXQgdGhlIGZyZXF1ZW5jeSBiYWNrIHRoZSB3YXkgd2UgZm91bmQgaXQgKi8KJiM0MzsJY2xvY2tfYWRqdGltZShjbGtpZCwgJmFtcDtyZXN0b3JlKTsKJiM0MzsKJiM0MzsJY2xvc2UoZmQpOwomIzQzOwlrc2Z0X2ZpbmlzaGVkKCk7CiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjg2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgUFRQIENsb2NrIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gaXQuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIHNlcmllcyBhbmQgZmlndXJlIG91dCBpZiBpdCBpbnRyb2R1Y2VzIGFueSBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwmIzM5O3MgZnVuY3Rpb25hbGl0eSB0aGF0IHJlcXVpcmUgdXMgdG8ga2ljayBvZmYgc29tZSBmdXp6aW5nLiBUaGUga2V5IGZpbGUgc2VlbXMgdG8gYmUgYGRyaXZlcnMvcHRwL3B0cF9jbG9jay5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgcHRwX2Nsb2NrX2FkanRpbWUoKWAgZnVuY3Rpb24uCgpGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBwdHBfY2xvY2tfYWRqdGltZSgpYCBhbmQgYWRkaW5nIHNvbWUgb3ZlcmZsb3cgY2hlY2tzIHJlbGF0ZWQgdG8gYHR4LSZndDtmcmVxYCB3aGVuIGB0eC0mZ3Q7bW9kZXNgIGhhcyB0aGUgYEFESl9GUkVRVUVOQ1lgIGJpdCBzZXQuIE9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgKnJlYWwqIGNoYW5nZSwgd2hpY2ggaXMgZ29vZC4gUHJldmVudGluZyB0aGF0IGludGVnZXIgb3ZlcmZsb3cgaW4gYHNjYWxlZF9wcG1fdG9fcHBiKHR4LSZndDtmcmVxKWAgY291bGQgYmUgaW1wb3J0YW50LgoKTm93LCB0aGUgbmV4dCBzdGVwLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgYHB0cF9jbG9ja19hZGp0aW1lKClgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBjYWxsZWQgd2l0aGluIHRoZSBrZXJuZWwgYW5kIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIGZvciBpdCB0byBiZSBhY3RpdmUuIFRoYXQgc2hvdWxkIHRlbGwgbWUganVzdCBob3cgaW1wb3J0YW50IHRoZSBmaXggaXMgYW5kIGhvdyBoaWdoIG9uIHRoZSBmdXp6aW5nIHByaW9yaXR5IGxpc3QgaXQgbmVlZHMgdG8gYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHRwX2Nsb2NrX2FkanRpbWUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MTExPXN0YXRpYyBpbnQgcHRwX2Nsb2NrX2dldHRpbWUoc3RydWN0IHBvc2l4X2Nsb2NrICpwYywgc3RydWN0IHRpbWVzcGVjNjQgKnRwKVxuLS1cbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTEyMi1cbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jOjEyMzpzdGF0aWMgaW50IHB0cF9jbG9ja19hZGp0aW1lKHN0cnVjdCBwb3NpeF9jbG9jayAqcGMsIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqdHgpXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0xMjQte1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jPTIwMT1zdGF0aWMgc3RydWN0IHBvc2l4X2Nsb2NrX29wZXJhdGlvbnMgcHRwX2Nsb2NrX29wcyA9IHtcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTIwMi1cdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6MjAzOlx0LmNsb2NrX2FkanRpbWVcdD0gcHRwX2Nsb2NrX2FkanRpbWUsXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0yMDQtXHQuY2xvY2tfZ2V0dGltZVx0PSBwdHBfY2xvY2tfZ2V0dGltZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzk1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgUFRQIENsb2NrIEFkanVzdG1lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgbmV3IHRhcmdldCwgYC5jbG9ja19hZGp0aW1lYCB3aXRoaW4gYHB0cF9jbG9ja19vcHNgLiAgVGhhdCBzZWVtcyB0byBiZSB1c2VkIGJ5IGBwb3NpeF9jbG9ja19vcGVyYXRpb25zYCwgd2hpY2gsIGJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGlzIGEgcHJldHR5IGNydWNpYWwgbGluay4gQW5kLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHRoZSBQVFAgY2xvY2sgc3Vic3lzdGVtIGlzIGFjY2Vzc2libGUgdmlhIGAvZGV2L3B0cFhgIGRldmljZXMgYW5kIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzdGVtIGNhbGwuIEJpbmdvISBUaGlzIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgZ2l2ZW4gaXRzIGltcG9ydGFuY2UgaW4gdGltZSBzeW5jaHJvbml6YXRpb24sIGl0JiMzOTtzIGFic29sdXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZyBwb3RlbnRpYWwuIEkgdGhpbmsgdGhpcyBzdWJzeXN0ZW0gY291bGQgYmUgYSByZWFsIGdvbGRtaW5lLiBOb3csIEkgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFBUUCB0byBzZWUgd2hhdCBrbm9icyBJIGNhbiBhZGp1c3QgdG8gaGVscCB0YWlsb3IgdGhlIGZ1enppbmcgY2FtcGFpZ24uIFRoaXMgaXMgZ29pbmcgdG8gYmUgZ29vZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFRQXzE1ODhfQ0xPQ0smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWc9MjE9Y29uZmlnIElYUDRYWF9FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnOjMxOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JWFA0NlhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtJbnRlbCBJWFA0NnggYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZz02PW1lbnUgXCYjMzQ7UFRQIGNsb2NrIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvcHRwL0tjb25maWctNy1cbmRyaXZlcnMvcHRwL0tjb25maWc6ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0yOS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MzA6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL3B0cC9LY29uZmlnLTMxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQxLVxuZHJpdmVycy9wdHAvS2NvbmZpZzo0Mjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRFRFXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQzLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gRFRFIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctNTctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjU4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19RT1JJUVxuZHJpdmVycy9wdHAvS2NvbmZpZy01OS1cdHRyaXN0YXRlIFwmIzM0O0ZyZWVzY2FsZSBRb3JJUSAxNTg4IHRpbWVyIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWc9NzU9Y29uZmlnIERQODM2NDBfUEhZXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy05MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6OTI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lORVNcbmRyaXZlcnMvcHRwL0tjb25maWctOTMtXHR0cmlzdGF0ZSBcJiMzNDtaSEFXIEluRVMgUFRQIHRpbWUgc3RhbXBpbmcgSVAgY29yZVwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTAyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMDM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMDQtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBQQ0ggRUcyMFQgYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjEtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjEyMjpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfS1ZNXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMy1cdHRyaXN0YXRlIFwmIzM0O0tWTSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTMzLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMzQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNQ0xPQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctMTM1LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBtYWNoaW5lIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTUwLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVDgyUDMzXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1Mi1cdHRyaXN0YXRlIFwmIzM0O0lEVCA4MlAzM3h4eCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE2Mi1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTYzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFRDTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjQtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgQ0xPQ0tNQVRSSVggYXMgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzQtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE3NTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRkMzV1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xNzYtXHR0cmlzdGF0ZSBcJiMzNDtSRU5FU0FTIEZlbXRvQ2xvY2szIFdpcmVsZXNzIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTg2LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxODc6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctMTg4LVx0dHJpc3RhdGUgXCYjMzQ7TW9jay11cCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE5Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTk4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTVdcbmRyaXZlcnMvcHRwL0tjb25maWctMTk5LVx0dHJpc3RhdGUgXCYjMzQ7Vk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMDktXG5kcml2ZXJzL3B0cC9LY29uZmlnOjIxMDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT0NQXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O09wZW5Db21wdXRlIFRpbWVDYXJkIGFzIFBUUCBjbG9ja1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NzcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25zaWRlcmluZyBQVFAgQ2xvY2sgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uLCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSBnb2luZyB0byBiZSBgUFRQXzE1ODhfQ0xPQ0tgLiBCdXQgd2FpdCwgdGhlcmUgYXJlIGEgY291cGxlIG9mIG90aGVyIG9wdGlvbnMgdGhhdCBtaWdodCBiZSBiZW5lZmljaWFsLCBlc3BlY2lhbGx5IGZvciBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgYW5kIGBQVFBfMTU4OF9DTE9DS19LVk1gIGNvbWUgdG8gbWluZCDigJMgY291bGQgYmUgaGVscGZ1bCB0byBzaW11bGF0ZSBhIFBUUCBjbG9jay4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgYW5kIHNlZSB3aGF0IGl0IG9mZmVycy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhcGFiaWxpdGllcyBiZXR0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZz0xNzU9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ni1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTg3OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OC1cdHRyaXN0YXRlIFwmIzM0O01vY2stdXAgUFRQIGNsb2NrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEzMAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIFBUUF8xNTg4X0NMT0NLX01PQ0sqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgcHVycG9zZSBvZiBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AuIFdoYXQgZXhhY3RseSBkb2VzIHRoaXMgY29tcG9uZW50IHJlcHJlc2VudD8gSXMgaXQgYSBzaW11bGF0aW9uLCBhIHRlc3QgZml4dHVyZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBhbmFseXppbmcgaXRzIGNvZGUsIGRvY3VtZW50YXRpb24sIG9yIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZGV0ZXJtaW5lIHdoYXQgaXRzIGludGVuZGVkIGJlaGF2aW9yIGlzLiBXaGF0IGFyZSBpdHMgaW5wdXRzLCBvdXRwdXRzLCBhbmQgaW50ZXJuYWwgbWVjaGFuaXNtcz8gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBUaGlzIGlzIHRoZSBpbml0aWFsIHN0ZXAgaW4gcmVhbGx5IHVuZGVyc3RhbmRpbmcgaXRzIGNhcGFiaWxpdGllcyBhbmQgbGltaXRhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3B0cF9tb2NrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O01BSU5UQUlORVJTPTIxNzQ4PVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoyMTc0OTpGOlx0ZHJpdmVycy9wdHAvcHRwX21vY2suY1xuTUFJTlRBSU5FUlM6MjE3NTA6RjpcdGluY2x1ZGUvbGludXgvcHRwX21vY2suaFxuTUFJTlRBSU5FUlMtMjE3NTEtXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjQ6I2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX21vY2suaFx1MDAzZVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI1LSNpbmNsdWRlIFx1MDAzY25ldC9kZXZsaW5rLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTE4Nz1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTk1LVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5NjpcdCAgd2lsbCBiZSBjYWxsZWQgcHRwX21vY2suXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE5Ny1cbi0tXG5kcml2ZXJzL3B0cC9NYWtlZmlsZT0xOD1vYmotJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0tfSURUODJQMzMpXHQmIzQzOz0gcHRwX2lkdDgycDMzLm9cbmRyaXZlcnMvcHRwL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19QVFBfMTU4OF9DTE9DS19NT0NLKVx0JiM0Mzs9IHB0cF9tb2NrLm9cbmRyaXZlcnMvcHRwL01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19QVFBfMTU4OF9DTE9DS19WTVcpXHQmIzQzOz0gcHRwX3Ztdy5vXG4tLVxuZHJpdmVycy9wdHAvcHRwX21vY2suYy0xMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcdTAwM2VcbmRyaXZlcnMvcHRwL3B0cF9tb2NrLmM6MTI6I2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX21vY2suaFx1MDAzZVxuZHJpdmVycy9wdHAvcHRwX21vY2suYy0xMy0jaW5jbHVkZSBcdTAwM2NsaW51eC90aW1lY291bnRlci5oXHUwMDNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MjAKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqQ2xvY2sgU291cmNlIENvbnNpZGVyYXRpb25zKioKClJpZ2h0LCBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgaXMgYSBzb2xpZCBvcHRpb24gZm9yIHRlc3RpbmcgYW5kIHNpbXVsYXRpb24uIEl0IGdpdmVzIG1lIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudCwgd2hpY2ggaXMgaW52YWx1YWJsZS4gQnV0IEkgbmVlZCB0byBhbHNvIGNvbnNpZGVyIG90aGVyIHBvc3NpYmlsaXRpZXMgdG8gZW5zdXJlIGNvbXByZWhlbnNpdmUgY292ZXJhZ2UuCgpNeSBtaW5kIGltbWVkaWF0ZWx5IHR1cm5zIHRvIGBQVFBfMTU4OF9DTE9DS19LVk1gLiBJJiMzOTttIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IGhvdyB0aGF0IG1pZ2h0IGludGVyYWN0IHdpdGggdGhpcyBzeXN0ZW0uIENvdWxkIHRoYXQgb2ZmZXIgYSBtb3JlIHJlYWxpc3RpYyB0ZXN0LCBvciBwb3RlbnRpYWxseSByZXZlYWwgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSBLVk0gdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQ/IEkgbmVlZCB0byB0aGluayB0aHJvdWdoIGhvdyBpdCBpbnRlcmZhY2VzLCBpZiBpdCYjMzk7cyB0aGUgcmlnaHQgY2hvaWNlIGZvciB0aGUgc2NhbGUgb2YgdGVzdCBJJiMzOTttIHBsYW5uaW5nLCBhbmQgaG93IGl0IGRpZmZlcnMgaW4gdGVybXMgb2YgcmVzb3VyY2UgdXRpbGl6YXRpb24gZnJvbSB0aGUgbW9jay4gTXkgZGVjaXNpb24gaGluZ2VzIG9uIGhvdyByZWxldmFudCBlYWNoIG9wdGlvbiBpcyB0byB0aGUgYWN0dWFsIGRlcGxveW1lbnQgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvS2NvbmZpZz0xMDM9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSFxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTIxLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjMtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE3NQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYHB0cF9jbG9ja19hZGp0aW1lYCoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzLiBUaGUgdGFzayBhdCBoYW5kIGludm9sdmVzIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBQVFAgY2xvY2sgYWRqdXN0cyB0aW1lLCBzbyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYHB0cF9jbG9ja19hZGp0aW1lYCBmdW5jdGlvbi4gUmlnaHQsIHRoYXQmIzM5O3MgZGVmaW5lZCBpbiBgZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNgLCBzbyBJJiMzOTtsbCBoZWFkIG92ZXIgdGhlcmUuIEkmIzM5O20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIHRoZSBQVFAgY2xvY2sgZHJpdmVyIGNvZGUgYmFzZSwgc28gSSBleHBlY3QgdGhpcyB0byBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBhbmFseXNpcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1MDpcdFxuIDE1MTpcdFx0XHQvKiBNYWtlIHN1cmUgdGhlIG9mZnNldCBpcyB2YWxpZCAqL1xuIDE1MjpcdFx0XHRlcnIgPSBwdHBfY2xvY2tfZ2V0dGltZShwYywgXHUwMDI2dHMyKTtcbiAxNTM6XHRcdFx0aWYgKGVycilcbiAxNTQ6XHRcdFx0XHRyZXR1cm4gZXJyO1xuIDE1NTpcdFx0XHR0czIgPSB0aW1lc3BlYzY0X2FkZCh0czIsIHRzKTtcbiAxNTY6XHRcdFx0aWYgKCF0aW1lc3BlYzY0X3ZhbGlkX3NldHRvZChcdTAwMjZ0czIpKVxuIDE1NzpcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDE1ODpcdFxuIDE1OTpcdFx0XHRrdCA9IHRpbWVzcGVjNjRfdG9fa3RpbWUodHMpO1xuIDE2MDpcdFx0XHRkZWx0YSA9IGt0aW1lX3RvX25zKGt0KTtcbiAxNjE6XHRcdFx0ZXJyID0gb3BzLVx1MDAzZWFkanRpbWUob3BzLCBkZWx0YSk7XG4gMTYyOlx0XHR9IGVsc2UgaWYgKHR4LVx1MDAzZW1vZGVzIFx1MDAyNiBBREpfRlJFUVVFTkNZKSB7XG4gMTYzOlx0XHRcdGxvbmcgcHBiO1xuIDE2NDpcdFx0XHRzNjQgdG1wO1xuIDE2NTpcdFxuIDE2NjpcdFx0XHQvKlxuIDE2NzpcdFx0XHQgKiBzY2FsZWRfcHBtX3RvX3BwYigpIG11bHRpcGxpZXMgKDEgJiM0MzsgZnJlcSkgYnkgMTI1IGluIHM2NDtcbiAxNjg6XHRcdFx0ICogcmVqZWN0IGEgLVx1MDAzZWZyZXEgbGFyZ2UgZW5vdWdoIHRvIG92ZXJmbG93IHRoYXQsIHdoaWNoIHdvdWxkXG4gMTY5Olx0XHRcdCAqIG90aGVyd2lzZSB3cmFwIHRoZSByZXN1bHQgYmFjayBpbnRvIHRoZSBtYXhfYWRqIHJhbmdlLlxuIDE3MDpcdFx0XHQgKi9cbiAxNzE6XHRcdFx0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdygoczY0KXR4LVx1MDAzZWZyZXEsIChzNjQpMSwgXHUwMDI2dG1wKSB8fFxuIDE3MjpcdFx0XHQgICAgY2hlY2tfbXVsX292ZXJmbG93KHRtcCwgKHM2NCkxMjUsIFx1MDAyNnRtcCkpXG4gMTczOlx0XHRcdFx0cmV0dXJuIC1FUkFOR0U7XG4gMTc0Olx0XHRcdHBwYiA9IHNjYWxlZF9wcG1fdG9fcHBiKHR4LVx1MDAzZWZyZXEpO1xuIDE3NTpcdFx0XHRpZiAocHBiIFx1MDAzZSBvcHMtXHUwMDNlbWF4X2FkaiB8fCBwcGIgXHUwMDNjIC1vcHMtXHUwMDNlbWF4X2FkailcbiAxNzY6XHRcdFx0XHRyZXR1cm4gLUVSQU5HRTtcbiAxNzc6XHRcdFx0ZXJyID0gb3BzLVx1MDAzZWFkamZpbmUob3BzLCB0eC1cdTAwM2VmcmVxKTtcbiAxNzg6XHRcdFx0aWYgKCFlcnIpXG4gMTc5Olx0XHRcdFx0cHRwLVx1MDAzZWRpYWxlZF9mcmVxdWVuY3kgPSB0eC1cdTAwM2VmcmVxO1xuIDE4MDpcdFx0fSBlbHNlIGlmICh0eC1cdTAwM2Vtb2RlcyBcdTAwMjYgQURKX09GRlNFVCkge1xuIDE4MTpcdFx0XHRpZiAob3BzLVx1MDAzZWFkanBoYXNlKSB7XG4gMTgyOlx0XHRcdFx0czMyIG1heF9waGFzZV9hZGogPSBvcHMtXHUwMDNlZ2V0bWF4cGhhc2Uob3BzKTtcbiAxODM6XHRcdFx0XHRzMzIgb2Zmc2V0ID0gdHgtXHUwMDNlb2Zmc2V0O1xuIDE4NDpcdFxuIDE4NTpcdFx0XHRcdGlmICghKHR4LVx1MDAzZW1vZGVzIFx1MDAyNiBBREpfTkFOTykpXG4gMTg2Olx0XHRcdFx0XHRvZmZzZXQgKj0gTlNFQ19QRVJfVVNFQztcbiAxODc6XHRcbiAxODg6XHRcdFx0XHRpZiAob2Zmc2V0IFx1MDAzZSBtYXhfcGhhc2VfYWRqIHx8IG9mZnNldCBcdTAwM2MgLW1heF9waGFzZV9hZGopXG4gMTg5Olx0XHRcdFx0XHRyZXR1cm4gLUVSQU5HRTtcbiAxOTA6XHRcbiAxOTE6XHRcdFx0XHRlcnIgPSBvcHMtXHUwMDNlYWRqcGhhc2Uob3BzLCBvZmZzZXQpO1xuIDE5MjpcdFx0XHR9XG4gMTkzOlx0XHR9IGVsc2UgaWYgKHR4LVx1MDAzZW1vZGVzID09IDApIHtcbiAxOTQ6XHRcdFx0dHgtXHUwMDNlZnJlcSA9IHB0cC1cdTAwM2VkaWFsZWRfZnJlcXVlbmN5O1xuIDE5NTpcdFx0XHRlcnIgPSAwO1xuIDE5NjpcdFx0fVxuIDE5NzpcdFxuIDE5ODpcdFx0cmV0dXJuIGVycjtcbiAxOTk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNzYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgcHRwX2Nsb2NrX2FkanRpbWUqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiByZXZpZXdpbmcgdGhlIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGZvY3VzIGZvciBmdXp6aW5nIG5lZWRzIHRvIGJlIG9uIGBwdHBfY2xvY2tfYWRqdGltZWAuIEl0IHNlZW1zIHRoYXQgZnVuY3Rpb24gaGFzIGJlZW4gbW9kaWZpZWQgYW5kIHRodXMgcmVxdWlyZXMgY2xvc2VyIHNjcnV0aW55LiBMZXQmIzM5O3MgbWFrZSBzdXJlIHdlJiMzOTtyZSBjb3ZlcmluZyBhbGwgYmFzZXMuCgpUaGUgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb25zIGFyZSBgUFRQXzE1ODhfQ0xPQ0tgIGFuZCwgY3J1Y2lhbGx5LCBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgKG9yIHBvc3NpYmx5IGBQVFBfMTU4OF9DTE9DS19LVk1gLCB0aG91Z2ggSSYjMzk7bGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIpLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNlZSBpZiBgUFRQXzE1ODhfQ0xPQ0tgIGFsb25lIGlzIHN1ZmZpY2llbnQgZm9yIG91ciBwdXJwb3Nlcywgb3IgaWYgYSBzcGVjaWZpYyBkcml2ZXIgaXMgYWxzbyByZXF1aXJlZC4gQ29uc2lkZXJpbmcgaG93IHN5emthbGxlciBvcGVyYXRlcyB3aXRoIGBuZXRkZXZzaW1gIGFuZCBzaW1pbGFyIHRvb2xzLCB0aGUgaW5jbHVzaW9uIG9mIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBpcyBkZWZpbml0ZWx5IGEgZ29vZCBjYWxsLiBJdCBhbGxvd3MgZm9yIG1vcmUgZWZmaWNpZW50IHRlc3Rpbmcgd2l0aGluIHRoYXQgZnJhbWV3b3JrLiBUaGVyZWZvcmUsIHRoZSBwbGFuIGlzIHRvIGluY2x1ZGUgYm90aCBgUFRQXzE1ODhfQ0xPQ0tgIGFuZCBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgaW4gdGhlIGZ1enppbmcgY29uZmlndXJhdGlvbi4KCk5vdywgbGV0JiMzOTtzIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgYHB0cF9jbG9ja19hZGp0aW1lYCBpcyBpbmRlZWQgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZS4gUXVpY2sgY2hlY2suLi4gWWVwLCBpdCYjMzk7cyBhc3NpZ25lZCB0byBgcHRwX2Nsb2NrX29wcy5jbG9ja19hZGp0aW1lYCwgYW5kIHRoYXQgc3RydWN0LCBgcHRwX2Nsb2NrX29wc2AsIGlzIHV0aWxpemVkIGluIGBwb3NpeF9jbG9ja19yZWdpc3RlcmAuIFRoYXQgY29uZmlybXMgaXQg4oCTIHRoZSBmdW5jdGlvbiAqaXMqIHJlYWNoYWJsZS4gRXhjZWxsZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwb3NpeF9jbG9ja19yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9wdHBfY2xvY2suYz0zMjg9c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy00NTEtXHQvKiBDcmVhdGUgYSBwb3NpeCBjbG9jayBhbmQgbGluayBpdCB0byB0aGUgZGV2aWNlLiAqL1xuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6NDUyOlx0ZXJyID0gcG9zaXhfY2xvY2tfcmVnaXN0ZXIoXHUwMDI2cHRwLVx1MDAzZWNsb2NrLCBcdTAwMjZwdHAtXHUwMDNlZGV2KTtcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTQ1My1cdGlmIChlcnIpIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmg9Mzk9c3RydWN0IHBvc2l4X2Nsb2NrX29wZXJhdGlvbnMge1xuLS1cbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC04MS0gKiBEcml2ZXJzIHNob3VsZCBzdXBwbHkgYW4gaW5pdGlhbGl6ZWQgYnV0IG5vdCBleHBvc2VkIHN0cnVjdCBkZXZpY2VcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDo4MjogKiB0byBwb3NpeF9jbG9ja19yZWdpc3RlcigpLiBJdCBpcyB1c2VkIHRvIG1hbmFnZSBsaWZldGltZSBvZiB0aGVcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC04My0gKiBkcml2ZXImIzM5O3MgcHJpdmF0ZSBzdHJ1Y3R1cmUuIEl0JiMzOTtzICYjMzk7cmVsZWFzZSYjMzk7IGZpZWxkIHNob3VsZCBiZSBzZXQgdG9cbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmg9MTEwPXN0cnVjdCBwb3NpeF9jbG9ja19jb250ZXh0IHtcbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMTE2LS8qKlxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oOjExNzogKiBwb3NpeF9jbG9ja19yZWdpc3RlcigpIC0gcmVnaXN0ZXIgYSBuZXcgY2xvY2tcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC0xMTgtICogQGNsazogICBQb2ludGVyIHRvIHRoZSBjbG9jay4gQ2FsbGVyIG11c3QgcHJvdmlkZSAmIzM5O29wcyYjMzk7IGZpZWxkXG4tLVxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oLTEyOC0gKi9cbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDoxMjk6aW50IHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwb3NpeF9jbG9jayAqY2xrLCBzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oLTEzMC1cbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMTMyLSAqIHBvc2l4X2Nsb2NrX3VucmVnaXN0ZXIoKSAtIHVucmVnaXN0ZXIgYSBjbG9ja1xuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oOjEzMzogKiBAY2xrOiBDbG9jayBpbnN0YW5jZSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgdmlhIHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKClcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC0xMzQtICpcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jPTE1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwb3NpeF9jbG9ja19maWxlX29wZXJhdGlvbnMgPSB7XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYy0xNTktXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jOjE2MDppbnQgcG9zaXhfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IHBvc2l4X2Nsb2NrICpjbGssIHN0cnVjdCBkZXZpY2UgKmRldilcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMTYxLXtcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTE3Ny19XG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jOjE3ODpFWFBPUlRfU1lNQk9MX0dQTChwb3NpeF9jbG9ja19yZWdpc3Rlcik7XG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTE3OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQ2NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkRlbHZpbmcgaW50byB0aGUgUE9TSVggQ2xvY2sgTWVjaGFuaXNtKioKClJpZ2h0LCBzbyBgcG9zaXhfY2xvY2tfcmVnaXN0ZXJgIOKAkyB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCB0aGUgY2hhcmFjdGVyIGRldmljZSwgaXNuJiMzOTt0IGl0PyBPa2F5LCBzbyB0aGF0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBpbnRlcmZhY2UsIGEgd2F5IGZvciB1c2VyIHNwYWNlIHRvIGludGVyYWN0IHdpdGggdGhlIGNsb2NrIGl0c2VsZi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZXRhaWxzLiBMZXQgbWUganVtcCBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCBga2VybmVsL3RpbWUvcG9zaXgtY2xvY2suY2AgaGFzIHRvIHRlbGwgbWUuIEkgYmV0IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgbGllcy4gSSYjMzk7bGwgc3RhcnQgZGlnZ2luZyBpbiB0aGVyZSwgbG9va2luZyBmb3IgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiwgdGhlIGNoYXJhY3RlciBkZXZpY2UgcmVnaXN0cmF0aW9uIGl0c2VsZiwgYW5kIGhvdyBpdCBoYW5kbGVzIHRoZSBmdW5kYW1lbnRhbCBjbG9jayBvcGVyYXRpb25zLiBJJiMzOTttIGtlZW4gdG8gc2VlIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgdXNlZCBhbmQgdGhlIG1ldGhvZHMgaW52b2x2ZWQgaW4gaW50ZXJmYWNpbmcgaXQgd2l0aCB0aGUgVkZTLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgaG93IFBPU0lYIGNsb2NrcyBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGtlcm5lbCBsZXZlbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNTA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwb3NpeF9jbG9ja19maWxlX29wZXJhdGlvbnMgPSB7XG4gMTUxOlx0XHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiAxNTI6XHRcdC5yZWFkXHRcdD0gcG9zaXhfY2xvY2tfcmVhZCxcbiAxNTM6XHRcdC5wb2xsXHRcdD0gcG9zaXhfY2xvY2tfcG9sbCxcbiAxNTQ6XHRcdC51bmxvY2tlZF9pb2N0bFx0PSBwb3NpeF9jbG9ja19pb2N0bCxcbiAxNTU6XHRcdC5jb21wYXRfaW9jdGxcdD0gcG9zaXhfY2xvY2tfaW9jdGwsXG4gMTU2Olx0XHQub3Blblx0XHQ9IHBvc2l4X2Nsb2NrX29wZW4sXG4gMTU3Olx0XHQucmVsZWFzZVx0PSBwb3NpeF9jbG9ja19yZWxlYXNlLFxuIDE1ODpcdH07XG4gMTU5Olx0XG4gMTYwOlx0aW50IHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwb3NpeF9jbG9jayAqY2xrLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gMTYxOlx0e1xuIDE2MjpcdFx0aW50IGVycjtcbiAxNjM6XHRcbiAxNjQ6XHRcdGluaXRfcndzZW0oXHUwMDI2Y2xrLVx1MDAzZXJ3c2VtKTtcbiAxNjU6XHRcbiAxNjY6XHRcdGNkZXZfaW5pdChcdTAwMjZjbGstXHUwMDNlY2RldiwgXHUwMDI2cG9zaXhfY2xvY2tfZmlsZV9vcGVyYXRpb25zKTtcbiAxNjc6XHRcdGVyciA9IGNkZXZfZGV2aWNlX2FkZChcdTAwMjZjbGstXHUwMDNlY2RldiwgZGV2KTtcbiAxNjg6XHRcdGlmIChlcnIpIHtcbiAxNjk6XHRcdFx0cHJfZXJyKFwmIzM0OyVzIHVuYWJsZSB0byBhZGQgZGV2aWNlICVkOiVkXFxuXCYjMzQ7LFxuIDE3MDpcdFx0XHRcdGRldl9uYW1lKGRldiksIE1BSk9SKGRldi1cdTAwM2VkZXZ0KSwgTUlOT1IoZGV2LVx1MDAzZWRldnQpKTtcbiAxNzE6XHRcdFx0cmV0dXJuIGVycjtcbiAxNzI6XHRcdH1cbiAxNzM6XHRcdGNsay1cdTAwM2VjZGV2Lm93bmVyID0gY2xrLVx1MDAzZW9wcy5vd25lcjtcbiAxNzQ6XHRcdGNsay1cdTAwM2VkZXYgPSBkZXY7XG4gMTc1Olx0XG4gMTc2Olx0XHRyZXR1cm4gMDtcbiAxNzc6XHR9XG4gMTc4Olx0RVhQT1JUX1NZTUJPTF9HUEwocG9zaXhfY2xvY2tfcmVnaXN0ZXIpO1xuIDE3OTpcdFxuIDE4MDpcdHZvaWQgcG9zaXhfY2xvY2tfdW5yZWdpc3RlcihzdHJ1Y3QgcG9zaXhfY2xvY2sgKmNsaylcbiAxODE6XHR7XG4gMTgyOlx0XHRjZGV2X2RldmljZV9kZWwoXHUwMDI2Y2xrLVx1MDAzZWNkZXYsIGNsay1cdTAwM2VkZXYpO1xuIDE4MzpcdFxuIDE4NDpcdFx0ZG93bl93cml0ZShcdTAwMjZjbGstXHUwMDNlcndzZW0pO1xuIDE4NTpcdFx0Y2xrLVx1MDAzZXpvbWJpZSA9IHRydWU7XG4gMTg2Olx0XHR1cF93cml0ZShcdTAwMjZjbGstXHUwMDNlcndzZW0pO1xuIDE4NzpcdFxuIDE4ODpcdFx0cHV0X2RldmljZShjbGstXHUwMDNlZGV2KTtcbiAxODk6XHR9XG4gMTkwOlx0RVhQT1JUX1NZTUJPTF9HUEwocG9zaXhfY2xvY2tfdW5yZWdpc3Rlcik7XG4gMTkxOlx0XG4gMTkyOlx0c3RydWN0IHBvc2l4X2Nsb2NrX2Rlc2Mge1xuIDE5MzpcdFx0c3RydWN0IGZpbGUgKmZwO1xuIDE5NDpcdFx0c3RydWN0IHBvc2l4X2Nsb2NrICpjbGs7XG4gMTk1Olx0fTtcbiAxOTY6XHRcbiAxOTc6XHRzdGF0aWMgaW50IGdldF9jbG9ja19kZXNjKGNvbnN0IGNsb2NraWRfdCBpZCwgc3RydWN0IHBvc2l4X2Nsb2NrX2Rlc2MgKmNkKVxuIDE5ODpcdHtcbiAxOTk6XHRcdHN0cnVjdCBmaWxlICpmcCA9IGZnZXQoY2xvY2tpZF90b19mZChpZCkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUwNQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBUaW1la2VlcGluZyBNYXplKioKCkhvbGQgb24gYSBzZWNvbmQuLi4gSSB3YXMganVzdCB0aGlua2luZyBhYm91dCBgcG9zaXhfY2xvY2tfYWRqdGltZWAuIElzbiYjMzk7dCB0aGF0IGZ1bmN0aW9uLCB0aGUgb25lIHRoYXQgaGFuZGxlcyBhZGp1c3RtZW50cyB0byB0aGUgc3lzdGVtIGNsb2NrLCBzdXBwb3NlZCB0byBiZSBob29rZWQgaW50byB0aGUgc3RhbmRhcmQgZmlsZSBvcGVyYXRpb25zIHN0cnVjdHVyZXM/IEJ1dCB3YWl0LCBubywgdGhhdCBkb2VzbiYjMzk7dCBzZWVtIHJpZ2h0LiBJdCBzZWVtcyB0byBiZSBwYXJ0IG9mIHRoZSBzeXNjYWxsIGltcGxlbWVudGF0aW9uIGZvciBgY2xvY2tfYWRqdGltZWAuIEl0JiMzOTtzIHVzZWQgYXQgdGhlIHN5c2NhbGwgbGF5ZXIgaXRzZWxmLCBub3QgYm91bmQgdXAgYXMgYW4gb3BlcmF0aW9uIG9uIHNvbWUgVkZTIG5vZGUuCgpBbHJpZ2h0LCBzbyBpZiBgY2xvY2tfYWRqdGltZWAgaXRzZWxmIGlzIGEgc3lzY2FsbCwgdGhlbiB0aGF0IG1lYW5zIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcG9zaXhfY2xvY2tfYWRqdGltZWAgc2hvdWxkIGJlIHNvbWV3aGVyZSBpbiB0aGUgY29yZSB0aW1la2VlcGluZyBpbmZyYXN0cnVjdHVyZS4gTXkgZ3V0IGZlZWxpbmcgaXMgaXQmIzM5O3MgcHJvYmFibHkgbG9jYXRlZCBpbiBga2VybmVsL3RpbWUvcG9zaXgtY2xvY2suY2AuIExldCBtZSBqdXN0IHZlcmlmeSBieSBzZWFyY2hpbmcgZm9yIGBjbG9ja19hZGp0aW1lYCB3aXRoaW4gdGhhdCBmaWxlIGFuZCBzZWUgd2hhdCBJIGZpbmQuIFRoYXQgc2hvdWxkIHF1aWNrbHkgcG9pbnQgbWUgdG8gdGhlIHJlbGV2YW50IGNvZGUgcGF0aC4gVGltZSB0byBqdW1wIGluIGFuZCBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjbG9ja19hZGp0aW1lJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wdHAucnN0PTQ0PVBUUCBoYXJkd2FyZSBjbG9jayB1c2VyIHNwYWNlIEFQSVxuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wdHAucnN0LTQ5LSAgIHRoZSBjaGFyYWN0ZXIgZGV2aWNlIGFzIGEgUE9TSVggY2xvY2sgaWQgYW5kIG1heSBjYWxsXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHRwLnJzdDo1MDogICBjbG9ja19nZXR0aW1lLCBjbG9ja19zZXR0aW1lLCBhbmQgY2xvY2tfYWRqdGltZS4gIFRoZXNlIGNhbGxzXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHRwLnJzdC01MS0gICBpbXBsZW1lbnQgdGhlIGJhc2ljIGNsb2NrIG9wZXJhdGlvbnMuXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDI5LTQ5OFx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbmFyY2gvYWxwaGEva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQzMDo0OTlcdGNvbW1vblx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MzEtNTAwXHRjb21tb25cdHN5bmNmc1x0XHRcdFx0c3lzX3N5bmNmc1xuLS1cbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTM4OS0zNzFcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50Ymw6MzkwOjM3Mlx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTM5MS0zNzNcdGNvbW1vblx0c3luY2ZzXHRcdFx0c3lzX3N5bmNmc1xuLS1cbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQyMi00MDRcdGNvbW1vblx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsOjQyMzo0MDVcdGNvbW1vblx0Y2xvY2tfYWRqdGltZTY0XHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQyNC00MDZcdGNvbW1vblx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFx0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC0zODYtMzcxXHRjb21tb25cdG9wZW5fYnlfaGFuZGxlX2F0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcdGNvbXBhdF9zeXNfb3Blbl9ieV9oYW5kbGVfYXRcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50Ymw6Mzg3OjM3Mlx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtMzg4LTM3M1x0Y29tbW9uXHRzeW5jZnNcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC00MTktNDA0XHRjb21tb25cdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsOjQyMDo0MDVcdGNvbW1vblx0Y2xvY2tfYWRqdGltZTY0XHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDIxLTQwNlx0Y29tbW9uXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM1MS0zNDFcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM1MjozNDJcdGNvbW1vblx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzUzLTM0M1x0Y29tbW9uXHRzeW5jZnNcdFx0XHRcdHN5c19zeW5jZnNcbi0tXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQwNy00MDRcdGNvbW1vblx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDA4OjQwNVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lNjRcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MDktNDA2XHRjb21tb25cdGNsb2NrX2dldHJlc190aW1lNjRcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzgyLTM3Mlx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzgzOjM3M1x0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zODQtMzc0XHRjb21tb25cdHN5bmNmc1x0XHRcdFx0c3lzX3N5bmNmc1xuLS1cbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDEzLTQwNFx0Y29tbW9uXHRjbG9ja19zZXR0aW1lNjRcdFx0XHRzeXNfY2xvY2tfc2V0dGltZVxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MTQ6NDA1XHRjb21tb25cdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxNS00MDZcdGNvbW1vblx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFx0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMzE1LTMwNFx0bjMyXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsOjMxNjozMDVcdG4zMlx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTMxNy0zMDZcdG4zMlx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMzQ2LTQwNFx0bjMyXHRjbG9ja19zZXR0aW1lNjRcdFx0XHRzeXNfY2xvY2tfc2V0dGltZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50Ymw6MzQ3OjQwNVx0bjMyXHRjbG9ja19hZGp0aW1lNjRcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMzQ4LTQwNlx0bjMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zMTAtMjk5XHRuNjRcdG9wZW5fYnlfaGFuZGxlX2F0XHRcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MzExOjMwMFx0bjY0XHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTMxMi0zMDFcdG42NFx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtMzU0LTM0MFx0bzMyXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcdFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6MzU1OjM0MVx0bzMyXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtMzU2LTM0Mlx0bzMyXHRzeW5jZnNcdFx0XHRcdHN5c19zeW5jZnNcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0zOTUtNDA0XHRvMzJcdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibDozOTY6NDA1XHRvMzJcdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0zOTctNDA2XHRvMzJcdGNsb2NrX2dldHJlc190aW1lNjRcdFx0c3lzX2Nsb2NrX2dldHJlc1x0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM2Ny0zMjNcdGNvbW1vblx0ZmFub3RpZnlfbWFya1x0XHRzeXNfZmFub3RpZnlfbWFya1x0XHRjb21wYXRfc3lzX2Zhbm90aWZ5X21hcmtcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozNjg6MzI0XHQzMlx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfY2xvY2tfYWRqdGltZTMyXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzY5OjMyNFx0NjRcdGNsb2NrX2FkanRpbWVcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzAtMzI1XHRjb21tb25cdG5hbWVfdG9faGFuZGxlX2F0XHRzeXNfbmFtZV90b19oYW5kbGVfYXRcbi0tXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA2LTQwNFx0MzJcdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDA3OjQwNVx0MzJcdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA4LTQwNlx0MzJcdGNsb2NrX2dldHJlc190aW1lNjRcdFx0c3lzX2Nsb2NrX2dldHJlc1x0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NDgtMzQ2XHRjb21tb25cdG9wZW5fYnlfaGFuZGxlX2F0XHRcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFx0XHRjb21wYXRfc3lzX29wZW5fYnlfaGFuZGxlX2F0XG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ0OTozNDdcdDMyXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTA6MzQ3XHQ2NFx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1MTozNDdcdHNwdVx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1Mi0zNDhcdGNvbW1vblx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00OTgtNDA0XHQzMlx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDk5OjQwNVx0MzJcdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwMC00MDZcdDMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjkwLTMzNlx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjkxOjMzN1x0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjkyLTMzOFx0Y29tbW9uXHRzeW5jZnNcdFx0XHRcdHN5c19zeW5jZnNcbi0tXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzAtMzYwXHRjb21tb25cdG9wZW5fYnlfaGFuZGxlX2F0XHRcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzcxOjM2MVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcyLTM2Mlx0Y29tbW9uXHRzeW5jZnNcdFx0XHRcdHN5c19zeW5jZnNcbi0tXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTEtNDA0XHRjb21tb25cdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MTI6NDA1XHRjb21tb25cdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTMtNDA2XHRjb21tb25cdGNsb2NrX2dldHJlc190aW1lNjRcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbmFyY2gvc3BhcmMva2VybmVsL3N5c19zcGFyY182NC5jPTU2OD1TWVNDQUxMX0RFRklORTEoc3BhcmNfYWRqdGltZXgsIHN0cnVjdCBfX2tlcm5lbF90aW1leCBfX3VzZXIgKiwgdHhjX3ApXG4tLVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3NwYXJjXzY0LmMtNTkxLVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3NwYXJjXzY0LmM6NTkyOlNZU0NBTExfREVGSU5FMihzcGFyY19jbG9ja19hZGp0aW1lLCBjb25zdCBjbG9ja2lkX3QsIHdoaWNoX2Nsb2NrLFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3NwYXJjXzY0LmMtNTkzLVx0XHRzdHJ1Y3QgX19rZXJuZWxfdGltZXggX191c2VyICosIHR4Y19wKVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL3N5c19zcGFyY182NC5jLTYxOC1cdHR4Yy50aW1lLnR2X3VzZWMgPSB0di1cdTAwM2V0dl91c2VjO1xuYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3NwYXJjXzY0LmM6NjE5Olx0cmV0ID0gZG9fY2xvY2tfYWRqdGltZSh3aGljaF9jbG9jaywgXHUwMDI2dHhjKTtcbmFyY2gvc3BhcmMva2VybmVsL3N5c19zcGFyY182NC5jLTYyMC1cdHR2LVx1MDAzZXR2X3VzZWMgPSB0eGMudGltZS50dl91c2VjO1xuLS1cbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQwMy0zMzNcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFx0XHRjb21wYXRfc3lzX29wZW5fYnlfaGFuZGxlX2F0XG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MDQ6MzM0XHQzMlx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfY2xvY2tfYWRqdGltZTMyXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MDU6MzM0XHQ2NFx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfc3BhcmNfY2xvY2tfYWRqdGltZVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA2LTMzNVx0Y29tbW9uXHRzeW5jZnNcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDUzLTQwNFx0MzJcdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTQ6NDA1XHQzMlx0Y2xvY2tfYWRqdGltZTY0XHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1NS00MDZcdDMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTM1Ny0zNDJcdGkzODZcdG9wZW5fYnlfaGFuZGxlX2F0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcdFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6MzU4OjM0M1x0aTM4Nlx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfY2xvY2tfYWRqdGltZTMyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0zNTktMzQ0XHRpMzg2XHRzeW5jZnNcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDEzLTQwNFx0aTM4Nlx0Y2xvY2tfc2V0dGltZTY0XHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MTQ6NDA1XHRpMzg2XHRjbG9ja19hZGp0aW1lNjRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxNS00MDZcdGkzODZcdGNsb2NrX2dldHJlc190aW1lNjRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zMTYtMzA0XHRjb21tb25cdG9wZW5fYnlfaGFuZGxlX2F0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsOjMxNzozMDVcdGNvbW1vblx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfY2xvY2tfYWRqdGltZVxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzE4LTMwNlx0Y29tbW9uXHRzeW5jZnNcdFx0XHRzeXNfc3luY2ZzXG4tLVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM1MS0zMjhcdGNvbW1vblx0cnRfdGdzaWdxdWV1ZWluZm9cdFx0c3lzX3J0X3Rnc2lncXVldWVpbmZvXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzUyOjMyOVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM1My0zMzBcdGNvbW1vblx0cHJsaW1pdDY0XHRcdFx0c3lzX3BybGltaXQ2NFxuLS1cbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzgtNDA0XHRjb21tb25cdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mzc5OjQwNVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lNjRcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM4MC00MDZcdGNvbW1vblx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFx0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MTExPXN0YXRpYyBpbnQgcHRwX2Nsb2NrX2dldHRpbWUoc3RydWN0IHBvc2l4X2Nsb2NrICpwYywgc3RydWN0IHRpbWVzcGVjNjQgKnRwKVxuLS1cbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTEyMi1cbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jOjEyMzpzdGF0aWMgaW50IHB0cF9jbG9ja19hZGp0aW1lKHN0cnVjdCBwb3NpeF9jbG9jayAqcGMsIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqdHgpXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0xMjQte1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jPTIwMT1zdGF0aWMgc3RydWN0IHBvc2l4X2Nsb2NrX29wZXJhdGlvbnMgcHRwX2Nsb2NrX29wcyA9IHtcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTIwMi1cdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6MjAzOlx0LmNsb2NrX2FkanRpbWVcdD0gcHRwX2Nsb2NrX2FkanRpbWUsXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0yMDQtXHQuY2xvY2tfZ2V0dGltZVx0PSBwdHBfY2xvY2tfZ2V0dGltZSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmM9NDU9c3RhdGljIGludCBwdHBfdmNsb2NrX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbi0tXG5kcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmMtNjEtXG5kcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmM6NjI6c3RhdGljIGludCBwdHBfdmNsb2NrX2FkanRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbmRyaXZlcnMvcHRwL3B0cF92Y2xvY2suYy02My17XG4tLVxuZHJpdmVycy9wdHAvcHRwX3ZjbG9jay5jPTE2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHB0cF9jbG9ja19pbmZvIHB0cF92Y2xvY2tfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmMtMTY4LVx0LmFkamZpbmVcdD0gcHRwX3ZjbG9ja19hZGpmaW5lLFxuZHJpdmVycy9wdHAvcHRwX3ZjbG9jay5jOjE2OTpcdC5hZGp0aW1lXHQ9IHB0cF92Y2xvY2tfYWRqdGltZSxcbmRyaXZlcnMvcHRwL3B0cF92Y2xvY2suYy0xNzAtXHQuc2V0dGltZTY0XHQ9IHB0cF92Y2xvY2tfc2V0dGltZSxcbi0tXG5kcml2ZXJzL3B0cC9wdHBfdm1jbG9jay5jPTI4Nz1zdGF0aWMgaW50IHB0cF92bWNsb2NrX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgZGVsdGEpXG4tLVxuZHJpdmVycy9wdHAvcHRwX3ZtY2xvY2suYy0yOTEtXG5kcml2ZXJzL3B0cC9wdHBfdm1jbG9jay5jOjI5MjpzdGF0aWMgaW50IHB0cF92bWNsb2NrX2FkanRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmMtMjkzLXtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfdm1jbG9jay5jPTMxOD1zdGF0aWMgY29uc3Qgc3RydWN0IHB0cF9jbG9ja19pbmZvIHB0cF92bWNsb2NrX2luZm8gPSB7XG4tLVxuZHJpdmVycy9wdHAvcHRwX3ZtY2xvY2suYy0zMjQtXHQuYWRqZmluZVx0PSBwdHBfdm1jbG9ja19hZGpmaW5lLFxuZHJpdmVycy9wdHAvcHRwX3ZtY2xvY2suYzozMjU6XHQuYWRqdGltZVx0PSBwdHBfdm1jbG9ja19hZGp0aW1lLFxuZHJpdmVycy9wdHAvcHRwX3ZtY2xvY2suYy0zMjYtXHQuZ2V0dGltZXg2NFx0PSBwdHBfdm1jbG9ja19nZXR0aW1leCxcbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmg9MTc9c3RydWN0IHBvc2l4X2Nsb2NrX2NvbnRleHQ7XG4tLVxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oLTI4LSAqIEBvd25lcjogICAgICAgICAgVGhlIGNsb2NrIGRyaXZlciBzaG91bGQgc2V0IHRvIFRISVNfTU9EVUxFXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmg6Mjk6ICogQGNsb2NrX2FkanRpbWU6ICBBZGp1c3QgdGhlIGNsb2NrXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMzAtICogQGNsb2NrX2dldHRpbWU6ICBSZWFkIHRoZSBjdXJyZW50IHRpbWVcbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmg9Mzk9c3RydWN0IHBvc2l4X2Nsb2NrX29wZXJhdGlvbnMge1xuLS1cbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC00MS1cbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDo0MjpcdGludCAgKCpjbG9ja19hZGp0aW1lKShzdHJ1Y3QgcG9zaXhfY2xvY2sgKnBjLCBzdHJ1Y3QgX19rZXJuZWxfdGltZXggKnR4KTtcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC00My1cbi0tXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg9OTAxPWFzbWxpbmthZ2UgbG9uZyBzeXNfb3Blbl9ieV9oYW5kbGVfYXQoaW50IG1vdW50ZGlyZmQsXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oLTkwMy1cdFx0XHRcdCAgICAgIGludCBmbGFncyk7XG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6OTA0OmFzbWxpbmthZ2UgbG9uZyBzeXNfY2xvY2tfYWRqdGltZShjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtOTA1LVx0XHRcdFx0c3RydWN0IF9fa2VybmVsX3RpbWV4IF9fdXNlciAqdHgpO1xuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjkwNjphc21saW5rYWdlIGxvbmcgc3lzX2Nsb2NrX2FkanRpbWUzMihjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtOTA3LVx0XHRcdFx0c3RydWN0IG9sZF90aW1leDMyIF9fdXNlciAqdHgpO1xuLS1cbmluY2x1ZGUvbGludXgvdGltZXguaD0xNTQ9ZXh0ZXJuIGludCBkb19hZGp0aW1leChzdHJ1Y3QgX19rZXJuZWxfdGltZXggKik7XG5pbmNsdWRlL2xpbnV4L3RpbWV4Lmg6MTU1OmV4dGVybiBpbnQgZG9fY2xvY2tfYWRqdGltZShjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqIGt0eCk7XG5pbmNsdWRlL2xpbnV4L3RpbWV4LmgtMTU2LVxuLS1cbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD02NDQ9X19TWVNDQUxMKF9fTlJfb3Blbl9ieV9oYW5kbGVfYXQsIHN5c19vcGVuX2J5X2hhbmRsZV9hdClcbi0tXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtNjQ2LSNpZiBkZWZpbmVkKF9fQVJDSF9XQU5UX1RJTUUzMl9TWVNDQUxMUykgfHwgX19CSVRTX1BFUl9MT05HICE9IDMyXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NjQ3OiNkZWZpbmUgX19OUl9jbG9ja19hZGp0aW1lIDI2NlxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjY0ODpfX1NDXzMyNjQoX19OUl9jbG9ja19hZGp0aW1lLCBzeXNfY2xvY2tfYWRqdGltZTMyLCBzeXNfY2xvY2tfYWRqdGltZSlcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC02NDktI2VuZGlmXG4tLVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTcxOD1fX1NZU0NBTEwoX19OUl9jbG9ja19zZXR0aW1lNjQsIHN5c19jbG9ja19zZXR0aW1lKVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjcxOTojZGVmaW5lIF9fTlJfY2xvY2tfYWRqdGltZTY0IDQwNVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjcyMDpfX1NZU0NBTEwoX19OUl9jbG9ja19hZGp0aW1lNjQsIHN5c19jbG9ja19hZGp0aW1lKVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTcyMS0jZGVmaW5lIF9fTlJfY2xvY2tfZ2V0cmVzX3RpbWU2NCA0MDZcbi0tXG5pbml0L0tjb25maWc9MTc1Nz1jb25maWcgUE9TSVhfVElNRVJTXG4tLVxuaW5pdC9LY29uZmlnLTE3NjYtXHQgIGF2YWlsYWJsZTogdGltZXJfY3JlYXRlLCB0aW1lcl9nZXR0aW1lOiB0aW1lcl9nZXRvdmVycnVuLFxuaW5pdC9LY29uZmlnOjE3Njc6XHQgIHRpbWVyX3NldHRpbWUsIHRpbWVyX2RlbGV0ZSwgY2xvY2tfYWRqdGltZSwgZ2V0aXRpbWVyLFxuaW5pdC9LY29uZmlnLTE3NjgtXHQgIHNldGl0aW1lciwgYWxhcm0uIEZ1cnRoZXJtb3JlLCB0aGUgY2xvY2tfc2V0dGltZSwgY2xvY2tfZ2V0dGltZSxcbi0tXG5rZXJuZWwvc3lzX25pLmM9MjExPUNPTkRfU1lTQ0FMTCh0aW1lcl9kZWxldGUpO1xua2VybmVsL3N5c19uaS5jOjIxMjpDT05EX1NZU0NBTEwoY2xvY2tfYWRqdGltZSk7XG5rZXJuZWwvc3lzX25pLmMtMjEzLUNPTkRfU1lTQ0FMTChnZXRpdGltZXIpO1xuLS1cbmtlcm5lbC9zeXNfbmkuYz0zNTI9Q09ORF9TWVNDQUxMKHV0aW1lbnNhdF90aW1lMzIpO1xua2VybmVsL3N5c19uaS5jOjM1MzpDT05EX1NZU0NBTEwoY2xvY2tfYWRqdGltZTMyKTtcbmtlcm5lbC9zeXNfbmkuYy0zNTQtXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYz0yMTg9c3RhdGljIHZvaWQgcHV0X2Nsb2NrX2Rlc2Moc3RydWN0IHBvc2l4X2Nsb2NrX2Rlc2MgKmNkKVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMjIzLVxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYzoyMjQ6c3RhdGljIGludCBwY19jbG9ja19hZGp0aW1lKGNsb2NraWRfdCBpZCwgc3RydWN0IF9fa2VybmVsX3RpbWV4ICp0eClcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMjI1LXtcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTIzNy1cbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmM6MjM4Olx0aWYgKGNkLmNsay1cdTAwM2VvcHMuY2xvY2tfYWRqdGltZSlcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmM6MjM5Olx0XHRlcnIgPSBjZC5jbGstXHUwMDNlb3BzLmNsb2NrX2FkanRpbWUoY2QuY2xrLCB0eCk7XG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTI0MC1cdGVsc2Vcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jPTMxMz1jb25zdCBzdHJ1Y3Qga19jbG9jayBjbG9ja19wb3NpeF9keW5hbWljID0ge1xuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMzE2LVx0LmNsb2NrX2dldF90aW1lc3BlY1x0PSBwY19jbG9ja19nZXR0aW1lLFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYzozMTc6XHQuY2xvY2tfYWRqXHRcdD0gcGNfY2xvY2tfYWRqdGltZSxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMzE4LX07XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM9MTE0Mj1TWVNDQUxMX0RFRklORTIoY2xvY2tfZ2V0dGltZSwgY29uc3QgY2xvY2tpZF90LCB3aGljaF9jbG9jayxcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy0xMTU5LVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM6MTE2MDppbnQgZG9fY2xvY2tfYWRqdGltZShjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqIGt0eClcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTExNjEte1xuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTExNzEtXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzoxMTcyOlNZU0NBTExfREVGSU5FMihjbG9ja19hZGp0aW1lLCBjb25zdCBjbG9ja2lkX3QsIHdoaWNoX2Nsb2NrLFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtMTE3My1cdFx0c3RydWN0IF9fa2VybmVsX3RpbWV4IF9fdXNlciAqLCB1dHgpXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtMTE4MC1cbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jOjExODE6XHRlcnIgPSBkb19jbG9ja19hZGp0aW1lKHdoaWNoX2Nsb2NrLCBcdTAwMjZrdHgpO1xua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtMTE4Mi1cbi0tXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYz0xMjk3PVNZU0NBTExfREVGSU5FMihjbG9ja19nZXR0aW1lMzIsIGNsb2NraWRfdCwgd2hpY2hfY2xvY2ssXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtMTMxNC1cbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jOjEzMTU6U1lTQ0FMTF9ERUZJTkUyKGNsb2NrX2FkanRpbWUzMiwgY2xvY2tpZF90LCB3aGljaF9jbG9jayxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTEzMTYtXHRcdHN0cnVjdCBvbGRfdGltZXgzMiBfX3VzZXIgKiwgdXRwKVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTEzMjQtXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzoxMzI1Olx0ZXJyID0gZG9fY2xvY2tfYWRqdGltZSh3aGljaF9jbG9jaywgXHUwMDI2a3R4KTtcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTEzMjYtXG4tLVxua2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYz0zMjI3PXN0YXRpYyB2b2lkIGF1eF9jbG9ja19lbmFibGUoY2xvY2tpZF90IGlkKVxuLS1cbmtlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmMtMzIzOC1cdCAqIGNsb2NrIGZyZXF1ZW5jeSBjb252ZXJzaW9uIGlzIGNsb3NlIGVub3VnaC4gVXNlcnNwYWNlIGhhcyB0b1xua2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYzozMjM5Olx0ICogYWRqdXN0IGZvciB0aGUgZGV2aWF0aW9uIHZpYSBjbG9ja19hZGp0aW1lKDIpLlxua2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYy0zMjQwLVx0ICovXG4tLVxucnVzdC9rZXJuZWwvdGltZS5ycz05OT0gICAgZm4ga3RpbWVfZ2V0KCkgLVx1MDAzZSBiaW5kaW5nczo6a3RpbWVfdCB7XG4tLVxucnVzdC9rZXJuZWwvdGltZS5ycy0xMTAtLy8vIHBlcmZvcm1lZCBieSBOVFAgYW5kIHNpbWlsYXIgYXBwbGljYXRpb25zIHZpYSBhZGp0aW1lKDMpLCBhZGp0aW1leCgyKSxcbnJ1c3Qva2VybmVsL3RpbWUucnM6MTExOi8vLyBjbG9ja19hZGp0aW1lKDIpLCBhbmQgbnRwX2FkanRpbWUoMykuIFRoaXMgY2xvY2sgbm9ybWFsbHkgY291bnRzIHRoZVxucnVzdC9rZXJuZWwvdGltZS5ycy0xMTItLy8vIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6MDAgQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWVcbi0tXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2g9MTg9Y2F0IFx1MDAzY1x1MDAzYyBFT0Zcbi0tXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2gtOTYtI2RlZmluZSBfX0lHTk9SRV9jbG9ja19zZXR0aW1lNjRcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaDo5NzojZGVmaW5lIF9fSUdOT1JFX2Nsb2NrX2FkanRpbWU2NFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTk4LSNkZWZpbmUgX19JR05PUkVfY2xvY2tfZ2V0cmVzX3RpbWU2NFxuLS1cbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMjktI2RlZmluZSBfX0lHTk9SRV9jbG9ja19zZXR0aW1lXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2g6MTMwOiNkZWZpbmUgX19JR05PUkVfY2xvY2tfYWRqdGltZVxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTEzMS0jZGVmaW5lIF9fSUdOT1JFX2Nsb2NrX2dldHJlc1xuLS1cbnNjcmlwdHMvc3lzY2FsbC50YmwtMzE0LTI2NVx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbnNjcmlwdHMvc3lzY2FsbC50Ymw6MzE1OjI2Nlx0dGltZTMyXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxuc2NyaXB0cy9zeXNjYWxsLnRibDozMTY6MjY2XHQ2NFx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5zY3JpcHRzL3N5c2NhbGwudGJsLTMxNy0yNjdcdGNvbW1vblx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxuc2NyaXB0cy9zeXNjYWxsLnRibC0zNDgtNDA0XHQzMlx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbnNjcmlwdHMvc3lzY2FsbC50Ymw6MzQ5OjQwNVx0MzJcdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG5zY3JpcHRzL3N5c2NhbGwudGJsLTM1MC00MDZcdDMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9NjQ0PV9fU1lTQ0FMTChfX05SX29wZW5fYnlfaGFuZGxlX2F0LCBzeXNfb3Blbl9ieV9oYW5kbGVfYXQpXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTY0Ni0jaWYgZGVmaW5lZChfX0FSQ0hfV0FOVF9USU1FMzJfU1lTQ0FMTFMpIHx8IF9fQklUU19QRVJfTE9ORyAhPSAzMlxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjY0NzojZGVmaW5lIF9fTlJfY2xvY2tfYWRqdGltZSAyNjZcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo2NDg6X19TQ18zMjY0KF9fTlJfY2xvY2tfYWRqdGltZSwgc3lzX2Nsb2NrX2FkanRpbWUzMiwgc3lzX2Nsb2NrX2FkanRpbWUpXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtNjQ5LSNlbmRpZlxuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD03MTg9X19TWVNDQUxMKF9fTlJfY2xvY2tfc2V0dGltZTY0LCBzeXNfY2xvY2tfc2V0dGltZSlcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo3MTk6I2RlZmluZSBfX05SX2Nsb2NrX2FkanRpbWU2NCA0MDVcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo3MjA6X19TWVNDQUxMKF9fTlJfY2xvY2tfYWRqdGltZTY0LCBzeXNfY2xvY2tfYWRqdGltZSlcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC03MjEtI2RlZmluZSBfX05SX2Nsb2NrX2dldHJlc190aW1lNjQgNDA2XG4tLVxudG9vbHMvcGVyZi9hcmNoL2FscGhhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyOS00OThcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDMwOjQ5OVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbnRvb2xzL3BlcmYvYXJjaC9hbHBoYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MzEtNTAwXHRjb21tb25cdHN5bmNmc1x0XHRcdFx0c3lzX3N5bmNmc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzg5LTM3MVx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM5MDozNzJcdGNvbW1vblx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfY2xvY2tfYWRqdGltZTMyXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5MS0zNzNcdGNvbW1vblx0c3luY2ZzXHRcdFx0c3lzX3N5bmNmc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDIyLTQwNFx0Y29tbW9uXHRjbG9ja19zZXR0aW1lNjRcdFx0XHRzeXNfY2xvY2tfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0MjM6NDA1XHRjb21tb25cdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyNC00MDZcdGNvbW1vblx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFx0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTM4Ni0zNzFcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjM4NzozNzJcdGNvbW1vblx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfY2xvY2tfYWRqdGltZTMyXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtMzg4LTM3M1x0Y29tbW9uXHRzeW5jZnNcdFx0XHRzeXNfc3luY2ZzXG4tLVxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxOS00MDRcdGNvbW1vblx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MjA6NDA1XHRjb21tb25cdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDIxLTQwNlx0Y29tbW9uXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzEwLTI5OVx0bjY0XHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibDozMTE6MzAwXHRuNjRcdGNsb2NrX2FkanRpbWVcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxudG9vbHMvcGVyZi9hcmNoL21pcHMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTMxMi0zMDFcdG42NFx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNjctMzIzXHRjb21tb25cdGZhbm90aWZ5X21hcmtcdFx0c3lzX2Zhbm90aWZ5X21hcmtcdFx0Y29tcGF0X3N5c19mYW5vdGlmeV9tYXJrXG50b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM2ODozMjRcdDMyXHRjbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzY5OjMyNFx0NjRcdGNsb2NrX2FkanRpbWVcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcwLTMyNVx0Y29tbW9uXHRuYW1lX3RvX2hhbmRsZV9hdFx0c3lzX25hbWVfdG9faGFuZGxlX2F0XG4tLVxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MDYtNDA0XHQzMlx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDA3OjQwNVx0MzJcdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lXG50b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQwOC00MDZcdDMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ0OC0zNDZcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XHRcdGNvbXBhdF9zeXNfb3Blbl9ieV9oYW5kbGVfYXRcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ0OTozNDdcdDMyXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDUwOjM0N1x0NjRcdGNsb2NrX2FkanRpbWVcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDUxOjM0N1x0c3B1XHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1Mi0zNDhcdGNvbW1vblx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDk4LTQwNFx0MzJcdGNsb2NrX3NldHRpbWU2NFx0XHRcdHN5c19jbG9ja19zZXR0aW1lXHRcdHN5c19jbG9ja19zZXR0aW1lXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0OTk6NDA1XHQzMlx0Y2xvY2tfYWRqdGltZTY0XHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwMC00MDZcdDMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI5MC0zMzZcdGNvbW1vblx0b3Blbl9ieV9oYW5kbGVfYXRcdFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyOTE6MzM3XHRjb21tb25cdGNsb2NrX2FkanRpbWVcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjkyLTMzOFx0Y29tbW9uXHRzeW5jZnNcdFx0XHRcdHN5c19zeW5jZnNcbi0tXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcwLTM2MFx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozNzE6MzYxXHRjb21tb25cdGNsb2NrX2FkanRpbWVcdFx0XHRzeXNfY2xvY2tfYWRqdGltZTMyXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcyLTM2Mlx0Y29tbW9uXHRzeW5jZnNcdFx0XHRcdHN5c19zeW5jZnNcbi0tXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDExLTQwNFx0Y29tbW9uXHRjbG9ja19zZXR0aW1lNjRcdFx0XHRzeXNfY2xvY2tfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxMjo0MDVcdGNvbW1vblx0Y2xvY2tfYWRqdGltZTY0XHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTMtNDA2XHRjb21tb25cdGNsb2NrX2dldHJlc190aW1lNjRcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MDMtMzMzXHRjb21tb25cdG9wZW5fYnlfaGFuZGxlX2F0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcdFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQwNDozMzRcdDMyXHRjbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0MDU6MzM0XHQ2NFx0Y2xvY2tfYWRqdGltZVx0XHRzeXNfc3BhcmNfY2xvY2tfYWRqdGltZVxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQwNi0zMzVcdGNvbW1vblx0c3luY2ZzXHRcdFx0c3lzX3N5bmNmc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTMtNDA0XHQzMlx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTQ6NDA1XHQzMlx0Y2xvY2tfYWRqdGltZTY0XHRcdFx0c3lzX2Nsb2NrX2FkanRpbWVcdFx0c3lzX2Nsb2NrX2FkanRpbWVcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTUtNDA2XHQzMlx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFx0XHRzeXNfY2xvY2tfZ2V0cmVzXHRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTM1Ny0zNDJcdGkzODZcdG9wZW5fYnlfaGFuZGxlX2F0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcdFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDozNTg6MzQzXHRpMzg2XHRjbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lMzJcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtMzU5LTM0NFx0aTM4Nlx0c3luY2ZzXHRcdFx0c3lzX3N5bmNmc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDEzLTQwNFx0aTM4Nlx0Y2xvY2tfc2V0dGltZTY0XHRcdHN5c19jbG9ja19zZXR0aW1lXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQxNDo0MDVcdGkzODZcdGNsb2NrX2FkanRpbWU2NFx0XHRzeXNfY2xvY2tfYWRqdGltZVxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00MTUtNDA2XHRpMzg2XHRjbG9ja19nZXRyZXNfdGltZTY0XHRzeXNfY2xvY2tfZ2V0cmVzXG4tLVxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zMTYtMzA0XHRjb21tb25cdG9wZW5fYnlfaGFuZGxlX2F0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6MzE3OjMwNVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdHN5c19jbG9ja19hZGp0aW1lXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTMxOC0zMDZcdGNvbW1vblx0c3luY2ZzXHRcdFx0c3lzX3N5bmNmc1xuLS1cbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzUxLTMyOFx0Y29tbW9uXHRydF90Z3NpZ3F1ZXVlaW5mb1x0XHRzeXNfcnRfdGdzaWdxdWV1ZWluZm9cbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzUyOjMyOVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNTMtMzMwXHRjb21tb25cdHBybGltaXQ2NFx0XHRcdHN5c19wcmxpbWl0NjRcbi0tXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM3OC00MDRcdGNvbW1vblx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mzc5OjQwNVx0Y29tbW9uXHRjbG9ja19hZGp0aW1lNjRcdFx0XHRzeXNfY2xvY2tfYWRqdGltZVxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zODAtNDA2XHRjb21tb25cdGNsb2NrX2dldHJlc190aW1lNjRcdFx0c3lzX2Nsb2NrX2dldHJlc1xuLS1cbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzE0LTI2NVx0Y29tbW9uXHRvcGVuX2J5X2hhbmRsZV9hdFx0XHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50Ymw6MzE1OjI2Nlx0dGltZTMyXHRjbG9ja19hZGp0aW1lXHRcdFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDozMTY6MjY2XHQ2NFx0Y2xvY2tfYWRqdGltZVx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTMxNy0yNjdcdGNvbW1vblx0c3luY2ZzXHRcdFx0XHRzeXNfc3luY2ZzXG4tLVxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibC0zNDgtNDA0XHQzMlx0Y2xvY2tfc2V0dGltZTY0XHRcdFx0c3lzX2Nsb2NrX3NldHRpbWVcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50Ymw6MzQ5OjQwNVx0MzJcdGNsb2NrX2FkanRpbWU2NFx0XHRcdHN5c19jbG9ja19hZGp0aW1lXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTM1MC00MDZcdDMyXHRjbG9ja19nZXRyZXNfdGltZTY0XHRcdHN5c19jbG9ja19nZXRyZXNcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy0zLSAqIFJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIHNjYWxlZF9wcG1fdG9fcHBiKCkgaW50ZWdlciBvdmVyZmxvdyB0aGF0IGFsbG93ZWRcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjQ6ICogYSBjcmFmdGVkIGNsb2NrX2FkanRpbWUoQURKX0ZSRVFVRU5DWSkgdG8gYnlwYXNzIHRoZSBQVFAgbWF4X2FkaiBjaGVjay5cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTUtICpcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy0yMy1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjI0Oi8qIGNsb2NrX2FkanRpbWUgaXMgbm90IGF2YWlsYWJsZSBpbiBHTElCQyBcdTAwM2MgMi4xNCAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtMjUtI2lmICFfX0dMSUJDX1BSRVJFUSgyLCAxNClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTI2LSNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjI3OnN0YXRpYyBpbnQgY2xvY2tfYWRqdGltZShjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1leCAqdHgpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy0yOC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYzoyOTpcdHJldHVybiBzeXNjYWxsKF9fTlJfY2xvY2tfYWRqdGltZSwgaWQsIHR4KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTMwLX1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYz0zMz1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTYzLVx0ICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYzo2NDpcdGlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZyZXN0b3JlKSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjY1Olx0XHRrc2Z0X2V4aXRfc2tpcChcJiMzNDtjbG9ja19hZGp0aW1lKGdldCkgb24gJXM6ICVzXFxuXCYjMzQ7LCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy02Ni1cdHJlc3RvcmUubW9kZXMgPSBBREpfRlJFUVVFTkNZO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTc4LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmM6Nzk6XHRyZXQgPSBjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZ0eCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy04MC1cdGlmIChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGVycm5vID09IEVCVVNZKSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtOTQtXHQvKiBwdXQgdGhlIGZyZXF1ZW5jeSBiYWNrIHRoZSB3YXkgd2UgZm91bmQgaXQgKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjk1Olx0Y2xvY2tfYWRqdGltZShjbGtpZCwgXHUwMDI2cmVzdG9yZSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy05Ni1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jLTM5LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzo0MDovKiBjbG9ja19hZGp0aW1lIGlzIG5vdCBhdmFpbGFibGUgaW4gR0xJQkMgXHUwMDNjIDIuMTQgKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtNDEtI2lmICFfX0dMSUJDX1BSRVJFUSgyLCAxNClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtNDItI2luY2x1ZGUgXHUwMDNjc3lzL3N5c2NhbGwuaFx1MDAzZVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzo0MzpzdGF0aWMgaW50IGNsb2NrX2FkanRpbWUoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXggKnR4KVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy00NC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jOjQ1Olx0cmV0dXJuIHN5c2NhbGwoX19OUl9jbG9ja19hZGp0aW1lLCBpZCwgdHgpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy00Ni19XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYz0xNTY9aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jLTM2NC1cdFx0dHguZnJlcSA9IHBwYl90b19zY2FsZWRfcHBtKGFkamZyZXEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzozNjU6XHRcdGlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZ0eCkpIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmM6MzY2Olx0XHRcdHBlcnJvcihcJiMzNDtjbG9ja19hZGp0aW1lXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzY3LVx0XHR9IGVsc2Uge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzgxLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzozODI6XHRcdGlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZ0eCkgXHUwMDNjIDApIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmM6MzgzOlx0XHRcdHBlcnJvcihcJiMzNDtjbG9ja19hZGp0aW1lXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzg0LVx0XHR9IGVsc2Uge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzkzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzozOTQ6XHRcdGlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZ0eCkgXHUwMDNjIDApIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmM6Mzk1Olx0XHRcdHBlcnJvcihcJiMzNDtjbG9ja19hZGp0aW1lXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzk2LVx0XHR9IGVsc2Uge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jLTM3LSNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jOjM4OmludCBjbG9ja19hZGp0aW1lKGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWV4ICp0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jLTM5LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jOjQwOlx0cmV0dXJuIHN5c2NhbGwoX19OUl9jbG9ja19hZGp0aW1lLCBpZCwgdHgpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmMtNDEtfVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jPTE5Mz1pbnQgc2V0X29mZnNldChsb25nIGxvbmcgb2Zmc2V0LCBpbnQgdXNlX25hbm8pXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmMtMjE4LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmM6MjE5Olx0cmV0ID0gY2xvY2tfYWRqdGltZShDTE9DS19SRUFMVElNRSwgXHUwMDI2dG14KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jLTIyMC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYz0yMjg9aW50IHNldF9iYWRfb2Zmc2V0KGxvbmcgc2VjLCBsb25nIHVzZWMsIGludCB1c2VfbmFubylcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYy0yMzgtXHR0bXgudGltZS50dl91c2VjID0gdXNlYztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jOjIzOTpcdHJldCA9IGNsb2NrX2FkanRpbWUoQ0xPQ0tfUkVBTFRJTUUsIFx1MDAyNnRteCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYy0yNDAtXHRpZiAocmV0IFx1MDAzZT0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU5MQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGNsb2NrX2FkanRpbWUgU3lzY2FsbCBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzY2FsbCBhbmQgaG93IGl0JiMzOTtzIGltcGxlbWVudGVkLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgYHN5c19jbG9ja19hZGp0aW1lYCBpcyB0aGUgZW50cnkgcG9pbnQsIG5hdHVyYWxseS4gVGhpcyB0aGVuIGxlYWRzIHRvIGBkb19jbG9ja19hZGp0aW1lYCwgd2hpY2gsIGZvciB0aGUgcG9zaXggZHluYW1pYyBjbG9ja3MsIGNhbGxzIGBwY19jbG9ja19hZGp0aW1lYC4gVGhpcyB0aGVuIGJvaWxzIGRvd24gdG8gYSBjYWxsIHRvIGBjZC5jbGstJmd0O29wcy5jbG9ja19hZGp0aW1lKGNkLmNsaywgdHgpYC4gU28sIHRoZSBwYXRoIGlzIGRlZmluaXRlbHkgY2xlYXIgYW5kIHJlYWNoYWJsZSBmcm9tIHRoZSBzeXNjYWxsIGxldmVsLgoKTm93LCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFBUUF8xNTg4X0NMT0NLX01PQ0tgLiBCYXNlZCBvbiB0aGUgY29kZSwgaXQgc2VlbXMgdGhpcyBpcyBjbG9zZWx5IHJlbGF0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWcgcmVxdWlyZW1lbnRzLiBJdCBsb29rcyBsaWtlIGBQVFBfMTU4OF9DTE9DS2AgaXMgYSBtdXN0LWhhdmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBiZSByZWxldmFudCBoZXJlLiBMZXQgbWUgZG91YmxlLWNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnPTE3NT1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfRkMzV1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTg2LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxODc6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcbmRyaXZlcnMvcHRwL0tjb25maWctMTg4LVx0dHJpc3RhdGUgXCYjMzQ7TW9jay11cCBQVFAgY2xvY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwNzQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgUFRQIEtjb25maWcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIGRpdmUgcmlnaHQgaW50byB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUuIEkmIzM5O20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gZ2V0dGluZyBteSBiZWFyaW5ncyBhcm91bmQgbGluZSAxODcsIGFzIHRoYXQmIzM5O3Mgb2Z0ZW4gYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGdyYXNwIHRoZSBjb3JlIG9wdGlvbnMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBkZXBlbmRlbmNpZXMsIGhlbHAgdGV4dCwgYW5kIGRlZmF1bHQgdmFsdWVzIHRoYXQmIzM5O2xsIHNoYXBlIHRoZSBtb2R1bGUmIzM5O3MgYmVoYXZpb3IuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZGV2ZWxvcGVycyBoYXZlIGRlZW1lZCBpbXBvcnRhbnQgdG8gZXhwb3NlIGF0IHRoZSBjb25maWd1cmF0aW9uIGxldmVsIGhlcmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGV5JiMzOTt2ZSBoYW5kbGVkIHZhcmlvdXMgUFRQIGZlYXR1cmVzLCBwZXJoYXBzIGRpZmZlcmVudCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgb3IgcG90ZW50aWFsbHkgZXZlbiBjb21wYXRpYmlsaXR5IHNoaW1zLiBJIHdhbnQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVtLCBhbmQgaG93IGl0IGFsbCB0cmFuc2xhdGVzIGludG8gdGhlIHJ1bnRpbWUgUFRQIGJlaGF2aW9yLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGltcGxpY2F0aW9ucyBvZiBjaGFuZ2luZyB0aG9zZSBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxODA6XHRcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciB1c2luZyBSZW5lc2FzIEZlbXRvQ2xvY2szIFdpcmVsZXNzXG4gMTgxOlx0XHQgIGFzIGEgUFRQIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdXIgdGltZSBzdGFtcGluZ1xuIDE4MjpcdFx0ICBNQUMgaXMgY29ubmVjdGVkIHRvIHRoZSBSRU5FU0FTIGNoaXAuXG4gMTgzOlx0XG4gMTg0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxODU6XHRcdCAgd2lsbCBiZSBjYWxsZWQgcHRwX2ZjMy5cbiAxODY6XHRcbiAxODc6XHRjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xuIDE4ODpcdFx0dHJpc3RhdGUgXCYjMzQ7TW9jay11cCBQVFAgY2xvY2tcJiMzNDtcbiAxODk6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcbiAxOTA6XHRcdGhlbHBcbiAxOTE6XHRcdCAgVGhpcyBkcml2ZXIgb2ZmZXJzIGEgc2V0IG9mIFBUUCBjbG9jayBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucyBvdmVyXG4gMTkyOlx0XHQgIHRoZSBzeXN0ZW0gbW9ub3RvbmljIHRpbWUuIEl0IGNhbiBiZSB1c2VkIGJ5IHZpcnR1YWwgbmV0d29yayBkZXZpY2VcbiAxOTM6XHRcdCAgZHJpdmVycyB0byBlbXVsYXRlIFBUUCBjYXBhYmlsaXRpZXMuXG4gMTk0Olx0XG4gMTk1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxOTY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgcHRwX21vY2suXG4gMTk3Olx0XG4gMTk4Olx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNV1xuIDE5OTpcdFx0dHJpc3RhdGUgXCYjMzQ7Vk13YXJlIHZpcnR1YWwgUFRQIGNsb2NrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDE0OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjgzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQVFAgQ2xvY2sgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGhpbmdlIG9uIGBQVFBfMTU4OF9DTE9DS2AuIFNwZWNpZmljYWxseSwgdGhlIHZ1bG5lcmFiaWxpdHkgcmVzaWRlcyBpbiB0aGUgYHB0cF9jbG9ja19hZGp0aW1lYCBmdW5jdGlvbi4gTGV0IG1lIHRoaW5rLCBzbyB0aGVyZSBhcmUgc29tZSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBuZWVkZWQgdG9vOiBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgYW5kIHBvdGVudGlhbGx5IGBQVFBfMTU4OF9DTE9DS19LVk1gLCBhbHRob3VnaCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhhdCBsYXN0IG9uZS4KClJpZ2h0LCBJIG5lZWQgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcm9ibGVtLiBTbywgYHB0cF9jbG9ja19hZGp0aW1lYCBpbiBgZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdGhhdCB3YXMgbW9kaWZpZWQuIFdhaXQsIHRoZXJlJiMzOTtzIGFsc28gdGhhdCBzZWxmdGVzdCBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzaWduOyBpdCBjb25maXJtcyB0aGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzY2FsbC4gRXhjZWxsZW50IQoKU28sIHRoZSBjcnV4IG9mIHRoZSBpc3N1ZSBpcyB0aGUgaW50ZWdlciBvdmVyZmxvdyB3aXRoaW4gYHB0cF9jbG9ja19hZGp0aW1lYC4gSXQgc2VlbXMgd2hlbiBjb252ZXJ0aW5nIGB0eC0mZ3Q7ZnJlcWAgdG8gcGFydHMtcGVyLWJpbGxpb24gKHBwYikgdXNpbmcgYHNjYWxlZF9wcG1fdG9fcHBiKClgLCB0aGUgb3ZlcmZsb3cgYWxsb3dzIGJ5cGFzc2luZyB0aGUgYG1heF9hZGpgIGNoZWNrLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQmIzM5O3MgZXhwbG9pdGFibGUgdGhyb3VnaCB0aGUgc3RhbmRhcmQgYGNsb2NrX2FkanRpbWVgIHN5c3RlbSBjYWxsIG9uIGEgUFRQIGNsb2NrIGRldmljZS4KClRvIHN1bW1hcml6ZSBmb3IgZnV6emluZyBwdXJwb3NlczogbXkgZm9jdXMgaXMgc3F1YXJlbHkgb24gdGhlIHN5bWJvbCBgcHRwX2Nsb2NrX2FkanRpbWVgLiBJJiMzOTtsbCB3YW50IHRvIGVuc3VyZSB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbnMg4oCTIGBQVFBfMTU4OF9DTE9DS2AsIGBQVFBfMTU4OF9DTE9DS19NT0NLYCwgYW5kIHBvc3NpYmx5IGBQVFBfMTU4OF9DTE9DS19LVk1gIOKAkyBhcmUgZW5hYmxlZC4gQW5kIGFnYWluLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIGBQVFBfMTU4OF9DTE9DS19LVk1gIGlzIGluZGVlZCBhIGdvb2QgY29uZmlnIHRvIGhhdmUuIE15IGFpbSB3aWxsIGJlIHRvIGZ1enogdGhpcyBmdW5jdGlvbiB0aG9yb3VnaGx5IHRvIHZlcmlmeSB0aGUgb3ZlcmZsb3cgY2hlY2sgaXMgaW5kZWVkIGZpeGVkIGFuZCB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IHNpbWlsYXIgaXNzdWVzIGx1cmtpbmcgd2l0aGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvcHRwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEyMDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBwdHBfcGNoLlxuIDEyMTpcdFxuIDEyMjpcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cbiAxMjM6XHRcdHRyaXN0YXRlIFwmIzM0O0tWTSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuIDEyNDpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xuIDEyNTpcdFx0ZGVwZW5kcyBvbiAoS1ZNX0dVRVNUIFx1MDAyNlx1MDAyNiBYODYpIHx8IChIQVZFX0FSTV9TTUNDQ19ESVNDT1ZFUlkgXHUwMDI2XHUwMDI2IEFSTV9BUkNIX1RJTUVSKVxuIDEyNjpcdFx0ZGVmYXVsdCB5XG4gMTI3Olx0XHRoZWxwXG4gMTI4Olx0XHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcga3ZtIGluZnJhc3RydWN0dXJlIGFzIGEgUFRQXG4gMTI5Olx0XHQgIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgS1ZNIGd1ZXN0cy5cbiAxMzA6XHRcbiAxMzE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDEzMjpcdFx0ICB3aWxsIGJlIGNhbGxlZCBwdHBfa3ZtLlxuIDEzMzpcdFxuIDEzNDpcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXG4gMTM1Olx0XHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIG1hY2hpbmUgUFRQIGNsb2NrXCYjMzQ7XG4gMTM2Olx0XHRkZXBlbmRzIG9uIFg4Nl9UU0MgfHwgQVJNX0FSQ0hfVElNRVJcbiAxMzc6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0sgXHUwMDI2XHUwMDI2IEFSQ0hfU1VQUE9SVFNfSU5UMTI4XG4gMTM4Olx0XHRkZWZhdWx0IFBUUF8xNTg4X0NMT0NLX0tWTVxuIDEzOTpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxNDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTk5NAoJCQkJCQkJb3V0cHV0OiAxNjAKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTdHJlYW1saW5pbmcgUFRQIENsb2NrIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBgUFRQXzE1ODhfQ0xPQ0tfS1ZNYCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQsIHNldCB0byAmIzM5O3kmIzM5Oywgd2hlbiBpdHMgZGVwZW5kZW5jaWVzIGFyZSBhbGwgc2F0aXNmaWVkIOKAkyB3aGljaCBpcyB0aGUgaWRlYWwgc2l0dWF0aW9uLiBJIGNhbiBsZXZlcmFnZSB0aGlzIGV4aXN0aW5nIGRlcGVuZGVuY3kgc2V0dXAuIFdoeSBjb21wbGljYXRlIHRoaW5ncz8gSXQgbG9va3MgbGlrZSBJIGNhbiBzaW1wbGlmeSB0aGUgY29uZmlndXJhdGlvbiBieSBqdXN0IGluY2x1ZGluZyB0aGUgY29yZSBgUFRQXzE1ODhfQ0xPQ0tgIGFuZCB0aGUgYFBUUF8xNTg4X0NMT0NLX01PQ0tgIG9wdGlvbnMgZGlyZWN0bHkuIFRoYXQgc2hvdWxkIGhhbmRsZSBldmVyeXRoaW5nIGVmZmljaWVudGx5LiBOb3csIEkgc2hvdWxkIG1vdmUgdG8gdXNpbmcgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTQ6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLX01PQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwdHBfY2xvY2tfYWRqdGltZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBwdHBfY2xvY2tfYWRqdGltZWAgd2hlbiBjb252ZXJ0aW5nIGB0eC1cdTAwM2VmcmVxYCB0byBgcHBiYCB1c2luZyBgc2NhbGVkX3BwbV90b19wcGIoKWAuIFRoaXMgb3ZlcmZsb3cgYWxsb3dlZCBieXBhc3NpbmcgdGhlIGBtYXhfYWRqYCBjaGVjay4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGBjbG9ja19hZGp0aW1lYCBzeXNjYWxsIG9uIGEgUFRQIGNsb2NrIGRldmljZS4gRnV6emluZyB0aGlzIGZ1bmN0aW9uIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGNoZWNrIGlzIGNvcnJlY3QgYW5kIG5vIG90aGVyIHNpbWlsYXIgaXNzdWVzIGV4aXN0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DS19NT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHRwX2Nsb2NrX2FkanRpbWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBgcHRwX2Nsb2NrX2FkanRpbWVgIHdoZW4gY29udmVydGluZyBgdHgtXHUwMDNlZnJlcWAgdG8gYHBwYmAgdXNpbmcgYHNjYWxlZF9wcG1fdG9fcHBiKClgLiBUaGlzIG92ZXJmbG93IGFsbG93ZWQgYnlwYXNzaW5nIHRoZSBgbWF4X2FkamAgY2hlY2suIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzY2FsbCBvbiBhIFBUUCBjbG9jayBkZXZpY2UuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoZSBvdmVyZmxvdyBjaGVjayBpcyBjb3JyZWN0IGFuZCBubyBvdGhlciBzaW1pbGFyIGlzc3VlcyBleGlzdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjMyOjQ0LjQ5MDM1MTkzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NjE2ODIxMDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS19NT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicHRwX2Nsb2NrX2FkanRpbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGBwdHBfY2xvY2tfYWRqdGltZWAgd2hlbiBjb252ZXJ0aW5nIGB0eC1cXHUwMDNlZnJlcWAgdG8gYHBwYmAgdXNpbmcgYHNjYWxlZF9wcG1fdG9fcHBiKClgLiBUaGlzIG92ZXJmbG93IGFsbG93ZWQgYnlwYXNzaW5nIHRoZSBgbWF4X2FkamAgY2hlY2suIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzY2FsbCBvbiBhIFBUUCBjbG9jayBkZXZpY2UuIEZ1enppbmcgdGhpcyBmdW5jdGlvbiBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoZSBvdmVyZmxvdyBjaGVjayBpcyBjb3JyZWN0IGFuZCBubyBvdGhlciBzaW1pbGFyIGlzc3VlcyBleGlzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzI6NDQuNDkwMzYwMjU5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTUzNTkzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxNDJiYzI1YzkyN2ViNzU1NTAzMGEzNjQ5YjVlN2M2MGVjYWI5MGE1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjMyOjQyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jIGIvZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNcXG5pbmRleCBkNmY1NGNjYWY5M2JiNS4uNDExMTM0MmQ2NGYwM2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNcXG4rKysgYi9kcml2ZXJzL3B0cC9wdHBfY2xvY2suY1xcbkBAIC05LDYgKzksNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5pdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L292ZXJmbG93LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wb3NpeC1jbG9jay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHBzX2tlcm5lbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG5AQCAtMTU5LDcgKzE2MCwxOCBAQCBzdGF0aWMgaW50IHB0cF9jbG9ja19hZGp0aW1lKHN0cnVjdCBwb3NpeF9jbG9jayAqcGMsIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqdHgpXFxuIFxcdFxcdGRlbHRhID0ga3RpbWVfdG9fbnMoa3QpO1xcbiBcXHRcXHRlcnIgPSBvcHMtXFx1MDAzZWFkanRpbWUob3BzLCBkZWx0YSk7XFxuIFxcdH0gZWxzZSBpZiAodHgtXFx1MDAzZW1vZGVzIFxcdTAwMjYgQURKX0ZSRVFVRU5DWSkge1xcbi1cXHRcXHRsb25nIHBwYiA9IHNjYWxlZF9wcG1fdG9fcHBiKHR4LVxcdTAwM2VmcmVxKTtcXG4rXFx0XFx0bG9uZyBwcGI7XFxuK1xcdFxcdHM2NCB0bXA7XFxuK1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBzY2FsZWRfcHBtX3RvX3BwYigpIG11bHRpcGxpZXMgKDEgKyBmcmVxKSBieSAxMjUgaW4gczY0O1xcbitcXHRcXHQgKiByZWplY3QgYSAtXFx1MDAzZWZyZXEgbGFyZ2UgZW5vdWdoIHRvIG92ZXJmbG93IHRoYXQsIHdoaWNoIHdvdWxkXFxuK1xcdFxcdCAqIG90aGVyd2lzZSB3cmFwIHRoZSByZXN1bHQgYmFjayBpbnRvIHRoZSBtYXhfYWRqIHJhbmdlLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdygoczY0KXR4LVxcdTAwM2VmcmVxLCAoczY0KTEsIFxcdTAwMjZ0bXApIHx8XFxuK1xcdFxcdCAgICBjaGVja19tdWxfb3ZlcmZsb3codG1wLCAoczY0KTEyNSwgXFx1MDAyNnRtcCkpXFxuK1xcdFxcdFxcdHJldHVybiAtRVJBTkdFO1xcbitcXHRcXHRwcGIgPSBzY2FsZWRfcHBtX3RvX3BwYih0eC1cXHUwMDNlZnJlcSk7XFxuIFxcdFxcdGlmIChwcGIgXFx1MDAzZSBvcHMtXFx1MDAzZW1heF9hZGogfHwgcHBiIFxcdTAwM2MgLW9wcy1cXHUwMDNlbWF4X2FkailcXG4gXFx0XFx0XFx0cmV0dXJuIC1FUkFOR0U7XFxuIFxcdFxcdGVyciA9IG9wcy1cXHUwMDNlYWRqZmluZShvcHMsIHR4LVxcdTAwM2VmcmVxKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlXFxuaW5kZXggOGY1N2Y4OGVjYWRkNjMuLmRkNzM3NmNjOWJmNWQxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9NYWtlZmlsZVxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9NYWtlZmlsZVxcbkBAIC0xLDYgKzEsNiBAQFxcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuIENGTEFHUyArPSAkKEtIRFJfSU5DTFVERVMpXFxuLVRFU1RfR0VOX1BST0dTIDo9IHRlc3RwdHBcXG4rVEVTVF9HRU5fUFJPR1MgOj0gdGVzdHB0cCBwdHBfZnJlcV9vdmVyZmxvd1xcbiBMRExJQlMgKz0gLWxydFxcbiBURVNUX1BST0dTID0gcGhjLnNoXFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNDE3YzA1MTY2MjJkYThcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmNcXG5AQCAtMCwwICsxLDk5IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qXFxuKyAqIFJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIHNjYWxlZF9wcG1fdG9fcHBiKCkgaW50ZWdlciBvdmVyZmxvdyB0aGF0IGFsbG93ZWRcXG4rICogYSBjcmFmdGVkIGNsb2NrX2FkanRpbWUoQURKX0ZSRVFVRU5DWSkgdG8gYnlwYXNzIHRoZSBQVFAgbWF4X2FkaiBjaGVjay5cXG4rICpcXG4rICogdGVzdHB0cCdzIC1mIG9wdGlvbiBzdG9yZXMgdGhlIGFkanVzdG1lbnQgYXMgYW4gaW50IHBwYiBhbmQgY2Fubm90IGV4cHJlc3NcXG4rICogdGhlIDY0LWJpdCBzY2FsZWQtcHBtIHZhbHVlcyBuZWVkZWQgdG8gb3ZlcmZsb3cgdGhlIGNvbnZlcnNpb24sIHNvIHRoaXNcXG4rICogdGVzdCBjcmFmdHMgc3RydWN0IHRpbWV4LmZyZXEgZGlyZWN0bHkuXFxuKyAqL1xcbisjZGVmaW5lIF9HTlVfU09VUkNFXFxuKyNkZWZpbmUgX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fXFxuKyNpbmNsdWRlIFxcdTAwM2NlcnJuby5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjZmNudGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0cmluZy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3lzL2lvY3RsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzeXMvdGltZXguaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3RpbWUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3VuaXN0ZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX2Nsb2NrLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcXCIuLi9rc2VsZnRlc3QuaFxcXCJcXG4rXFxuKyNkZWZpbmUgRkRfVE9fQ0xPQ0tJRChmZClcXHQoKGNsb2NraWRfdCkoKCgodW5zaWduZWQgaW50KX4oZmQpKSBcXHUwMDNjXFx1MDAzYyAzKSB8IDMpKVxcbitcXG4rLyogY2xvY2tfYWRqdGltZSBpcyBub3QgYXZhaWxhYmxlIGluIEdMSUJDIFxcdTAwM2MgMi4xNCAqL1xcbisjaWYgIV9fR0xJQkNfUFJFUkVRKDIsIDE0KVxcbisjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXG4rc3RhdGljIGludCBjbG9ja19hZGp0aW1lKGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWV4ICp0eClcXG4re1xcbitcXHRyZXR1cm4gc3lzY2FsbChfX05SX2Nsb2NrX2FkanRpbWUsIGlkLCB0eCk7XFxuK31cXG4rI2VuZGlmXFxuK1xcbitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbit7XFxuK1xcdGNvbnN0IGNoYXIgKmRldmljZSA9IGFyZ2MgXFx1MDAzZSAxID8gYXJndlsxXSA6IFxcXCIvZGV2L3B0cDBcXFwiO1xcbitcXHRzdHJ1Y3QgcHRwX2Nsb2NrX2NhcHMgY2FwcztcXG4rXFx0c3RydWN0IHRpbWV4IHJlc3RvcmUgPSB7IDAgfTtcXG4rXFx0c3RydWN0IHRpbWV4IHR4ID0geyAwIH07XFxuK1xcdGNsb2NraWRfdCBjbGtpZDtcXG4rXFx0aW50IGZkLCByZXQ7XFxuK1xcbitcXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xcbitcXHRrc2Z0X3NldF9wbGFuKDEpO1xcbitcXG4rXFx0aWYgKHNpemVvZih0eC5mcmVxKSBcXHUwMDNjIDgpXFxuK1xcdFxcdGtzZnRfZXhpdF9za2lwKFxcXCJ0aGUgb3ZlcmZsb3cgb25seSBhZmZlY3RzIDY0LWJpdCBrZXJuZWxzXFxcXG5cXFwiKTtcXG4rXFxuK1xcdGZkID0gb3BlbihkZXZpY2UsIE9fUkRXUik7XFxuK1xcdGlmIChmZCBcXHUwMDNjIDApXFxuK1xcdFxcdGtzZnRfZXhpdF9za2lwKFxcXCJjYW5ub3Qgb3BlbiAlczogJXNcXFxcblxcXCIsIGRldmljZSwgc3RyZXJyb3IoZXJybm8pKTtcXG4rXFxuK1xcdGNsa2lkID0gRkRfVE9fQ0xPQ0tJRChmZCk7XFxuK1xcbitcXHRpZiAoaW9jdGwoZmQsIFBUUF9DTE9DS19HRVRDQVBTLCBcXHUwMDI2Y2FwcykpXFxuK1xcdFxcdGtzZnRfZXhpdF9za2lwKFxcXCJQVFBfQ0xPQ0tfR0VUQ0FQUyBvbiAlczogJXNcXFxcblxcXCIsIGRldmljZSwgc3RyZXJyb3IoZXJybm8pKTtcXG4rXFx0aWYgKCFjYXBzLm1heF9hZGopXFxuK1xcdFxcdGtzZnRfZXhpdF9za2lwKFxcXCIlcyBkb2VzIG5vdCBzdXBwb3J0IGZyZXF1ZW5jeSBhZGp1c3RtZW50XFxcXG5cXFwiLCBkZXZpY2UpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUmVtZW1iZXIgdGhlIGN1cnJlbnQgZnJlcXVlbmN5LiAgQSB2dWxuZXJhYmxlIGtlcm5lbCBhY2NlcHRzIHRoZVxcbitcXHQgKiBib2d1cyB2YWx1ZSBiZWxvdyBhbmQgcHJvZ3JhbXMgaXQgaW50byB0aGUgaGFyZHdhcmUsIHNvIHJlc3RvcmUgdGhlXFxuK1xcdCAqIG9yaWdpbmFsIGFmdGVyd2FyZHMgaW5zdGVhZCBvZiBsZWF2aW5nIHRoZSBjbG9jayBjb3JydXB0ZWQuXFxuK1xcdCAqL1xcbitcXHRpZiAoY2xvY2tfYWRqdGltZShjbGtpZCwgXFx1MDAyNnJlc3RvcmUpKVxcbitcXHRcXHRrc2Z0X2V4aXRfc2tpcChcXFwiY2xvY2tfYWRqdGltZShnZXQpIG9uICVzOiAlc1xcXFxuXFxcIiwgZGV2aWNlLCBzdHJlcnJvcihlcnJubykpO1xcbitcXHRyZXN0b3JlLm1vZGVzID0gQURKX0ZSRVFVRU5DWTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqICgxICsgMTQ3NTczOTUyNTg5Njc2NDEyKSAqIDEyNSA9PSAyXjY0ICsgOSwgd2hpY2ggb3ZlcmZsb3dzIHM2NCBpblxcbitcXHQgKiBzY2FsZWRfcHBtX3RvX3BwYigpIGFuZCB3cmFwcyB0aGUgcmVzdWx0IHRvIGEgcHBiIG9mIDAuICBBIGtlcm5lbFxcbitcXHQgKiB0aGF0IGRvZXMgbm90IGRldGVjdCB0aGUgb3ZlcmZsb3cgbGV0cyB0aGlzIGFic3VyZCBmcmVxdWVuY3kgcGFzdFxcbitcXHQgKiB0aGUgbWF4X2FkaiBjaGVjazsgYSBmaXhlZCBrZXJuZWwgcmVqZWN0cyBpdCB3aXRoIC1FUkFOR0UuXFxuK1xcdCAqL1xcbitcXHR0eC5tb2RlcyA9IEFESl9GUkVRVUVOQ1k7XFxuKyNpZiBfX1NJWkVPRl9MT05HX18gXFx1MDAzZT0gOFxcbitcXHR0eC5mcmVxID0gMTQ3NTczOTUyNTg5Njc2NDEyTDtcXG4rI2VuZGlmXFxuK1xcbitcXHRyZXQgPSBjbG9ja19hZGp0aW1lKGNsa2lkLCBcXHUwMDI2dHgpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiBlcnJubyA9PSBFQlVTWSkge1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBBIGZyZWUtcnVubmluZyBwaHlzaWNhbCBjbG9jayAodmlydHVhbCBjbG9ja3MgYWN0aXZlKSByZWplY3RzXFxuK1xcdFxcdCAqIGZyZXF1ZW5jeSBhZGp1c3RtZW50IHdpdGggLUVCVVNZIGJlZm9yZSB0aGUgb3ZlcmZsb3cgaXMgZXZlblxcbitcXHRcXHQgKiBldmFsdWF0ZWQsIHNvIHRoZSB0ZXN0IGNhbm5vdCBydW4gaGVyZS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGtzZnRfdGVzdF9yZXN1bHRfc2tpcChcXFwiJXM6IGZyZXF1ZW5jeSBhZGp1c3RtZW50IHJldHVybmVkIEVCVVNZLCBza2lwcGluZ1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgICAgZGV2aWNlKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0a3NmdF90ZXN0X3Jlc3VsdChyZXQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IGVycm5vID09IEVSQU5HRSxcXG4rXFx0XFx0XFx0XFx0IFxcXCJvdmVyZmxvd2luZyBmcmVxdWVuY3kgYWRqdXN0bWVudCBpcyByZWplY3RlZCAocmV0PSVkIGVycm5vPSVkKVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IHJldCwgcmV0IFxcdTAwM2MgMCA/IGVycm5vIDogMCk7XFxuK1xcdH1cXG4rXFxuK1xcdC8qIHB1dCB0aGUgZnJlcXVlbmN5IGJhY2sgdGhlIHdheSB3ZSBmb3VuZCBpdCAqL1xcbitcXHRjbG9ja19hZGp0aW1lKGNsa2lkLCBcXHUwMDI2cmVzdG9yZSk7XFxuK1xcbitcXHRjbG9zZShmZCk7XFxuK1xcdGtzZnRfZmluaXNoZWQoKTtcXG4rfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMjo0NS4yNDcwOTM5MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwNjg2MDA2NDk0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tfTU9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInB0cF9jbG9ja19hZGp0aW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBgcHRwX2Nsb2NrX2FkanRpbWVgIHdoZW4gY29udmVydGluZyBgdHgtXFx1MDAzZWZyZXFgIHRvIGBwcGJgIHVzaW5nIGBzY2FsZWRfcHBtX3RvX3BwYigpYC4gVGhpcyBvdmVyZmxvdyBhbGxvd2VkIGJ5cGFzc2luZyB0aGUgYG1heF9hZGpgIGNoZWNrLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgYGNsb2NrX2FkanRpbWVgIHN5c2NhbGwgb24gYSBQVFAgY2xvY2sgZGV2aWNlLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgb3ZlcmZsb3cgY2hlY2sgaXMgY29ycmVjdCBhbmQgbm8gb3RoZXIgc2ltaWxhciBpc3N1ZXMgZXhpc3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTQyYmMyNWM5MjdlYjc1NTUwMzBhMzY0OWI1ZTdjNjBlY2FiOTBhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDIxIDE0OjMyOjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMgYi9kcml2ZXJzL3B0cC9wdHBfY2xvY2suY1xuaW5kZXggZDZmNTRjY2FmOTNiYjUuLjQxMTEzNDJkNjRmMDNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNcbisrKyBiL2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jXG5AQCAtOSw2ICs5LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbml0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvb3ZlcmZsb3cuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Bvc2l4LWNsb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcHNfa2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG5AQCAtMTU5LDcgKzE2MCwxOCBAQCBzdGF0aWMgaW50IHB0cF9jbG9ja19hZGp0aW1lKHN0cnVjdCBwb3NpeF9jbG9jayAqcGMsIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqdHgpXG4gXHRcdGRlbHRhID0ga3RpbWVfdG9fbnMoa3QpO1xuIFx0XHRlcnIgPSBvcHMtXHUwMDNlYWRqdGltZShvcHMsIGRlbHRhKTtcbiBcdH0gZWxzZSBpZiAodHgtXHUwMDNlbW9kZXMgXHUwMDI2IEFESl9GUkVRVUVOQ1kpIHtcbi1cdFx0bG9uZyBwcGIgPSBzY2FsZWRfcHBtX3RvX3BwYih0eC1cdTAwM2VmcmVxKTtcbitcdFx0bG9uZyBwcGI7XG4rXHRcdHM2NCB0bXA7XG4rXG4rXHRcdC8qXG4rXHRcdCAqIHNjYWxlZF9wcG1fdG9fcHBiKCkgbXVsdGlwbGllcyAoMSArIGZyZXEpIGJ5IDEyNSBpbiBzNjQ7XG4rXHRcdCAqIHJlamVjdCBhIC1cdTAwM2VmcmVxIGxhcmdlIGVub3VnaCB0byBvdmVyZmxvdyB0aGF0LCB3aGljaCB3b3VsZFxuK1x0XHQgKiBvdGhlcndpc2Ugd3JhcCB0aGUgcmVzdWx0IGJhY2sgaW50byB0aGUgbWF4X2FkaiByYW5nZS5cbitcdFx0ICovXG4rXHRcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coKHM2NCl0eC1cdTAwM2VmcmVxLCAoczY0KTEsIFx1MDAyNnRtcCkgfHxcbitcdFx0ICAgIGNoZWNrX211bF9vdmVyZmxvdyh0bXAsIChzNjQpMTI1LCBcdTAwMjZ0bXApKVxuK1x0XHRcdHJldHVybiAtRVJBTkdFO1xuK1x0XHRwcGIgPSBzY2FsZWRfcHBtX3RvX3BwYih0eC1cdTAwM2VmcmVxKTtcbiBcdFx0aWYgKHBwYiBcdTAwM2Ugb3BzLVx1MDAzZW1heF9hZGogfHwgcHBiIFx1MDAzYyAtb3BzLVx1MDAzZW1heF9hZGopXG4gXHRcdFx0cmV0dXJuIC1FUkFOR0U7XG4gXHRcdGVyciA9IG9wcy1cdTAwM2VhZGpmaW5lKG9wcywgdHgtXHUwMDNlZnJlcSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL01ha2VmaWxlXG5pbmRleCA4ZjU3Zjg4ZWNhZGQ2My4uZGQ3Mzc2Y2M5YmY1ZDEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvTWFrZWZpbGVcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9NYWtlZmlsZVxuQEAgLTEsNiArMSw2IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuIENGTEFHUyArPSAkKEtIRFJfSU5DTFVERVMpXG4tVEVTVF9HRU5fUFJPR1MgOj0gdGVzdHB0cFxuK1RFU1RfR0VOX1BST0dTIDo9IHRlc3RwdHAgcHRwX2ZyZXFfb3ZlcmZsb3dcbiBMRExJQlMgKz0gLWxydFxuIFRFU1RfUFJPR1MgPSBwaGMuc2hcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQxN2MwNTE2NjIyZGE4XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuY1xuQEAgLTAsMCArMSw5OSBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLypcbisgKiBSZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBzY2FsZWRfcHBtX3RvX3BwYigpIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBhbGxvd2VkXG4rICogYSBjcmFmdGVkIGNsb2NrX2FkanRpbWUoQURKX0ZSRVFVRU5DWSkgdG8gYnlwYXNzIHRoZSBQVFAgbWF4X2FkaiBjaGVjay5cbisgKlxuKyAqIHRlc3RwdHAncyAtZiBvcHRpb24gc3RvcmVzIHRoZSBhZGp1c3RtZW50IGFzIGFuIGludCBwcGIgYW5kIGNhbm5vdCBleHByZXNzXG4rICogdGhlIDY0LWJpdCBzY2FsZWQtcHBtIHZhbHVlcyBuZWVkZWQgdG8gb3ZlcmZsb3cgdGhlIGNvbnZlcnNpb24sIHNvIHRoaXNcbisgKiB0ZXN0IGNyYWZ0cyBzdHJ1Y3QgdGltZXguZnJlcSBkaXJlY3RseS5cbisgKi9cbisjZGVmaW5lIF9HTlVfU09VUkNFXG4rI2RlZmluZSBfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX19cbisjaW5jbHVkZSBcdTAwM2NlcnJuby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N0cmluZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3lzL2lvY3RsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzeXMvdGltZXguaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3RpbWUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3VuaXN0ZC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrLmhcdTAwM2VcbisjaW5jbHVkZSBcIi4uL2tzZWxmdGVzdC5oXCJcbitcbisjZGVmaW5lIEZEX1RPX0NMT0NLSUQoZmQpXHQoKGNsb2NraWRfdCkoKCgodW5zaWduZWQgaW50KX4oZmQpKSBcdTAwM2NcdTAwM2MgMykgfCAzKSlcbitcbisvKiBjbG9ja19hZGp0aW1lIGlzIG5vdCBhdmFpbGFibGUgaW4gR0xJQkMgXHUwMDNjIDIuMTQgKi9cbisjaWYgIV9fR0xJQkNfUFJFUkVRKDIsIDE0KVxuKyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcbitzdGF0aWMgaW50IGNsb2NrX2FkanRpbWUoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXggKnR4KVxuK3tcbitcdHJldHVybiBzeXNjYWxsKF9fTlJfY2xvY2tfYWRqdGltZSwgaWQsIHR4KTtcbit9XG4rI2VuZGlmXG4rXG4raW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbit7XG4rXHRjb25zdCBjaGFyICpkZXZpY2UgPSBhcmdjIFx1MDAzZSAxID8gYXJndlsxXSA6IFwiL2Rldi9wdHAwXCI7XG4rXHRzdHJ1Y3QgcHRwX2Nsb2NrX2NhcHMgY2FwcztcbitcdHN0cnVjdCB0aW1leCByZXN0b3JlID0geyAwIH07XG4rXHRzdHJ1Y3QgdGltZXggdHggPSB7IDAgfTtcbitcdGNsb2NraWRfdCBjbGtpZDtcbitcdGludCBmZCwgcmV0O1xuK1xuK1x0a3NmdF9wcmludF9oZWFkZXIoKTtcbitcdGtzZnRfc2V0X3BsYW4oMSk7XG4rXG4rXHRpZiAoc2l6ZW9mKHR4LmZyZXEpIFx1MDAzYyA4KVxuK1x0XHRrc2Z0X2V4aXRfc2tpcChcInRoZSBvdmVyZmxvdyBvbmx5IGFmZmVjdHMgNjQtYml0IGtlcm5lbHNcXG5cIik7XG4rXG4rXHRmZCA9IG9wZW4oZGV2aWNlLCBPX1JEV1IpO1xuK1x0aWYgKGZkIFx1MDAzYyAwKVxuK1x0XHRrc2Z0X2V4aXRfc2tpcChcImNhbm5vdCBvcGVuICVzOiAlc1xcblwiLCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7XG4rXG4rXHRjbGtpZCA9IEZEX1RPX0NMT0NLSUQoZmQpO1xuK1xuK1x0aWYgKGlvY3RsKGZkLCBQVFBfQ0xPQ0tfR0VUQ0FQUywgXHUwMDI2Y2FwcykpXG4rXHRcdGtzZnRfZXhpdF9za2lwKFwiUFRQX0NMT0NLX0dFVENBUFMgb24gJXM6ICVzXFxuXCIsIGRldmljZSwgc3RyZXJyb3IoZXJybm8pKTtcbitcdGlmICghY2Fwcy5tYXhfYWRqKVxuK1x0XHRrc2Z0X2V4aXRfc2tpcChcIiVzIGRvZXMgbm90IHN1cHBvcnQgZnJlcXVlbmN5IGFkanVzdG1lbnRcXG5cIiwgZGV2aWNlKTtcbitcbitcdC8qXG4rXHQgKiBSZW1lbWJlciB0aGUgY3VycmVudCBmcmVxdWVuY3kuICBBIHZ1bG5lcmFibGUga2VybmVsIGFjY2VwdHMgdGhlXG4rXHQgKiBib2d1cyB2YWx1ZSBiZWxvdyBhbmQgcHJvZ3JhbXMgaXQgaW50byB0aGUgaGFyZHdhcmUsIHNvIHJlc3RvcmUgdGhlXG4rXHQgKiBvcmlnaW5hbCBhZnRlcndhcmRzIGluc3RlYWQgb2YgbGVhdmluZyB0aGUgY2xvY2sgY29ycnVwdGVkLlxuK1x0ICovXG4rXHRpZiAoY2xvY2tfYWRqdGltZShjbGtpZCwgXHUwMDI2cmVzdG9yZSkpXG4rXHRcdGtzZnRfZXhpdF9za2lwKFwiY2xvY2tfYWRqdGltZShnZXQpIG9uICVzOiAlc1xcblwiLCBkZXZpY2UsIHN0cmVycm9yKGVycm5vKSk7XG4rXHRyZXN0b3JlLm1vZGVzID0gQURKX0ZSRVFVRU5DWTtcbitcbitcdC8qXG4rXHQgKiAoMSArIDE0NzU3Mzk1MjU4OTY3NjQxMikgKiAxMjUgPT0gMl42NCArIDksIHdoaWNoIG92ZXJmbG93cyBzNjQgaW5cbitcdCAqIHNjYWxlZF9wcG1fdG9fcHBiKCkgYW5kIHdyYXBzIHRoZSByZXN1bHQgdG8gYSBwcGIgb2YgMC4gIEEga2VybmVsXG4rXHQgKiB0aGF0IGRvZXMgbm90IGRldGVjdCB0aGUgb3ZlcmZsb3cgbGV0cyB0aGlzIGFic3VyZCBmcmVxdWVuY3kgcGFzdFxuK1x0ICogdGhlIG1heF9hZGogY2hlY2s7IGEgZml4ZWQga2VybmVsIHJlamVjdHMgaXQgd2l0aCAtRVJBTkdFLlxuK1x0ICovXG4rXHR0eC5tb2RlcyA9IEFESl9GUkVRVUVOQ1k7XG4rI2lmIF9fU0laRU9GX0xPTkdfXyBcdTAwM2U9IDhcbitcdHR4LmZyZXEgPSAxNDc1NzM5NTI1ODk2NzY0MTJMO1xuKyNlbmRpZlxuK1xuK1x0cmV0ID0gY2xvY2tfYWRqdGltZShjbGtpZCwgXHUwMDI2dHgpO1xuK1x0aWYgKHJldCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgZXJybm8gPT0gRUJVU1kpIHtcbitcdFx0LypcbitcdFx0ICogQSBmcmVlLXJ1bm5pbmcgcGh5c2ljYWwgY2xvY2sgKHZpcnR1YWwgY2xvY2tzIGFjdGl2ZSkgcmVqZWN0c1xuK1x0XHQgKiBmcmVxdWVuY3kgYWRqdXN0bWVudCB3aXRoIC1FQlVTWSBiZWZvcmUgdGhlIG92ZXJmbG93IGlzIGV2ZW5cbitcdFx0ICogZXZhbHVhdGVkLCBzbyB0aGUgdGVzdCBjYW5ub3QgcnVuIGhlcmUuXG4rXHRcdCAqL1xuK1x0XHRrc2Z0X3Rlc3RfcmVzdWx0X3NraXAoXCIlczogZnJlcXVlbmN5IGFkanVzdG1lbnQgcmV0dXJuZWQgRUJVU1ksIHNraXBwaW5nXFxuXCIsXG4rXHRcdFx0XHQgICAgICBkZXZpY2UpO1xuK1x0fSBlbHNlIHtcbitcdFx0a3NmdF90ZXN0X3Jlc3VsdChyZXQgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGVycm5vID09IEVSQU5HRSxcbitcdFx0XHRcdCBcIm92ZXJmbG93aW5nIGZyZXF1ZW5jeSBhZGp1c3RtZW50IGlzIHJlamVjdGVkIChyZXQ9JWQgZXJybm89JWQpXFxuXCIsXG4rXHRcdFx0XHQgcmV0LCByZXQgXHUwMDNjIDAgPyBlcnJubyA6IDApO1xuK1x0fVxuK1xuK1x0LyogcHV0IHRoZSBmcmVxdWVuY3kgYmFjayB0aGUgd2F5IHdlIGZvdW5kIGl0ICovXG4rXHRjbG9ja19hZGp0aW1lKGNsa2lkLCBcdTAwMjZyZXN0b3JlKTtcbitcbitcdGNsb3NlKGZkKTtcbitcdGtzZnRfZmluaXNoZWQoKTtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMjo0NS4yNDcwOTY0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NDc4NjU1NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBQVFAgQ2xvY2sgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gaXQuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIHNlcmllcyBhbmQgZmlndXJlIG91dCBpZiBpdCBpbnRyb2R1Y2VzIGFueSBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwncyBmdW5jdGlvbmFsaXR5IHRoYXQgcmVxdWlyZSB1cyB0byBraWNrIG9mZiBzb21lIGZ1enppbmcuIFRoZSBrZXkgZmlsZSBzZWVtcyB0byBiZSBgZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBwdHBfY2xvY2tfYWRqdGltZSgpYCBmdW5jdGlvbi5cblxuRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoZSBwYXRjaCBpcyB0b3VjaGluZyBgcHRwX2Nsb2NrX2FkanRpbWUoKWAgYW5kIGFkZGluZyBzb21lIG92ZXJmbG93IGNoZWNrcyByZWxhdGVkIHRvIGB0eC1cdTAwM2VmcmVxYCB3aGVuIGB0eC1cdTAwM2Vtb2Rlc2AgaGFzIHRoZSBgQURKX0ZSRVFVRU5DWWAgYml0IHNldC4gT2theSwgc28gd2UncmUgdGFsa2luZyBhYm91dCBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhICpyZWFsKiBjaGFuZ2UsIHdoaWNoIGlzIGdvb2QuIFByZXZlbnRpbmcgdGhhdCBpbnRlZ2VyIG92ZXJmbG93IGluIGBzY2FsZWRfcHBtX3RvX3BwYih0eC1cdTAwM2VmcmVxKWAgY291bGQgYmUgaW1wb3J0YW50LlxuXG5Ob3csIHRoZSBuZXh0IHN0ZXAuIExldCdzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB0aGUgcmVhY2hhYmlsaXR5IG9mIGBwdHBfY2xvY2tfYWRqdGltZSgpYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgY2FsbGVkIHdpdGhpbiB0aGUga2VybmVsIGFuZCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCBmb3IgaXQgdG8gYmUgYWN0aXZlLiBUaGF0IHNob3VsZCB0ZWxsIG1lIGp1c3QgaG93IGltcG9ydGFudCB0aGUgZml4IGlzIGFuZCBob3cgaGlnaCBvbiB0aGUgZnV6emluZyBwcmlvcml0eSBsaXN0IGl0IG5lZWRzIHRvIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjg2LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzI6NDkuNzk0OTc1NjI2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4Nzc3ODY1NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHRwX2Nsb2NrX2FkanRpbWVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MTExPXN0YXRpYyBpbnQgcHRwX2Nsb2NrX2dldHRpbWUoc3RydWN0IHBvc2l4X2Nsb2NrICpwYywgc3RydWN0IHRpbWVzcGVjNjQgKnRwKVxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMTIyLVxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jOjEyMzpzdGF0aWMgaW50IHB0cF9jbG9ja19hZGp0aW1lKHN0cnVjdCBwb3NpeF9jbG9jayAqcGMsIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqdHgpXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMTI0LXtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jPTIwMT1zdGF0aWMgc3RydWN0IHBvc2l4X2Nsb2NrX29wZXJhdGlvbnMgcHRwX2Nsb2NrX29wcyA9IHtcXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0yMDItXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYzoyMDM6XFx0LmNsb2NrX2FkanRpbWVcXHQ9IHB0cF9jbG9ja19hZGp0aW1lLFxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTIwNC1cXHQuY2xvY2tfZ2V0dGltZVxcdD0gcHRwX2Nsb2NrX2dldHRpbWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjMyOjU1LjY3Mjc2NzUxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDIzNTQxNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgUFRQIENsb2NrIEFkanVzdG1lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIG5ldyB0YXJnZXQsIGAuY2xvY2tfYWRqdGltZWAgd2l0aGluIGBwdHBfY2xvY2tfb3BzYC4gIFRoYXQgc2VlbXMgdG8gYmUgdXNlZCBieSBgcG9zaXhfY2xvY2tfb3BlcmF0aW9uc2AsIHdoaWNoLCBiYXNlZCBvbiBteSBleHBlcmllbmNlLCBpcyBhIHByZXR0eSBjcnVjaWFsIGxpbmsuIEFuZCwgYXMgSSB1bmRlcnN0YW5kIGl0LCB0aGUgUFRQIGNsb2NrIHN1YnN5c3RlbSBpcyBhY2Nlc3NpYmxlIHZpYSBgL2Rldi9wdHBYYCBkZXZpY2VzIGFuZCB0aGUgYGNsb2NrX2FkanRpbWVgIHN5c3RlbSBjYWxsLiBCaW5nbyEgVGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgYW5kIGdpdmVuIGl0cyBpbXBvcnRhbmNlIGluIHRpbWUgc3luY2hyb25pemF0aW9uLCBpdCdzIGFic29sdXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZyBwb3RlbnRpYWwuIEkgdGhpbmsgdGhpcyBzdWJzeXN0ZW0gY291bGQgYmUgYSByZWFsIGdvbGRtaW5lLiBOb3csIEkgbmVlZCB0byBkaWcgaW50byB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gUFRQIHRvIHNlZSB3aGF0IGtub2JzIEkgY2FuIGFkanVzdCB0byBoZWxwIHRhaWxvciB0aGUgZnV6emluZyBjYW1wYWlnbi4gVGhpcyBpcyBnb2luZyB0byBiZSBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzk1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzI6NTkuMzc1MTI0MjA5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTI1NzgwOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBUUF8xNTg4X0NMT0NLXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9LY29uZmlnPTIxPWNvbmZpZyBJWFA0WFhfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvS2NvbmZpZzozMTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSVhQNDZYXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL0tjb25maWctMzItXFx0Ym9vbCBcXFwiSW50ZWwgSVhQNDZ4IGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWc9Nj1tZW51IFxcXCJQVFAgY2xvY2sgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTI5LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MzA6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0zMS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy00MS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjQyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19EVEVcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQzLVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBEVEUgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjU4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19RT1JJUVxcbmRyaXZlcnMvcHRwL0tjb25maWctNTktXFx0dHJpc3RhdGUgXFxcIkZyZWVzY2FsZSBRb3JJUSAxNTg4IHRpbWVyIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWc9NzU9Y29uZmlnIERQODM2NDBfUEhZXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTkxLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6OTI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lORVNcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTkzLVxcdHRyaXN0YXRlIFxcXCJaSEFXIEluRVMgUFRQIHRpbWUgc3RhbXBpbmcgSVAgY29yZVxcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTAyLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTAzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19QQ0hcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwNC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgUENIIEVHMjBUIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTIxLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTIyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyMy1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHZpcnR1YWwgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzMtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMzQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNQ0xPQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBtYWNoaW5lIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTUwLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTUxOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFQ4MlAzM1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTUyLVxcdHRyaXN0YXRlIFxcXCJJRFQgODJQMzN4eHggUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjItXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVENNXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjQtXFx0dHJpc3RhdGUgXFxcIklEVCBDTE9DS01BVFJJWCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3NC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE3NTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRkMzV1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTc2LVxcdHRyaXN0YXRlIFxcXCJSRU5FU0FTIEZlbXRvQ2xvY2szIFdpcmVsZXNzIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTg2LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTg3OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODgtXFx0dHJpc3RhdGUgXFxcIk1vY2stdXAgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xOTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxOTg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNV1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTk5LVxcdHRyaXN0YXRlIFxcXCJWTXdhcmUgdmlydHVhbCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwOS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjIxMDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT0NQXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcIk9wZW5Db21wdXRlIFRpbWVDYXJkIGFzIFBUUCBjbG9ja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzM6MDUuOTg3NzA4NzA0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgxODI2NTQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyBQVFAgQ2xvY2sgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiwgYW5kIGl0J3MgZGVmaW5pdGVseSBnb2luZyB0byBiZSBgUFRQXzE1ODhfQ0xPQ0tgLiBCdXQgd2FpdCwgdGhlcmUgYXJlIGEgY291cGxlIG9mIG90aGVyIG9wdGlvbnMgdGhhdCBtaWdodCBiZSBiZW5lZmljaWFsLCBlc3BlY2lhbGx5IGZvciBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgYW5kIGBQVFBfMTU4OF9DTE9DS19LVk1gIGNvbWUgdG8gbWluZCDigJMgY291bGQgYmUgaGVscGZ1bCB0byBzaW11bGF0ZSBhIFBUUCBjbG9jay4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBhbmQgc2VlIHdoYXQgaXQgb2ZmZXJzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FwYWJpbGl0aWVzIGJldHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc3NywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjMzOjA5LjgwNTk3NzAxN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzQwNzE1ODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcHRwL0tjb25maWc9MTc1PWNvbmZpZyBQVFBfMTU4OF9DTE9DS19GQzNXXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ni1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE4Nzpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTg4LVxcdHRyaXN0YXRlIFxcXCJNb2NrLXVwIFBUUCBjbG9ja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzM6MTUuMTQ2NzAwNzdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODg0MDE5MDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgUFRQXzE1ODhfQ0xPQ0tfTU9DSyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHB1cnBvc2Ugb2YgYFBUUF8xNTg4X0NMT0NLX01PQ0tgLiBXaGF0IGV4YWN0bHkgZG9lcyB0aGlzIGNvbXBvbmVudCByZXByZXNlbnQ/IElzIGl0IGEgc2ltdWxhdGlvbiwgYSB0ZXN0IGZpeHR1cmUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIEknbSBnb2luZyB0byBzdGFydCBieSBhbmFseXppbmcgaXRzIGNvZGUsIGRvY3VtZW50YXRpb24sIG9yIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZGV0ZXJtaW5lIHdoYXQgaXRzIGludGVuZGVkIGJlaGF2aW9yIGlzLiBXaGF0IGFyZSBpdHMgaW5wdXRzLCBvdXRwdXRzLCBhbmQgaW50ZXJuYWwgbWVjaGFuaXNtcz8gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBUaGlzIGlzIHRoZSBpbml0aWFsIHN0ZXAgaW4gcmVhbGx5IHVuZGVyc3RhbmRpbmcgaXRzIGNhcGFiaWxpdGllcyBhbmQgbGltaXRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzAsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMzoyMi4wMzA3MjI2NDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MTg0OTQ5MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHRwX21vY2tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiTUFJTlRBSU5FUlM9MjE3NDg9UzpcXHRNYWludGFpbmVkXFxuTUFJTlRBSU5FUlM6MjE3NDk6RjpcXHRkcml2ZXJzL3B0cC9wdHBfbW9jay5jXFxuTUFJTlRBSU5FUlM6MjE3NTA6RjpcXHRpbmNsdWRlL2xpbnV4L3B0cF9tb2NrLmhcXG5NQUlOVEFJTkVSUy0yMTc1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI0OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9wdHBfbW9jay5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNS0jaW5jbHVkZSBcXHUwMDNjbmV0L2RldmxpbmsuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWc9MTg3PWNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE5NS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5NjpcXHQgIHdpbGwgYmUgY2FsbGVkIHB0cF9tb2NrLlxcbmRyaXZlcnMvcHRwL0tjb25maWctMTk3LVxcbi0tXFxuZHJpdmVycy9wdHAvTWFrZWZpbGU9MTg9b2JqLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLX0lEVDgyUDMzKVxcdCs9IHB0cF9pZHQ4MnAzMy5vXFxuZHJpdmVycy9wdHAvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLX01PQ0spXFx0Kz0gcHRwX21vY2sub1xcbmRyaXZlcnMvcHRwL01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19QVFBfMTU4OF9DTE9DS19WTVcpXFx0Kz0gcHRwX3Ztdy5vXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfbW9jay5jLTExLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcXHUwMDNlXFxuZHJpdmVycy9wdHAvcHRwX21vY2suYzoxMjojaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX21vY2suaFxcdTAwM2VcXG5kcml2ZXJzL3B0cC9wdHBfbW9jay5jLTEzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC90aW1lY291bnRlci5oXFx1MDAzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMzoyNy40NDkyMjgyNzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4OTQ4ODQ3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbm5lciBtb25vbG9ndWU6XG5cbioqQ2xvY2sgU291cmNlIENvbnNpZGVyYXRpb25zKipcblxuUmlnaHQsIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBpcyBhIHNvbGlkIG9wdGlvbiBmb3IgdGVzdGluZyBhbmQgc2ltdWxhdGlvbi4gSXQgZ2l2ZXMgbWUgYSBjb250cm9sbGVkIGVudmlyb25tZW50LCB3aGljaCBpcyBpbnZhbHVhYmxlLiBCdXQgSSBuZWVkIHRvIGFsc28gY29uc2lkZXIgb3RoZXIgcG9zc2liaWxpdGllcyB0byBlbnN1cmUgY29tcHJlaGVuc2l2ZSBjb3ZlcmFnZS5cblxuTXkgbWluZCBpbW1lZGlhdGVseSB0dXJucyB0byBgUFRQXzE1ODhfQ0xPQ0tfS1ZNYC4gSSdtIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IGhvdyB0aGF0IG1pZ2h0IGludGVyYWN0IHdpdGggdGhpcyBzeXN0ZW0uIENvdWxkIHRoYXQgb2ZmZXIgYSBtb3JlIHJlYWxpc3RpYyB0ZXN0LCBvciBwb3RlbnRpYWxseSByZXZlYWwgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSBLVk0gdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQ/IEkgbmVlZCB0byB0aGluayB0aHJvdWdoIGhvdyBpdCBpbnRlcmZhY2VzLCBpZiBpdCdzIHRoZSByaWdodCBjaG9pY2UgZm9yIHRoZSBzY2FsZSBvZiB0ZXN0IEknbSBwbGFubmluZywgYW5kIGhvdyBpdCBkaWZmZXJzIGluIHRlcm1zIG9mIHJlc291cmNlIHV0aWxpemF0aW9uIGZyb20gdGhlIG1vY2suIE15IGRlY2lzaW9uIGhpbmdlcyBvbiBob3cgcmVsZXZhbnQgZWFjaCBvcHRpb24gaXMgdG8gdGhlIGFjdHVhbCBkZXBsb3ltZW50IGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODIwLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzM6MzAuODM4NzE5MDU4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjkyOTQ1MDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZz0xMDM9Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSFxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjEtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTIzLVxcdHRyaXN0YXRlIFxcXCJLVk0gdmlydHVhbCBQVFAgY2xvY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjMzOjM1LjEzMTY3MDc2M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc4MjYzODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIGBwdHBfY2xvY2tfYWRqdGltZWAqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzLiBUaGUgdGFzayBhdCBoYW5kIGludm9sdmVzIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBQVFAgY2xvY2sgYWRqdXN0cyB0aW1lLCBzbyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYHB0cF9jbG9ja19hZGp0aW1lYCBmdW5jdGlvbi4gUmlnaHQsIHRoYXQncyBkZWZpbmVkIGluIGBkcml2ZXJzL3B0cC9wdHBfY2xvY2suY2AsIHNvIEknbGwgaGVhZCBvdmVyIHRoZXJlLiBJJ20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIHRoZSBQVFAgY2xvY2sgZHJpdmVyIGNvZGUgYmFzZSwgc28gSSBleHBlY3QgdGhpcyB0byBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBhbmFseXNpcy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTc1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzM6MzguMzA5OTM4MDU1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9wdHBfY2xvY2suY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNTA6XFx0XFxuIDE1MTpcXHRcXHRcXHQvKiBNYWtlIHN1cmUgdGhlIG9mZnNldCBpcyB2YWxpZCAqL1xcbiAxNTI6XFx0XFx0XFx0ZXJyID0gcHRwX2Nsb2NrX2dldHRpbWUocGMsIFxcdTAwMjZ0czIpO1xcbiAxNTM6XFx0XFx0XFx0aWYgKGVycilcXG4gMTU0OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDE1NTpcXHRcXHRcXHR0czIgPSB0aW1lc3BlYzY0X2FkZCh0czIsIHRzKTtcXG4gMTU2OlxcdFxcdFxcdGlmICghdGltZXNwZWM2NF92YWxpZF9zZXR0b2QoXFx1MDAyNnRzMikpXFxuIDE1NzpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTU4OlxcdFxcbiAxNTk6XFx0XFx0XFx0a3QgPSB0aW1lc3BlYzY0X3RvX2t0aW1lKHRzKTtcXG4gMTYwOlxcdFxcdFxcdGRlbHRhID0ga3RpbWVfdG9fbnMoa3QpO1xcbiAxNjE6XFx0XFx0XFx0ZXJyID0gb3BzLVxcdTAwM2VhZGp0aW1lKG9wcywgZGVsdGEpO1xcbiAxNjI6XFx0XFx0fSBlbHNlIGlmICh0eC1cXHUwMDNlbW9kZXMgXFx1MDAyNiBBREpfRlJFUVVFTkNZKSB7XFxuIDE2MzpcXHRcXHRcXHRsb25nIHBwYjtcXG4gMTY0OlxcdFxcdFxcdHM2NCB0bXA7XFxuIDE2NTpcXHRcXG4gMTY2OlxcdFxcdFxcdC8qXFxuIDE2NzpcXHRcXHRcXHQgKiBzY2FsZWRfcHBtX3RvX3BwYigpIG11bHRpcGxpZXMgKDEgKyBmcmVxKSBieSAxMjUgaW4gczY0O1xcbiAxNjg6XFx0XFx0XFx0ICogcmVqZWN0IGEgLVxcdTAwM2VmcmVxIGxhcmdlIGVub3VnaCB0byBvdmVyZmxvdyB0aGF0LCB3aGljaCB3b3VsZFxcbiAxNjk6XFx0XFx0XFx0ICogb3RoZXJ3aXNlIHdyYXAgdGhlIHJlc3VsdCBiYWNrIGludG8gdGhlIG1heF9hZGogcmFuZ2UuXFxuIDE3MDpcXHRcXHRcXHQgKi9cXG4gMTcxOlxcdFxcdFxcdGlmIChjaGVja19hZGRfb3ZlcmZsb3coKHM2NCl0eC1cXHUwMDNlZnJlcSwgKHM2NCkxLCBcXHUwMDI2dG1wKSB8fFxcbiAxNzI6XFx0XFx0XFx0ICAgIGNoZWNrX211bF9vdmVyZmxvdyh0bXAsIChzNjQpMTI1LCBcXHUwMDI2dG1wKSlcXG4gMTczOlxcdFxcdFxcdFxcdHJldHVybiAtRVJBTkdFO1xcbiAxNzQ6XFx0XFx0XFx0cHBiID0gc2NhbGVkX3BwbV90b19wcGIodHgtXFx1MDAzZWZyZXEpO1xcbiAxNzU6XFx0XFx0XFx0aWYgKHBwYiBcXHUwMDNlIG9wcy1cXHUwMDNlbWF4X2FkaiB8fCBwcGIgXFx1MDAzYyAtb3BzLVxcdTAwM2VtYXhfYWRqKVxcbiAxNzY6XFx0XFx0XFx0XFx0cmV0dXJuIC1FUkFOR0U7XFxuIDE3NzpcXHRcXHRcXHRlcnIgPSBvcHMtXFx1MDAzZWFkamZpbmUob3BzLCB0eC1cXHUwMDNlZnJlcSk7XFxuIDE3ODpcXHRcXHRcXHRpZiAoIWVycilcXG4gMTc5OlxcdFxcdFxcdFxcdHB0cC1cXHUwMDNlZGlhbGVkX2ZyZXF1ZW5jeSA9IHR4LVxcdTAwM2VmcmVxO1xcbiAxODA6XFx0XFx0fSBlbHNlIGlmICh0eC1cXHUwMDNlbW9kZXMgXFx1MDAyNiBBREpfT0ZGU0VUKSB7XFxuIDE4MTpcXHRcXHRcXHRpZiAob3BzLVxcdTAwM2VhZGpwaGFzZSkge1xcbiAxODI6XFx0XFx0XFx0XFx0czMyIG1heF9waGFzZV9hZGogPSBvcHMtXFx1MDAzZWdldG1heHBoYXNlKG9wcyk7XFxuIDE4MzpcXHRcXHRcXHRcXHRzMzIgb2Zmc2V0ID0gdHgtXFx1MDAzZW9mZnNldDtcXG4gMTg0OlxcdFxcbiAxODU6XFx0XFx0XFx0XFx0aWYgKCEodHgtXFx1MDAzZW1vZGVzIFxcdTAwMjYgQURKX05BTk8pKVxcbiAxODY6XFx0XFx0XFx0XFx0XFx0b2Zmc2V0ICo9IE5TRUNfUEVSX1VTRUM7XFxuIDE4NzpcXHRcXG4gMTg4OlxcdFxcdFxcdFxcdGlmIChvZmZzZXQgXFx1MDAzZSBtYXhfcGhhc2VfYWRqIHx8IG9mZnNldCBcXHUwMDNjIC1tYXhfcGhhc2VfYWRqKVxcbiAxODk6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FUkFOR0U7XFxuIDE5MDpcXHRcXG4gMTkxOlxcdFxcdFxcdFxcdGVyciA9IG9wcy1cXHUwMDNlYWRqcGhhc2Uob3BzLCBvZmZzZXQpO1xcbiAxOTI6XFx0XFx0XFx0fVxcbiAxOTM6XFx0XFx0fSBlbHNlIGlmICh0eC1cXHUwMDNlbW9kZXMgPT0gMCkge1xcbiAxOTQ6XFx0XFx0XFx0dHgtXFx1MDAzZWZyZXEgPSBwdHAtXFx1MDAzZWRpYWxlZF9mcmVxdWVuY3k7XFxuIDE5NTpcXHRcXHRcXHRlcnIgPSAwO1xcbiAxOTY6XFx0XFx0fVxcbiAxOTc6XFx0XFxuIDE5ODpcXHRcXHRyZXR1cm4gZXJyO1xcbiAxOTk6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMzozOC4zMTAwNzI5MzVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY0MjQ4NDkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBwdHBfY2xvY2tfYWRqdGltZSoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiByZXZpZXdpbmcgdGhlIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGZvY3VzIGZvciBmdXp6aW5nIG5lZWRzIHRvIGJlIG9uIGBwdHBfY2xvY2tfYWRqdGltZWAuIEl0IHNlZW1zIHRoYXQgZnVuY3Rpb24gaGFzIGJlZW4gbW9kaWZpZWQgYW5kIHRodXMgcmVxdWlyZXMgY2xvc2VyIHNjcnV0aW55LiBMZXQncyBtYWtlIHN1cmUgd2UncmUgY292ZXJpbmcgYWxsIGJhc2VzLlxuXG5UaGUgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb25zIGFyZSBgUFRQXzE1ODhfQ0xPQ0tgIGFuZCwgY3J1Y2lhbGx5LCBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AgKG9yIHBvc3NpYmx5IGBQVFBfMTU4OF9DTE9DS19LVk1gLCB0aG91Z2ggSSdsbCBoYXZlIHRvIGludmVzdGlnYXRlIHRoYXQgZnVydGhlcikuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIGlmIGBQVFBfMTU4OF9DTE9DS2AgYWxvbmUgaXMgc3VmZmljaWVudCBmb3Igb3VyIHB1cnBvc2VzLCBvciBpZiBhIHNwZWNpZmljIGRyaXZlciBpcyBhbHNvIHJlcXVpcmVkLiBDb25zaWRlcmluZyBob3cgc3l6a2FsbGVyIG9wZXJhdGVzIHdpdGggYG5ldGRldnNpbWAgYW5kIHNpbWlsYXIgdG9vbHMsIHRoZSBpbmNsdXNpb24gb2YgYFBUUF8xNTg4X0NMT0NLX01PQ0tgIGlzIGRlZmluaXRlbHkgYSBnb29kIGNhbGwuIEl0IGFsbG93cyBmb3IgbW9yZSBlZmZpY2llbnQgdGVzdGluZyB3aXRoaW4gdGhhdCBmcmFtZXdvcmsuIFRoZXJlZm9yZSwgdGhlIHBsYW4gaXMgdG8gaW5jbHVkZSBib3RoIGBQVFBfMTU4OF9DTE9DS2AgYW5kIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBpbiB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uLlxuXG5Ob3csIGxldCdzIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgYHB0cF9jbG9ja19hZGp0aW1lYCBpcyBpbmRlZWQgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZS4gUXVpY2sgY2hlY2suLi4gWWVwLCBpdCdzIGFzc2lnbmVkIHRvIGBwdHBfY2xvY2tfb3BzLmNsb2NrX2FkanRpbWVgLCBhbmQgdGhhdCBzdHJ1Y3QsIGBwdHBfY2xvY2tfb3BzYCwgaXMgdXRpbGl6ZWQgaW4gYHBvc2l4X2Nsb2NrX3JlZ2lzdGVyYC4gVGhhdCBjb25maXJtcyBpdCDigJMgdGhlIGZ1bmN0aW9uICppcyogcmVhY2hhYmxlLiBFeGNlbGxlbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNzYsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMzo0My45NTI1NjExOTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTkxNDcwODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicG9zaXhfY2xvY2tfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MzI4PXN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9ja19yZWdpc3RlcihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy00NTEtXFx0LyogQ3JlYXRlIGEgcG9zaXggY2xvY2sgYW5kIGxpbmsgaXQgdG8gdGhlIGRldmljZS4gKi9cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYzo0NTI6XFx0ZXJyID0gcG9zaXhfY2xvY2tfcmVnaXN0ZXIoXFx1MDAyNnB0cC1cXHUwMDNlY2xvY2ssIFxcdTAwMjZwdHAtXFx1MDAzZWRldik7XFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtNDUzLVxcdGlmIChlcnIpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaD0zOT1zdHJ1Y3QgcG9zaXhfY2xvY2tfb3BlcmF0aW9ucyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtODEtICogRHJpdmVycyBzaG91bGQgc3VwcGx5IGFuIGluaXRpYWxpemVkIGJ1dCBub3QgZXhwb3NlZCBzdHJ1Y3QgZGV2aWNlXFxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oOjgyOiAqIHRvIHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKCkuIEl0IGlzIHVzZWQgdG8gbWFuYWdlIGxpZmV0aW1lIG9mIHRoZVxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC04My0gKiBkcml2ZXIncyBwcml2YXRlIHN0cnVjdHVyZS4gSXQncyAncmVsZWFzZScgZmllbGQgc2hvdWxkIGJlIHNldCB0b1xcbi0tXFxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oPTExMD1zdHJ1Y3QgcG9zaXhfY2xvY2tfY29udGV4dCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMTE2LS8qKlxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDoxMTc6ICogcG9zaXhfY2xvY2tfcmVnaXN0ZXIoKSAtIHJlZ2lzdGVyIGEgbmV3IGNsb2NrXFxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oLTExOC0gKiBAY2xrOiAgIFBvaW50ZXIgdG8gdGhlIGNsb2NrLiBDYWxsZXIgbXVzdCBwcm92aWRlICdvcHMnIGZpZWxkXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMTI4LSAqL1xcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDoxMjk6aW50IHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwb3NpeF9jbG9jayAqY2xrLCBzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC0xMzAtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMTMyLSAqIHBvc2l4X2Nsb2NrX3VucmVnaXN0ZXIoKSAtIHVucmVnaXN0ZXIgYSBjbG9ja1xcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDoxMzM6ICogQGNsazogQ2xvY2sgaW5zdGFuY2UgcHJldmlvdXNseSByZWdpc3RlcmVkIHZpYSBwb3NpeF9jbG9ja19yZWdpc3RlcigpXFxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oLTEzNC0gKlxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYz0xNTA9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcG9zaXhfY2xvY2tfZmlsZV9vcGVyYXRpb25zID0ge1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYy0xNTktXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYzoxNjA6aW50IHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwb3NpeF9jbG9jayAqY2xrLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYy0xNjEte1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYy0xNzctfVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmM6MTc4OkVYUE9SVF9TWU1CT0xfR1BMKHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKTtcXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTE3OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzM6NDkuNDUxNzE0NzA3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDY3OTU3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkRlbHZpbmcgaW50byB0aGUgUE9TSVggQ2xvY2sgTWVjaGFuaXNtKipcblxuUmlnaHQsIHNvIGBwb3NpeF9jbG9ja19yZWdpc3RlcmAg4oCTIHRoYXQncyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIGNoYXJhY3RlciBkZXZpY2UsIGlzbid0IGl0PyBPa2F5LCBzbyB0aGF0IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIGludGVyZmFjZSwgYSB3YXkgZm9yIHVzZXIgc3BhY2UgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgY2xvY2sgaXRzZWxmLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGRldGFpbHMuIExldCBtZSBqdW1wIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IGBrZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jYCBoYXMgdG8gdGVsbCBtZS4gSSBiZXQgdGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIGxpZXMuIEknbGwgc3RhcnQgZGlnZ2luZyBpbiB0aGVyZSwgbG9va2luZyBmb3IgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiwgdGhlIGNoYXJhY3RlciBkZXZpY2UgcmVnaXN0cmF0aW9uIGl0c2VsZiwgYW5kIGhvdyBpdCBoYW5kbGVzIHRoZSBmdW5kYW1lbnRhbCBjbG9jayBvcGVyYXRpb25zLiBJJ20ga2VlbiB0byBzZWUgdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyB1c2VkIGFuZCB0aGUgbWV0aG9kcyBpbnZvbHZlZCBpbiBpbnRlcmZhY2luZyBpdCB3aXRoIHRoZSBWRlMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBob3cgUE9TSVggY2xvY2tzIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUga2VybmVsIGxldmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDY2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzM6NTIuNjk4NTEzMjg0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE1MDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwb3NpeF9jbG9ja19maWxlX29wZXJhdGlvbnMgPSB7XFxuIDE1MTpcXHRcXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbiAxNTI6XFx0XFx0LnJlYWRcXHRcXHQ9IHBvc2l4X2Nsb2NrX3JlYWQsXFxuIDE1MzpcXHRcXHQucG9sbFxcdFxcdD0gcG9zaXhfY2xvY2tfcG9sbCxcXG4gMTU0OlxcdFxcdC51bmxvY2tlZF9pb2N0bFxcdD0gcG9zaXhfY2xvY2tfaW9jdGwsXFxuIDE1NTpcXHRcXHQuY29tcGF0X2lvY3RsXFx0PSBwb3NpeF9jbG9ja19pb2N0bCxcXG4gMTU2OlxcdFxcdC5vcGVuXFx0XFx0PSBwb3NpeF9jbG9ja19vcGVuLFxcbiAxNTc6XFx0XFx0LnJlbGVhc2VcXHQ9IHBvc2l4X2Nsb2NrX3JlbGVhc2UsXFxuIDE1ODpcXHR9O1xcbiAxNTk6XFx0XFxuIDE2MDpcXHRpbnQgcG9zaXhfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IHBvc2l4X2Nsb2NrICpjbGssIHN0cnVjdCBkZXZpY2UgKmRldilcXG4gMTYxOlxcdHtcXG4gMTYyOlxcdFxcdGludCBlcnI7XFxuIDE2MzpcXHRcXG4gMTY0OlxcdFxcdGluaXRfcndzZW0oXFx1MDAyNmNsay1cXHUwMDNlcndzZW0pO1xcbiAxNjU6XFx0XFxuIDE2NjpcXHRcXHRjZGV2X2luaXQoXFx1MDAyNmNsay1cXHUwMDNlY2RldiwgXFx1MDAyNnBvc2l4X2Nsb2NrX2ZpbGVfb3BlcmF0aW9ucyk7XFxuIDE2NzpcXHRcXHRlcnIgPSBjZGV2X2RldmljZV9hZGQoXFx1MDAyNmNsay1cXHUwMDNlY2RldiwgZGV2KTtcXG4gMTY4OlxcdFxcdGlmIChlcnIpIHtcXG4gMTY5OlxcdFxcdFxcdHByX2VycihcXFwiJXMgdW5hYmxlIHRvIGFkZCBkZXZpY2UgJWQ6JWRcXFxcblxcXCIsXFxuIDE3MDpcXHRcXHRcXHRcXHRkZXZfbmFtZShkZXYpLCBNQUpPUihkZXYtXFx1MDAzZWRldnQpLCBNSU5PUihkZXYtXFx1MDAzZWRldnQpKTtcXG4gMTcxOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDE3MjpcXHRcXHR9XFxuIDE3MzpcXHRcXHRjbGstXFx1MDAzZWNkZXYub3duZXIgPSBjbGstXFx1MDAzZW9wcy5vd25lcjtcXG4gMTc0OlxcdFxcdGNsay1cXHUwMDNlZGV2ID0gZGV2O1xcbiAxNzU6XFx0XFxuIDE3NjpcXHRcXHRyZXR1cm4gMDtcXG4gMTc3OlxcdH1cXG4gMTc4OlxcdEVYUE9SVF9TWU1CT0xfR1BMKHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKTtcXG4gMTc5OlxcdFxcbiAxODA6XFx0dm9pZCBwb3NpeF9jbG9ja191bnJlZ2lzdGVyKHN0cnVjdCBwb3NpeF9jbG9jayAqY2xrKVxcbiAxODE6XFx0e1xcbiAxODI6XFx0XFx0Y2Rldl9kZXZpY2VfZGVsKFxcdTAwMjZjbGstXFx1MDAzZWNkZXYsIGNsay1cXHUwMDNlZGV2KTtcXG4gMTgzOlxcdFxcbiAxODQ6XFx0XFx0ZG93bl93cml0ZShcXHUwMDI2Y2xrLVxcdTAwM2Vyd3NlbSk7XFxuIDE4NTpcXHRcXHRjbGstXFx1MDAzZXpvbWJpZSA9IHRydWU7XFxuIDE4NjpcXHRcXHR1cF93cml0ZShcXHUwMDI2Y2xrLVxcdTAwM2Vyd3NlbSk7XFxuIDE4NzpcXHRcXG4gMTg4OlxcdFxcdHB1dF9kZXZpY2UoY2xrLVxcdTAwM2VkZXYpO1xcbiAxODk6XFx0fVxcbiAxOTA6XFx0RVhQT1JUX1NZTUJPTF9HUEwocG9zaXhfY2xvY2tfdW5yZWdpc3Rlcik7XFxuIDE5MTpcXHRcXG4gMTkyOlxcdHN0cnVjdCBwb3NpeF9jbG9ja19kZXNjIHtcXG4gMTkzOlxcdFxcdHN0cnVjdCBmaWxlICpmcDtcXG4gMTk0OlxcdFxcdHN0cnVjdCBwb3NpeF9jbG9jayAqY2xrO1xcbiAxOTU6XFx0fTtcXG4gMTk2OlxcdFxcbiAxOTc6XFx0c3RhdGljIGludCBnZXRfY2xvY2tfZGVzYyhjb25zdCBjbG9ja2lkX3QgaWQsIHN0cnVjdCBwb3NpeF9jbG9ja19kZXNjICpjZClcXG4gMTk4OlxcdHtcXG4gMTk5OlxcdFxcdHN0cnVjdCBmaWxlICpmcCA9IGZnZXQoY2xvY2tpZF90b19mZChpZCkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozMzo1Mi42OTg2OTA4MjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1MjU2MzA3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgVGltZWtlZXBpbmcgTWF6ZSoqXG5cbkhvbGQgb24gYSBzZWNvbmQuLi4gSSB3YXMganVzdCB0aGlua2luZyBhYm91dCBgcG9zaXhfY2xvY2tfYWRqdGltZWAuIElzbid0IHRoYXQgZnVuY3Rpb24sIHRoZSBvbmUgdGhhdCBoYW5kbGVzIGFkanVzdG1lbnRzIHRvIHRoZSBzeXN0ZW0gY2xvY2ssIHN1cHBvc2VkIHRvIGJlIGhvb2tlZCBpbnRvIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3RydWN0dXJlcz8gQnV0IHdhaXQsIG5vLCB0aGF0IGRvZXNuJ3Qgc2VlbSByaWdodC4gSXQgc2VlbXMgdG8gYmUgcGFydCBvZiB0aGUgc3lzY2FsbCBpbXBsZW1lbnRhdGlvbiBmb3IgYGNsb2NrX2FkanRpbWVgLiBJdCdzIHVzZWQgYXQgdGhlIHN5c2NhbGwgbGF5ZXIgaXRzZWxmLCBub3QgYm91bmQgdXAgYXMgYW4gb3BlcmF0aW9uIG9uIHNvbWUgVkZTIG5vZGUuXG5cbkFscmlnaHQsIHNvIGlmIGBjbG9ja19hZGp0aW1lYCBpdHNlbGYgaXMgYSBzeXNjYWxsLCB0aGVuIHRoYXQgbWVhbnMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBwb3NpeF9jbG9ja19hZGp0aW1lYCBzaG91bGQgYmUgc29tZXdoZXJlIGluIHRoZSBjb3JlIHRpbWVrZWVwaW5nIGluZnJhc3RydWN0dXJlLiBNeSBndXQgZmVlbGluZyBpcyBpdCdzIHByb2JhYmx5IGxvY2F0ZWQgaW4gYGtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmNgLiBMZXQgbWUganVzdCB2ZXJpZnkgYnkgc2VhcmNoaW5nIGZvciBgY2xvY2tfYWRqdGltZWAgd2l0aGluIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgSSBmaW5kLiBUaGF0IHNob3VsZCBxdWlja2x5IHBvaW50IG1lIHRvIHRoZSByZWxldmFudCBjb2RlIHBhdGguIFRpbWUgdG8ganVtcCBpbiBhbmQgY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MDUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjMzOjU2LjI1MTI1NzcxN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczMzc4OTQ2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjbG9ja19hZGp0aW1lXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9wdHAucnN0PTQ0PVBUUCBoYXJkd2FyZSBjbG9jayB1c2VyIHNwYWNlIEFQSVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B0cC5yc3QtNDktICAgdGhlIGNoYXJhY3RlciBkZXZpY2UgYXMgYSBQT1NJWCBjbG9jayBpZCBhbmQgbWF5IGNhbGxcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHRwLnJzdDo1MDogICBjbG9ja19nZXR0aW1lLCBjbG9ja19zZXR0aW1lLCBhbmQgY2xvY2tfYWRqdGltZS4gIFRoZXNlIGNhbGxzXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B0cC5yc3QtNTEtICAgaW1wbGVtZW50IHRoZSBiYXNpYyBjbG9jayBvcGVyYXRpb25zLlxcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDI5LTQ5OFxcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDMwOjQ5OVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbmFyY2gvYWxwaGEva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQzMS01MDBcXHRjb21tb25cXHRzeW5jZnNcXHRcXHRcXHRcXHRzeXNfc3luY2ZzXFxuLS1cXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC0zODktMzcxXFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDozOTA6MzcyXFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC0zOTEtMzczXFx0Y29tbW9uXFx0c3luY2ZzXFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50YmwtNDIyLTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50Ymw6NDIzOjQwNVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50YmwtNDI0LTQwNlxcdGNvbW1vblxcdGNsb2NrX2dldHJlc190aW1lNjRcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTM4Ni0zNzFcXHRjb21tb25cXHRvcGVuX2J5X2hhbmRsZV9hdFxcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxcdGNvbXBhdF9zeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsOjM4NzozNzJcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lXFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtMzg4LTM3M1xcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDE5LTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibDo0MjA6NDA1XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTQyMS00MDZcXHRjb21tb25cXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zNTEtMzQxXFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM1MjozNDJcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lXFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzUzLTM0M1xcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA3LTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MDg6NDA1XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQwOS00MDZcXHRjb21tb25cXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zODItMzcyXFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM4MzozNzNcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lXFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzg0LTM3NFxcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDEzLTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MTQ6NDA1XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxNS00MDZcXHRjb21tb25cXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMzE1LTMwNFxcdG4zMlxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50Ymw6MzE2OjMwNVxcdG4zMlxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMzE3LTMwNlxcdG4zMlxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTM0Ni00MDRcXHRuMzJcXHRjbG9ja19zZXR0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsOjM0Nzo0MDVcXHRuMzJcXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTM0OC00MDZcXHRuMzJcXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzEwLTI5OVxcdG42NFxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MzExOjMwMFxcdG42NFxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTMxMi0zMDFcXHRuNjRcXHRzeW5jZnNcXHRcXHRcXHRcXHRzeXNfc3luY2ZzXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0zNTQtMzQwXFx0bzMyXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRjb21wYXRfc3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6MzU1OjM0MVxcdG8zMlxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtMzU2LTM0MlxcdG8zMlxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsLTM5NS00MDRcXHRvMzJcXHRjbG9ja19zZXR0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6Mzk2OjQwNVxcdG8zMlxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0zOTctNDA2XFx0bzMyXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzY3LTMyM1xcdGNvbW1vblxcdGZhbm90aWZ5X21hcmtcXHRcXHRzeXNfZmFub3RpZnlfbWFya1xcdFxcdGNvbXBhdF9zeXNfZmFub3RpZnlfbWFya1xcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozNjg6MzI0XFx0MzJcXHRjbG9ja19hZGp0aW1lXFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozNjk6MzI0XFx0NjRcXHRjbG9ja19hZGp0aW1lXFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcwLTMyNVxcdGNvbW1vblxcdG5hbWVfdG9faGFuZGxlX2F0XFx0c3lzX25hbWVfdG9faGFuZGxlX2F0XFxuLS1cXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA2LTQwNFxcdDMyXFx0Y2xvY2tfc2V0dGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MDc6NDA1XFx0MzJcXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQwOC00MDZcXHQzMlxcdGNsb2NrX2dldHJlc190aW1lNjRcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NDgtMzQ2XFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRjb21wYXRfc3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NDk6MzQ3XFx0MzJcXHRjbG9ja19hZGp0aW1lXFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDUwOjM0N1xcdDY0XFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTE6MzQ3XFx0c3B1XFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTItMzQ4XFx0Y29tbW9uXFx0c3luY2ZzXFx0XFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00OTgtNDA0XFx0MzJcXHRjbG9ja19zZXR0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0OTk6NDA1XFx0MzJcXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MDAtNDA2XFx0MzJcXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcdFxcdHN5c19jbG9ja19nZXRyZXNcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjkwLTMzNlxcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDoyOTE6MzM3XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yOTItMzM4XFx0Y29tbW9uXFx0c3luY2ZzXFx0XFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcwLTM2MFxcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzcxOjM2MVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzcyLTM2MlxcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxMS00MDRcXHRjb21tb25cXHRjbG9ja19zZXR0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxMjo0MDVcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxMy00MDZcXHRjb21tb25cXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3NwYXJjXzY0LmM9NTY4PVNZU0NBTExfREVGSU5FMShzcGFyY19hZGp0aW1leCwgc3RydWN0IF9fa2VybmVsX3RpbWV4IF9fdXNlciAqLCB0eGNfcClcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL3N5c19zcGFyY182NC5jLTU5MS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNfc3BhcmNfNjQuYzo1OTI6U1lTQ0FMTF9ERUZJTkUyKHNwYXJjX2Nsb2NrX2FkanRpbWUsIGNvbnN0IGNsb2NraWRfdCwgd2hpY2hfY2xvY2ssXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzX3NwYXJjXzY0LmMtNTkzLVxcdFxcdHN0cnVjdCBfX2tlcm5lbF90aW1leCBfX3VzZXIgKiwgdHhjX3ApXFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNfc3BhcmNfNjQuYy02MTgtXFx0dHhjLnRpbWUudHZfdXNlYyA9IHR2LVxcdTAwM2V0dl91c2VjO1xcbmFyY2gvc3BhcmMva2VybmVsL3N5c19zcGFyY182NC5jOjYxOTpcXHRyZXQgPSBkb19jbG9ja19hZGp0aW1lKHdoaWNoX2Nsb2NrLCBcXHUwMDI2dHhjKTtcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNfc3BhcmNfNjQuYy02MjAtXFx0dHYtXFx1MDAzZXR2X3VzZWMgPSB0eGMudGltZS50dl91c2VjO1xcbi0tXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDAzLTMzM1xcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFx0XFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQwNDozMzRcXHQzMlxcdGNsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDA1OjMzNFxcdDY0XFx0Y2xvY2tfYWRqdGltZVxcdFxcdHN5c19zcGFyY19jbG9ja19hZGp0aW1lXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA2LTMzNVxcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1My00MDRcXHQzMlxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTQ6NDA1XFx0MzJcXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDU1LTQwNlxcdDMyXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0zNTctMzQyXFx0aTM4NlxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFx0XFx0Y29tcGF0X3N5c19vcGVuX2J5X2hhbmRsZV9hdFxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjM1ODozNDNcXHRpMzg2XFx0Y2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0zNTktMzQ0XFx0aTM4NlxcdHN5bmNmc1xcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxMy00MDRcXHRpMzg2XFx0Y2xvY2tfc2V0dGltZTY0XFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MTQ6NDA1XFx0aTM4NlxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDE1LTQwNlxcdGkzODZcXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzE2LTMwNFxcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6MzE3OjMwNVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTMxOC0zMDZcXHRjb21tb25cXHRzeW5jZnNcXHRcXHRcXHRzeXNfc3luY2ZzXFxuLS1cXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzUxLTMyOFxcdGNvbW1vblxcdHJ0X3Rnc2lncXVldWVpbmZvXFx0XFx0c3lzX3J0X3Rnc2lncXVldWVpbmZvXFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM1MjozMjlcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lXFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zNTMtMzMwXFx0Y29tbW9uXFx0cHJsaW1pdDY0XFx0XFx0XFx0c3lzX3BybGltaXQ2NFxcbi0tXFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM3OC00MDRcXHRjb21tb25cXHRjbG9ja19zZXR0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozNzk6NDA1XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzgwLTQwNlxcdGNvbW1vblxcdGNsb2NrX2dldHJlc190aW1lNjRcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYz0xMTE9c3RhdGljIGludCBwdHBfY2xvY2tfZ2V0dGltZShzdHJ1Y3QgcG9zaXhfY2xvY2sgKnBjLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHApXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0xMjItXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6MTIzOnN0YXRpYyBpbnQgcHRwX2Nsb2NrX2FkanRpbWUoc3RydWN0IHBvc2l4X2Nsb2NrICpwYywgc3RydWN0IF9fa2VybmVsX3RpbWV4ICp0eClcXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0xMjQte1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM9MjAxPXN0YXRpYyBzdHJ1Y3QgcG9zaXhfY2xvY2tfb3BlcmF0aW9ucyBwdHBfY2xvY2tfb3BzID0ge1xcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTIwMi1cXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jOjIwMzpcXHQuY2xvY2tfYWRqdGltZVxcdD0gcHRwX2Nsb2NrX2FkanRpbWUsXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMjA0LVxcdC5jbG9ja19nZXR0aW1lXFx0PSBwdHBfY2xvY2tfZ2V0dGltZSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF92Y2xvY2suYz00NT1zdGF0aWMgaW50IHB0cF92Y2xvY2tfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX3ZjbG9jay5jLTYxLVxcbmRyaXZlcnMvcHRwL3B0cF92Y2xvY2suYzo2MjpzdGF0aWMgaW50IHB0cF92Y2xvY2tfYWRqdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbmRyaXZlcnMvcHRwL3B0cF92Y2xvY2suYy02My17XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmM9MTY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gcHRwX3ZjbG9ja19pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX3ZjbG9jay5jLTE2OC1cXHQuYWRqZmluZVxcdD0gcHRwX3ZjbG9ja19hZGpmaW5lLFxcbmRyaXZlcnMvcHRwL3B0cF92Y2xvY2suYzoxNjk6XFx0LmFkanRpbWVcXHQ9IHB0cF92Y2xvY2tfYWRqdGltZSxcXG5kcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmMtMTcwLVxcdC5zZXR0aW1lNjRcXHQ9IHB0cF92Y2xvY2tfc2V0dGltZSxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmM9Mjg3PXN0YXRpYyBpbnQgcHRwX3ZtY2xvY2tfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBkZWx0YSlcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmMtMjkxLVxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmM6MjkyOnN0YXRpYyBpbnQgcHRwX3ZtY2xvY2tfYWRqdGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmMtMjkzLXtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmM9MzE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gcHRwX3ZtY2xvY2tfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmMtMzI0LVxcdC5hZGpmaW5lXFx0PSBwdHBfdm1jbG9ja19hZGpmaW5lLFxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmM6MzI1OlxcdC5hZGp0aW1lXFx0PSBwdHBfdm1jbG9ja19hZGp0aW1lLFxcbmRyaXZlcnMvcHRwL3B0cF92bWNsb2NrLmMtMzI2LVxcdC5nZXR0aW1leDY0XFx0PSBwdHBfdm1jbG9ja19nZXR0aW1leCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaD0xNz1zdHJ1Y3QgcG9zaXhfY2xvY2tfY29udGV4dDtcXG4tLVxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaC0yOC0gKiBAb3duZXI6ICAgICAgICAgIFRoZSBjbG9jayBkcml2ZXIgc2hvdWxkIHNldCB0byBUSElTX01PRFVMRVxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaDoyOTogKiBAY2xvY2tfYWRqdGltZTogIEFkanVzdCB0aGUgY2xvY2tcXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtMzAtICogQGNsb2NrX2dldHRpbWU6ICBSZWFkIHRoZSBjdXJyZW50IHRpbWVcXG4tLVxcbmluY2x1ZGUvbGludXgvcG9zaXgtY2xvY2suaD0zOT1zdHJ1Y3QgcG9zaXhfY2xvY2tfb3BlcmF0aW9ucyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtNDEtXFxuaW5jbHVkZS9saW51eC9wb3NpeC1jbG9jay5oOjQyOlxcdGludCAgKCpjbG9ja19hZGp0aW1lKShzdHJ1Y3QgcG9zaXhfY2xvY2sgKnBjLCBzdHJ1Y3QgX19rZXJuZWxfdGltZXggKnR4KTtcXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LWNsb2NrLmgtNDMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg9OTAxPWFzbWxpbmthZ2UgbG9uZyBzeXNfb3Blbl9ieV9oYW5kbGVfYXQoaW50IG1vdW50ZGlyZmQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtOTAzLVxcdFxcdFxcdFxcdCAgICAgIGludCBmbGFncyk7XFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oOjkwNDphc21saW5rYWdlIGxvbmcgc3lzX2Nsb2NrX2FkanRpbWUoY2xvY2tpZF90IHdoaWNoX2Nsb2NrLFxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC05MDUtXFx0XFx0XFx0XFx0c3RydWN0IF9fa2VybmVsX3RpbWV4IF9fdXNlciAqdHgpO1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaDo5MDY6YXNtbGlua2FnZSBsb25nIHN5c19jbG9ja19hZGp0aW1lMzIoY2xvY2tpZF90IHdoaWNoX2Nsb2NrLFxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC05MDctXFx0XFx0XFx0XFx0c3RydWN0IG9sZF90aW1leDMyIF9fdXNlciAqdHgpO1xcbi0tXFxuaW5jbHVkZS9saW51eC90aW1leC5oPTE1ND1leHRlcm4gaW50IGRvX2FkanRpbWV4KHN0cnVjdCBfX2tlcm5lbF90aW1leCAqKTtcXG5pbmNsdWRlL2xpbnV4L3RpbWV4Lmg6MTU1OmV4dGVybiBpbnQgZG9fY2xvY2tfYWRqdGltZShjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqIGt0eCk7XFxuaW5jbHVkZS9saW51eC90aW1leC5oLTE1Ni1cXG4tLVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD02NDQ9X19TWVNDQUxMKF9fTlJfb3Blbl9ieV9oYW5kbGVfYXQsIHN5c19vcGVuX2J5X2hhbmRsZV9hdClcXG4tLVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC02NDYtI2lmIGRlZmluZWQoX19BUkNIX1dBTlRfVElNRTMyX1NZU0NBTExTKSB8fCBfX0JJVFNfUEVSX0xPTkcgIT0gMzJcXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NjQ3OiNkZWZpbmUgX19OUl9jbG9ja19hZGp0aW1lIDI2NlxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo2NDg6X19TQ18zMjY0KF9fTlJfY2xvY2tfYWRqdGltZSwgc3lzX2Nsb2NrX2FkanRpbWUzMiwgc3lzX2Nsb2NrX2FkanRpbWUpXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTY0OS0jZW5kaWZcXG4tLVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD03MTg9X19TWVNDQUxMKF9fTlJfY2xvY2tfc2V0dGltZTY0LCBzeXNfY2xvY2tfc2V0dGltZSlcXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NzE5OiNkZWZpbmUgX19OUl9jbG9ja19hZGp0aW1lNjQgNDA1XFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjcyMDpfX1NZU0NBTEwoX19OUl9jbG9ja19hZGp0aW1lNjQsIHN5c19jbG9ja19hZGp0aW1lKVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC03MjEtI2RlZmluZSBfX05SX2Nsb2NrX2dldHJlc190aW1lNjQgNDA2XFxuLS1cXG5pbml0L0tjb25maWc9MTc1Nz1jb25maWcgUE9TSVhfVElNRVJTXFxuLS1cXG5pbml0L0tjb25maWctMTc2Ni1cXHQgIGF2YWlsYWJsZTogdGltZXJfY3JlYXRlLCB0aW1lcl9nZXR0aW1lOiB0aW1lcl9nZXRvdmVycnVuLFxcbmluaXQvS2NvbmZpZzoxNzY3OlxcdCAgdGltZXJfc2V0dGltZSwgdGltZXJfZGVsZXRlLCBjbG9ja19hZGp0aW1lLCBnZXRpdGltZXIsXFxuaW5pdC9LY29uZmlnLTE3NjgtXFx0ICBzZXRpdGltZXIsIGFsYXJtLiBGdXJ0aGVybW9yZSwgdGhlIGNsb2NrX3NldHRpbWUsIGNsb2NrX2dldHRpbWUsXFxuLS1cXG5rZXJuZWwvc3lzX25pLmM9MjExPUNPTkRfU1lTQ0FMTCh0aW1lcl9kZWxldGUpO1xcbmtlcm5lbC9zeXNfbmkuYzoyMTI6Q09ORF9TWVNDQUxMKGNsb2NrX2FkanRpbWUpO1xcbmtlcm5lbC9zeXNfbmkuYy0yMTMtQ09ORF9TWVNDQUxMKGdldGl0aW1lcik7XFxuLS1cXG5rZXJuZWwvc3lzX25pLmM9MzUyPUNPTkRfU1lTQ0FMTCh1dGltZW5zYXRfdGltZTMyKTtcXG5rZXJuZWwvc3lzX25pLmM6MzUzOkNPTkRfU1lTQ0FMTChjbG9ja19hZGp0aW1lMzIpO1xcbmtlcm5lbC9zeXNfbmkuYy0zNTQtXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jPTIxOD1zdGF0aWMgdm9pZCBwdXRfY2xvY2tfZGVzYyhzdHJ1Y3QgcG9zaXhfY2xvY2tfZGVzYyAqY2QpXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTIyMy1cXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jOjIyNDpzdGF0aWMgaW50IHBjX2Nsb2NrX2FkanRpbWUoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgX19rZXJuZWxfdGltZXggKnR4KVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMjI1LXtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMjM3LVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmM6MjM4OlxcdGlmIChjZC5jbGstXFx1MDAzZW9wcy5jbG9ja19hZGp0aW1lKVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmM6MjM5OlxcdFxcdGVyciA9IGNkLmNsay1cXHUwMDNlb3BzLmNsb2NrX2FkanRpbWUoY2QuY2xrLCB0eCk7XFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYy0yNDAtXFx0ZWxzZVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYz0zMTM9Y29uc3Qgc3RydWN0IGtfY2xvY2sgY2xvY2tfcG9zaXhfZHluYW1pYyA9IHtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNsb2NrLmMtMzE2LVxcdC5jbG9ja19nZXRfdGltZXNwZWNcXHQ9IHBjX2Nsb2NrX2dldHRpbWUsXFxua2VybmVsL3RpbWUvcG9zaXgtY2xvY2suYzozMTc6XFx0LmNsb2NrX2FkalxcdFxcdD0gcGNfY2xvY2tfYWRqdGltZSxcXG5rZXJuZWwvdGltZS9wb3NpeC1jbG9jay5jLTMxOC19O1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM9MTE0Mj1TWVNDQUxMX0RFRklORTIoY2xvY2tfZ2V0dGltZSwgY29uc3QgY2xvY2tpZF90LCB3aGljaF9jbG9jayxcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTExNTktXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM6MTE2MDppbnQgZG9fY2xvY2tfYWRqdGltZShjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIHN0cnVjdCBfX2tlcm5lbF90aW1leCAqIGt0eClcXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy0xMTYxLXtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTExNzEtXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM6MTE3MjpTWVNDQUxMX0RFRklORTIoY2xvY2tfYWRqdGltZSwgY29uc3QgY2xvY2tpZF90LCB3aGljaF9jbG9jayxcXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy0xMTczLVxcdFxcdHN0cnVjdCBfX2tlcm5lbF90aW1leCBfX3VzZXIgKiwgdXR4KVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtMTE4MC1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzoxMTgxOlxcdGVyciA9IGRvX2Nsb2NrX2FkanRpbWUod2hpY2hfY2xvY2ssIFxcdTAwMjZrdHgpO1xcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTExODItXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYz0xMjk3PVNZU0NBTExfREVGSU5FMihjbG9ja19nZXR0aW1lMzIsIGNsb2NraWRfdCwgd2hpY2hfY2xvY2ssXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy0xMzE0LVxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jOjEzMTU6U1lTQ0FMTF9ERUZJTkUyKGNsb2NrX2FkanRpbWUzMiwgY2xvY2tpZF90LCB3aGljaF9jbG9jayxcXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy0xMzE2LVxcdFxcdHN0cnVjdCBvbGRfdGltZXgzMiBfX3VzZXIgKiwgdXRwKVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtMTMyNC1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzoxMzI1OlxcdGVyciA9IGRvX2Nsb2NrX2FkanRpbWUod2hpY2hfY2xvY2ssIFxcdTAwMjZrdHgpO1xcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTEzMjYtXFxuLS1cXG5rZXJuZWwvdGltZS90aW1la2VlcGluZy5jPTMyMjc9c3RhdGljIHZvaWQgYXV4X2Nsb2NrX2VuYWJsZShjbG9ja2lkX3QgaWQpXFxuLS1cXG5rZXJuZWwvdGltZS90aW1la2VlcGluZy5jLTMyMzgtXFx0ICogY2xvY2sgZnJlcXVlbmN5IGNvbnZlcnNpb24gaXMgY2xvc2UgZW5vdWdoLiBVc2Vyc3BhY2UgaGFzIHRvXFxua2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYzozMjM5OlxcdCAqIGFkanVzdCBmb3IgdGhlIGRldmlhdGlvbiB2aWEgY2xvY2tfYWRqdGltZSgyKS5cXG5rZXJuZWwvdGltZS90aW1la2VlcGluZy5jLTMyNDAtXFx0ICovXFxuLS1cXG5ydXN0L2tlcm5lbC90aW1lLnJzPTk5PSAgICBmbiBrdGltZV9nZXQoKSAtXFx1MDAzZSBiaW5kaW5nczo6a3RpbWVfdCB7XFxuLS1cXG5ydXN0L2tlcm5lbC90aW1lLnJzLTExMC0vLy8gcGVyZm9ybWVkIGJ5IE5UUCBhbmQgc2ltaWxhciBhcHBsaWNhdGlvbnMgdmlhIGFkanRpbWUoMyksIGFkanRpbWV4KDIpLFxcbnJ1c3Qva2VybmVsL3RpbWUucnM6MTExOi8vLyBjbG9ja19hZGp0aW1lKDIpLCBhbmQgbnRwX2FkanRpbWUoMykuIFRoaXMgY2xvY2sgbm9ybWFsbHkgY291bnRzIHRoZVxcbnJ1c3Qva2VybmVsL3RpbWUucnMtMTEyLS8vLyBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwLTAxLTAxIDAwOjAwOjAwIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lXFxuLS1cXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2g9MTg9Y2F0IFxcdTAwM2NcXHUwMDNjIEVPRlxcbi0tXFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTk2LSNkZWZpbmUgX19JR05PUkVfY2xvY2tfc2V0dGltZTY0XFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoOjk3OiNkZWZpbmUgX19JR05PUkVfY2xvY2tfYWRqdGltZTY0XFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTk4LSNkZWZpbmUgX19JR05PUkVfY2xvY2tfZ2V0cmVzX3RpbWU2NFxcbi0tXFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTEyOS0jZGVmaW5lIF9fSUdOT1JFX2Nsb2NrX3NldHRpbWVcXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2g6MTMwOiNkZWZpbmUgX19JR05PUkVfY2xvY2tfYWRqdGltZVxcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMzEtI2RlZmluZSBfX0lHTk9SRV9jbG9ja19nZXRyZXNcXG4tLVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzE0LTI2NVxcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxuc2NyaXB0cy9zeXNjYWxsLnRibDozMTU6MjY2XFx0dGltZTMyXFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG5zY3JpcHRzL3N5c2NhbGwudGJsOjMxNjoyNjZcXHQ2NFxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzE3LTI2N1xcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzQ4LTQwNFxcdDMyXFx0Y2xvY2tfc2V0dGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXG5zY3JpcHRzL3N5c2NhbGwudGJsOjM0OTo0MDVcXHQzMlxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxuc2NyaXB0cy9zeXNjYWxsLnRibC0zNTAtNDA2XFx0MzJcXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTY0ND1fX1NZU0NBTEwoX19OUl9vcGVuX2J5X2hhbmRsZV9hdCwgc3lzX29wZW5fYnlfaGFuZGxlX2F0KVxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTY0Ni0jaWYgZGVmaW5lZChfX0FSQ0hfV0FOVF9USU1FMzJfU1lTQ0FMTFMpIHx8IF9fQklUU19QRVJfTE9ORyAhPSAzMlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo2NDc6I2RlZmluZSBfX05SX2Nsb2NrX2FkanRpbWUgMjY2XFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjY0ODpfX1NDXzMyNjQoX19OUl9jbG9ja19hZGp0aW1lLCBzeXNfY2xvY2tfYWRqdGltZTMyLCBzeXNfY2xvY2tfYWRqdGltZSlcXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtNjQ5LSNlbmRpZlxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTcxOD1fX1NZU0NBTEwoX19OUl9jbG9ja19zZXR0aW1lNjQsIHN5c19jbG9ja19zZXR0aW1lKVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo3MTk6I2RlZmluZSBfX05SX2Nsb2NrX2FkanRpbWU2NCA0MDVcXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NzIwOl9fU1lTQ0FMTChfX05SX2Nsb2NrX2FkanRpbWU2NCwgc3lzX2Nsb2NrX2FkanRpbWUpXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTcyMS0jZGVmaW5lIF9fTlJfY2xvY2tfZ2V0cmVzX3RpbWU2NCA0MDZcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9hbHBoYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MjktNDk4XFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDMwOjQ5OVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9hbHBoYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MzEtNTAwXFx0Y29tbW9uXFx0c3luY2ZzXFx0XFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zODktMzcxXFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM5MDozNzJcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lXFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzkxLTM3M1xcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDIyLTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0MjM6NDA1XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyNC00MDZcXHRjb21tb25cXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTM4Ni0zNzFcXHRjb21tb25cXHRvcGVuX2J5X2hhbmRsZV9hdFxcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxcdGNvbXBhdF9zeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6Mzg3OjM3MlxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTM4OC0zNzNcXHRjb21tb25cXHRzeW5jZnNcXHRcXHRcXHRzeXNfc3luY2ZzXFxuLS1cXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDE5LTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQyMDo0MDVcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00MjEtNDA2XFx0Y29tbW9uXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zMTAtMjk5XFx0bjY0XFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MzExOjMwMFxcdG42NFxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zMTItMzAxXFx0bjY0XFx0c3luY2ZzXFx0XFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNjctMzIzXFx0Y29tbW9uXFx0ZmFub3RpZnlfbWFya1xcdFxcdHN5c19mYW5vdGlmeV9tYXJrXFx0XFx0Y29tcGF0X3N5c19mYW5vdGlmeV9tYXJrXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozNjg6MzI0XFx0MzJcXHRjbG9ja19hZGp0aW1lXFx0XFx0c3lzX2Nsb2NrX2FkanRpbWUzMlxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzY5OjMyNFxcdDY0XFx0Y2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzAtMzI1XFx0Y29tbW9uXFx0bmFtZV90b19oYW5kbGVfYXRcXHRzeXNfbmFtZV90b19oYW5kbGVfYXRcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA2LTQwNFxcdDMyXFx0Y2xvY2tfc2V0dGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDA3OjQwNVxcdDMyXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDA4LTQwNlxcdDMyXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NDgtMzQ2XFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRjb21wYXRfc3lzX29wZW5fYnlfaGFuZGxlX2F0XFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDQ5OjM0N1xcdDMyXFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTA6MzQ3XFx0NjRcXHRjbG9ja19hZGp0aW1lXFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NTE6MzQ3XFx0c3B1XFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDUyLTM0OFxcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ5OC00MDRcXHQzMlxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0OTk6NDA1XFx0MzJcXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTAwLTQwNlxcdDMyXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXHRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yOTAtMzM2XFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyOTE6MzM3XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjkyLTMzOFxcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNzAtMzYwXFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzcxOjM2MVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM3Mi0zNjJcXHRjb21tb25cXHRzeW5jZnNcXHRcXHRcXHRcXHRzeXNfc3luY2ZzXFxuLS1cXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDExLTQwNFxcdGNvbW1vblxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxMjo0MDVcXHRjb21tb25cXHRjbG9ja19hZGp0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTMtNDA2XFx0Y29tbW9uXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MDMtMzMzXFx0Y29tbW9uXFx0b3Blbl9ieV9oYW5kbGVfYXRcXHRzeXNfb3Blbl9ieV9oYW5kbGVfYXRcXHRcXHRjb21wYXRfc3lzX29wZW5fYnlfaGFuZGxlX2F0XFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQwNDozMzRcXHQzMlxcdGNsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZTMyXFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQwNTozMzRcXHQ2NFxcdGNsb2NrX2FkanRpbWVcXHRcXHRzeXNfc3BhcmNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MDYtMzM1XFx0Y29tbW9uXFx0c3luY2ZzXFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1My00MDRcXHQzMlxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDU0OjQwNVxcdDMyXFx0Y2xvY2tfYWRqdGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTUtNDA2XFx0MzJcXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcdFxcdHN5c19jbG9ja19nZXRyZXNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtMzU3LTM0MlxcdGkzODZcXHRvcGVuX2J5X2hhbmRsZV9hdFxcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxcdFxcdGNvbXBhdF9zeXNfb3Blbl9ieV9oYW5kbGVfYXRcXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjM1ODozNDNcXHRpMzg2XFx0Y2xvY2tfYWRqdGltZVxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTM1OS0zNDRcXHRpMzg2XFx0c3luY2ZzXFx0XFx0XFx0c3lzX3N5bmNmc1xcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00MTMtNDA0XFx0aTM4NlxcdGNsb2NrX3NldHRpbWU2NFxcdFxcdHN5c19jbG9ja19zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MTQ6NDA1XFx0aTM4NlxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00MTUtNDA2XFx0aTM4NlxcdGNsb2NrX2dldHJlc190aW1lNjRcXHRzeXNfY2xvY2tfZ2V0cmVzXFxuLS1cXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTMxNi0zMDRcXHRjb21tb25cXHRvcGVuX2J5X2hhbmRsZV9hdFxcdHN5c19vcGVuX2J5X2hhbmRsZV9hdFxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6MzE3OjMwNVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWVcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzE4LTMwNlxcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzUxLTMyOFxcdGNvbW1vblxcdHJ0X3Rnc2lncXVldWVpbmZvXFx0XFx0c3lzX3J0X3Rnc2lncXVldWVpbmZvXFxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozNTI6MzI5XFx0Y29tbW9uXFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM1My0zMzBcXHRjb21tb25cXHRwcmxpbWl0NjRcXHRcXHRcXHRzeXNfcHJsaW1pdDY0XFxuLS1cXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM3OC00MDRcXHRjb21tb25cXHRjbG9ja19zZXR0aW1lNjRcXHRcXHRcXHRzeXNfY2xvY2tfc2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mzc5OjQwNVxcdGNvbW1vblxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zODAtNDA2XFx0Y29tbW9uXFx0Y2xvY2tfZ2V0cmVzX3RpbWU2NFxcdFxcdHN5c19jbG9ja19nZXRyZXNcXG4tLVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzE0LTI2NVxcdGNvbW1vblxcdG9wZW5fYnlfaGFuZGxlX2F0XFx0XFx0c3lzX29wZW5fYnlfaGFuZGxlX2F0XFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDozMTU6MjY2XFx0dGltZTMyXFx0Y2xvY2tfYWRqdGltZVxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lMzJcXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsOjMxNjoyNjZcXHQ2NFxcdGNsb2NrX2FkanRpbWVcXHRcXHRcXHRzeXNfY2xvY2tfYWRqdGltZVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzE3LTI2N1xcdGNvbW1vblxcdHN5bmNmc1xcdFxcdFxcdFxcdHN5c19zeW5jZnNcXG4tLVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzQ4LTQwNFxcdDMyXFx0Y2xvY2tfc2V0dGltZTY0XFx0XFx0XFx0c3lzX2Nsb2NrX3NldHRpbWVcXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsOjM0OTo0MDVcXHQzMlxcdGNsb2NrX2FkanRpbWU2NFxcdFxcdFxcdHN5c19jbG9ja19hZGp0aW1lXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibC0zNTAtNDA2XFx0MzJcXHRjbG9ja19nZXRyZXNfdGltZTY0XFx0XFx0c3lzX2Nsb2NrX2dldHJlc1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtMy0gKiBSZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBzY2FsZWRfcHBtX3RvX3BwYigpIGludGVnZXIgb3ZlcmZsb3cgdGhhdCBhbGxvd2VkXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmM6NDogKiBhIGNyYWZ0ZWQgY2xvY2tfYWRqdGltZShBREpfRlJFUVVFTkNZKSB0byBieXBhc3MgdGhlIFBUUCBtYXhfYWRqIGNoZWNrLlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTUtICpcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTIzLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjI0Oi8qIGNsb2NrX2FkanRpbWUgaXMgbm90IGF2YWlsYWJsZSBpbiBHTElCQyBcXHUwMDNjIDIuMTQgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy0yNS0jaWYgIV9fR0xJQkNfUFJFUkVRKDIsIDE0KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTI2LSNpbmNsdWRlIFxcdTAwM2NzeXMvc3lzY2FsbC5oXFx1MDAzZVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjI3OnN0YXRpYyBpbnQgY2xvY2tfYWRqdGltZShjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1leCAqdHgpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtMjgte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jOjI5OlxcdHJldHVybiBzeXNjYWxsKF9fTlJfY2xvY2tfYWRqdGltZSwgaWQsIHR4KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy0zMC19XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYz0zMz1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtNjMtXFx0ICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmM6NjQ6XFx0aWYgKGNsb2NrX2FkanRpbWUoY2xraWQsIFxcdTAwMjZyZXN0b3JlKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYzo2NTpcXHRcXHRrc2Z0X2V4aXRfc2tpcChcXFwiY2xvY2tfYWRqdGltZShnZXQpIG9uICVzOiAlc1xcXFxuXFxcIiwgZGV2aWNlLCBzdHJlcnJvcihlcnJubykpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTY2LVxcdHJlc3RvcmUubW9kZXMgPSBBREpfRlJFUVVFTkNZO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtNzgtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmM6Nzk6XFx0cmV0ID0gY2xvY2tfYWRqdGltZShjbGtpZCwgXFx1MDAyNnR4KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvcHRwX2ZyZXFfb3ZlcmZsb3cuYy04MC1cXHRpZiAocmV0IFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiBlcnJubyA9PSBFQlVTWSkge1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmMtOTQtXFx0LyogcHV0IHRoZSBmcmVxdWVuY3kgYmFjayB0aGUgd2F5IHdlIGZvdW5kIGl0ICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3B0cF9mcmVxX292ZXJmbG93LmM6OTU6XFx0Y2xvY2tfYWRqdGltZShjbGtpZCwgXFx1MDAyNnJlc3RvcmUpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jLTk2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy0zOS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jOjQwOi8qIGNsb2NrX2FkanRpbWUgaXMgbm90IGF2YWlsYWJsZSBpbiBHTElCQyBcXHUwMDNjIDIuMTQgKi9cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jLTQxLSNpZiAhX19HTElCQ19QUkVSRVEoMiwgMTQpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy00Mi0jaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jOjQzOnN0YXRpYyBpbnQgY2xvY2tfYWRqdGltZShjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1leCAqdHgpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy00NC17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzo0NTpcXHRyZXR1cm4gc3lzY2FsbChfX05SX2Nsb2NrX2FkanRpbWUsIGlkLCB0eCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy00Ni19XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jPTE1Nj1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy0zNjQtXFx0XFx0dHguZnJlcSA9IHBwYl90b19zY2FsZWRfcHBtKGFkamZyZXEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmM6MzY1OlxcdFxcdGlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCBcXHUwMDI2dHgpKSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYzozNjY6XFx0XFx0XFx0cGVycm9yKFxcXCJjbG9ja19hZGp0aW1lXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHRwL3Rlc3RwdHAuYy0zNjctXFx0XFx0fSBlbHNlIHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzgxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmM6MzgyOlxcdFxcdGlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCBcXHUwMDI2dHgpIFxcdTAwM2MgMCkge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmM6MzgzOlxcdFxcdFxcdHBlcnJvcihcXFwiY2xvY2tfYWRqdGltZVxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC90ZXN0cHRwLmMtMzg0LVxcdFxcdH0gZWxzZSB7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jLTM5My1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jOjM5NDpcXHRcXHRpZiAoY2xvY2tfYWRqdGltZShjbGtpZCwgXFx1MDAyNnR4KSBcXHUwMDNjIDApIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jOjM5NTpcXHRcXHRcXHRwZXJyb3IoXFxcImNsb2NrX2FkanRpbWVcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wdHAvdGVzdHB0cC5jLTM5Ni1cXHRcXHR9IGVsc2Uge1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmMtMzctI2luY2x1ZGUgXFx1MDAzY3N5cy9zeXNjYWxsLmhcXHUwMDNlXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmM6Mzg6aW50IGNsb2NrX2FkanRpbWUoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXggKnR4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jLTM5LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYzo0MDpcXHRyZXR1cm4gc3lzY2FsbChfX05SX2Nsb2NrX2FkanRpbWUsIGlkLCB0eCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmMtNDEtfVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmM9MTkzPWludCBzZXRfb2Zmc2V0KGxvbmcgbG9uZyBvZmZzZXQsIGludCB1c2VfbmFubylcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jLTIxOC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYzoyMTk6XFx0cmV0ID0gY2xvY2tfYWRqdGltZShDTE9DS19SRUFMVElNRSwgXFx1MDAyNnRteCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmMtMjIwLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYz0yMjg9aW50IHNldF9iYWRfb2Zmc2V0KGxvbmcgc2VjLCBsb25nIHVzZWMsIGludCB1c2VfbmFubylcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0aW1leC5jLTIzOC1cXHR0bXgudGltZS50dl91c2VjID0gdXNlYztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvdmFsaWQtYWRqdGltZXguYzoyMzk6XFx0cmV0ID0gY2xvY2tfYWRqdGltZShDTE9DS19SRUFMVElNRSwgXFx1MDAyNnRteCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3ZhbGlkLWFkanRpbWV4LmMtMjQwLVxcdGlmIChyZXQgXFx1MDAzZT0gMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxNDozNDowMS45ODUwNTY4NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDMyMDA5ODUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGNsb2NrX2FkanRpbWUgU3lzY2FsbCBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGUgYGNsb2NrX2FkanRpbWVgIHN5c2NhbGwgYW5kIGhvdyBpdCdzIGltcGxlbWVudGVkLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgYHN5c19jbG9ja19hZGp0aW1lYCBpcyB0aGUgZW50cnkgcG9pbnQsIG5hdHVyYWxseS4gVGhpcyB0aGVuIGxlYWRzIHRvIGBkb19jbG9ja19hZGp0aW1lYCwgd2hpY2gsIGZvciB0aGUgcG9zaXggZHluYW1pYyBjbG9ja3MsIGNhbGxzIGBwY19jbG9ja19hZGp0aW1lYC4gVGhpcyB0aGVuIGJvaWxzIGRvd24gdG8gYSBjYWxsIHRvIGBjZC5jbGstXHUwMDNlb3BzLmNsb2NrX2FkanRpbWUoY2QuY2xrLCB0eClgLiBTbywgdGhlIHBhdGggaXMgZGVmaW5pdGVseSBjbGVhciBhbmQgcmVhY2hhYmxlIGZyb20gdGhlIHN5c2NhbGwgbGV2ZWwuXG5cbk5vdywgSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFBUUF8xNTg4X0NMT0NLX01PQ0tgLiBCYXNlZCBvbiB0aGUgY29kZSwgaXQgc2VlbXMgdGhpcyBpcyBjbG9zZWx5IHJlbGF0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWcgcmVxdWlyZW1lbnRzLiBJdCBsb29rcyBsaWtlIGBQVFBfMTU4OF9DTE9DS2AgaXMgYSBtdXN0LWhhdmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlnIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTkxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM0OjEyLjMwNTE1Nzc2NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMjU0MjY5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFRQXzE1ODhfQ0xPQ0tfTU9DS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3B0cC9LY29uZmlnPTE3NT1jb25maWcgUFRQXzE1ODhfQ0xPQ0tfRkMzV1xcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxODc6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OC1cXHR0cmlzdGF0ZSBcXFwiTW9jay11cCBQVFAgY2xvY2tcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDE0OjM0OjE2LjYzNzcwNzE4OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTAxODkyNjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgUFRQIEtjb25maWcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBMZXQncyBkaXZlIHJpZ2h0IGludG8gdGhlIGBkcml2ZXJzL3B0cC9LY29uZmlnYCBmaWxlLiBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gZ2V0dGluZyBteSBiZWFyaW5ncyBhcm91bmQgbGluZSAxODcsIGFzIHRoYXQncyBvZnRlbiBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZ3Jhc3AgdGhlIGNvcmUgb3B0aW9ucy4gSSdtIGV4cGVjdGluZyB0byBzZWUgZGVwZW5kZW5jaWVzLCBoZWxwIHRleHQsIGFuZCBkZWZhdWx0IHZhbHVlcyB0aGF0J2xsIHNoYXBlIHRoZSBtb2R1bGUncyBiZWhhdmlvci4gTGV0J3Mgc2VlIHdoYXQgdGhlIGRldmVsb3BlcnMgaGF2ZSBkZWVtZWQgaW1wb3J0YW50IHRvIGV4cG9zZSBhdCB0aGUgY29uZmlndXJhdGlvbiBsZXZlbCBoZXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGV5J3ZlIGhhbmRsZWQgdmFyaW91cyBQVFAgZmVhdHVyZXMsIHBlcmhhcHMgZGlmZmVyZW50IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zLCBvciBwb3RlbnRpYWxseSBldmVuIGNvbXBhdGliaWxpdHkgc2hpbXMuIEkgd2FudCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgdGhlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZW0sIGFuZCBob3cgaXQgYWxsIHRyYW5zbGF0ZXMgaW50byB0aGUgcnVudGltZSBQVFAgYmVoYXZpb3IuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbXBsaWNhdGlvbnMgb2YgY2hhbmdpbmcgdGhvc2UgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDc0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzQ6MjAuMTM5NjAyNjQ1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcgUmVuZXNhcyBGZW10b0Nsb2NrMyBXaXJlbGVzc1xcbiAxODE6XFx0XFx0ICBhcyBhIFBUUCBjbG9jay4gVGhpcyBjbG9jayBpcyBvbmx5IHVzZWZ1bCBpZiB5b3VyIHRpbWUgc3RhbXBpbmdcXG4gMTgyOlxcdFxcdCAgTUFDIGlzIGNvbm5lY3RlZCB0byB0aGUgUkVORVNBUyBjaGlwLlxcbiAxODM6XFx0XFxuIDE4NDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTg1OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgcHRwX2ZjMy5cXG4gMTg2OlxcdFxcbiAxODc6XFx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLX01PQ0tcXG4gMTg4OlxcdFxcdHRyaXN0YXRlIFxcXCJNb2NrLXVwIFBUUCBjbG9ja1xcXCJcXG4gMTg5OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcXG4gMTkwOlxcdFxcdGhlbHBcXG4gMTkxOlxcdFxcdCAgVGhpcyBkcml2ZXIgb2ZmZXJzIGEgc2V0IG9mIFBUUCBjbG9jayBtYW5pcHVsYXRpb24gb3BlcmF0aW9ucyBvdmVyXFxuIDE5MjpcXHRcXHQgIHRoZSBzeXN0ZW0gbW9ub3RvbmljIHRpbWUuIEl0IGNhbiBiZSB1c2VkIGJ5IHZpcnR1YWwgbmV0d29yayBkZXZpY2VcXG4gMTkzOlxcdFxcdCAgZHJpdmVycyB0byBlbXVsYXRlIFBUUCBjYXBhYmlsaXRpZXMuXFxuIDE5NDpcXHRcXG4gMTk1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAxOTY6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBwdHBfbW9jay5cXG4gMTk3OlxcdFxcbiAxOTg6XFx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNV1xcbiAxOTk6XFx0XFx0dHJpc3RhdGUgXFxcIlZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzQ6MjAuMTM5NzcxOTA1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4NzM4MzcyNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBUUCBDbG9jayBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBoaW5nZSBvbiBgUFRQXzE1ODhfQ0xPQ0tgLiBTcGVjaWZpY2FsbHksIHRoZSB2dWxuZXJhYmlsaXR5IHJlc2lkZXMgaW4gdGhlIGBwdHBfY2xvY2tfYWRqdGltZWAgZnVuY3Rpb24uIExldCBtZSB0aGluaywgc28gdGhlcmUgYXJlIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgbmVlZGVkIHRvbzogYFBUUF8xNTg4X0NMT0NLX01PQ0tgIGFuZCBwb3RlbnRpYWxseSBgUFRQXzE1ODhfQ0xPQ0tfS1ZNYCwgYWx0aG91Z2ggSSdsbCBkb3VibGUtY2hlY2sgdGhhdCBsYXN0IG9uZS5cblxuUmlnaHQsIEkgbmVlZCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2JsZW0uIFNvLCBgcHRwX2Nsb2NrX2FkanRpbWVgIGluIGBkcml2ZXJzL3B0cC9wdHBfY2xvY2suY2AgaXMgdGhlIGtleSBmdW5jdGlvbiB0aGF0IHdhcyBtb2RpZmllZC4gV2FpdCwgdGhlcmUncyBhbHNvIHRoYXQgc2VsZnRlc3QgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3B0cC9wdHBfZnJlcV9vdmVyZmxvdy5jYC4gVGhhdCdzIGEgZ29vZCBzaWduOyBpdCBjb25maXJtcyB0aGlzIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIHRoZSBgY2xvY2tfYWRqdGltZWAgc3lzY2FsbC4gRXhjZWxsZW50IVxuXG5TbywgdGhlIGNydXggb2YgdGhlIGlzc3VlIGlzIHRoZSBpbnRlZ2VyIG92ZXJmbG93IHdpdGhpbiBgcHRwX2Nsb2NrX2FkanRpbWVgLiBJdCBzZWVtcyB3aGVuIGNvbnZlcnRpbmcgYHR4LVx1MDAzZWZyZXFgIHRvIHBhcnRzLXBlci1iaWxsaW9uIChwcGIpIHVzaW5nIGBzY2FsZWRfcHBtX3RvX3BwYigpYCwgdGhlIG92ZXJmbG93IGFsbG93cyBieXBhc3NpbmcgdGhlIGBtYXhfYWRqYCBjaGVjay4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0J3MgZXhwbG9pdGFibGUgdGhyb3VnaCB0aGUgc3RhbmRhcmQgYGNsb2NrX2FkanRpbWVgIHN5c3RlbSBjYWxsIG9uIGEgUFRQIGNsb2NrIGRldmljZS5cblxuVG8gc3VtbWFyaXplIGZvciBmdXp6aW5nIHB1cnBvc2VzOiBteSBmb2N1cyBpcyBzcXVhcmVseSBvbiB0aGUgc3ltYm9sIGBwdHBfY2xvY2tfYWRqdGltZWAuIEknbGwgd2FudCB0byBlbnN1cmUgdGhlIGFwcHJvcHJpYXRlIGNvbmZpZ3VyYXRpb25zIOKAkyBgUFRQXzE1ODhfQ0xPQ0tgLCBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AsIGFuZCBwb3NzaWJseSBgUFRQXzE1ODhfQ0xPQ0tfS1ZNYCDigJMgYXJlIGVuYWJsZWQuIEFuZCBhZ2FpbiwgSSdsbCBuZWVkIHRvIGNoZWNrIGlmIGBQVFBfMTU4OF9DTE9DS19LVk1gIGlzIGluZGVlZCBhIGdvb2QgY29uZmlnIHRvIGhhdmUuIE15IGFpbSB3aWxsIGJlIHRvIGZ1enogdGhpcyBmdW5jdGlvbiB0aG9yb3VnaGx5IHRvIHZlcmlmeSB0aGUgb3ZlcmZsb3cgY2hlY2sgaXMgaW5kZWVkIGZpeGVkIGFuZCB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgc2ltaWxhciBpc3N1ZXMgbHVya2luZyB3aXRoaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjgzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzQ6MjguMDEzNjEyOTIyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyMDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHB0cF9wY2guXFxuIDEyMTpcXHRcXG4gMTIyOlxcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cXG4gMTIzOlxcdFxcdHRyaXN0YXRlIFxcXCJLVk0gdmlydHVhbCBQVFAgY2xvY2tcXFwiXFxuIDEyNDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLXFxuIDEyNTpcXHRcXHRkZXBlbmRzIG9uIChLVk1fR1VFU1QgXFx1MDAyNlxcdTAwMjYgWDg2KSB8fCAoSEFWRV9BUk1fU01DQ0NfRElTQ09WRVJZIFxcdTAwMjZcXHUwMDI2IEFSTV9BUkNIX1RJTUVSKVxcbiAxMjY6XFx0XFx0ZGVmYXVsdCB5XFxuIDEyNzpcXHRcXHRoZWxwXFxuIDEyODpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcga3ZtIGluZnJhc3RydWN0dXJlIGFzIGEgUFRQXFxuIDEyOTpcXHRcXHQgIGNsb2NrLiBUaGlzIGNsb2NrIGlzIG9ubHkgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgS1ZNIGd1ZXN0cy5cXG4gMTMwOlxcdFxcbiAxMzE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDEzMjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHB0cF9rdm0uXFxuIDEzMzpcXHRcXG4gMTM0OlxcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXFxuIDEzNTpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBtYWNoaW5lIFBUUCBjbG9ja1xcXCJcXG4gMTM2OlxcdFxcdGRlcGVuZHMgb24gWDg2X1RTQyB8fCBBUk1fQVJDSF9USU1FUlxcbiAxMzc6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DSyBcXHUwMDI2XFx1MDAyNiBBUkNIX1NVUFBPUlRTX0lOVDEyOFxcbiAxMzg6XFx0XFx0ZGVmYXVsdCBQVFBfMTU4OF9DTE9DS19LVk1cXG4gMTM5OlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzQ6MjguMDEzNzIxMzIyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTY3NzA5MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU3RyZWFtbGluaW5nIFBUUCBDbG9jayBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBgUFRQXzE1ODhfQ0xPQ0tfS1ZNYCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQsIHNldCB0byAneScsIHdoZW4gaXRzIGRlcGVuZGVuY2llcyBhcmUgYWxsIHNhdGlzZmllZCDigJMgd2hpY2ggaXMgdGhlIGlkZWFsIHNpdHVhdGlvbi4gSSBjYW4gbGV2ZXJhZ2UgdGhpcyBleGlzdGluZyBkZXBlbmRlbmN5IHNldHVwLiBXaHkgY29tcGxpY2F0ZSB0aGluZ3M/IEl0IGxvb2tzIGxpa2UgSSBjYW4gc2ltcGxpZnkgdGhlIGNvbmZpZ3VyYXRpb24gYnkganVzdCBpbmNsdWRpbmcgdGhlIGNvcmUgYFBUUF8xNTg4X0NMT0NLYCBhbmQgdGhlIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBvcHRpb25zIGRpcmVjdGx5LiBUaGF0IHNob3VsZCBoYW5kbGUgZXZlcnl0aGluZyBlZmZpY2llbnRseS4gTm93LCBJIHNob3VsZCBtb3ZlIHRvIHVzaW5nIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTk0LCJPdXRwdXRUb2tlbnMiOjE2MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTQ6MzQ6MzEuOTEwNDk2MzM4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2NjU3ODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiLFxuICAgIFwiUFRQXzE1ODhfQ0xPQ0tfTU9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInB0cF9jbG9ja19hZGp0aW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBpbiBgcHRwX2Nsb2NrX2FkanRpbWVgIHdoZW4gY29udmVydGluZyBgdHgtXFx1MDAzZWZyZXFgIHRvIGBwcGJgIHVzaW5nIGBzY2FsZWRfcHBtX3RvX3BwYigpYC4gVGhpcyBvdmVyZmxvdyBhbGxvd2VkIGJ5cGFzc2luZyB0aGUgYG1heF9hZGpgIGNoZWNrLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgYGNsb2NrX2FkanRpbWVgIHN5c2NhbGwgb24gYSBQVFAgY2xvY2sgZGV2aWNlLiBGdXp6aW5nIHRoaXMgZnVuY3Rpb24gaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgb3ZlcmZsb3cgY2hlY2sgaXMgY29ycmVjdCBhbmQgbm8gb3RoZXIgc2ltaWxhciBpc3N1ZXMgZXhpc3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFRQXzE1ODhfQ0xPQ0tcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLX01PQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwdHBfY2xvY2tfYWRqdGltZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gYHB0cF9jbG9ja19hZGp0aW1lYCB3aGVuIGNvbnZlcnRpbmcgYHR4LVxcdTAwM2VmcmVxYCB0byBgcHBiYCB1c2luZyBgc2NhbGVkX3BwbV90b19wcGIoKWAuIFRoaXMgb3ZlcmZsb3cgYWxsb3dlZCBieXBhc3NpbmcgdGhlIGBtYXhfYWRqYCBjaGVjay4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGBjbG9ja19hZGp0aW1lYCBzeXNjYWxsIG9uIGEgUFRQIGNsb2NrIGRldmljZS4gRnV6emluZyB0aGlzIGZ1bmN0aW9uIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG92ZXJmbG93IGNoZWNrIGlzIGNvcnJlY3QgYW5kIG5vIG90aGVyIHNpbWlsYXIgaXNzdWVzIGV4aXN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowt7r7x[1] Phase: Succeeded StartedAt: 2026-07-21 14:34:55 +0000 UTC FinishedAt: 2026-07-21 14:34:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-21 14:34:55 +0000 UTC FinishedAt: 2026-07-21 14:34:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2] Phase: Succeeded StartedAt: 2026-07-21 14:34:55 +0000 UTC FinishedAt: 2026-07-21 19:04:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-21 14:34:55 +0000 UTC FinishedAt: 2026-07-21 19:04:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-21 14:34:55 +0000 UTC FinishedAt: 2026-07-21 14:35:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-21 14:34:55 +0000 UTC FinishedAt: 2026-07-21 14:35:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},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-workflowt7r7x/series-workflowt7r7x-convert-artifact-1562917409/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-21 14:35:34 +0000 UTC FinishedAt: 2026-07-21 15:17:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-21 14:35:34 +0000 UTC FinishedAt: 2026-07-21 15:17:01 +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:*acbd3347-db11-41c6-b202-079123528f80,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-workflowt7r7x/series-workflowt7r7x-convert-artifact-1562917409/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": "31c65d72-31f1-471a-bcf1-243c736a6691", "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-workflowt7r7x/series-workflowt7r7x-build-action-1034490191/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-21 14:35:34 +0000 UTC FinishedAt: 2026-07-21 15:16:17 +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:*acbd3347-db11-41c6-b202-079123528f80,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-workflowt7r7x/series-workflowt7r7x-convert-artifact-1562917409/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": "31c65d72-31f1-471a-bcf1-243c736a6691", "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-workflowt7r7x/series-workflowt7r7x-build-action-1034490191/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-21 15:17:01 +0000 UTC FinishedAt: 2026-07-21 15:17:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-21 15:17:01 +0000 UTC FinishedAt: 2026-07-21 15:17:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-21 15:17:01 +0000 UTC FinishedAt: 2026-07-21 15:17:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-21 15:17:01 +0000 UTC FinishedAt: 2026-07-21 15:17:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},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-workflowt7r7x/series-workflowt7r7x-convert-artifact-2194353012/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-21 15:17:11 +0000 UTC FinishedAt: 2026-07-21 15:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-21 15:17:11 +0000 UTC FinishedAt: 2026-07-21 15:18:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*31c65d72-31f1-471a-bcf1-243c736a6691,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-workflowt7r7x/series-workflowt7r7x-build-action-1034490191/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-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-21 15:19:04 +0000 UTC FinishedAt: 2026-07-21 15:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-21 15:19:04 +0000 UTC FinishedAt: 2026-07-21 15:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-21 15:19:04 +0000 UTC FinishedAt: 2026-07-21 16:00:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-21 15:19:04 +0000 UTC FinishedAt: 2026-07-21 16:00:12 +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:*acbd3347-db11-41c6-b202-079123528f80,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-workflowt7r7x/series-workflowt7r7x-convert-artifact-2194353012/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": "b08359f3-112d-4478-a503-ad9fcc6bf7b3", "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-workflowt7r7x/series-workflowt7r7x-build-action-923426880/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-21 15:19:04 +0000 UTC FinishedAt: 2026-07-21 16:00:02 +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:*acbd3347-db11-41c6-b202-079123528f80,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-workflowt7r7x/series-workflowt7r7x-convert-artifact-2194353012/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": "b08359f3-112d-4478-a503-ad9fcc6bf7b3", "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-workflowt7r7x/series-workflowt7r7x-build-action-923426880/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-21 16:00:12 +0000 UTC FinishedAt: 2026-07-21 16:00:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-21 16:00:12 +0000 UTC FinishedAt: 2026-07-21 16:00:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-21 16:00:12 +0000 UTC FinishedAt: 2026-07-21 16:02:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-21 16:00:12 +0000 UTC FinishedAt: 2026-07-21 16:02:07 +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:*b08359f3-112d-4478-a503-ad9fcc6bf7b3,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-workflowt7r7x/series-workflowt7r7x-build-action-923426880/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-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-21 16:02:17 +0000 UTC FinishedAt: 2026-07-21 19:04:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-21 16:02:17 +0000 UTC FinishedAt: 2026-07-21 19:04:31 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"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:*31c65d72-31f1-471a-bcf1-243c736a6691,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b08359f3-112d-4478-a503-ad9fcc6bf7b3,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-workflowt7r7x/series-workflowt7r7x-build-action-1034490191/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-workflowt7r7x/series-workflowt7r7x-build-action-923426880/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-21 16:02:17 +0000 UTC FinishedAt: 2026-07-21 16:02:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-21 16:02:17 +0000 UTC FinishedAt: 2026-07-21 16:02:22 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"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-workflowt7r7x/series-workflowt7r7x-convert-artifact-818099869/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-21 16:02:17 +0000 UTC FinishedAt: 2026-07-21 16:02:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-21 16:02:17 +0000 UTC FinishedAt: 2026-07-21 16:02:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-21 16:02:17 +0000 UTC FinishedAt: 2026-07-21 16:02:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-21 16:02:27 +0000 UTC FinishedAt: 2026-07-21 19:04:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7r7x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ptp_clock_adjtime"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c975de3343cdef506f2eecc833cc1f14b0401c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PTP_1588_CLOCK","PTP_1588_CLOCK_MOCK"],"series_id":"508a151c-58fe-4c6d-9fb0-af929ff8a020","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-21 16:02:27 +0000 UTC FinishedAt: 2026-07-21 19:04:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*31c65d72-31f1-471a-bcf1-243c736a6691,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b08359f3-112d-4478-a503-ad9fcc6bf7b3,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-workflowt7r7x/series-workflowt7r7x-build-action-1034490191/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-workflowt7r7x/series-workflowt7r7x-build-action-923426880/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-workflowt7r7x/series-workflowt7r7x-convert-artifact-818099869/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,}