Name: series-workflow5m52v Phase: Succeeded StartedAt: 2026-08-12 15:22:40 +0000 UTC FinishedAt: 2026-08-12 19:27:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[0] Phase: Succeeded StartedAt: 2026-08-12 15:22:40 +0000 UTC FinishedAt: 2026-08-12 15:41:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 15:22:40 +0000 UTC FinishedAt: 2026-08-12 15:41:26 +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": "883b56ae58fe657d8497806c7059646e9ba6dbd0", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "883b56ae58fe657d8497806c7059646e9ba6dbd0", "config_name": "upstream-apparmor-kasan.config", "series_id": "a221879c-0c47-443c-95b0-bdfd5510675b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "do_tcp_setsockopt", "tcp_retransmit_timer", "reqsk_timer_handler", "tcp_check_req" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG9fdGNwX3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7dGNwX3JldHJhbnNtaXRfdGltZXImIzM0OywKICAgICYjMzQ7cmVxc2tfdGltZXJfaGFuZGxlciYjMzQ7LAogICAgJiMzNDt0Y3BfY2hlY2tfcmVxJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBhbmQgb3V0LW9mLWJvdW5kcyBzaGlmdCBpbiBUQ1AgdGltZW91dCBjYWxjdWxhdGlvbiAoYHJlcS1cdTAwM2V0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXRgKSBieSBjYXBwaW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU5BQ0sgcmV0cmllcyB0byAxMjcgYW5kIGFkZGluZyBvdmVyZmxvdyBjaGVja3MgaW4gYHRjcF9yZXFza190aW1lb3V0X3NrYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlcnNwYWNlLiBTdGFuZGFyZCBLQVNBTiBhbmQgVUJTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBjb3JydXB0aW9uIG9yIHVuZGVmaW5lZCBiZWhhdmlvciByZWxhdGVkIHRvIHRoaXMgY29kZS4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBTWU5BQ0sgcmV0cmllcyBsaW1pdHMgYW5kIHRpbWVvdXQgY2FsY3VsYXRpb24gbG9naWMgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYW5kIGJvdW5kcyBgdGNwX3N5bmFja19yZXRyaWVzYCB0byAxMjcuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgcmV0cmFuc21pc3Npb24gbG9naWMuIFRoZSBtb2RpZmljYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIFRDUCBzb2NrZXQgb3B0aW9ucyBhbmQgdGltZXIgY2FsbGJhY2tzIGR1cmluZyBjb25uZWN0aW9uIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODA2NDM0Y2EwMzI4MzA5YTM1MGFlYWZkN2I2MTZlMzA0MTI4NjgxZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDE1OjM5OjQ3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3RcbmluZGV4IDIwOGY0Njk2N2VlNTkuLmZkNTAzOGI2Y2FiOWYgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3RcbkBAIC05NTQsNyAmIzQzOzk1NCw3IEBAIHRjcF9zdGR1cmcgLSBCT09MRUFOXG4gXG4gdGNwX3N5bmFja19yZXRyaWVzIC0gSU5URUdFUlxuIFx0TnVtYmVyIG9mIHRpbWVzIFNZTkFDS3MgZm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiBhdHRlbXB0IHdpbGxcbi1cdGJlIHJldHJhbnNtaXR0ZWQuIFNob3VsZCBub3QgYmUgaGlnaGVyIHRoYW4gMjU1LiBEZWZhdWx0IHZhbHVlXG4mIzQzO1x0YmUgcmV0cmFuc21pdHRlZC4gU2hvdWxkIG5vdCBiZSBoaWdoZXIgdGhhbiAxMjcuIERlZmF1bHQgdmFsdWVcbiBcdGlzIDUsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIDMxc2Vjb25kcyB0aWxsIHRoZSBsYXN0IHJldHJhbnNtaXNzaW9uXG4gXHR3aXRoIHRoZSBjdXJyZW50IGluaXRpYWwgUlRPIG9mIDFzZWNvbmQuIFdpdGggdGhpcyB0aGUgZmluYWwgdGltZW91dFxuIFx0Zm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiB3aWxsIGhhcHBlbiBhZnRlciA2M3NlY29uZHMuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdGNwLmggYi9pbmNsdWRlL25ldC90Y3AuaFxuaW5kZXggMmM1Yjg4OTUzMGI1NS4uOGFiMmZkMzY4ZWQzYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC90Y3AuaFxuQEAgLTE4Myw2ICYjNDM7MTgzLDggQEAgc3RhdGljX2Fzc2VydCgoMSBcdTAwM2NcdTAwM2MgQVRPX0JJVFMpIFx1MDAzZSBUQ1BfREVMQUNLX01BWCk7XG4gI2RlZmluZSBNQVhfVENQX0tFRVBJTlRWTFx0MzI3NjdcbiAjZGVmaW5lIE1BWF9UQ1BfS0VFUENOVFx0XHQxMjdcbiAjZGVmaW5lIE1BWF9UQ1BfU1lOQ05UXHRcdDEyN1xuJiM0MzsvKiByZXF1ZXN0X3NvY2s6Om51bV90aW1lb3V0IGlzIGEgNy1iaXQgZmllbGQuICovXG4mIzQzOyNkZWZpbmUgTUFYX1RDUF9TWU5BQ0tfUkVUUklFU1x0MTI3XG4gXG4gLyogRW5zdXJlIHRoYXQgVENQIFBBV1MgY2hlY2tzIGFyZSByZWxheGVkIGFmdGVyIH4yMTQ3IHNlY29uZHNcbiAgKiB0byBhdm9pZCBvdmVyZmxvd3MuIFRoaXMgYXNzdW1lcyBhIGNsb2NrIHNtYWxsZXIgdGhhbiAxIE1oei5cbkBAIC04ODIsMTIgJiM0Mzs4ODQsMjIgQEAgc3RhdGljIGlubGluZSB1MzIgX190Y3Bfc2V0X3J0byhjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwKVxuIFx0cmV0dXJuIHVzZWNzX3RvX2ppZmZpZXMoKHRwLVx1MDAzZXNydHRfdXMgXHUwMDNlXHUwMDNlIDMpICYjNDM7IHRwLVx1MDAzZXJ0dHZhcl91cyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4mIzQzO3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4mIzQzO1x0XHRcdFx0XHRcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4ge1xuLVx0dTY0IHRpbWVvdXQgPSAodTY0KXJlcS1cdTAwM2V0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXQ7XG4mIzQzO1x0dTMyIHJ0b19tYXggPSB0Y3BfcnRvX21heChzayk7XG4mIzQzO1x0dTY0IHRpbWVvdXQgPSByZXEtXHUwMDNldGltZW91dDtcbiYjNDM7XG4mIzQzO1x0aWYgKHJlcS1cdTAwM2VudW1fdGltZW91dCBcdTAwM2U9IEJJVFNfUEVSX1RZUEUodGltZW91dCkgfHxcbiYjNDM7XHQgICAgdGltZW91dCBcdTAwM2UgVTY0X01BWCBcdTAwM2VcdTAwM2UgcmVxLVx1MDAzZW51bV90aW1lb3V0KVxuJiM0MztcdFx0cmV0dXJuIHJ0b19tYXg7XG4mIzQzO1xuJiM0MztcdHJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQgXHUwMDNjXHUwMDNjIHJlcS1cdTAwM2VudW1fdGltZW91dCwgcnRvX21heCk7XG4mIzQzO31cbiBcbi1cdHJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQsXG4tXHRcdFx0XHQgICAgdGNwX3J0b19tYXgocmVxLVx1MDAzZXJza19saXN0ZW5lcikpO1xuJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXQoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHRjcF9yZXFza190aW1lb3V0X3NrKHJlcS1cdTAwM2Vyc2tfbGlzdGVuZXIsIHJlcSk7XG4gfVxuIFxuIHUzMiB0Y3BfZGVsYWNrX21heChjb25zdCBzdHJ1Y3Qgc29jayAqc2spO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcbmluZGV4IGNhMTE4MGRiYTFkZWEuLmZjNTE1MmRmYTNjODYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcbkBAIC0zNSw2ICYjNDM7MzUsNyBAQCBzdGF0aWMgaW50IGlwX3R0bF9taW4gPSAxO1xuIHN0YXRpYyBpbnQgaXBfdHRsX21heCA9IDI1NTtcbiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19taW4gPSAxO1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xuJiM0MztzdGF0aWMgaW50IHRjcF9zeW5hY2tfcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkFDS19SRVRSSUVTO1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9saW5lYXJfdGltZW91dHNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7XG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgaXBfcGluZ19ncm91cF9yYW5nZV9taW5bXSA9IHsgMCwgMCB9O1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWF4W10gPSB7IEdJRF9UX01BWCwgR0lEX1RfTUFYIH07XG5AQCAtMTAzNCw2ICYjNDM7MTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7XG4gXHRcdC5tYXhsZW5cdFx0PSBzaXplb2YodTgpLFxuIFx0XHQubW9kZVx0XHQ9IDA2NDQsXG4gXHRcdC5wcm9jX2hhbmRsZXJcdD0gcHJvY19kb3U4dmVjX21pbm1heCxcbiYjNDM7XHRcdC5leHRyYTJcdFx0PSBcdTAwMjZ0Y3Bfc3luYWNrX3JldHJpZXNfbWF4LFxuIFx0fSxcbiAjaWZkZWYgQ09ORklHX1NZTl9DT09LSUVTXG4gXHR7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xuaW5kZXggNDU1NDQxZjFiNjk0OS4uMjQ4OTZmYTA4YTVkOCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3AuY1xuQEAgLTM1Nyw3ICYjNDM7MzU3LDcgQEAgc3RhdGljIHU4IHNlY3NfdG9fcmV0cmFucyhpbnQgc2Vjb25kcywgaW50IHRpbWVvdXQsIGludCBydG9fbWF4KVxuIFx0XHRpbnQgcGVyaW9kID0gdGltZW91dDtcbiBcbiBcdFx0cmVzID0gMTtcbi1cdFx0d2hpbGUgKHNlY29uZHMgXHUwMDNlIHBlcmlvZCBcdTAwMjZcdTAwMjYgcmVzIFx1MDAzYyAyNTUpIHtcbiYjNDM7XHRcdHdoaWxlIChzZWNvbmRzIFx1MDAzZSBwZXJpb2QgXHUwMDI2XHUwMDI2IHJlcyBcdTAwM2MgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUykge1xuIFx0XHRcdHJlcyYjNDM7JiM0Mzs7XG4gXHRcdFx0dGltZW91dCBcdTAwM2NcdTAwM2M9IDE7XG4gXHRcdFx0aWYgKHRpbWVvdXQgXHUwMDNlIHJ0b19tYXgpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuY1xuaW5kZXggYmYxNzFiNWUxZWIzMC4uZGFhNGVhYzA3MmRkOSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF90aW1lci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfdGltZXIuY1xuQEAgLTQ2MiwxMSAmIzQzOzQ2MiwxMyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIFxuIFx0dGNwX3N5bl9hY2tfdGltZW91dChyZXEpO1xuIFxuLVx0LyogQWRkIG9uZSBtb3JlIHJldHJ5IGZvciBmYXN0b3Blbi5cbiYjNDM7XHQvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuIHdoZW4gdGhlIHRpbWVvdXQgY291bnRlciBjYW5cbiYjNDM7XHQgKiByZXByZXNlbnQgaXQuXG4gXHQgKiBQYWlyZWQgd2l0aCBXUklURV9PTkNFKCkgaW4gdGNwX3NvY2tfc2V0X3N5bmNudCgpXG4gXHQgKi9cbiBcdG1heF9yZXRyaWVzID0gUkVBRF9PTkNFKGljc2stXHUwMDNlaWNza19zeW5fcmV0cmllcykgPyA6XG4gXHRcdFJFQURfT05DRShzb2NrX25ldChzayktXHUwMDNlaXB2NC5zeXNjdGxfdGNwX3N5bmFja19yZXRyaWVzKSAmIzQzOyAxO1xuJiM0MztcdG1heF9yZXRyaWVzID0gbWluX3QoaW50LCBtYXhfcmV0cmllcywgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUyk7XG4gXG4gXHRpZiAocmVxLVx1MDAzZW51bV90aW1lb3V0IFx1MDAzZT0gbWF4X3JldHJpZXMpIHtcbiBcdFx0dGNwX3dyaXRlX2Vycihzayk7XG5AQCAtNDg4LDcgJiM0Mzs0OTAsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIFx0aWYgKCF0cC1cdTAwM2VyZXRyYW5zX3N0YW1wKVxuIFx0XHR0cC1cdTAwM2VyZXRyYW5zX3N0YW1wID0gdGNwX3RpbWVfc3RhbXBfdHModHApO1xuIFx0dGNwX3Jlc2V0X3htaXRfdGltZXIoc2ssIElDU0tfVElNRV9SRVRSQU5TLFxuLVx0XHRcdCAgcmVxLVx1MDAzZXRpbWVvdXQgXHUwMDNjXHUwMDNjIHJlcS1cdTAwM2VudW1fdGltZW91dCwgZmFsc2UpO1xuJiM0MztcdFx0XHQgICAgIHRjcF9yZXFza190aW1lb3V0X3NrKHNrLCByZXEpLCBmYWxzZSk7XG4gfVxuIFxuIHN0YXRpYyBib29sIHRjcF9ydHhfcHJvYmUwX3RpbWVkX291dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG9fdGNwX3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7dGNwX3JldHJhbnNtaXRfdGltZXImIzM0OywKICAgICYjMzQ7cmVxc2tfdGltZXJfaGFuZGxlciYjMzQ7LAogICAgJiMzNDt0Y3BfY2hlY2tfcmVxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBTWU5BQ0sgcmV0cmllcyBsaW1pdHMgYW5kIHRpbWVvdXQgY2FsY3VsYXRpb24gbG9naWMgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYW5kIGJvdW5kcyBgdGNwX3N5bmFja19yZXRyaWVzYCB0byAxMjcuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgcmV0cmFuc21pc3Npb24gbG9naWMuIFRoZSBtb2RpZmljYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIFRDUCBzb2NrZXQgb3B0aW9ucyBhbmQgdGltZXIgY2FsbGJhY2tzIGR1cmluZyBjb25uZWN0aW9uIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODA2NDM0Y2EwMzI4MzA5YTM1MGFlYWZkN2I2MTZlMzA0MTI4NjgxZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE1OjM5OjQ3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdAppbmRleCAyMDhmNDY5NjdlZTU5Li5mZDUwMzhiNmNhYjlmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdApAQCAtOTU0LDcgJiM0Mzs5NTQsNyBAQCB0Y3Bfc3RkdXJnIC0gQk9PTEVBTgogCiB0Y3Bfc3luYWNrX3JldHJpZXMgLSBJTlRFR0VSCiAJTnVtYmVyIG9mIHRpbWVzIFNZTkFDS3MgZm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiBhdHRlbXB0IHdpbGwKLQliZSByZXRyYW5zbWl0dGVkLiBTaG91bGQgbm90IGJlIGhpZ2hlciB0aGFuIDI1NS4gRGVmYXVsdCB2YWx1ZQomIzQzOwliZSByZXRyYW5zbWl0dGVkLiBTaG91bGQgbm90IGJlIGhpZ2hlciB0aGFuIDEyNy4gRGVmYXVsdCB2YWx1ZQogCWlzIDUsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIDMxc2Vjb25kcyB0aWxsIHRoZSBsYXN0IHJldHJhbnNtaXNzaW9uCiAJd2l0aCB0aGUgY3VycmVudCBpbml0aWFsIFJUTyBvZiAxc2Vjb25kLiBXaXRoIHRoaXMgdGhlIGZpbmFsIHRpbWVvdXQKIAlmb3IgYSBwYXNzaXZlIFRDUCBjb25uZWN0aW9uIHdpbGwgaGFwcGVuIGFmdGVyIDYzc2Vjb25kcy4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmgKaW5kZXggMmM1Yjg4OTUzMGI1NS4uOGFiMmZkMzY4ZWQzYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvdGNwLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvdGNwLmgKQEAgLTE4Myw2ICYjNDM7MTgzLDggQEAgc3RhdGljX2Fzc2VydCgoMSAmbHQ7Jmx0OyBBVE9fQklUUykgJmd0OyBUQ1BfREVMQUNLX01BWCk7CiAjZGVmaW5lIE1BWF9UQ1BfS0VFUElOVFZMCTMyNzY3CiAjZGVmaW5lIE1BWF9UQ1BfS0VFUENOVAkJMTI3CiAjZGVmaW5lIE1BWF9UQ1BfU1lOQ05UCQkxMjcKJiM0MzsvKiByZXF1ZXN0X3NvY2s6Om51bV90aW1lb3V0IGlzIGEgNy1iaXQgZmllbGQuICovCiYjNDM7I2RlZmluZSBNQVhfVENQX1NZTkFDS19SRVRSSUVTCTEyNwogCiAvKiBFbnN1cmUgdGhhdCBUQ1AgUEFXUyBjaGVja3MgYXJlIHJlbGF4ZWQgYWZ0ZXIgfjIxNDcgc2Vjb25kcwogICogdG8gYXZvaWQgb3ZlcmZsb3dzLiBUaGlzIGFzc3VtZXMgYSBjbG9jayBzbWFsbGVyIHRoYW4gMSBNaHouCkBAIC04ODIsMTIgJiM0Mzs4ODQsMjIgQEAgc3RhdGljIGlubGluZSB1MzIgX190Y3Bfc2V0X3J0byhjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwKQogCXJldHVybiB1c2Vjc190b19qaWZmaWVzKCh0cC0mZ3Q7c3J0dF91cyAmZ3Q7Jmd0OyAzKSAmIzQzOyB0cC0mZ3Q7cnR0dmFyX3VzKTsKIH0KIAotc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSkKJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXRfc2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLAomIzQzOwkJCQkJCSBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiB7Ci0JdTY0IHRpbWVvdXQgPSAodTY0KXJlcS0mZ3Q7dGltZW91dCAmbHQ7Jmx0OyByZXEtJmd0O251bV90aW1lb3V0OwomIzQzOwl1MzIgcnRvX21heCA9IHRjcF9ydG9fbWF4KHNrKTsKJiM0MzsJdTY0IHRpbWVvdXQgPSByZXEtJmd0O3RpbWVvdXQ7CiYjNDM7CiYjNDM7CWlmIChyZXEtJmd0O251bV90aW1lb3V0ICZndDs9IEJJVFNfUEVSX1RZUEUodGltZW91dCkgfHwKJiM0MzsJICAgIHRpbWVvdXQgJmd0OyBVNjRfTUFYICZndDsmZ3Q7IHJlcS0mZ3Q7bnVtX3RpbWVvdXQpCiYjNDM7CQlyZXR1cm4gcnRvX21heDsKJiM0MzsKJiM0MzsJcmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCAmbHQ7Jmx0OyByZXEtJmd0O251bV90aW1lb3V0LCBydG9fbWF4KTsKJiM0Mzt9CiAKLQlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbWluX3QodTY0LCB0aW1lb3V0LAotCQkJCSAgICB0Y3BfcnRvX21heChyZXEtJmd0O3Jza19saXN0ZW5lcikpOwomIzQzO3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiYjNDM7ewomIzQzOwlyZXR1cm4gdGNwX3JlcXNrX3RpbWVvdXRfc2socmVxLSZndDtyc2tfbGlzdGVuZXIsIHJlcSk7CiB9CiAKIHUzMiB0Y3BfZGVsYWNrX21heChjb25zdCBzdHJ1Y3Qgc29jayAqc2spOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMgYi9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYwppbmRleCBjYTExODBkYmExZGVhLi5mYzUxNTJkZmEzYzg2IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYwpAQCAtMzUsNiAmIzQzOzM1LDcgQEAgc3RhdGljIGludCBpcF90dGxfbWluID0gMTsKIHN0YXRpYyBpbnQgaXBfdHRsX21heCA9IDI1NTsKIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21pbiA9IDE7CiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkNOVDsKJiM0MztzdGF0aWMgaW50IHRjcF9zeW5hY2tfcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkFDS19SRVRSSUVTOwogc3RhdGljIGludCB0Y3Bfc3luX2xpbmVhcl90aW1lb3V0c19tYXggPSBNQVhfVENQX1NZTkNOVDsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWluW10gPSB7IDAsIDAgfTsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWF4W10gPSB7IEdJRF9UX01BWCwgR0lEX1RfTUFYIH07CkBAIC0xMDM0LDYgJiM0MzsxMDM1LDcgQEAgc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgaXB2NF9uZXRfdGFibGVbXSA9IHsKIAkJLm1heGxlbgkJPSBzaXplb2YodTgpLAogCQkubW9kZQkJPSAwNjQ0LAogCQkucHJvY19oYW5kbGVyCT0gcHJvY19kb3U4dmVjX21pbm1heCwKJiM0MzsJCS5leHRyYTIJCT0gJmFtcDt0Y3Bfc3luYWNrX3JldHJpZXNfbWF4LAogCX0sCiAjaWZkZWYgQ09ORklHX1NZTl9DT09LSUVTCiAJewpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuYwppbmRleCA0NTU0NDFmMWI2OTQ5Li4yNDg5NmZhMDhhNWQ4IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3AuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3AuYwpAQCAtMzU3LDcgJiM0MzszNTcsNyBAQCBzdGF0aWMgdTggc2Vjc190b19yZXRyYW5zKGludCBzZWNvbmRzLCBpbnQgdGltZW91dCwgaW50IHJ0b19tYXgpCiAJCWludCBwZXJpb2QgPSB0aW1lb3V0OwogCiAJCXJlcyA9IDE7Ci0JCXdoaWxlIChzZWNvbmRzICZndDsgcGVyaW9kICZhbXA7JmFtcDsgcmVzICZsdDsgMjU1KSB7CiYjNDM7CQl3aGlsZSAoc2Vjb25kcyAmZ3Q7IHBlcmlvZCAmYW1wOyZhbXA7IHJlcyAmbHQ7IE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpIHsKIAkJCXJlcyYjNDM7JiM0Mzs7CiAJCQl0aW1lb3V0ICZsdDsmbHQ7PSAxOwogCQkJaWYgKHRpbWVvdXQgJmd0OyBydG9fbWF4KQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuYwppbmRleCBiZjE3MWI1ZTFlYjMwLi5kYWE0ZWFjMDcyZGQ5IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfdGltZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfdGltZXIuYwpAQCAtNDYyLDExICYjNDM7NDYyLDEzIEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiAKIAl0Y3Bfc3luX2Fja190aW1lb3V0KHJlcSk7CiAKLQkvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuLgomIzQzOwkvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuIHdoZW4gdGhlIHRpbWVvdXQgY291bnRlciBjYW4KJiM0MzsJICogcmVwcmVzZW50IGl0LgogCSAqIFBhaXJlZCB3aXRoIFdSSVRFX09OQ0UoKSBpbiB0Y3Bfc29ja19zZXRfc3luY250KCkKIAkgKi8KIAltYXhfcmV0cmllcyA9IFJFQURfT05DRShpY3NrLSZndDtpY3NrX3N5bl9yZXRyaWVzKSA/IDoKIAkJUkVBRF9PTkNFKHNvY2tfbmV0KHNrKS0mZ3Q7aXB2NC5zeXNjdGxfdGNwX3N5bmFja19yZXRyaWVzKSAmIzQzOyAxOwomIzQzOwltYXhfcmV0cmllcyA9IG1pbl90KGludCwgbWF4X3JldHJpZXMsIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpOwogCiAJaWYgKHJlcS0mZ3Q7bnVtX3RpbWVvdXQgJmd0Oz0gbWF4X3JldHJpZXMpIHsKIAkJdGNwX3dyaXRlX2Vycihzayk7CkBAIC00ODgsNyAmIzQzOzQ5MCw3IEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiAJaWYgKCF0cC0mZ3Q7cmV0cmFuc19zdGFtcCkKIAkJdHAtJmd0O3JldHJhbnNfc3RhbXAgPSB0Y3BfdGltZV9zdGFtcF90cyh0cCk7CiAJdGNwX3Jlc2V0X3htaXRfdGltZXIoc2ssIElDU0tfVElNRV9SRVRSQU5TLAotCQkJICByZXEtJmd0O3RpbWVvdXQgJmx0OyZsdDsgcmVxLSZndDtudW1fdGltZW91dCwgZmFsc2UpOwomIzQzOwkJCSAgICAgdGNwX3JlcXNrX3RpbWVvdXRfc2soc2ssIHJlcSksIGZhbHNlKTsKIH0KIAogc3RhdGljIGJvb2wgdGNwX3J0eF9wcm9iZTBfdGltZWRfb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzaywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2NQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDUCBTWU5BQ0sgUmV0cnkgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHR3ZWFraW5nIHRoZSBUQ1AgU1lOQUNLIHJldHJ5IGJlaGF2aW9yLCBzcGVjaWZpY2FsbHkgdGhlIHRpbWVvdXQgY2FsY3VsYXRpb25zIGFuZCByZXRyeSBsaW1pdHMuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZGVzaWduZWQgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYnkgbW9kaWZ5aW5nIGB0Y3BfcmVxc2tfdGltZW91dGAsIGFuZCBpdCYjMzk7cyBjYXBwaW5nIGB0Y3Bfc3luYWNrX3JldHJpZXNgIGF0IDEyNy4gU2VlbXMgc2Vuc2libGUsIGdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHZ1bG5lcmFiaWxpdGllcyBpbiB0aG9zZSBhcmVhcy4KCkdpdmVuIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGVzZSBjaGFuZ2VzLCBhZmZlY3RpbmcgYGluY2x1ZGUvbmV0L3RjcC5oYCwgYG5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jYCwgYG5ldC9pcHY0L3RjcC5jYCwgYW5kIGBuZXQvaXB2NC90Y3BfdGltZXIuY2AsIHRoaXMgKmRlZmluaXRlbHkqIHdhcnJhbnRzIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRvIGZvY3VzIG91ciBlZmZvcnRzLgoKRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuIFRoZSBjb3JlIG9uZXMgdG91Y2hlZCBzZWVtIHRvIGJlOgoqICAgYHRjcF9yZXFza190aW1lb3V0X3NrYCAoaW5saW5lLCBpbiBgaW5jbHVkZS9uZXQvdGNwLmhgKQoqICAgYHRjcF9yZXFza190aW1lb3V0YCAoaW5saW5lLCBpbiBgaW5jbHVkZS9uZXQvdGNwLmhgKQoqICAgYHNlY3NfdG9fcmV0cmFuc2AgaW4gYG5ldC9pcHY0L3RjcC5jYAoqICAgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgIGluIGBuZXQvaXB2NC90Y3BfdGltZXIuY2AKClNpbmNlIHRob3NlIGZpcnN0IHR3byBhcmUgaW5saW5lLCBhbmQgdGhlcmVmb3JlIHByb2JhYmx5IGxlc3MgY3JpdGljYWwgZm9yIHRhcmdldGVkIGZ1enppbmcsIEkgc2hvdWxkIGxvb2sgbW9yZSBkZWVwbHkgaW50byB0aGUgb3RoZXIgdHdvLiBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAgaXMgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZyAtIHRoYXQgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IHRvIGJlIGNhbGxlZCBvbmx5IGZyb20gd2l0aGluIHRoZSBzYW1lIGZpbGUuIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCBpcyBjYWxsZWQuIFNhbWUgZ29lcyBmb3IgYHNlY3NfdG9fcmV0cmFuc2AgYWxzbyBiZWluZyBzdGF0aWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2Zhc3RvcGVuX3N5bmFja190aW1lciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYz03MTAzPXN0YXRpYyB2b2lkIHRjcF9yY3Zfc3lucmVjdl9zdGF0ZV9mYXN0b3BlbihzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzExNS1cdFdSSVRFX09OQ0UoaW5ldF9jc2soc2spLVx1MDAzZWljc2tfcmV0cmFuc21pdHMsIDApO1xubmV0L2lwdjQvdGNwX2lucHV0LmM6NzExNjpcdC8qIEluIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoKSBvbiB0aGUgZmlyc3QgU1lOQUNLIFJUTyB3ZSBzZXRcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcxMTctXHQgKiByZXRyYW5zX3N0YW1wIGJ1dCBkb24mIzM5O3QgZW50ZXIgQ0FfTG9zcywgc28gaW4gY2FzZSB0aGF0IGhhcHBlbmVkIHdlXG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NDQwPXN0YXRpYyB2b2lkIHRjcF91cGRhdGVfcnRvX3N0YXRzKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvaXB2NC90Y3BfdGltZXIuYy00NTYtICovXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0NTc6c3RhdGljIHZvaWQgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbm5ldC9pcHY0L3RjcF90aW1lci5jLTQ1OC17XG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NTM3PXZvaWQgdGNwX3JldHJhbnNtaXRfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jLTU0OS1cdFx0XHQgICAgIHNrLVx1MDAzZXNrX3N0YXRlICE9IFRDUF9GSU5fV0FJVDEpO1xubmV0L2lwdjQvdGNwX3RpbWVyLmM6NTUwOlx0XHR0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHNrLCByZXEpO1xubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTUxLVx0XHQvKiBCZWZvcmUgd2UgcmVjZWl2ZSBBQ0sgdG8gb3VyIFNZTi1BQ0sgZG9uJiMzOTt0IHJldHJhbnNtaXRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzYxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyB0aGUgUmV0cmFuc21pc3Npb24gVGltaW5nKioKClJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGlzIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uLCBhbmQgdGhlIHdheSBpdCBpbnRlcmFjdHMgd2l0aCBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAgaXMgc29tZXRoaW5nIEkgc2hvdWxkIGZvY3VzIG9uLiBUaGF0IHN1Z2dlc3RzIGFuIGltcG9ydGFudCBjb25uZWN0aW9uIHRvIFRDUCBGYXN0IE9wZW4sIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRoYXQgbmVlZHMgY2FyZWZ1bCBtYW5hZ2VtZW50LgoKTm93LCBsZXQmIzM5O3MgZGlnIGludG8gaG93IHRoZSByZXRyYW5zbWlzc2lvbiB0aW1pbmcgaXMgZGV0ZXJtaW5lZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBpbmZsdWVuY2luZyB0aGUgYWN0dWFsIHJldHJhbnNtaXNzaW9uIHRpbWUuIFNvLCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHRvIGNoZWNrIHRoZSBgc2Vjc190b19yZXRyYW5zYCB2YXJpYWJsZS4gVGhhdCB3aWxsIHRlbGwgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCByZXRyYW5zbWlzc2lvbiBiYWNrb2ZmLCBvciB3aGVuIHRoZSBuZXh0IHJldHJhbnNtaXNzaW9uIHdpbGwgYmUgYXR0ZW1wdGVkLiBJIGhhdmUgdG8gc2VlIGhvdyBpdCYjMzk7cyBjYWxjdWxhdGVkLCBhbmQgd2hhdCBmYWN0b3JzIGFyZSBmZWVkaW5nIGludG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2Vjc190b19yZXRyYW5zJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcC5jPTMzOT12b2lkIHRjcF9sZWF2ZV9tZW1vcnlfcHJlc3N1cmUoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L3RjcC5jLTM1MS0vKiBDb252ZXJ0IHNlY29uZHMgdG8gcmV0cmFuc21pdHMgYmFzZWQgb24gaW5pdGlhbCBhbmQgbWF4IHRpbWVvdXQgKi9cbm5ldC9pcHY0L3RjcC5jOjM1MjpzdGF0aWMgdTggc2Vjc190b19yZXRyYW5zKGludCBzZWNvbmRzLCBpbnQgdGltZW91dCwgaW50IHJ0b19tYXgpXG5uZXQvaXB2NC90Y3AuYy0zNTMte1xuLS1cbm5ldC9pcHY0L3RjcC5jPTM4Mzc9aW50IGRvX3RjcF9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvaXB2NC90Y3AuYy0zOTM1LVx0XHRXUklURV9PTkNFKGljc2stXHUwMDNlaWNza19hY2NlcHRfcXVldWUucnNrcV9kZWZlcl9hY2NlcHQsXG5uZXQvaXB2NC90Y3AuYzozOTM2Olx0XHRcdCAgIHNlY3NfdG9fcmV0cmFucyh2YWwsIFRDUF9USU1FT1VUX0lOSVQgLyBIWixcbm5ldC9pcHY0L3RjcC5jLTM5MzctXHRcdFx0XHRcdCAgIFRDUF9SVE9fTUFYIC8gSFopKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjgxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBTb2NrZXQgT3B0aW9ucyBhbmQgUmV0cmFuc21pc3Npb24gVGltZW91dHMqKgoKUmlnaHQsIGBkb190Y3Bfc2V0c29ja29wdGAg4oCTIHRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBzb2NrZXQgb3B0aW9uIGNvbmZpZ3VyYXRpb25zIGF0IHRoZSBUQ1AgbGV2ZWwuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gYHNlY3NfdG9fcmV0cmFuc2AuIFNvLCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIHRoZXJlIGEgZGlyZWN0IGxpbmsgaGVyZT8mIzM0Oy4KCk9rYXksIHNvIEkgd2lsbCBub3cgYW5hbHl6ZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgYHNlY3NfdG9fcmV0cmFuc2AuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBpZiB0aGVyZSBhcmUgaXNzdWVzLiBOb3cgSSBzaG91bGQgY2hlY2sgYHRjcF9yZXFza190aW1lb3V0YC4gSXMgaXQgaW4gdGhpcyBzYW1lIGFyZWE/IEkgc2hvdWxkIGNoZWNrIGl0LCBiZWNhdXNlIGl0IGlzIHJlbGF0ZWQgdG8gcmV0cmFuc21pc3Npb24gdmFsdWVzLiBJdCBtaWdodCBhZmZlY3QgVENQIHJlcXVlc3RzIGFuZCB0aGVpciB0aW1lb3V0cywgYW5kIHRoYXQmIzM5O3Mgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgd2l0aCByZWdhcmRzIHRvIHNvY2tldCBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZXNlIHZhbHVlcyBhcmUgY29uc2lzdGVudCBhbmQgY29ycmVjdGx5IHNldCB0byBhY2hpZXZlIG9wdGltYWwgcGVyZm9ybWFuY2UuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBpbnRvIHRoaXMgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9yZXFza190aW1lb3V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3RjcC5oPTg4Mj1zdGF0aWMgaW5saW5lIHUzMiBfX3RjcF9zZXRfcnRvKGNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHApXG4tLVxuaW5jbHVkZS9uZXQvdGNwLmgtODg2LVxuaW5jbHVkZS9uZXQvdGNwLmg6ODg3OnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG5pbmNsdWRlL25ldC90Y3AuaC04ODgtXHRcdFx0XHRcdFx0IHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbi0tXG5pbmNsdWRlL25ldC90Y3AuaC04OTktXG5pbmNsdWRlL25ldC90Y3AuaDo5MDA6c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbmluY2x1ZGUvbmV0L3RjcC5oLTkwMS17XG5pbmNsdWRlL25ldC90Y3AuaDo5MDI6XHRyZXR1cm4gdGNwX3JlcXNrX3RpbWVvdXRfc2socmVxLVx1MDAzZXJza19saXN0ZW5lciwgcmVxKTtcbmluY2x1ZGUvbmV0L3RjcC5oLTkwMy19XG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xMDMzPXN0YXRpYyB2b2lkIHJlcXNrX3RpbWVyX2hhbmRsZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMTEyLVx0XHRcdGF0b21pY19kZWMoXHUwMDI2cXVldWUtXHUwMDNleW91bmcpO1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMTEzOlx0XHRtb2RfdGltZXIoXHUwMDI2cmVxLVx1MDAzZXJza190aW1lciwgamlmZmllcyAmIzQzOyB0Y3BfcmVxc2tfdGltZW91dChyZXEpKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTExNC1cbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9Njg3PXN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtNzE4LVx0XHRcdHRtcF9vcHQudHNfcmVjZW50X3N0YW1wID0ga3RpbWVfZ2V0X3NlY29uZHMoKSAtXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM6NzE5Olx0XHRcdFx0dGNwX3JlcXNrX3RpbWVvdXQocmVxKSAvIEhaO1xubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTcyMC1cdFx0XHRwYXdzX3JlamVjdCA9IHRjcF9wYXdzX3JlamVjdChcdTAwMjZ0bXBfb3B0LCB0aC1cdTAwM2Vyc3QpO1xuLS1cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy03NjctXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM6NzY4Olx0XHRcdFx0ZXhwaXJlcyAmIzQzOz0gdGNwX3JlcXNrX3RpbWVvdXQocmVxKTtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy03NjktXHRcdFx0XHRpZiAoIWZhc3RvcGVuKVxuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jPTQ1Nz1zdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jLTQ5Mi1cdHRjcF9yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfUkVUUkFOUyxcbm5ldC9pcHY0L3RjcF90aW1lci5jOjQ5MzpcdFx0XHQgICAgIHRjcF9yZXFza190aW1lb3V0X3NrKHNrLCByZXEpLCBmYWxzZSk7XG5uZXQvaXB2NC90Y3BfdGltZXIuYy00OTQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNTAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRDUCBSZXF1ZXN0IFNvY2tldCBUaW1lb3V0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIGhvdyB0aGVzZSBUQ1AgcmVxdWVzdCBzb2NrZXQgdGltZW91dHMgYXJlIGhhbmRsZWQsIGFuZCBpdCBzZWVtcyBsaWtlIGEgZmV3IGZ1bmN0aW9ucyBhcmUgY2VudHJhbCB0byB0aGlzIHByb2Nlc3MuIEkgc2VlIHRoYXQgYHJlcXNrX3RpbWVyX2hhbmRsZXJgIGRpcmVjdGx5IGNhbGxzIGB0Y3BfcmVxc2tfdGltZW91dGAuIEludGVyZXN0aW5nLiBBbHNvLCBgdGNwX2NoZWNrX3JlcWAgYWxzbyBjYWxscyBgdGNwX3JlcXNrX3RpbWVvdXRgLCBhbmQgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgIGNhbGxzIGB0Y3BfcmVxc2tfdGltZW91dF9za2AuIFNlZW1zIGxpa2UgYSBwYXR0ZXJuIGhlcmUsIHdpdGggbXVsdGlwbGUgcGF0aHMgbGVhZGluZyB0byB0aGVzZSB0aW1lb3V0IGZ1bmN0aW9ucy4KCkkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYSBmZXcga2V5IHN5bWJvbHM6IGBkb190Y3Bfc2V0c29ja29wdGAsIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAsIGByZXFza190aW1lcl9oYW5kbGVyYCwgYW5kIGB0Y3BfY2hlY2tfcmVxYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHBpZWNlcyBmaXQgdG9nZXRoZXIuCgpOb3csIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZiByZWxhdGVkIHRvIHRoZSB0aW1lb3V0IGJlaGF2aW9yLiBJIHF1aWNrbHkgc2Nhbm5lZCBmb3IgYW55IHJlbGV2YW50IGBDT05GSUdgIG9wdGlvbnMuIEkgbm90aWNlZCBgQ09ORklHX1NZTl9DT09LSUVTYCBtZW50aW9uZWQgaW4gYHN5c2N0bF9uZXRfaXB2NC5jYCwgYnV0IGl0IGFwcGVhcnMgdG8gYmUgcmVsYXRlZCB0byBhbm90aGVyIHN5c2N0bCBzZXR0aW5nLiBUaGUgb25lIEkmIzM5O20gdHJhY2tpbmcgaXMgYHRjcF9zeW5hY2tfcmV0cmllc2AsIHNvIEkmIzM5O2xsIGtlZXAgdGhhdCBpbiBtaW5kLiBOb3RoaW5nIHNwZWNpZmljIGxlYXBzIG91dC4gU28sIGF0IGxlYXN0IGZvciBub3csIGl0IGRvZXNuJiMzOTt0IGxvb2sgbGlrZSBhbnkgc3BlY2lhbCBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgdGltZW91dCBsb2dpYy4KCkZpbmFsbHksIEkmIzM5O2xsIHF1aWNrbHkgdmVyaWZ5IGlmIGByZXFza190aW1lcl9oYW5kbGVyYCBpcyBkZWNsYXJlZCBgc3RhdGljYCBvciBub3QuIElmIGl0JiMzOTtzIHN0YXRpYywgSSB3YW50IHRvIGZpbmQgdGhlIGNhbGxlciB3aXRoaW4gdGhlIHNhbWUgc2NvcGUuIElmIGl0JiMzOTtzIG5vdCwgSSYjMzk7bGwgYnJvYWRlbiBteSBzZWFyY2guIFVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGFuZCBjYWxsZXIgaXMgdml0YWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlIG9mIHRoaXMgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXFza190aW1lcl9oYW5kbGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTAyNz12b2lkIGluZXRfY3NrX3JlcXNrX3F1ZXVlX2Ryb3BfYW5kX3B1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwMzItXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjEwMzM6c3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTAzNC17XG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDU5LVx0XHRyZWZjb3VudF9zZXQoXHUwMDI2bnJlcS1cdTAwM2Vyc2tfcmVmY250LCAyICYjNDM7IDEpO1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMDYwOlx0XHR0aW1lcl9zZXR1cChcdTAwMjZucmVxLVx1MDAzZXJza190aW1lciwgcmVxc2tfdGltZXJfaGFuZGxlciwgVElNRVJfUElOTkVEKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTA2MS1cdFx0cmVxc2tfcXVldWVfbWlncmF0ZWQoXHUwMDI2aW5ldF9jc2sobnNrKS1cdTAwM2VpY3NrX2FjY2VwdF9xdWV1ZSwgcmVxKTtcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTExNTA9c3RhdGljIGJvb2wgcmVxc2tfcXVldWVfaGFzaF9yZXEoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTE1OC1cdHJlcS1cdTAwM2V0aW1lb3V0ID0gdGNwX3RpbWVvdXRfaW5pdCgoc3RydWN0IHNvY2sgKilyZXEpO1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMTU5Olx0dGltZXJfc2V0dXAoXHUwMDI2cmVxLVx1MDAzZXJza190aW1lciwgcmVxc2tfdGltZXJfaGFuZGxlciwgVElNRVJfUElOTkVEKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTE2MC1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jPTU0PXN0YXRpYyBzdHJ1Y3QgbWlncmF0ZV9yZXVzZXBvcnRfdGVzdF9jYXNlIHtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTgzLVx0e1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYzo4NDpcdFx0Lm5hbWUgPSBcJiMzNDtJUHY0IFRDUF9ORVdfU1lOX1JFQ1YgcmVxc2tfdGltZXJfaGFuZGxlclwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmMtODUtXHRcdC5mYW1pbHkgPSBBRl9JTkVULFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmMtMTE1LVx0e1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYzoxMTY6XHRcdC5uYW1lID0gXCYjMzQ7SVB2NiBUQ1BfTkVXX1NZTl9SRUNWIHJlcXNrX3RpbWVyX2hhbmRsZXJcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTExNy1cdFx0LmZhbWlseSA9IEFGX0lORVQ2LFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM9NDkxPXN0YXRpYyB2b2lkIHJ1bl90ZXN0KHN0cnVjdCBtaWdyYXRlX3JldXNlcG9ydF90ZXN0X2Nhc2UgKnRlc3RfY2FzZSxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTU0Ny1cdFx0LyogV2FpdCBmb3IgU1lOJiM0MztBQ0sgdGltZXJzIHRvIGV4cGlyZSBzbyB0aGF0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jOjU0ODpcdFx0ICogcmVxc2tfdGltZXJfaGFuZGxlcigpIG1pZ3JhdGVzIFRDUF9ORVdfU1lOX1JFQ1YgcmVxdWVzdHMuXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTU0OS1cdFx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NzMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRW50cnkgUG9pbnQgYW5kIFBvdGVudGlhbCBDcm9zcy1GaWxlIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBJJiMzOTttIGxvb2tpbmcgYXQgYHJlcXNrX3RpbWVyX2hhbmRsZXJgLiBJbW1lZGlhdGVseSwgdGhlICYjMzQ7aGFuZGxlciYjMzQ7IHN1ZmZpeCBhbmQgY29udGV4dCBjbHVlIG1lIGluIOKAkyB0aGlzIGlzIGEgdGltZXIgY2FsbGJhY2suIFNvLCBpdCBmdW5jdGlvbnMgYXMgYW4gZW50cnkgcG9pbnQsIGFuZCB0aGF0IGlzIGltcG9ydGFudCB0byByZW1lbWJlci4gVGhhdCBtZWFucyB0aGlzIGlzIHdoZXJlIHRoZSBleGVjdXRpb24gZmxvdyBiZWdpbnMgYWZ0ZXIgYSBzcGVjaWZpYyB0aW1lciBldmVudC4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIHRyYWNpbmcgZXhlY3V0aW9uLgoKTm93LCBgdGNwX2NoZWNrX3JlcWAgaGFzIG1lIHdvbmRlcmluZy4gSXMgdGhpcyBhIGZ1bmN0aW9uIGV4cG9zZWQgdG8gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCwgb3IgaXMgaXQgdXNlZCBhY3Jvc3MgbXVsdGlwbGUgZmlsZXMgaW4gdGhpcyBzcGVjaWZpYyBtb2R1bGU/IEtub3dpbmcgdGhlIHNjb3BlIG9mIGB0Y3BfY2hlY2tfcmVxYCBpcyBjcnVjaWFsLiBJcyBpdCBhbiBpbnRlcm5hbCBmdW5jdGlvbiBvciBpcyBpdCBzb21ldGhpbmcgZGVjbGFyZWQgYXMgYEVYUE9SVF9TWU1CT0xgPyBVbmRlcnN0YW5kaW5nIGl0cyB2aXNpYmlsaXR5IHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgdGhlIGJyZWFkdGggb2YgaXRzIGltcGFjdCBhbmQgaG93IHRpZ2h0bHkgY291cGxlZCB0aGlzIGNvZGUgaXMuIEkgbmVlZCB0byB0cmFjayBkb3duIGl0cyBkZWNsYXJhdGlvbiBhbmQgdXNhZ2UgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUuIEl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgdGhlIHRpbWVyIGV2ZW50LiBEb2VzIHRoZSB0aW1lciBhZmZlY3QgdGhlIHJlc3VsdCBvciB2aWNlIHZlcnNhPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfY2hlY2tfcmVxJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3RjcC5oPTQ3OD1lbnVtIHRjcF90d19zdGF0dXMgdGNwX3RpbWV3YWl0X3N0YXRlX3Byb2Nlc3Moc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsXG4tLVxuaW5jbHVkZS9uZXQvdGNwLmgtNDgyLVx0XHRcdFx0XHQgICAgICBlbnVtIHNrYl9kcm9wX3JlYXNvbiAqZHJvcF9yZWFzb24pO1xuaW5jbHVkZS9uZXQvdGNwLmg6NDgzOnN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmluY2x1ZGUvbmV0L3RjcC5oLTQ4NC1cdFx0XHQgICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsIGJvb2wgZmFzdG9wZW4sXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmM9NzE1Mj10Y3BfcmN2X3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMTgtXHRcdFNLQl9EUl9TRVQocmVhc29uLCBUQ1BfRkFTVE9QRU4pO1xubmV0L2lwdjQvdGNwX2lucHV0LmM6NzIxOTpcdFx0aWYgKCF0Y3BfY2hlY2tfcmVxKHNrLCBza2IsIHJlcSwgdHJ1ZSwgXHUwMDI2cmVxX3N0b2xlbiwgXHUwMDI2cmVhc29uKSlcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMjAtXHRcdFx0Z290byBkaXNjYXJkO1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MjA3MD1pbnQgdGNwX3Y0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjE2NS1cdFx0XHR0Y3BfdjRfZmlsbF9jYihza2IsIGlwaCwgdGgpO1xubmV0L2lwdjQvdGNwX2lwdjQuYzoyMTY2Olx0XHRcdG5zayA9IHRjcF9jaGVja19yZXEoc2ssIHNrYiwgcmVxLCBmYWxzZSwgXHUwMDI2cmVxX3N0b2xlbixcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjE2Ny1cdFx0XHRcdFx0ICAgIFx1MDAyNmRyb3BfcmVhc29uKTtcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9NTQ2PXN0cnVjdCBzb2NrICp0Y3BfY3JlYXRlX29wZW5yZXFfY2hpbGQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy02ODYtXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM6Njg3OnN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy02ODgtXHRcdFx0ICAgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTczMD1JTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgdGNwX3Y2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTgyMS1cdFx0XHR0Y3BfdjZfZmlsbF9jYihza2IsIGhkciwgdGgpO1xubmV0L2lwdjYvdGNwX2lwdjYuYzoxODIyOlx0XHRcdG5zayA9IHRjcF9jaGVja19yZXEoc2ssIHNrYiwgcmVxLCBmYWxzZSwgXHUwMDI2cmVxX3N0b2xlbixcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTgyMy1cdFx0XHRcdFx0ICAgIFx1MDAyNmRyb3BfcmVhc29uKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY2OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoaXMgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byBUQ1AgQ29ubmVjdGlvbiBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IFRDUCBjb25uZWN0aW9uIHJlcXVlc3RzIGFyZSB2YWxpZGF0ZWQsIGFuZCB3aGVyZSB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGB0Y3BfY2hlY2tfcmVxYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggSVB2NCBhbmQgSVB2NiByZWNlcHRpb24gcGF0aHMgKGB0Y3BfdjRfcmN2YCBhbmQgYHRjcF92Nl9yY3ZgKS4gVGhvc2UgcmVjZWl2ZXIgZnVuY3Rpb25zIGFyZSBkZWZpbml0ZWx5IGdvb2Qgc3RhcnRpbmcgcG9pbnRzIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgY29udGV4dCwgYnV0LCBrbm93aW5nIHRoZSBhcmNoaXRlY3R1cmUsIEkgbmVlZCB0byByZW1lbWJlciB0aG9zZSBhcmUgaW5jcmVkaWJseSBob3QgY29kZSBwYXRocyDigJMgZXZlcnkgcGFja2V0IGdvZXMgdGhyb3VnaCB0aGVtLCB3aGljaCBtZWFucyB0aGV5IGFyZSBsaWtlbHkgb3B0aW1pemVkLiBTbywgYSBkZWVwZXIgZGl2ZSB0aGVyZSB3aWxsIGJlIGNvc3RseSBpbiB0ZXJtcyBvZiB1bmRlcnN0YW5kaW5nLiBUaGVyZWZvcmUsIGB0Y3BfY2hlY2tfcmVxYCBpdHNlbGYgc2VlbXMgbGlrZSBhIGJldHRlciwgbGVzcyBub2lzeSwgZm9jdXMgc3ltYm9sLiBUaGlzIGlzIHdoZXJlIEkgc2hvdWxkIGNvbmNlbnRyYXRlIG15IGluaXRpYWwgZWZmb3J0cy4KCk5vdywgbGV0JiMzOTtzIHBpdm90LiBTaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNvbm5lY3Rpb24gdmFsaWRhdGlvbiBhbmQgcG90ZW50aWFsIHJldHJhbnNtaXNzaW9ucywgYHRjcF9yZXRyYW5zbWl0X3RpbWVyYCBpcyBhbm90aGVyIHN5bWJvbCB0aGF0IHJlcXVpcmVzIGludmVzdGlnYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IGhhcyB0byBvZmZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX3JldHJhbnNtaXRfdGltZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaD0xOTM9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF90aW1lb3V0X2V4cGlyZXMoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0xOTQte1xuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaDoxOTU6XHRyZXR1cm4gUkVBRF9PTkNFKHNrLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLmV4cGlyZXMpO1xuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0xOTYtfVxuLS1cbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg9MjA0PXN0YXRpYyBpbmxpbmUgdm9pZCBpbmV0X2Nza19jbGVhcl94bWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzaywgY29uc3QgaW50IHdoYXQpXG4tLVxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0yMTAtI2lmZGVmIElORVRfQ1NLX0NMRUFSX1RJTUVSU1xuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaDoyMTE6XHRcdHNrX3N0b3BfdGltZXIoc2ssIFx1MDAyNnNrLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyKTtcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmgtMjEyLSNlbmRpZlxuLS1cbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg9MjI3PXN0YXRpYyBpbmxpbmUgdm9pZCBpbmV0X2Nza19yZXNldF94bWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzaywgY29uc3QgaW50IHdoYXQsXG4tLVxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0yNDItXHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNmljc2stXHUwMDNlaWNza19wZW5kaW5nLCB3aGF0KTtcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg6MjQzOlx0XHRza19yZXNldF90aW1lcihzaywgXHUwMDI2c2stXHUwMDNldGNwX3JldHJhbnNtaXRfdGltZXIsIHdoZW4pO1xuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0yNDQtXHR9IGVsc2UgaWYgKHdoYXQgPT0gSUNTS19USU1FX0RBQ0spIHtcbi0tXG5pbmNsdWRlL25ldC9zb2NrLmg9MjQyPXN0cnVjdCBza19maWx0ZXI7XG4tLVxuaW5jbHVkZS9uZXQvc29jay5oLTMxMi0gICpcdEBza190aW1lcjogc29jayBjbGVhbnVwIHRpbWVyXG5pbmNsdWRlL25ldC9zb2NrLmg6MzEzOiAgKlx0QHRjcF9yZXRyYW5zbWl0X3RpbWVyOiB0Y3AgcmV0cmFuc21pdCB0aW1lclxuaW5jbHVkZS9uZXQvc29jay5oOjMxNDogICpcdEBtcHRjcF9yZXRyYW5zbWl0X3RpbWVyOiBtcHRjcCByZXRyYW5zbWl0IHRpbWVyXG5pbmNsdWRlL25ldC9zb2NrLmgtMzE1LSAgKlx0QHNrX3N0YW1wOiB0aW1lIHN0YW1wIG9mIGxhc3QgcGFja2V0IHJlY2VpdmVkXG4tLVxuaW5jbHVkZS9uZXQvc29jay5oPTM2NT1zdHJ1Y3Qgc29jayB7XG4tLVxuaW5jbHVkZS9uZXQvc29jay5oLTQ5NC1cdFx0c3RydWN0IHRpbWVyX2xpc3RcdHNrX3RpbWVyO1xuaW5jbHVkZS9uZXQvc29jay5oOjQ5NTpcdFx0c3RydWN0IHRpbWVyX2xpc3RcdHRjcF9yZXRyYW5zbWl0X3RpbWVyO1xuaW5jbHVkZS9uZXQvc29jay5oOjQ5NjpcdFx0c3RydWN0IHRpbWVyX2xpc3RcdG1wdGNwX3JldHJhbnNtaXRfdGltZXI7XG5pbmNsdWRlL25ldC9zb2NrLmgtNDk3LVx0fTtcbi0tXG5pbmNsdWRlL25ldC90Y3AuaD03NTM9aW50IHRjcF9yZXRyYW5zbWl0X3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIGludCBzZWdzKTtcbmluY2x1ZGUvbmV0L3RjcC5oOjc1NDp2b2lkIHRjcF9yZXRyYW5zbWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzayk7XG5pbmNsdWRlL25ldC90Y3AuaC03NTUtdm9pZCB0Y3BfeG1pdF9yZXRyYW5zbWl0X3F1ZXVlKHN0cnVjdCBzb2NrICopO1xuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9NzE4PXZvaWQgaW5ldF9jc2tfaW5pdF94bWl0X3RpbWVycyhzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy03MjQtXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjcyNTpcdHRpbWVyX3NldHVwKFx1MDAyNnNrLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLCByZXRyYW5zbWl0X2hhbmRsZXIsIDApO1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy03MjYtXHR0aW1lcl9zZXR1cChcdTAwMjZpY3NrLVx1MDAzZWljc2tfZGVsYWNrX3RpbWVyLCBkZWxhY2tfaGFuZGxlciwgMCk7XG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz03MzE9dm9pZCBpbmV0X2Nza19jbGVhcl94bWl0X3RpbWVycyhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy03MzctXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjczODpcdHNrX3N0b3BfdGltZXIoc2ssIFx1MDAyNnNrLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtNzM5LVx0c2tfc3RvcF90aW1lcihzaywgXHUwMDI2aWNzay1cdTAwM2VpY3NrX2RlbGFja190aW1lcik7XG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz03NDM9dm9pZCBpbmV0X2Nza19jbGVhcl94bWl0X3RpbWVyc19zeW5jKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTc1Mi1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6NzUzOlx0c2tfc3RvcF90aW1lcl9zeW5jKHNrLCBcdTAwMjZzay1cdTAwM2V0Y3BfcmV0cmFuc21pdF90aW1lcik7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTc1NC1cdHNrX3N0b3BfdGltZXJfc3luYyhzaywgXHUwMDI2aWNzay1cdTAwM2VpY3NrX2RlbGFja190aW1lcik7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz00Mzg9dm9pZCB0Y3BfbGRfUlRPX3JldmVydChzdHJ1Y3Qgc29jayAqc2ssIHUzMiBzZXEpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy00NzAtXHRcdCAqL1xubmV0L2lwdjQvdGNwX2lwdjQuYzo0NzE6XHRcdHRjcF9yZXRyYW5zbWl0X3RpbWVyKHNrKTtcbm5ldC9pcHY0L3RjcF9pcHY0LmMtNDcyLVx0fVxuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jPTM4OT1zdGF0aWMgdm9pZCB0Y3BfcHJvYmVfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jLTQwNy1cdCAqIGNvcnJlc3BvbmRpbmcgc3lzdGVtIGxpbWl0LiBXZSBhbHNvIGltcGxlbWVudCBzaW1pbGFyIHBvbGljeSB3aGVuXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0MDg6XHQgKiB3ZSB1c2UgUlRPIHRvIHByb2JlIHdpbmRvdyBpbiB0Y3BfcmV0cmFuc21pdF90aW1lcigpLlxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNDA5LVx0ICovXG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NDk2PXN0YXRpYyBib29sIHRjcF9ydHhfcHJvYmUwX3RpbWVkX291dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTI2LS8qKlxubmV0L2lwdjQvdGNwX3RpbWVyLmM6NTI3OiAqICB0Y3BfcmV0cmFuc21pdF90aW1lcigpIC0gVGhlIFRDUCByZXRyYW5zbWl0IHRpbWVvdXQgaGFuZGxlclxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTI4LSAqICBAc2s6ICBQb2ludGVyIHRvIHRoZSBjdXJyZW50IHNvY2tldC5cbi0tXG5uZXQvaXB2NC90Y3BfdGltZXIuYy01MzYtICovXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo1Mzc6dm9pZCB0Y3BfcmV0cmFuc21pdF90aW1lcihzdHJ1Y3Qgc29jayAqc2spXG5uZXQvaXB2NC90Y3BfdGltZXIuYy01Mzgte1xuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jPTY5Nz12b2lkIHRjcF93cml0ZV90aW1lcl9oYW5kbGVyKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvaXB2NC90Y3BfdGltZXIuYy03MDYtXHRpZiAodGltZV9hZnRlcih0Y3BfdGltZW91dF9leHBpcmVzKHNrKSwgamlmZmllcykpIHtcbm5ldC9pcHY0L3RjcF90aW1lci5jOjcwNzpcdFx0c2tfcmVzZXRfdGltZXIoc2ssIFx1MDAyNnNrLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNzA4LVx0XHRcdCAgICAgICB0Y3BfdGltZW91dF9leHBpcmVzKHNrKSk7XG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNzIyLVx0XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZpY3NrLVx1MDAzZWljc2tfcGVuZGluZywgMCk7XG5uZXQvaXB2NC90Y3BfdGltZXIuYzo3MjM6XHRcdHRjcF9yZXRyYW5zbWl0X3RpbWVyKHNrKTtcbm5ldC9pcHY0L3RjcF90aW1lci5jLTcyNC1cdFx0YnJlYWs7XG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NzMyPXN0YXRpYyB2b2lkIHRjcF93cml0ZV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbm5ldC9pcHY0L3RjcF90aW1lci5jLTczMy17XG5uZXQvaXB2NC90Y3BfdGltZXIuYzo3MzQ6XHRzdHJ1Y3Qgc29jayAqc2sgPSB0aW1lcl9jb250YWluZXJfb2Yoc2ssIHQsIHRjcF9yZXRyYW5zbWl0X3RpbWVyKTtcbm5ldC9pcHY0L3RjcF90aW1lci5jLTczNS1cbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz00Mjg9c3RhdGljIHZvaWQgbXB0Y3Bfc3RvcF9ydHhfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxubmV0L21wdGNwL3Byb3RvY29sLmMtNDI5LXtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQzMDpcdHNrX3N0b3BfdGltZXIoc2ssIFx1MDAyNnNrLVx1MDAzZW1wdGNwX3JldHJhbnNtaXRfdGltZXIpO1xubmV0L21wdGNwL3Byb3RvY29sLmMtNDMxLVx0bXB0Y3Bfc2soc2spLVx1MDAzZXRpbWVyX2l2YWwgPSAwO1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTk5Nz1zdGF0aWMgYm9vbCBtcHRjcF9ydHhfdGltZXJfcGVuZGluZyhzdHJ1Y3Qgc29jayAqc2spXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy05OTgte1xubmV0L21wdGNwL3Byb3RvY29sLmM6OTk5Olx0cmV0dXJuIHRpbWVyX3BlbmRpbmcoXHUwMDI2c2stXHUwMDNlbXB0Y3BfcmV0cmFuc21pdF90aW1lcik7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMDAwLX1cbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0xMDAyPXN0YXRpYyB2b2lkIG1wdGNwX3Jlc2V0X3J0eF90aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtMTAxMC1cdHRvdXQgPSBtcHRjcF9zayhzayktXHUwMDNldGltZXJfaXZhbDtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjEwMTE6XHRza19yZXNldF90aW1lcihzaywgXHUwMDI2c2stXHUwMDNlbXB0Y3BfcmV0cmFuc21pdF90aW1lciwgamlmZmllcyAmIzQzOyB0b3V0KTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTEwMTItfVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTIzMTM9c3RhdGljIGludCBtcHRjcF9yZWN2bXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTI0MjQtXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyNDI1OnN0YXRpYyB2b2lkIG1wdGNwX3JldHJhbnNtaXRfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yNDI2LXtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjI0Mjc6XHRzdHJ1Y3Qgc29jayAqc2sgPSB0aW1lcl9jb250YWluZXJfb2Yoc2ssIHQsIG1wdGNwX3JldHJhbnNtaXRfdGltZXIpO1xubmV0L21wdGNwL3Byb3RvY29sLmMtMjQyOC1cdHN0cnVjdCBtcHRjcF9zb2NrICptc2sgPSBtcHRjcF9zayhzayk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9MzA0ND1zdGF0aWMgdm9pZCBfX21wdGNwX2luaXRfc29jayhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtMzA3NC1cdC8qIHJlLXVzZSB0aGUgY3NrIHJldHJhbnMgdGltZXIgZm9yIE1QVENQLWxldmVsIHJldHJhbnMgKi9cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjMwNzU6XHR0aW1lcl9zZXR1cChcdTAwMjZzay1cdTAwM2VtcHRjcF9yZXRyYW5zbWl0X3RpbWVyLCBtcHRjcF9yZXRyYW5zbWl0X3RpbWVyLCAwKTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMwNzYtXHR0aW1lcl9zZXR1cChcdTAwMjZtc2stXHUwMDNlc2subXB0Y3BfdG91dF90aW1lciwgbXB0Y3BfdG91dF90aW1lciwgMCk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDQuYz03ND1zdGF0aWMgaW50IGR1bXBfdGNwX3NvY2soc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCB0Y3Bfc29jayAqdHAsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDQuYy0xMDEtXHRcdHRpbWVyX2FjdGl2ZSA9IDE7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jOjEwMjpcdFx0dGltZXJfZXhwaXJlcyA9IHNwLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLmV4cGlyZXM7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jLTEwMy1cdH0gZWxzZSBpZiAoaWNzay1cdTAwM2VpY3NrX3BlbmRpbmcgPT0gSUNTS19USU1FX1BST0JFMCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDQuYy0xMDQtXHRcdHRpbWVyX2FjdGl2ZSA9IDQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jOjEwNTpcdFx0dGltZXJfZXhwaXJlcyA9IHNwLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLmV4cGlyZXM7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jLTEwNi1cdH0gZWxzZSBpZiAodGltZXJfcGVuZGluZyhcdTAwMjZpY3NrLVx1MDAzZWljc2tfa2VlcGFsaXZlX3RpbWVyKSkge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A2LmM9NzQ9c3RhdGljIGludCBkdW1wX3RjcDZfc29jayhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IHRjcDZfc29jayAqdHAsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDYuYy0xMDEtXHRcdHRpbWVyX2FjdGl2ZSA9IDE7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNi5jOjEwMjpcdFx0dGltZXJfZXhwaXJlcyA9IHNwLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLmV4cGlyZXM7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNi5jLTEwMy1cdH0gZWxzZSBpZiAoaWNzay1cdTAwM2VpY3NrX3BlbmRpbmcgPT0gSUNTS19USU1FX1BST0JFMCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDYuYy0xMDQtXHRcdHRpbWVyX2FjdGl2ZSA9IDQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNi5jOjEwNTpcdFx0dGltZXJfZXhwaXJlcyA9IHNwLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLmV4cGlyZXM7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNi5jLTEwNi1cdH0gZWxzZSBpZiAodGltZXJfcGVuZGluZyhcdTAwMjZpY3NrLVx1MDAzZWljc2tfa2VlcGFsaXZlX3RpbWVyKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjE5OAoJCQkJCQkJb3V0cHV0OiAxMjcKCQkJCQkJCXRob3VnaHRzOiA3MzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVENQIFRpbWVyIGFuZCBTb2NrZXQgT3B0aW9uIEVudHJ5IFBvaW50cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGlkZW50aWZ5IHRoZSBrZXkgZW50cnkgcG9pbnRzIGludG8gdGhlIHJlbGV2YW50IFRDUCBsb2dpYywga2VlcGluZyBpbiBtaW5kIHRoZSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBmdW5jdGlvbnMgYXMgdGhlICYjMzQ7Y2xlYW5lc3QmIzM0OyB3YXkgdG8gYWNjZXNzIHRoZSBjb2RlLiBJIG5lZWQgdG8gdHJhY2UgaG93IHRoZSBgdGNwX3JldHJhbnNtaXRfdGltZXJgLCBgcmVxc2tfdGltZXJfaGFuZGxlcmAsIGB0Y3BfY2hlY2tfcmVxYCwgYW5kIGBkb190Y3Bfc2V0c29ja29wdGAgZnVuY3Rpb25zIHJlbGF0ZSB0byBlYWNoIG90aGVyLgoKRmlyc3QsIEkgc2VlIHRoYXQgYHRjcF9yZXRyYW5zbWl0X3RpbWVyYCBpcyB0cmlnZ2VyZWQgZnJvbSBgdGNwX3dyaXRlX3RpbWVyX2hhbmRsZXJgLCB3aGljaCBpdHNlbGYgaXMgYSBjYWxsYmFjayBmcm9tIHRoZSBgdGNwX3dyaXRlX3RpbWVyYC4gVGhhdCYjMzk7cyBhIGNsZWFyIGNoYWluLiBUaGUgbGlzdCBJJiMzOTttIHdvcmtpbmcgd2l0aCBpczoKCiogICBgZG9fdGNwX3NldHNvY2tvcHRgCiogICBgdGNwX3JldHJhbnNtaXRfdGltZXJgCiogICBgcmVxc2tfdGltZXJfaGFuZGxlcmAKKiAgIGB0Y3BfY2hlY2tfcmVxYAoKV2FpdCwgYHJlcXNrX3RpbWVyX2hhbmRsZXJgIGlzIG1hcmtlZCBhcyBgc3RhdGljYC4gVGhhdCBtZWFucyBpdCYjMzk7cyBub3QgZGlyZWN0bHkgZXhwb3J0ZWQuIEhvd2V2ZXIsIGl0ICppcyogYSB0aW1lciBjYWxsYmFjaywgc28gaXRzIGFkZHJlc3MgaXMgdGFrZW4gYW5kIHBhc3NlZCB0byBgdGltZXJfc2V0dXBgLiBUaGVyZWZvcmUsIGl0JiMzOTtzIHNhZmUgdG8gdXNlIGl0LCBldmVuIGlmIGl0JiMzOTtzIHN0YXRpYywgc2luY2UgaXQgd29uJiMzOTt0IGJlIGlubGluZWQuIFRoZSBvdGhlciB0aHJlZSBsb29rIGdvb2Q6IGB0Y3BfY2hlY2tfcmVxYCwgYGRvX3RjcF9zZXRzb2Nrb3B0YCwgYW5kIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAgYXJlIGFsbCBub24tc3RhdGljLgoKTm93LCBJJiMzOTttIGRpZ2dpbmcgZGVlcGVyIHRvIHNlZSB3aGljaCBvZiB0aGVzZSBhcmUgdGhlIGJlc3QgZW50cnkgcG9pbnRzLiBMb29raW5nIGF0IHRoZSBjYWxsIGNoYWluczoKCiogICBgZG9fdGNwX3NldHNvY2tvcHRgIGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byBgc2Vjc190b19yZXRyYW5zYCB3aGVuIHNldHRpbmcgYFRDUF9ERUZFUl9BQ0NFUFRgLiBTZWVtcyBsaWtlIGEgZ29vZCBlbnRyeSBwb2ludC4KKiAgIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAgZGlyZWN0bHkgY2FsbHMgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgLiBNYWtlcyBzZW5zZSBhcyBhbiBlbnRyeSBwb2ludC4KKiAgIGByZXFza190aW1lcl9oYW5kbGVyYCBkaXJlY3RseSBjYWxscyBgdGNwX3JlcXNrX3RpbWVvdXRgLiBDb25maXJtcyB0aGlzIGlzIGEgZ29vZCBlbnRyeSBwb2ludC4KKiAgIGB0Y3BfY2hlY2tfcmVxYCBhbHNvIGNhbGxzIGB0Y3BfcmVxc2tfdGltZW91dGAuIENvbmZpcm1zIHRoaXMgaXMgYSBnb29kIGVudHJ5IHBvaW50IGFzIHdlbGwuCgpTbywgSSBoYXZlIGEgZ29vZCBoYW5kbGUgb24gd2hlcmUgdGhlIGxvZ2ljIHN0YXJ0cy4gVGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJIG5lZWQgdG8gd29ycnkgYWJvdXQgaGVyZS4KCkJhc2VkIG9uIHRoaXMgYW5hbHlzaXMsIHRoZSBwYXRjaCBmb2N1c2VzIG9uIG1vZGlmeWluZyBUQ1AgU1lOQUNLIHJldHJpZXMgYW5kIHRpbWVvdXQgY2FsY3VsYXRpb24sIHNwZWNpZmljYWxseSB0byBhZGRyZXNzIHBvdGVudGlhbCBvdmVyZmxvdyBpc3N1ZXMgYW5kIGxpbWl0IGB0Y3Bfc3luYWNrX3JldHJpZXNgIHRvIDEyNy4gVGhlc2UgY2hhbmdlcyB0b3VjaCBjb3JlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgcmV0cmFuc21pc3Npb24gbG9naWMuIFRoaXMgbG9naWMgaXMgYWNjZXNzaWJsZSB0aHJvdWdoIHNvY2tldCBvcHRpb25zIGFuZCB0aW1lciBjYWxsYmFja3MgaW52b2x2ZWQgaW4gY29ubmVjdGlvbiBoYW5kbGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RvX3RjcF9zZXRzb2Nrb3B0JiMzNDssCiAgICAmIzM0O3RjcF9yZXRyYW5zbWl0X3RpbWVyJiMzNDssCiAgICAmIzM0O3JlcXNrX3RpbWVyX2hhbmRsZXImIzM0OywKICAgICYjMzQ7dGNwX2NoZWNrX3JlcSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBUQ1AgU1lOQUNLIHJldHJpZXMgbGltaXRzIGFuZCB0aW1lb3V0IGNhbGN1bGF0aW9uIGxvZ2ljIHRvIHByZXZlbnQgc2hpZnQgb3ZlcmZsb3dzIGFuZCBib3VuZHMgYHRjcF9zeW5hY2tfcmV0cmllc2AgdG8gMTI3LiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjb3JlIFRDUCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgYW5kIHJldHJhbnNtaXNzaW9uIGxvZ2ljLiBUaGUgbW9kaWZpY2F0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBUQ1Agc29ja2V0IG9wdGlvbnMgYW5kIHRpbWVyIGNhbGxiYWNrcyBkdXJpbmcgY29ubmVjdGlvbiBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb190Y3Bfc2V0c29ja29wdCYjMzQ7LAogICAgJiMzNDt0Y3BfcmV0cmFuc21pdF90aW1lciYjMzQ7LAogICAgJiMzNDtyZXFza190aW1lcl9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3RjcF9jaGVja19yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIFNZTkFDSyByZXRyaWVzIGxpbWl0cyBhbmQgdGltZW91dCBjYWxjdWxhdGlvbiBsb2dpYyB0byBwcmV2ZW50IHNoaWZ0IG92ZXJmbG93cyBhbmQgYm91bmRzIGB0Y3Bfc3luYWNrX3JldHJpZXNgIHRvIDEyNy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGFuZCByZXRyYW5zbWlzc2lvbiBsb2dpYy4gVGhlIG1vZGlmaWNhdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgVENQIHNvY2tldCBvcHRpb25zIGFuZCB0aW1lciBjYWxsYmFja3MgZHVyaW5nIGNvbm5lY3Rpb24gaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBhbmQgb3V0LW9mLWJvdW5kcyBzaGlmdCBpbiBUQ1AgdGltZW91dCBjYWxjdWxhdGlvbiAoYHJlcS1cdTAwM2V0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXRgKSBieSBjYXBwaW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU5BQ0sgcmV0cmllcyB0byAxMjcgYW5kIGFkZGluZyBvdmVyZmxvdyBjaGVja3MgaW4gYHRjcF9yZXFza190aW1lb3V0X3NrYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlcnNwYWNlLiBTdGFuZGFyZCBLQVNBTiBhbmQgVUJTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBjb3JydXB0aW9uIG9yIHVuZGVmaW5lZCBiZWhhdmlvciByZWxhdGVkIHRvIHRoaXMgY29kZS4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDgwNjQzNGNhMDMyODMwOWEzNTBhZWFmZDdiNjE2ZTMwNDEyODY4MWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAxNTozOTo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QKaW5kZXggMjA4ZjQ2OTY3ZWU1OS4uZmQ1MDM4YjZjYWI5ZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QKQEAgLTk1NCw3ICYjNDM7OTU0LDcgQEAgdGNwX3N0ZHVyZyAtIEJPT0xFQU4KIAogdGNwX3N5bmFja19yZXRyaWVzIC0gSU5URUdFUgogCU51bWJlciBvZiB0aW1lcyBTWU5BQ0tzIGZvciBhIHBhc3NpdmUgVENQIGNvbm5lY3Rpb24gYXR0ZW1wdCB3aWxsCi0JYmUgcmV0cmFuc21pdHRlZC4gU2hvdWxkIG5vdCBiZSBoaWdoZXIgdGhhbiAyNTUuIERlZmF1bHQgdmFsdWUKJiM0MzsJYmUgcmV0cmFuc21pdHRlZC4gU2hvdWxkIG5vdCBiZSBoaWdoZXIgdGhhbiAxMjcuIERlZmF1bHQgdmFsdWUKIAlpcyA1LCB3aGljaCBjb3JyZXNwb25kcyB0byAzMXNlY29uZHMgdGlsbCB0aGUgbGFzdCByZXRyYW5zbWlzc2lvbgogCXdpdGggdGhlIGN1cnJlbnQgaW5pdGlhbCBSVE8gb2YgMXNlY29uZC4gV2l0aCB0aGlzIHRoZSBmaW5hbCB0aW1lb3V0CiAJZm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiB3aWxsIGhhcHBlbiBhZnRlciA2M3NlY29uZHMuCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oCmluZGV4IDJjNWI4ODk1MzBiNTUuLjhhYjJmZDM2OGVkM2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3RjcC5oCkBAIC0xODMsNiAmIzQzOzE4Myw4IEBAIHN0YXRpY19hc3NlcnQoKDEgJmx0OyZsdDsgQVRPX0JJVFMpICZndDsgVENQX0RFTEFDS19NQVgpOwogI2RlZmluZSBNQVhfVENQX0tFRVBJTlRWTAkzMjc2NwogI2RlZmluZSBNQVhfVENQX0tFRVBDTlQJCTEyNwogI2RlZmluZSBNQVhfVENQX1NZTkNOVAkJMTI3CiYjNDM7LyogcmVxdWVzdF9zb2NrOjpudW1fdGltZW91dCBpcyBhIDctYml0IGZpZWxkLiAqLwomIzQzOyNkZWZpbmUgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUwkxMjcKIAogLyogRW5zdXJlIHRoYXQgVENQIFBBV1MgY2hlY2tzIGFyZSByZWxheGVkIGFmdGVyIH4yMTQ3IHNlY29uZHMKICAqIHRvIGF2b2lkIG92ZXJmbG93cy4gVGhpcyBhc3N1bWVzIGEgY2xvY2sgc21hbGxlciB0aGFuIDEgTWh6LgpAQCAtODgyLDEyICYjNDM7ODg0LDIyIEBAIHN0YXRpYyBpbmxpbmUgdTMyIF9fdGNwX3NldF9ydG8oY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cCkKIAlyZXR1cm4gdXNlY3NfdG9famlmZmllcygodHAtJmd0O3NydHRfdXMgJmd0OyZndDsgMykgJiM0MzsgdHAtJmd0O3J0dHZhcl91cyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0X3NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywKJiM0MzsJCQkJCQkgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKQogewotCXU2NCB0aW1lb3V0ID0gKHU2NClyZXEtJmd0O3RpbWVvdXQgJmx0OyZsdDsgcmVxLSZndDtudW1fdGltZW91dDsKJiM0MzsJdTMyIHJ0b19tYXggPSB0Y3BfcnRvX21heChzayk7CiYjNDM7CXU2NCB0aW1lb3V0ID0gcmVxLSZndDt0aW1lb3V0OwomIzQzOwomIzQzOwlpZiAocmVxLSZndDtudW1fdGltZW91dCAmZ3Q7PSBCSVRTX1BFUl9UWVBFKHRpbWVvdXQpIHx8CiYjNDM7CSAgICB0aW1lb3V0ICZndDsgVTY0X01BWCAmZ3Q7Jmd0OyByZXEtJmd0O251bV90aW1lb3V0KQomIzQzOwkJcmV0dXJuIHJ0b19tYXg7CiYjNDM7CiYjNDM7CXJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQgJmx0OyZsdDsgcmVxLSZndDtudW1fdGltZW91dCwgcnRvX21heCk7CiYjNDM7fQogCi0JcmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCwKLQkJCQkgICAgdGNwX3J0b19tYXgocmVxLSZndDtyc2tfbGlzdGVuZXIpKTsKJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXQoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKQomIzQzO3sKJiM0MzsJcmV0dXJuIHRjcF9yZXFza190aW1lb3V0X3NrKHJlcS0mZ3Q7cnNrX2xpc3RlbmVyLCByZXEpOwogfQogCiB1MzIgdGNwX2RlbGFja19tYXgoY29uc3Qgc3RydWN0IHNvY2sgKnNrKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMKaW5kZXggY2ExMTgwZGJhMWRlYS4uZmM1MTUyZGZhM2M4NiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMKQEAgLTM1LDYgJiM0MzszNSw3IEBAIHN0YXRpYyBpbnQgaXBfdHRsX21pbiA9IDE7CiBzdGF0aWMgaW50IGlwX3R0bF9tYXggPSAyNTU7CiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19taW4gPSAxOwogc3RhdGljIGludCB0Y3Bfc3luX3JldHJpZXNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7CiYjNDM7c3RhdGljIGludCB0Y3Bfc3luYWNrX3JldHJpZXNfbWF4ID0gTUFYX1RDUF9TWU5BQ0tfUkVUUklFUzsKIHN0YXRpYyBpbnQgdGNwX3N5bl9saW5lYXJfdGltZW91dHNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21pbltdID0geyAwLCAwIH07CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21heFtdID0geyBHSURfVF9NQVgsIEdJRF9UX01BWCB9OwpAQCAtMTAzNCw2ICYjNDM7MTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7CiAJCS5tYXhsZW4JCT0gc2l6ZW9mKHU4KSwKIAkJLm1vZGUJCT0gMDY0NCwKIAkJLnByb2NfaGFuZGxlcgk9IHByb2NfZG91OHZlY19taW5tYXgsCiYjNDM7CQkuZXh0cmEyCQk9ICZhbXA7dGNwX3N5bmFja19yZXRyaWVzX21heCwKIAl9LAogI2lmZGVmIENPTkZJR19TWU5fQ09PS0lFUwogCXsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcC5jIGIvbmV0L2lwdjQvdGNwLmMKaW5kZXggNDU1NDQxZjFiNjk0OS4uMjQ4OTZmYTA4YTVkOCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwLmMKQEAgLTM1Nyw3ICYjNDM7MzU3LDcgQEAgc3RhdGljIHU4IHNlY3NfdG9fcmV0cmFucyhpbnQgc2Vjb25kcywgaW50IHRpbWVvdXQsIGludCBydG9fbWF4KQogCQlpbnQgcGVyaW9kID0gdGltZW91dDsKIAogCQlyZXMgPSAxOwotCQl3aGlsZSAoc2Vjb25kcyAmZ3Q7IHBlcmlvZCAmYW1wOyZhbXA7IHJlcyAmbHQ7IDI1NSkgewomIzQzOwkJd2hpbGUgKHNlY29uZHMgJmd0OyBwZXJpb2QgJmFtcDsmYW1wOyByZXMgJmx0OyBNQVhfVENQX1NZTkFDS19SRVRSSUVTKSB7CiAJCQlyZXMmIzQzOyYjNDM7OwogCQkJdGltZW91dCAmbHQ7Jmx0Oz0gMTsKIAkJCWlmICh0aW1lb3V0ICZndDsgcnRvX21heCkKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF90aW1lci5jIGIvbmV0L2lwdjQvdGNwX3RpbWVyLmMKaW5kZXggYmYxNzFiNWUxZWIzMC4uZGFhNGVhYzA3MmRkOSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX3RpbWVyLmMKQEAgLTQ2MiwxMSAmIzQzOzQ2MiwxMyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKQogCiAJdGNwX3N5bl9hY2tfdGltZW91dChyZXEpOwogCi0JLyogQWRkIG9uZSBtb3JlIHJldHJ5IGZvciBmYXN0b3Blbi4KJiM0MzsJLyogQWRkIG9uZSBtb3JlIHJldHJ5IGZvciBmYXN0b3BlbiB3aGVuIHRoZSB0aW1lb3V0IGNvdW50ZXIgY2FuCiYjNDM7CSAqIHJlcHJlc2VudCBpdC4KIAkgKiBQYWlyZWQgd2l0aCBXUklURV9PTkNFKCkgaW4gdGNwX3NvY2tfc2V0X3N5bmNudCgpCiAJICovCiAJbWF4X3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay0mZ3Q7aWNza19zeW5fcmV0cmllcykgPyA6CiAJCVJFQURfT05DRShzb2NrX25ldChzayktJmd0O2lwdjQuc3lzY3RsX3RjcF9zeW5hY2tfcmV0cmllcykgJiM0MzsgMTsKJiM0MzsJbWF4X3JldHJpZXMgPSBtaW5fdChpbnQsIG1heF9yZXRyaWVzLCBNQVhfVENQX1NZTkFDS19SRVRSSUVTKTsKIAogCWlmIChyZXEtJmd0O251bV90aW1lb3V0ICZndDs9IG1heF9yZXRyaWVzKSB7CiAJCXRjcF93cml0ZV9lcnIoc2spOwpAQCAtNDg4LDcgJiM0Mzs0OTAsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKQogCWlmICghdHAtJmd0O3JldHJhbnNfc3RhbXApCiAJCXRwLSZndDtyZXRyYW5zX3N0YW1wID0gdGNwX3RpbWVfc3RhbXBfdHModHApOwogCXRjcF9yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfUkVUUkFOUywKLQkJCSAgcmVxLSZndDt0aW1lb3V0ICZsdDsmbHQ7IHJlcS0mZ3Q7bnVtX3RpbWVvdXQsIGZhbHNlKTsKJiM0MzsJCQkgICAgIHRjcF9yZXFza190aW1lb3V0X3NrKHNrLCByZXEpLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyBib29sIHRjcF9ydHhfcHJvYmUwX3RpbWVkX291dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjYyCgkJCQkJCQlvdXRwdXQ6IDEzMQoJCQkJCQkJdGhvdWdodHM6IDUyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBGdXp6aW5nIFNlc3Npb24gQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoLCB3aGljaCBtb2RpZmllcyB0aGUgVENQIFNZTkFDSyByZXRyeSBsb2dpYywgbGlrZWx5ICpkb2VzbiYjMzk7dCogd2FycmFudCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIFRoZSBjb3JlIGNoYW5nZSBoZXJlIGludm9sdmVzIGFkanVzdGluZyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgdGNwX3N5bmFja19yZXRyaWVzYCBmcm9tIDI1NSB0byAxMjcgYW5kIGltcGxlbWVudGluZyBgdGNwX3JlcXNrX3RpbWVvdXRfc2tgIHRvIHByZXZlbnQgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3dzIGR1cmluZyB0aGUgdGltZW91dCBjYWxjdWxhdGlvbi4gVGhlIGByZXEtJmd0O251bV90aW1lb3V0YCBmaWVsZCBiZWluZyA3LWJpdHMgaXMgYSBrZXkgcG9pbnQsIGJlY2F1c2UgdGhhdCBtYWtlcyBzaGlmdGluZyBieSBtb3JlIHRoYW4gNjMgYSBwcm9ibGVtLiBIb3dldmVyLCB0aGUgZXhpc3RpbmcgYW5kIG5ldyBjb2RlIGNhcmVmdWxseSBjaGVja3MgZm9yIHBvdGVudGlhbCBvdmVyZmxvd3MgYW5kIGxpbWl0cyByZXRyeSBjb3VudHMuCgpNeSBwcmltYXJ5IGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBidXQgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBzZWVtIHRvIGludHJvZHVjZSBhbnkgbmV3IGZpZWxkcywgbm9yIGRvZXMgaXQgY29weSBkYXRhIHRvIHVzZXJzcGFjZS4gSW4gZmFjdCwgaXQgc2VlbXMgdG8gKnJlc29sdmUqIGEgcG90ZW50aWFsIG92ZXJmbG93IGlzc3VlLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGF0IHNoaWZ0IG9wZXJhdGlvbiwgYnkgaW5jbHVkaW5nIGEgY2hlY2sgb24gdGhlIHRpbWVvdXQgdmFsdWUuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGEgbG9naWMgYnVnIHJlbGF0ZWQgdG8gYW4gb3V0LW9mLWJvdW5kcyBzaGlmdC4gV2hpbGUgaXQgY291bGQgdHJpZ2dlciB1bmRlZmluZWQgYmVoYXZpb3IsIHRoYXQgaXMgbm90IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgc2hpZnQgdGhhdCBnb2VzIGJleW9uZCBhIGRlZmluZWQgYml0IGxlbmd0aC4gVUJTQU4gb3IgS0FTQU4gd291bGQgYmUgc3VmZmljaWVudCB0byBkZXRlY3QgdGhhdC4gSSYjMzk7dmUgZG91YmxlLWNoZWNrZWQgdGhhdCBgcmVxLSZndDtudW1fdGltZW91dGAgaXMgaW5kZWVkIGEgNy1iaXQgZmllbGQsIGFuZCB0aGUgb3ZlcmZsb3cgY2hlY2sgbWFrZXMgc2Vuc2UuCgpHaXZlbiBhbGwgb2YgdGhhdCwgSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgYE5lZWRzS01TQU5gIGlzIGBmYWxzZWAuIFN0YW5kYXJkIEtBU0FOIGFuZCBVQlNBTiBzaG91bGQgYmUgYWRlcXVhdGUgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBLTVNBTiBpcyBub3QgbmVjZXNzYXJ5IGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgYW5kIG91dC1vZi1ib3VuZHMgc2hpZnQgaW4gVENQIHRpbWVvdXQgY2FsY3VsYXRpb24gKGByZXEtXHUwMDNldGltZW91dCBcdTAwM2NcdTAwM2MgcmVxLVx1MDAzZW51bV90aW1lb3V0YCkgYnkgY2FwcGluZyB0aGUgbWF4aW11bSBudW1iZXIgb2YgU1lOQUNLIHJldHJpZXMgdG8gMTI3IGFuZCBhZGRpbmcgb3ZlcmZsb3cgY2hlY2tzIGluIGB0Y3BfcmVxc2tfdGltZW91dF9za2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZS4gU3RhbmRhcmQgS0FTQU4gYW5kIFVCU0FOIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBtZW1vcnkgY29ycnVwdGlvbiBvciB1bmRlZmluZWQgYmVoYXZpb3IgcmVsYXRlZCB0byB0aGlzIGNvZGUuIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBhbmQgb3V0LW9mLWJvdW5kcyBzaGlmdCBpbiBUQ1AgdGltZW91dCBjYWxjdWxhdGlvbiAoYHJlcS1cdTAwM2V0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXRgKSBieSBjYXBwaW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU5BQ0sgcmV0cmllcyB0byAxMjcgYW5kIGFkZGluZyBvdmVyZmxvdyBjaGVja3MgaW4gYHRjcF9yZXFza190aW1lb3V0X3NrYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlcnNwYWNlLiBTdGFuZGFyZCBLQVNBTiBhbmQgVUJTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBjb3JydXB0aW9uIG9yIHVuZGVmaW5lZCBiZWhhdmlvciByZWxhdGVkIHRvIHRoaXMgY29kZS4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjM5OjQ4Ljc0MTI1MDc3NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MDMyMjQ5OTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX3RjcF9zZXRzb2Nrb3B0XCIsXG4gICAgXCJ0Y3BfcmV0cmFuc21pdF90aW1lclwiLFxuICAgIFwicmVxc2tfdGltZXJfaGFuZGxlclwiLFxuICAgIFwidGNwX2NoZWNrX3JlcVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBhbmQgb3V0LW9mLWJvdW5kcyBzaGlmdCBpbiBUQ1AgdGltZW91dCBjYWxjdWxhdGlvbiAoYHJlcS1cXHUwMDNldGltZW91dCBcXHUwMDNjXFx1MDAzYyByZXEtXFx1MDAzZW51bV90aW1lb3V0YCkgYnkgY2FwcGluZyB0aGUgbWF4aW11bSBudW1iZXIgb2YgU1lOQUNLIHJldHJpZXMgdG8gMTI3IGFuZCBhZGRpbmcgb3ZlcmZsb3cgY2hlY2tzIGluIGB0Y3BfcmVxc2tfdGltZW91dF9za2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZS4gU3RhbmRhcmQgS0FTQU4gYW5kIFVCU0FOIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBtZW1vcnkgY29ycnVwdGlvbiBvciB1bmRlZmluZWQgYmVoYXZpb3IgcmVsYXRlZCB0byB0aGlzIGNvZGUuIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBTWU5BQ0sgcmV0cmllcyBsaW1pdHMgYW5kIHRpbWVvdXQgY2FsY3VsYXRpb24gbG9naWMgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYW5kIGJvdW5kcyBgdGNwX3N5bmFja19yZXRyaWVzYCB0byAxMjcuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgcmV0cmFuc21pc3Npb24gbG9naWMuIFRoZSBtb2RpZmljYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIFRDUCBzb2NrZXQgb3B0aW9ucyBhbmQgdGltZXIgY2FsbGJhY2tzIGR1cmluZyBjb25uZWN0aW9uIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTozOTo0OC43NDEyNTcxODVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDg4NDY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDgwNjQzNGNhMDMyODMwOWEzNTBhZWFmZDdiNjE2ZTMwNDEyODY4MWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTU6Mzk6NDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdFxcbmluZGV4IDIwOGY0Njk2N2VlNTkuLmZkNTAzOGI2Y2FiOWYgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdFxcbkBAIC05NTQsNyArOTU0LDcgQEAgdGNwX3N0ZHVyZyAtIEJPT0xFQU5cXG4gXFxuIHRjcF9zeW5hY2tfcmV0cmllcyAtIElOVEVHRVJcXG4gXFx0TnVtYmVyIG9mIHRpbWVzIFNZTkFDS3MgZm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiBhdHRlbXB0IHdpbGxcXG4tXFx0YmUgcmV0cmFuc21pdHRlZC4gU2hvdWxkIG5vdCBiZSBoaWdoZXIgdGhhbiAyNTUuIERlZmF1bHQgdmFsdWVcXG4rXFx0YmUgcmV0cmFuc21pdHRlZC4gU2hvdWxkIG5vdCBiZSBoaWdoZXIgdGhhbiAxMjcuIERlZmF1bHQgdmFsdWVcXG4gXFx0aXMgNSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gMzFzZWNvbmRzIHRpbGwgdGhlIGxhc3QgcmV0cmFuc21pc3Npb25cXG4gXFx0d2l0aCB0aGUgY3VycmVudCBpbml0aWFsIFJUTyBvZiAxc2Vjb25kLiBXaXRoIHRoaXMgdGhlIGZpbmFsIHRpbWVvdXRcXG4gXFx0Zm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiB3aWxsIGhhcHBlbiBhZnRlciA2M3NlY29uZHMuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmhcXG5pbmRleCAyYzViODg5NTMwYjU1Li44YWIyZmQzNjhlZDNiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvdGNwLmhcXG5AQCAtMTgzLDYgKzE4Myw4IEBAIHN0YXRpY19hc3NlcnQoKDEgXFx1MDAzY1xcdTAwM2MgQVRPX0JJVFMpIFxcdTAwM2UgVENQX0RFTEFDS19NQVgpO1xcbiAjZGVmaW5lIE1BWF9UQ1BfS0VFUElOVFZMXFx0MzI3NjdcXG4gI2RlZmluZSBNQVhfVENQX0tFRVBDTlRcXHRcXHQxMjdcXG4gI2RlZmluZSBNQVhfVENQX1NZTkNOVFxcdFxcdDEyN1xcbisvKiByZXF1ZXN0X3NvY2s6Om51bV90aW1lb3V0IGlzIGEgNy1iaXQgZmllbGQuICovXFxuKyNkZWZpbmUgTUFYX1RDUF9TWU5BQ0tfUkVUUklFU1xcdDEyN1xcbiBcXG4gLyogRW5zdXJlIHRoYXQgVENQIFBBV1MgY2hlY2tzIGFyZSByZWxheGVkIGFmdGVyIH4yMTQ3IHNlY29uZHNcXG4gICogdG8gYXZvaWQgb3ZlcmZsb3dzLiBUaGlzIGFzc3VtZXMgYSBjbG9jayBzbWFsbGVyIHRoYW4gMSBNaHouXFxuQEAgLTg4MiwxMiArODg0LDIyIEBAIHN0YXRpYyBpbmxpbmUgdTMyIF9fdGNwX3NldF9ydG8oY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cClcXG4gXFx0cmV0dXJuIHVzZWNzX3RvX2ppZmZpZXMoKHRwLVxcdTAwM2VzcnR0X3VzIFxcdTAwM2VcXHUwMDNlIDMpICsgdHAtXFx1MDAzZXJ0dHZhcl91cyk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuIHtcXG4tXFx0dTY0IHRpbWVvdXQgPSAodTY0KXJlcS1cXHUwMDNldGltZW91dCBcXHUwMDNjXFx1MDAzYyByZXEtXFx1MDAzZW51bV90aW1lb3V0O1xcbitcXHR1MzIgcnRvX21heCA9IHRjcF9ydG9fbWF4KHNrKTtcXG4rXFx0dTY0IHRpbWVvdXQgPSByZXEtXFx1MDAzZXRpbWVvdXQ7XFxuK1xcbitcXHRpZiAocmVxLVxcdTAwM2VudW1fdGltZW91dCBcXHUwMDNlPSBCSVRTX1BFUl9UWVBFKHRpbWVvdXQpIHx8XFxuK1xcdCAgICB0aW1lb3V0IFxcdTAwM2UgVTY0X01BWCBcXHUwMDNlXFx1MDAzZSByZXEtXFx1MDAzZW51bV90aW1lb3V0KVxcbitcXHRcXHRyZXR1cm4gcnRvX21heDtcXG4rXFxuK1xcdHJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQgXFx1MDAzY1xcdTAwM2MgcmVxLVxcdTAwM2VudW1fdGltZW91dCwgcnRvX21heCk7XFxuK31cXG4gXFxuLVxcdHJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQsXFxuLVxcdFxcdFxcdFxcdCAgICB0Y3BfcnRvX21heChyZXEtXFx1MDAzZXJza19saXN0ZW5lcikpO1xcbitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXQoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbit7XFxuK1xcdHJldHVybiB0Y3BfcmVxc2tfdGltZW91dF9zayhyZXEtXFx1MDAzZXJza19saXN0ZW5lciwgcmVxKTtcXG4gfVxcbiBcXG4gdTMyIHRjcF9kZWxhY2tfbWF4KGNvbnN0IHN0cnVjdCBzb2NrICpzayk7XFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcXG5pbmRleCBjYTExODBkYmExZGVhLi5mYzUxNTJkZmEzYzg2IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXFxuKysrIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcXG5AQCAtMzUsNiArMzUsNyBAQCBzdGF0aWMgaW50IGlwX3R0bF9taW4gPSAxO1xcbiBzdGF0aWMgaW50IGlwX3R0bF9tYXggPSAyNTU7XFxuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21pbiA9IDE7XFxuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xcbitzdGF0aWMgaW50IHRjcF9zeW5hY2tfcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkFDS19SRVRSSUVTO1xcbiBzdGF0aWMgaW50IHRjcF9zeW5fbGluZWFyX3RpbWVvdXRzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21pbltdID0geyAwLCAwIH07XFxuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWF4W10gPSB7IEdJRF9UX01BWCwgR0lEX1RfTUFYIH07XFxuQEAgLTEwMzQsNiArMTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7XFxuIFxcdFxcdC5tYXhsZW5cXHRcXHQ9IHNpemVvZih1OCksXFxuIFxcdFxcdC5tb2RlXFx0XFx0PSAwNjQ0LFxcbiBcXHRcXHQucHJvY19oYW5kbGVyXFx0PSBwcm9jX2RvdTh2ZWNfbWlubWF4LFxcbitcXHRcXHQuZXh0cmEyXFx0XFx0PSBcXHUwMDI2dGNwX3N5bmFja19yZXRyaWVzX21heCxcXG4gXFx0fSxcXG4gI2lmZGVmIENPTkZJR19TWU5fQ09PS0lFU1xcbiBcXHR7XFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcC5jIGIvbmV0L2lwdjQvdGNwLmNcXG5pbmRleCA0NTU0NDFmMWI2OTQ5Li4yNDg5NmZhMDhhNWQ4IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3RjcC5jXFxuKysrIGIvbmV0L2lwdjQvdGNwLmNcXG5AQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyB1OCBzZWNzX3RvX3JldHJhbnMoaW50IHNlY29uZHMsIGludCB0aW1lb3V0LCBpbnQgcnRvX21heClcXG4gXFx0XFx0aW50IHBlcmlvZCA9IHRpbWVvdXQ7XFxuIFxcbiBcXHRcXHRyZXMgPSAxO1xcbi1cXHRcXHR3aGlsZSAoc2Vjb25kcyBcXHUwMDNlIHBlcmlvZCBcXHUwMDI2XFx1MDAyNiByZXMgXFx1MDAzYyAyNTUpIHtcXG4rXFx0XFx0d2hpbGUgKHNlY29uZHMgXFx1MDAzZSBwZXJpb2QgXFx1MDAyNlxcdTAwMjYgcmVzIFxcdTAwM2MgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUykge1xcbiBcXHRcXHRcXHRyZXMrKztcXG4gXFx0XFx0XFx0dGltZW91dCBcXHUwMDNjXFx1MDAzYz0gMTtcXG4gXFx0XFx0XFx0aWYgKHRpbWVvdXQgXFx1MDAzZSBydG9fbWF4KVxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfdGltZXIuYyBiL25ldC9pcHY0L3RjcF90aW1lci5jXFxuaW5kZXggYmYxNzFiNWUxZWIzMC4uZGFhNGVhYzA3MmRkOSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3BfdGltZXIuY1xcbisrKyBiL25ldC9pcHY0L3RjcF90aW1lci5jXFxuQEAgLTQ2MiwxMSArNDYyLDEzIEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuIFxcbiBcXHR0Y3Bfc3luX2Fja190aW1lb3V0KHJlcSk7XFxuIFxcbi1cXHQvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuLlxcbitcXHQvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuIHdoZW4gdGhlIHRpbWVvdXQgY291bnRlciBjYW5cXG4rXFx0ICogcmVwcmVzZW50IGl0LlxcbiBcXHQgKiBQYWlyZWQgd2l0aCBXUklURV9PTkNFKCkgaW4gdGNwX3NvY2tfc2V0X3N5bmNudCgpXFxuIFxcdCAqL1xcbiBcXHRtYXhfcmV0cmllcyA9IFJFQURfT05DRShpY3NrLVxcdTAwM2VpY3NrX3N5bl9yZXRyaWVzKSA/IDpcXG4gXFx0XFx0UkVBRF9PTkNFKHNvY2tfbmV0KHNrKS1cXHUwMDNlaXB2NC5zeXNjdGxfdGNwX3N5bmFja19yZXRyaWVzKSArIDE7XFxuK1xcdG1heF9yZXRyaWVzID0gbWluX3QoaW50LCBtYXhfcmV0cmllcywgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUyk7XFxuIFxcbiBcXHRpZiAocmVxLVxcdTAwM2VudW1fdGltZW91dCBcXHUwMDNlPSBtYXhfcmV0cmllcykge1xcbiBcXHRcXHR0Y3Bfd3JpdGVfZXJyKHNrKTtcXG5AQCAtNDg4LDcgKzQ5MCw3IEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuIFxcdGlmICghdHAtXFx1MDAzZXJldHJhbnNfc3RhbXApXFxuIFxcdFxcdHRwLVxcdTAwM2VyZXRyYW5zX3N0YW1wID0gdGNwX3RpbWVfc3RhbXBfdHModHApO1xcbiBcXHR0Y3BfcmVzZXRfeG1pdF90aW1lcihzaywgSUNTS19USU1FX1JFVFJBTlMsXFxuLVxcdFxcdFxcdCAgcmVxLVxcdTAwM2V0aW1lb3V0IFxcdTAwM2NcXHUwMDNjIHJlcS1cXHUwMDNlbnVtX3RpbWVvdXQsIGZhbHNlKTtcXG4rXFx0XFx0XFx0ICAgICB0Y3BfcmVxc2tfdGltZW91dF9zayhzaywgcmVxKSwgZmFsc2UpO1xcbiB9XFxuIFxcbiBzdGF0aWMgYm9vbCB0Y3BfcnR4X3Byb2JlMF90aW1lZF9vdXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTozOTo0OS4xNTY5MTYxOTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NjIyNjE5MzExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb190Y3Bfc2V0c29ja29wdFwiLFxuICAgIFwidGNwX3JldHJhbnNtaXRfdGltZXJcIixcbiAgICBcInJlcXNrX3RpbWVyX2hhbmRsZXJcIixcbiAgICBcInRjcF9jaGVja19yZXFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUQ1AgU1lOQUNLIHJldHJpZXMgbGltaXRzIGFuZCB0aW1lb3V0IGNhbGN1bGF0aW9uIGxvZ2ljIHRvIHByZXZlbnQgc2hpZnQgb3ZlcmZsb3dzIGFuZCBib3VuZHMgYHRjcF9zeW5hY2tfcmV0cmllc2AgdG8gMTI3LiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjb3JlIFRDUCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgYW5kIHJldHJhbnNtaXNzaW9uIGxvZ2ljLiBUaGUgbW9kaWZpY2F0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBUQ1Agc29ja2V0IG9wdGlvbnMgYW5kIHRpbWVyIGNhbGxiYWNrcyBkdXJpbmcgY29ubmVjdGlvbiBoYW5kbGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODA2NDM0Y2EwMzI4MzA5YTM1MGFlYWZkN2I2MTZlMzA0MTI4NjgxZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDE1OjM5OjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdFxuaW5kZXggMjA4ZjQ2OTY3ZWU1OS4uZmQ1MDM4YjZjYWI5ZiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0XG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdFxuQEAgLTk1NCw3ICs5NTQsNyBAQCB0Y3Bfc3RkdXJnIC0gQk9PTEVBTlxuIFxuIHRjcF9zeW5hY2tfcmV0cmllcyAtIElOVEVHRVJcbiBcdE51bWJlciBvZiB0aW1lcyBTWU5BQ0tzIGZvciBhIHBhc3NpdmUgVENQIGNvbm5lY3Rpb24gYXR0ZW1wdCB3aWxsXG4tXHRiZSByZXRyYW5zbWl0dGVkLiBTaG91bGQgbm90IGJlIGhpZ2hlciB0aGFuIDI1NS4gRGVmYXVsdCB2YWx1ZVxuK1x0YmUgcmV0cmFuc21pdHRlZC4gU2hvdWxkIG5vdCBiZSBoaWdoZXIgdGhhbiAxMjcuIERlZmF1bHQgdmFsdWVcbiBcdGlzIDUsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIDMxc2Vjb25kcyB0aWxsIHRoZSBsYXN0IHJldHJhbnNtaXNzaW9uXG4gXHR3aXRoIHRoZSBjdXJyZW50IGluaXRpYWwgUlRPIG9mIDFzZWNvbmQuIFdpdGggdGhpcyB0aGUgZmluYWwgdGltZW91dFxuIFx0Zm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiB3aWxsIGhhcHBlbiBhZnRlciA2M3NlY29uZHMuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdGNwLmggYi9pbmNsdWRlL25ldC90Y3AuaFxuaW5kZXggMmM1Yjg4OTUzMGI1NS4uOGFiMmZkMzY4ZWQzYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXG4rKysgYi9pbmNsdWRlL25ldC90Y3AuaFxuQEAgLTE4Myw2ICsxODMsOCBAQCBzdGF0aWNfYXNzZXJ0KCgxIFx1MDAzY1x1MDAzYyBBVE9fQklUUykgXHUwMDNlIFRDUF9ERUxBQ0tfTUFYKTtcbiAjZGVmaW5lIE1BWF9UQ1BfS0VFUElOVFZMXHQzMjc2N1xuICNkZWZpbmUgTUFYX1RDUF9LRUVQQ05UXHRcdDEyN1xuICNkZWZpbmUgTUFYX1RDUF9TWU5DTlRcdFx0MTI3XG4rLyogcmVxdWVzdF9zb2NrOjpudW1fdGltZW91dCBpcyBhIDctYml0IGZpZWxkLiAqL1xuKyNkZWZpbmUgTUFYX1RDUF9TWU5BQ0tfUkVUUklFU1x0MTI3XG4gXG4gLyogRW5zdXJlIHRoYXQgVENQIFBBV1MgY2hlY2tzIGFyZSByZWxheGVkIGFmdGVyIH4yMTQ3IHNlY29uZHNcbiAgKiB0byBhdm9pZCBvdmVyZmxvd3MuIFRoaXMgYXNzdW1lcyBhIGNsb2NrIHNtYWxsZXIgdGhhbiAxIE1oei5cbkBAIC04ODIsMTIgKzg4NCwyMiBAQCBzdGF0aWMgaW5saW5lIHUzMiBfX3RjcF9zZXRfcnRvKGNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHApXG4gXHRyZXR1cm4gdXNlY3NfdG9famlmZmllcygodHAtXHUwMDNlc3J0dF91cyBcdTAwM2VcdTAwM2UgMykgKyB0cC1cdTAwM2VydHR2YXJfdXMpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXQoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4rXHRcdFx0XHRcdFx0IHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbiB7XG4tXHR1NjQgdGltZW91dCA9ICh1NjQpcmVxLVx1MDAzZXRpbWVvdXQgXHUwMDNjXHUwMDNjIHJlcS1cdTAwM2VudW1fdGltZW91dDtcbitcdHUzMiBydG9fbWF4ID0gdGNwX3J0b19tYXgoc2spO1xuK1x0dTY0IHRpbWVvdXQgPSByZXEtXHUwMDNldGltZW91dDtcbitcbitcdGlmIChyZXEtXHUwMDNlbnVtX3RpbWVvdXQgXHUwMDNlPSBCSVRTX1BFUl9UWVBFKHRpbWVvdXQpIHx8XG4rXHQgICAgdGltZW91dCBcdTAwM2UgVTY0X01BWCBcdTAwM2VcdTAwM2UgcmVxLVx1MDAzZW51bV90aW1lb3V0KVxuK1x0XHRyZXR1cm4gcnRvX21heDtcbitcbitcdHJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQgXHUwMDNjXHUwMDNjIHJlcS1cdTAwM2VudW1fdGltZW91dCwgcnRvX21heCk7XG4rfVxuIFxuLVx0cmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCxcbi1cdFx0XHRcdCAgICB0Y3BfcnRvX21heChyZXEtXHUwMDNlcnNrX2xpc3RlbmVyKSk7XG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbit7XG4rXHRyZXR1cm4gdGNwX3JlcXNrX3RpbWVvdXRfc2socmVxLVx1MDAzZXJza19saXN0ZW5lciwgcmVxKTtcbiB9XG4gXG4gdTMyIHRjcF9kZWxhY2tfbWF4KGNvbnN0IHN0cnVjdCBzb2NrICpzayk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMgYi9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuY1xuaW5kZXggY2ExMTgwZGJhMWRlYS4uZmM1MTUyZGZhM2M4NiAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXG4rKysgYi9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuY1xuQEAgLTM1LDYgKzM1LDcgQEAgc3RhdGljIGludCBpcF90dGxfbWluID0gMTtcbiBzdGF0aWMgaW50IGlwX3R0bF9tYXggPSAyNTU7XG4gc3RhdGljIGludCB0Y3Bfc3luX3JldHJpZXNfbWluID0gMTtcbiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkNOVDtcbitzdGF0aWMgaW50IHRjcF9zeW5hY2tfcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkFDS19SRVRSSUVTO1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9saW5lYXJfdGltZW91dHNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7XG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgaXBfcGluZ19ncm91cF9yYW5nZV9taW5bXSA9IHsgMCwgMCB9O1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWF4W10gPSB7IEdJRF9UX01BWCwgR0lEX1RfTUFYIH07XG5AQCAtMTAzNCw2ICsxMDM1LDcgQEAgc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgaXB2NF9uZXRfdGFibGVbXSA9IHtcbiBcdFx0Lm1heGxlblx0XHQ9IHNpemVvZih1OCksXG4gXHRcdC5tb2RlXHRcdD0gMDY0NCxcbiBcdFx0LnByb2NfaGFuZGxlclx0PSBwcm9jX2RvdTh2ZWNfbWlubWF4LFxuK1x0XHQuZXh0cmEyXHRcdD0gXHUwMDI2dGNwX3N5bmFja19yZXRyaWVzX21heCxcbiBcdH0sXG4gI2lmZGVmIENPTkZJR19TWU5fQ09PS0lFU1xuIFx0e1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcC5jIGIvbmV0L2lwdjQvdGNwLmNcbmluZGV4IDQ1NTQ0MWYxYjY5NDkuLjI0ODk2ZmEwOGE1ZDggMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3AuY1xuKysrIGIvbmV0L2lwdjQvdGNwLmNcbkBAIC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIHU4IHNlY3NfdG9fcmV0cmFucyhpbnQgc2Vjb25kcywgaW50IHRpbWVvdXQsIGludCBydG9fbWF4KVxuIFx0XHRpbnQgcGVyaW9kID0gdGltZW91dDtcbiBcbiBcdFx0cmVzID0gMTtcbi1cdFx0d2hpbGUgKHNlY29uZHMgXHUwMDNlIHBlcmlvZCBcdTAwMjZcdTAwMjYgcmVzIFx1MDAzYyAyNTUpIHtcbitcdFx0d2hpbGUgKHNlY29uZHMgXHUwMDNlIHBlcmlvZCBcdTAwMjZcdTAwMjYgcmVzIFx1MDAzYyBNQVhfVENQX1NZTkFDS19SRVRSSUVTKSB7XG4gXHRcdFx0cmVzKys7XG4gXHRcdFx0dGltZW91dCBcdTAwM2NcdTAwM2M9IDE7XG4gXHRcdFx0aWYgKHRpbWVvdXQgXHUwMDNlIHJ0b19tYXgpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuY1xuaW5kZXggYmYxNzFiNWUxZWIzMC4uZGFhNGVhYzA3MmRkOSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF90aW1lci5jXG4rKysgYi9uZXQvaXB2NC90Y3BfdGltZXIuY1xuQEAgLTQ2MiwxMSArNDYyLDEzIEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4gXG4gXHR0Y3Bfc3luX2Fja190aW1lb3V0KHJlcSk7XG4gXG4tXHQvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuLlxuK1x0LyogQWRkIG9uZSBtb3JlIHJldHJ5IGZvciBmYXN0b3BlbiB3aGVuIHRoZSB0aW1lb3V0IGNvdW50ZXIgY2FuXG4rXHQgKiByZXByZXNlbnQgaXQuXG4gXHQgKiBQYWlyZWQgd2l0aCBXUklURV9PTkNFKCkgaW4gdGNwX3NvY2tfc2V0X3N5bmNudCgpXG4gXHQgKi9cbiBcdG1heF9yZXRyaWVzID0gUkVBRF9PTkNFKGljc2stXHUwMDNlaWNza19zeW5fcmV0cmllcykgPyA6XG4gXHRcdFJFQURfT05DRShzb2NrX25ldChzayktXHUwMDNlaXB2NC5zeXNjdGxfdGNwX3N5bmFja19yZXRyaWVzKSArIDE7XG4rXHRtYXhfcmV0cmllcyA9IG1pbl90KGludCwgbWF4X3JldHJpZXMsIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpO1xuIFxuIFx0aWYgKHJlcS1cdTAwM2VudW1fdGltZW91dCBcdTAwM2U9IG1heF9yZXRyaWVzKSB7XG4gXHRcdHRjcF93cml0ZV9lcnIoc2spO1xuQEAgLTQ4OCw3ICs0OTAsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIFx0aWYgKCF0cC1cdTAwM2VyZXRyYW5zX3N0YW1wKVxuIFx0XHR0cC1cdTAwM2VyZXRyYW5zX3N0YW1wID0gdGNwX3RpbWVfc3RhbXBfdHModHApO1xuIFx0dGNwX3Jlc2V0X3htaXRfdGltZXIoc2ssIElDU0tfVElNRV9SRVRSQU5TLFxuLVx0XHRcdCAgcmVxLVx1MDAzZXRpbWVvdXQgXHUwMDNjXHUwMDNjIHJlcS1cdTAwM2VudW1fdGltZW91dCwgZmFsc2UpO1xuK1x0XHRcdCAgICAgdGNwX3JlcXNrX3RpbWVvdXRfc2soc2ssIHJlcSksIGZhbHNlKTtcbiB9XG4gXG4gc3RhdGljIGJvb2wgdGNwX3J0eF9wcm9iZTBfdGltZWRfb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjM5OjQ5LjE1NjkxNzY1MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3NTgxNjE5ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQ1AgU1lOQUNLIFJldHJ5IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0d2Vha2luZyB0aGUgVENQIFNZTkFDSyByZXRyeSBiZWhhdmlvciwgc3BlY2lmaWNhbGx5IHRoZSB0aW1lb3V0IGNhbGN1bGF0aW9ucyBhbmQgcmV0cnkgbGltaXRzLiBJdCBsb29rcyBsaWtlIGl0J3MgZGVzaWduZWQgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYnkgbW9kaWZ5aW5nIGB0Y3BfcmVxc2tfdGltZW91dGAsIGFuZCBpdCdzIGNhcHBpbmcgYHRjcF9zeW5hY2tfcmV0cmllc2AgYXQgMTI3LiBTZWVtcyBzZW5zaWJsZSwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgdnVsbmVyYWJpbGl0aWVzIGluIHRob3NlIGFyZWFzLlxuXG5HaXZlbiB0aGUgY29yZSBuYXR1cmUgb2YgdGhlc2UgY2hhbmdlcywgYWZmZWN0aW5nIGBpbmNsdWRlL25ldC90Y3AuaGAsIGBuZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuY2AsIGBuZXQvaXB2NC90Y3AuY2AsIGFuZCBgbmV0L2lwdjQvdGNwX3RpbWVyLmNgLCB0aGlzICpkZWZpbml0ZWx5KiB3YXJyYW50cyBzb21lIHNlcmlvdXMgZnV6emluZy4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRvIGZvY3VzIG91ciBlZmZvcnRzLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZC4gVGhlIGNvcmUgb25lcyB0b3VjaGVkIHNlZW0gdG8gYmU6XG4qICAgYHRjcF9yZXFza190aW1lb3V0X3NrYCAoaW5saW5lLCBpbiBgaW5jbHVkZS9uZXQvdGNwLmhgKVxuKiAgIGB0Y3BfcmVxc2tfdGltZW91dGAgKGlubGluZSwgaW4gYGluY2x1ZGUvbmV0L3RjcC5oYClcbiogICBgc2Vjc190b19yZXRyYW5zYCBpbiBgbmV0L2lwdjQvdGNwLmNgXG4qICAgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgIGluIGBuZXQvaXB2NC90Y3BfdGltZXIuY2BcblxuU2luY2UgdGhvc2UgZmlyc3QgdHdvIGFyZSBpbmxpbmUsIGFuZCB0aGVyZWZvcmUgcHJvYmFibHkgbGVzcyBjcml0aWNhbCBmb3IgdGFyZ2V0ZWQgZnV6emluZywgSSBzaG91bGQgbG9vayBtb3JlIGRlZXBseSBpbnRvIHRoZSBvdGhlciB0d28uIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nIC0gdGhhdCBtZWFucyBpdCdzIGxpa2VseSB0byBiZSBjYWxsZWQgb25seSBmcm9tIHdpdGhpbiB0aGUgc2FtZSBmaWxlLiBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAgaXMgY2FsbGVkLiBTYW1lIGdvZXMgZm9yIGBzZWNzX3RvX3JldHJhbnNgIGFsc28gYmVpbmcgc3RhdGljLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjY1LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6Mzk6NTUuOTE1MDgyMjQ2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDMxMDEyMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2Zhc3RvcGVuX3N5bmFja190aW1lclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaW5wdXQuYz03MTAzPXN0YXRpYyB2b2lkIHRjcF9yY3Zfc3lucmVjdl9zdGF0ZV9mYXN0b3BlbihzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MTE1LVxcdFdSSVRFX09OQ0UoaW5ldF9jc2soc2spLVxcdTAwM2VpY3NrX3JldHJhbnNtaXRzLCAwKTtcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo3MTE2OlxcdC8qIEluIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoKSBvbiB0aGUgZmlyc3QgU1lOQUNLIFJUTyB3ZSBzZXRcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MTE3LVxcdCAqIHJldHJhbnNfc3RhbXAgYnV0IGRvbid0IGVudGVyIENBX0xvc3MsIHNvIGluIGNhc2UgdGhhdCBoYXBwZW5lZCB3ZVxcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NDQwPXN0YXRpYyB2b2lkIHRjcF91cGRhdGVfcnRvX3N0YXRzKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jLTQ1Ni0gKi9cXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0NTc6c3RhdGljIHZvaWQgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcXG5uZXQvaXB2NC90Y3BfdGltZXIuYy00NTgte1xcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NTM3PXZvaWQgdGNwX3JldHJhbnNtaXRfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTQ5LVxcdFxcdFxcdCAgICAgc2stXFx1MDAzZXNrX3N0YXRlICE9IFRDUF9GSU5fV0FJVDEpO1xcbm5ldC9pcHY0L3RjcF90aW1lci5jOjU1MDpcXHRcXHR0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHNrLCByZXEpO1xcbm5ldC9pcHY0L3RjcF90aW1lci5jLTU1MS1cXHRcXHQvKiBCZWZvcmUgd2UgcmVjZWl2ZSBBQ0sgdG8gb3VyIFNZTi1BQ0sgZG9uJ3QgcmV0cmFuc21pdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTozOTo1Ny43MTgxOTIwMDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzc2MTAzMjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBSZXRyYW5zbWlzc2lvbiBUaW1pbmcqKlxuXG5SaWdodCwgbGV0J3MgemVybyBpbiBvbiB0aGlzIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAuIEl0J3MgYSBrZXkgZnVuY3Rpb24sIGFuZCB0aGUgd2F5IGl0IGludGVyYWN0cyB3aXRoIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCBpcyBzb21ldGhpbmcgSSBzaG91bGQgZm9jdXMgb24uIFRoYXQgc3VnZ2VzdHMgYW4gaW1wb3J0YW50IGNvbm5lY3Rpb24gdG8gVENQIEZhc3QgT3BlbiwgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdGhhdCBuZWVkcyBjYXJlZnVsIG1hbmFnZW1lbnQuXG5cbk5vdywgbGV0J3MgZGlnIGludG8gaG93IHRoZSByZXRyYW5zbWlzc2lvbiB0aW1pbmcgaXMgZGV0ZXJtaW5lZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGluZmx1ZW5jaW5nIHRoZSBhY3R1YWwgcmV0cmFuc21pc3Npb24gdGltZS4gU28sIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gY2hlY2sgdGhlIGBzZWNzX3RvX3JldHJhbnNgIHZhcmlhYmxlLiBUaGF0IHdpbGwgdGVsbCBtZSBldmVyeXRoaW5nIEkgbmVlZCB0byBrbm93IGFib3V0IHRoZSBjdXJyZW50IHJldHJhbnNtaXNzaW9uIGJhY2tvZmYsIG9yIHdoZW4gdGhlIG5leHQgcmV0cmFuc21pc3Npb24gd2lsbCBiZSBhdHRlbXB0ZWQuIEkgaGF2ZSB0byBzZWUgaG93IGl0J3MgY2FsY3VsYXRlZCwgYW5kIHdoYXQgZmFjdG9ycyBhcmUgZmVlZGluZyBpbnRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzYxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDA6MDIuMDk0Mjk4MDUxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzM4MTM2NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2Vjc190b19yZXRyYW5zXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcC5jPTMzOT12b2lkIHRjcF9sZWF2ZV9tZW1vcnlfcHJlc3N1cmUoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMzUxLS8qIENvbnZlcnQgc2Vjb25kcyB0byByZXRyYW5zbWl0cyBiYXNlZCBvbiBpbml0aWFsIGFuZCBtYXggdGltZW91dCAqL1xcbm5ldC9pcHY0L3RjcC5jOjM1MjpzdGF0aWMgdTggc2Vjc190b19yZXRyYW5zKGludCBzZWNvbmRzLCBpbnQgdGltZW91dCwgaW50IHJ0b19tYXgpXFxubmV0L2lwdjQvdGNwLmMtMzUzLXtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jPTM4Mzc9aW50IGRvX3RjcF9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTM5MzUtXFx0XFx0V1JJVEVfT05DRShpY3NrLVxcdTAwM2VpY3NrX2FjY2VwdF9xdWV1ZS5yc2txX2RlZmVyX2FjY2VwdCxcXG5uZXQvaXB2NC90Y3AuYzozOTM2OlxcdFxcdFxcdCAgIHNlY3NfdG9fcmV0cmFucyh2YWwsIFRDUF9USU1FT1VUX0lOSVQgLyBIWixcXG5uZXQvaXB2NC90Y3AuYy0zOTM3LVxcdFxcdFxcdFxcdFxcdCAgIFRDUF9SVE9fTUFYIC8gSFopKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDA6MDQuMDI4MTE4NTc5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE1MzI0Nzg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBTb2NrZXQgT3B0aW9ucyBhbmQgUmV0cmFuc21pc3Npb24gVGltZW91dHMqKlxuXG5SaWdodCwgYGRvX3RjcF9zZXRzb2Nrb3B0YCDigJMgdGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgc29ja2V0IG9wdGlvbiBjb25maWd1cmF0aW9ucyBhdCB0aGUgVENQIGxldmVsLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBkaXJlY3RseSByZWxhdGVkIHRvIGBzZWNzX3RvX3JldHJhbnNgLiBTbywgSSdtIHRoaW5raW5nLCBcIklzIHRoZXJlIGEgZGlyZWN0IGxpbmsgaGVyZT9cIi5cblxuT2theSwgc28gSSB3aWxsIG5vdyBhbmFseXplIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBgc2Vjc190b19yZXRyYW5zYC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBpc3N1ZXMuIE5vdyBJIHNob3VsZCBjaGVjayBgdGNwX3JlcXNrX3RpbWVvdXRgLiBJcyBpdCBpbiB0aGlzIHNhbWUgYXJlYT8gSSBzaG91bGQgY2hlY2sgaXQsIGJlY2F1c2UgaXQgaXMgcmVsYXRlZCB0byByZXRyYW5zbWlzc2lvbiB2YWx1ZXMuIEl0IG1pZ2h0IGFmZmVjdCBUQ1AgcmVxdWVzdHMgYW5kIHRoZWlyIHRpbWVvdXRzLCBhbmQgdGhhdCdzIHNvbWV0aGluZyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHdpdGggcmVnYXJkcyB0byBzb2NrZXQgY29uZmlndXJhdGlvbi4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGVzZSB2YWx1ZXMgYXJlIGNvbnNpc3RlbnQgYW5kIGNvcnJlY3RseSBzZXQgdG8gYWNoaWV2ZSBvcHRpbWFsIHBlcmZvcm1hbmNlLiBJJ20gZ29pbmcgdG8gbG9vayBpbnRvIHRoaXMgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjgxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDA6MDkuMTgxMzY5NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjUxNDE0NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9yZXFza190aW1lb3V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3RjcC5oPTg4Mj1zdGF0aWMgaW5saW5lIHUzMiBfX3RjcF9zZXRfcnRvKGNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHApXFxuLS1cXG5pbmNsdWRlL25ldC90Y3AuaC04ODYtXFxuaW5jbHVkZS9uZXQvdGNwLmg6ODg3OnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuaW5jbHVkZS9uZXQvdGNwLmgtODg4LVxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuLS1cXG5pbmNsdWRlL25ldC90Y3AuaC04OTktXFxuaW5jbHVkZS9uZXQvdGNwLmg6OTAwOnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuaW5jbHVkZS9uZXQvdGNwLmgtOTAxLXtcXG5pbmNsdWRlL25ldC90Y3AuaDo5MDI6XFx0cmV0dXJuIHRjcF9yZXFza190aW1lb3V0X3NrKHJlcS1cXHUwMDNlcnNrX2xpc3RlbmVyLCByZXEpO1xcbmluY2x1ZGUvbmV0L3RjcC5oLTkwMy19XFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTEwMzM9c3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTExMi1cXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZxdWV1ZS1cXHUwMDNleW91bmcpO1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTExMzpcXHRcXHRtb2RfdGltZXIoXFx1MDAyNnJlcS1cXHUwMDNlcnNrX3RpbWVyLCBqaWZmaWVzICsgdGNwX3JlcXNrX3RpbWVvdXQocmVxKSk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMTE0LVxcbi0tXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jPTY4Nz1zdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtNzE4LVxcdFxcdFxcdHRtcF9vcHQudHNfcmVjZW50X3N0YW1wID0ga3RpbWVfZ2V0X3NlY29uZHMoKSAtXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jOjcxOTpcXHRcXHRcXHRcXHR0Y3BfcmVxc2tfdGltZW91dChyZXEpIC8gSFo7XFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTcyMC1cXHRcXHRcXHRwYXdzX3JlamVjdCA9IHRjcF9wYXdzX3JlamVjdChcXHUwMDI2dG1wX29wdCwgdGgtXFx1MDAzZXJzdCk7XFxuLS1cXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtNzY3LVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo3Njg6XFx0XFx0XFx0XFx0ZXhwaXJlcyArPSB0Y3BfcmVxc2tfdGltZW91dChyZXEpO1xcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy03NjktXFx0XFx0XFx0XFx0aWYgKCFmYXN0b3BlbilcXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jPTQ1Nz1zdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNDkyLVxcdHRjcF9yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfUkVUUkFOUyxcXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0OTM6XFx0XFx0XFx0ICAgICB0Y3BfcmVxc2tfdGltZW91dF9zayhzaywgcmVxKSwgZmFsc2UpO1xcbm5ldC9pcHY0L3RjcF90aW1lci5jLTQ5NC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjQwOjEwLjgzMjc5MDExOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NDQ1NTk5MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBUQ1AgUmVxdWVzdCBTb2NrZXQgVGltZW91dHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gaG93IHRoZXNlIFRDUCByZXF1ZXN0IHNvY2tldCB0aW1lb3V0cyBhcmUgaGFuZGxlZCwgYW5kIGl0IHNlZW1zIGxpa2UgYSBmZXcgZnVuY3Rpb25zIGFyZSBjZW50cmFsIHRvIHRoaXMgcHJvY2Vzcy4gSSBzZWUgdGhhdCBgcmVxc2tfdGltZXJfaGFuZGxlcmAgZGlyZWN0bHkgY2FsbHMgYHRjcF9yZXFza190aW1lb3V0YC4gSW50ZXJlc3RpbmcuIEFsc28sIGB0Y3BfY2hlY2tfcmVxYCBhbHNvIGNhbGxzIGB0Y3BfcmVxc2tfdGltZW91dGAsIGFuZCBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAgY2FsbHMgYHRjcF9yZXFza190aW1lb3V0X3NrYC4gU2VlbXMgbGlrZSBhIHBhdHRlcm4gaGVyZSwgd2l0aCBtdWx0aXBsZSBwYXRocyBsZWFkaW5nIHRvIHRoZXNlIHRpbWVvdXQgZnVuY3Rpb25zLlxuXG5JJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYSBmZXcga2V5IHN5bWJvbHM6IGBkb190Y3Bfc2V0c29ja29wdGAsIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAsIGByZXFza190aW1lcl9oYW5kbGVyYCwgYW5kIGB0Y3BfY2hlY2tfcmVxYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHBpZWNlcyBmaXQgdG9nZXRoZXIuXG5cbk5vdywgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgcmVsYXRlZCB0byB0aGUgdGltZW91dCBiZWhhdmlvci4gSSBxdWlja2x5IHNjYW5uZWQgZm9yIGFueSByZWxldmFudCBgQ09ORklHYCBvcHRpb25zLiBJIG5vdGljZWQgYENPTkZJR19TWU5fQ09PS0lFU2AgbWVudGlvbmVkIGluIGBzeXNjdGxfbmV0X2lwdjQuY2AsIGJ1dCBpdCBhcHBlYXJzIHRvIGJlIHJlbGF0ZWQgdG8gYW5vdGhlciBzeXNjdGwgc2V0dGluZy4gVGhlIG9uZSBJJ20gdHJhY2tpbmcgaXMgYHRjcF9zeW5hY2tfcmV0cmllc2AsIHNvIEknbGwga2VlcCB0aGF0IGluIG1pbmQuIE5vdGhpbmcgc3BlY2lmaWMgbGVhcHMgb3V0LiBTbywgYXQgbGVhc3QgZm9yIG5vdywgaXQgZG9lc24ndCBsb29rIGxpa2UgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIGZvciB0aGlzIHRpbWVvdXQgbG9naWMuXG5cbkZpbmFsbHksIEknbGwgcXVpY2tseSB2ZXJpZnkgaWYgYHJlcXNrX3RpbWVyX2hhbmRsZXJgIGlzIGRlY2xhcmVkIGBzdGF0aWNgIG9yIG5vdC4gSWYgaXQncyBzdGF0aWMsIEkgd2FudCB0byBmaW5kIHRoZSBjYWxsZXIgd2l0aGluIHRoZSBzYW1lIHNjb3BlLiBJZiBpdCdzIG5vdCwgSSdsbCBicm9hZGVuIG15IHNlYXJjaC4gVW5kZXJzdGFuZGluZyBpdHMgc2NvcGUgYW5kIGNhbGxlciBpcyB2aXRhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHBpY3R1cmUgb2YgdGhpcyBzdWJzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNTAsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDA6MzguMjc4MzkyMDgyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk4MjI5MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXNrX3RpbWVyX2hhbmRsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xMDI3PXZvaWQgaW5ldF9jc2tfcmVxc2tfcXVldWVfZHJvcF9hbmRfcHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDMyLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTAzMzpzdGF0aWMgdm9pZCByZXFza190aW1lcl9oYW5kbGVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTAzNC17XFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwNTktXFx0XFx0cmVmY291bnRfc2V0KFxcdTAwMjZucmVxLVxcdTAwM2Vyc2tfcmVmY250LCAyICsgMSk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMDYwOlxcdFxcdHRpbWVyX3NldHVwKFxcdTAwMjZucmVxLVxcdTAwM2Vyc2tfdGltZXIsIHJlcXNrX3RpbWVyX2hhbmRsZXIsIFRJTUVSX1BJTk5FRCk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDYxLVxcdFxcdHJlcXNrX3F1ZXVlX21pZ3JhdGVkKFxcdTAwMjZpbmV0X2Nzayhuc2spLVxcdTAwM2VpY3NrX2FjY2VwdF9xdWV1ZSwgcmVxKTtcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTE1MD1zdGF0aWMgYm9vbCByZXFza19xdWV1ZV9oYXNoX3JlcShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTExNTgtXFx0cmVxLVxcdTAwM2V0aW1lb3V0ID0gdGNwX3RpbWVvdXRfaW5pdCgoc3RydWN0IHNvY2sgKilyZXEpO1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTE1OTpcXHR0aW1lcl9zZXR1cChcXHUwMDI2cmVxLVxcdTAwM2Vyc2tfdGltZXIsIHJlcXNrX3RpbWVyX2hhbmRsZXIsIFRJTUVSX1BJTk5FRCk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMTYwLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYz01ND1zdGF0aWMgc3RydWN0IG1pZ3JhdGVfcmV1c2Vwb3J0X3Rlc3RfY2FzZSB7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTgzLVxcdHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jOjg0OlxcdFxcdC5uYW1lID0gXFxcIklQdjQgVENQX05FV19TWU5fUkVDViByZXFza190aW1lcl9oYW5kbGVyXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTg1LVxcdFxcdC5mYW1pbHkgPSBBRl9JTkVULFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYy0xMTUtXFx0e1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM6MTE2OlxcdFxcdC5uYW1lID0gXFxcIklQdjYgVENQX05FV19TWU5fUkVDViByZXFza190aW1lcl9oYW5kbGVyXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTExNy1cXHRcXHQuZmFtaWx5ID0gQUZfSU5FVDYsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jPTQ5MT1zdGF0aWMgdm9pZCBydW5fdGVzdChzdHJ1Y3QgbWlncmF0ZV9yZXVzZXBvcnRfdGVzdF9jYXNlICp0ZXN0X2Nhc2UsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTU0Ny1cXHRcXHQvKiBXYWl0IGZvciBTWU4rQUNLIHRpbWVycyB0byBleHBpcmUgc28gdGhhdFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM6NTQ4OlxcdFxcdCAqIHJlcXNrX3RpbWVyX2hhbmRsZXIoKSBtaWdyYXRlcyBUQ1BfTkVXX1NZTl9SRUNWIHJlcXVlc3RzLlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmMtNTQ5LVxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTo0MDo0MC4xNzY2MjkzOTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwNTgxMTE4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIEVudHJ5IFBvaW50IGFuZCBQb3RlbnRpYWwgQ3Jvc3MtRmlsZSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBJJ20gbG9va2luZyBhdCBgcmVxc2tfdGltZXJfaGFuZGxlcmAuIEltbWVkaWF0ZWx5LCB0aGUgXCJoYW5kbGVyXCIgc3VmZml4IGFuZCBjb250ZXh0IGNsdWUgbWUgaW4g4oCTIHRoaXMgaXMgYSB0aW1lciBjYWxsYmFjay4gU28sIGl0IGZ1bmN0aW9ucyBhcyBhbiBlbnRyeSBwb2ludCwgYW5kIHRoYXQgaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBUaGF0IG1lYW5zIHRoaXMgaXMgd2hlcmUgdGhlIGV4ZWN1dGlvbiBmbG93IGJlZ2lucyBhZnRlciBhIHNwZWNpZmljIHRpbWVyIGV2ZW50LiBJJ2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0cmFjaW5nIGV4ZWN1dGlvbi5cblxuTm93LCBgdGNwX2NoZWNrX3JlcWAgaGFzIG1lIHdvbmRlcmluZy4gSXMgdGhpcyBhIGZ1bmN0aW9uIGV4cG9zZWQgdG8gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCwgb3IgaXMgaXQgdXNlZCBhY3Jvc3MgbXVsdGlwbGUgZmlsZXMgaW4gdGhpcyBzcGVjaWZpYyBtb2R1bGU/IEtub3dpbmcgdGhlIHNjb3BlIG9mIGB0Y3BfY2hlY2tfcmVxYCBpcyBjcnVjaWFsLiBJcyBpdCBhbiBpbnRlcm5hbCBmdW5jdGlvbiBvciBpcyBpdCBzb21ldGhpbmcgZGVjbGFyZWQgYXMgYEVYUE9SVF9TWU1CT0xgPyBVbmRlcnN0YW5kaW5nIGl0cyB2aXNpYmlsaXR5IHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgdGhlIGJyZWFkdGggb2YgaXRzIGltcGFjdCBhbmQgaG93IHRpZ2h0bHkgY291cGxlZCB0aGlzIGNvZGUgaXMuIEkgbmVlZCB0byB0cmFjayBkb3duIGl0cyBkZWNsYXJhdGlvbiBhbmQgdXNhZ2UgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUuIEl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgdGhlIHRpbWVyIGV2ZW50LiBEb2VzIHRoZSB0aW1lciBhZmZlY3QgdGhlIHJlc3VsdCBvciB2aWNlIHZlcnNhP1xuXG5cbiIsIklucHV0VG9rZW5zIjo3NjczLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDA6NDQuMjgyNDQzMjY2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ1MzkzNDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9jaGVja19yZXFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvdGNwLmg9NDc4PWVudW0gdGNwX3R3X3N0YXR1cyB0Y3BfdGltZXdhaXRfc3RhdGVfcHJvY2VzcyhzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dyxcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oLTQ4Mi1cXHRcXHRcXHRcXHRcXHQgICAgICBlbnVtIHNrYl9kcm9wX3JlYXNvbiAqZHJvcF9yZWFzb24pO1xcbmluY2x1ZGUvbmV0L3RjcC5oOjQ4MzpzdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuaW5jbHVkZS9uZXQvdGNwLmgtNDg0LVxcdFxcdFxcdCAgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSwgYm9vbCBmYXN0b3BlbixcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTcxNTI9dGNwX3Jjdl9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMTgtXFx0XFx0U0tCX0RSX1NFVChyZWFzb24sIFRDUF9GQVNUT1BFTik7XFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NzIxOTpcXHRcXHRpZiAoIXRjcF9jaGVja19yZXEoc2ssIHNrYiwgcmVxLCB0cnVlLCBcXHUwMDI2cmVxX3N0b2xlbiwgXFx1MDAyNnJlYXNvbikpXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzIyMC1cXHRcXHRcXHRnb3RvIGRpc2NhcmQ7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTIwNzA9aW50IHRjcF92NF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjE2NS1cXHRcXHRcXHR0Y3BfdjRfZmlsbF9jYihza2IsIGlwaCwgdGgpO1xcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MjE2NjpcXHRcXHRcXHRuc2sgPSB0Y3BfY2hlY2tfcmVxKHNrLCBza2IsIHJlcSwgZmFsc2UsIFxcdTAwMjZyZXFfc3RvbGVuLFxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjE2Ny1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmRyb3BfcmVhc29uKTtcXG4tLVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYz01NDY9c3RydWN0IHNvY2sgKnRjcF9jcmVhdGVfb3BlbnJlcV9jaGlsZChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtNjg2LVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo2ODc6c3RydWN0IHNvY2sgKnRjcF9jaGVja19yZXEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy02ODgtXFx0XFx0XFx0ICAgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xNzMwPUlORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCB0Y3BfdjZfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE4MjEtXFx0XFx0XFx0dGNwX3Y2X2ZpbGxfY2Ioc2tiLCBoZHIsIHRoKTtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE4MjI6XFx0XFx0XFx0bnNrID0gdGNwX2NoZWNrX3JlcShzaywgc2tiLCByZXEsIGZhbHNlLCBcXHUwMDI2cmVxX3N0b2xlbixcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE4MjMtXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZkcm9wX3JlYXNvbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjQwOjQ1LjkyNzg0MjQzM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDg3OTEzNjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhpcyBjb2RlIHNuaXBwZXQ6XG5cbioqRGl2aW5nIGludG8gVENQIENvbm5lY3Rpb24gSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgVENQIGNvbm5lY3Rpb24gcmVxdWVzdHMgYXJlIHZhbGlkYXRlZCwgYW5kIHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gSXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgdGNwX2NoZWNrX3JlcWAgaXMgdGhlIGtleSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgZnJvbSBib3RoIElQdjQgYW5kIElQdjYgcmVjZXB0aW9uIHBhdGhzIChgdGNwX3Y0X3JjdmAgYW5kIGB0Y3BfdjZfcmN2YCkuIFRob3NlIHJlY2VpdmVyIGZ1bmN0aW9ucyBhcmUgZGVmaW5pdGVseSBnb29kIHN0YXJ0aW5nIHBvaW50cyB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQsIGJ1dCwga25vd2luZyB0aGUgYXJjaGl0ZWN0dXJlLCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhvc2UgYXJlIGluY3JlZGlibHkgaG90IGNvZGUgcGF0aHMg4oCTIGV2ZXJ5IHBhY2tldCBnb2VzIHRocm91Z2ggdGhlbSwgd2hpY2ggbWVhbnMgdGhleSBhcmUgbGlrZWx5IG9wdGltaXplZC4gU28sIGEgZGVlcGVyIGRpdmUgdGhlcmUgd2lsbCBiZSBjb3N0bHkgaW4gdGVybXMgb2YgdW5kZXJzdGFuZGluZy4gVGhlcmVmb3JlLCBgdGNwX2NoZWNrX3JlcWAgaXRzZWxmIHNlZW1zIGxpa2UgYSBiZXR0ZXIsIGxlc3Mgbm9pc3ksIGZvY3VzIHN5bWJvbC4gVGhpcyBpcyB3aGVyZSBJIHNob3VsZCBjb25jZW50cmF0ZSBteSBpbml0aWFsIGVmZm9ydHMuXG5cbk5vdywgbGV0J3MgcGl2b3QuIFNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBjb25uZWN0aW9uIHZhbGlkYXRpb24gYW5kIHBvdGVudGlhbCByZXRyYW5zbWlzc2lvbnMsIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAgaXMgYW5vdGhlciBzeW1ib2wgdGhhdCByZXF1aXJlcyBpbnZlc3RpZ2F0aW9uLiBMZXQncyBzZWUgd2hhdCB0aGF0IGhhcyB0byBvZmZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY2OSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjQwOjUwLjQxNTc1OTU0NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxMzgzOTE1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfcmV0cmFuc21pdF90aW1lclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9pbmV0X2Nvbm5lY3Rpb25fc29jay5oPTE5Mz1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3RpbWVvdXRfZXhwaXJlcyhjb25zdCBzdHJ1Y3Qgc29jayAqc2spXFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0xOTQte1xcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg6MTk1OlxcdHJldHVybiBSRUFEX09OQ0Uoc2stXFx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLmV4cGlyZXMpO1xcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmgtMTk2LX1cXG4tLVxcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg9MjA0PXN0YXRpYyBpbmxpbmUgdm9pZCBpbmV0X2Nza19jbGVhcl94bWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzaywgY29uc3QgaW50IHdoYXQpXFxuLS1cXG5pbmNsdWRlL25ldC9pbmV0X2Nvbm5lY3Rpb25fc29jay5oLTIxMC0jaWZkZWYgSU5FVF9DU0tfQ0xFQVJfVElNRVJTXFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaDoyMTE6XFx0XFx0c2tfc3RvcF90aW1lcihzaywgXFx1MDAyNnNrLVxcdTAwM2V0Y3BfcmV0cmFuc21pdF90aW1lcik7XFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0yMTItI2VuZGlmXFxuLS1cXG5pbmNsdWRlL25ldC9pbmV0X2Nvbm5lY3Rpb25fc29jay5oPTIyNz1zdGF0aWMgaW5saW5lIHZvaWQgaW5ldF9jc2tfcmVzZXRfeG1pdF90aW1lcihzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IGludCB3aGF0LFxcbi0tXFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0yNDItXFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNmljc2stXFx1MDAzZWljc2tfcGVuZGluZywgd2hhdCk7XFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaDoyNDM6XFx0XFx0c2tfcmVzZXRfdGltZXIoc2ssIFxcdTAwMjZzay1cXHUwMDNldGNwX3JldHJhbnNtaXRfdGltZXIsIHdoZW4pO1xcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmgtMjQ0LVxcdH0gZWxzZSBpZiAod2hhdCA9PSBJQ1NLX1RJTUVfREFDSykge1xcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oPTI0Mj1zdHJ1Y3Qgc2tfZmlsdGVyO1xcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oLTMxMi0gICpcXHRAc2tfdGltZXI6IHNvY2sgY2xlYW51cCB0aW1lclxcbmluY2x1ZGUvbmV0L3NvY2suaDozMTM6ICAqXFx0QHRjcF9yZXRyYW5zbWl0X3RpbWVyOiB0Y3AgcmV0cmFuc21pdCB0aW1lclxcbmluY2x1ZGUvbmV0L3NvY2suaDozMTQ6ICAqXFx0QG1wdGNwX3JldHJhbnNtaXRfdGltZXI6IG1wdGNwIHJldHJhbnNtaXQgdGltZXJcXG5pbmNsdWRlL25ldC9zb2NrLmgtMzE1LSAgKlxcdEBza19zdGFtcDogdGltZSBzdGFtcCBvZiBsYXN0IHBhY2tldCByZWNlaXZlZFxcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oPTM2NT1zdHJ1Y3Qgc29jayB7XFxuLS1cXG5pbmNsdWRlL25ldC9zb2NrLmgtNDk0LVxcdFxcdHN0cnVjdCB0aW1lcl9saXN0XFx0c2tfdGltZXI7XFxuaW5jbHVkZS9uZXQvc29jay5oOjQ5NTpcXHRcXHRzdHJ1Y3QgdGltZXJfbGlzdFxcdHRjcF9yZXRyYW5zbWl0X3RpbWVyO1xcbmluY2x1ZGUvbmV0L3NvY2suaDo0OTY6XFx0XFx0c3RydWN0IHRpbWVyX2xpc3RcXHRtcHRjcF9yZXRyYW5zbWl0X3RpbWVyO1xcbmluY2x1ZGUvbmV0L3NvY2suaC00OTctXFx0fTtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oPTc1Mz1pbnQgdGNwX3JldHJhbnNtaXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHNlZ3MpO1xcbmluY2x1ZGUvbmV0L3RjcC5oOjc1NDp2b2lkIHRjcF9yZXRyYW5zbWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzayk7XFxuaW5jbHVkZS9uZXQvdGNwLmgtNzU1LXZvaWQgdGNwX3htaXRfcmV0cmFuc21pdF9xdWV1ZShzdHJ1Y3Qgc29jayAqKTtcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9NzE4PXZvaWQgaW5ldF9jc2tfaW5pdF94bWl0X3RpbWVycyhzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTcyNC1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjcyNTpcXHR0aW1lcl9zZXR1cChcXHUwMDI2c2stXFx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLCByZXRyYW5zbWl0X2hhbmRsZXIsIDApO1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtNzI2LVxcdHRpbWVyX3NldHVwKFxcdTAwMjZpY3NrLVxcdTAwM2VpY3NrX2RlbGFja190aW1lciwgZGVsYWNrX2hhbmRsZXIsIDApO1xcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz03MzE9dm9pZCBpbmV0X2Nza19jbGVhcl94bWl0X3RpbWVycyhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTczNy1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjczODpcXHRza19zdG9wX3RpbWVyKHNrLCBcXHUwMDI2c2stXFx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyKTtcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTczOS1cXHRza19zdG9wX3RpbWVyKHNrLCBcXHUwMDI2aWNzay1cXHUwMDNlaWNza19kZWxhY2tfdGltZXIpO1xcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz03NDM9dm9pZCBpbmV0X2Nza19jbGVhcl94bWl0X3RpbWVyc19zeW5jKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtNzUyLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6NzUzOlxcdHNrX3N0b3BfdGltZXJfc3luYyhzaywgXFx1MDAyNnNrLVxcdTAwM2V0Y3BfcmV0cmFuc21pdF90aW1lcik7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy03NTQtXFx0c2tfc3RvcF90aW1lcl9zeW5jKHNrLCBcXHUwMDI2aWNzay1cXHUwMDNlaWNza19kZWxhY2tfdGltZXIpO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz00Mzg9dm9pZCB0Y3BfbGRfUlRPX3JldmVydChzdHJ1Y3Qgc29jayAqc2ssIHUzMiBzZXEpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTQ3MC1cXHRcXHQgKi9cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjQ3MTpcXHRcXHR0Y3BfcmV0cmFuc21pdF90aW1lcihzayk7XFxubmV0L2lwdjQvdGNwX2lwdjQuYy00NzItXFx0fVxcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmM9Mzg5PXN0YXRpYyB2b2lkIHRjcF9wcm9iZV90aW1lcihzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC90Y3BfdGltZXIuYy00MDctXFx0ICogY29ycmVzcG9uZGluZyBzeXN0ZW0gbGltaXQuIFdlIGFsc28gaW1wbGVtZW50IHNpbWlsYXIgcG9saWN5IHdoZW5cXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0MDg6XFx0ICogd2UgdXNlIFJUTyB0byBwcm9iZSB3aW5kb3cgaW4gdGNwX3JldHJhbnNtaXRfdGltZXIoKS5cXG5uZXQvaXB2NC90Y3BfdGltZXIuYy00MDktXFx0ICovXFxuLS1cXG5uZXQvaXB2NC90Y3BfdGltZXIuYz00OTY9c3RhdGljIGJvb2wgdGNwX3J0eF9wcm9iZTBfdGltZWRfb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jLTUyNi0vKipcXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo1Mjc6ICogIHRjcF9yZXRyYW5zbWl0X3RpbWVyKCkgLSBUaGUgVENQIHJldHJhbnNtaXQgdGltZW91dCBoYW5kbGVyXFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTI4LSAqICBAc2s6ICBQb2ludGVyIHRvIHRoZSBjdXJyZW50IHNvY2tldC5cXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jLTUzNi0gKi9cXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo1Mzc6dm9pZCB0Y3BfcmV0cmFuc21pdF90aW1lcihzdHJ1Y3Qgc29jayAqc2spXFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTM4LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jPTY5Nz12b2lkIHRjcF93cml0ZV90aW1lcl9oYW5kbGVyKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jLTcwNi1cXHRpZiAodGltZV9hZnRlcih0Y3BfdGltZW91dF9leHBpcmVzKHNrKSwgamlmZmllcykpIHtcXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo3MDc6XFx0XFx0c2tfcmVzZXRfdGltZXIoc2ssIFxcdTAwMjZzay1cXHUwMDNldGNwX3JldHJhbnNtaXRfdGltZXIsXFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNzA4LVxcdFxcdFxcdCAgICAgICB0Y3BfdGltZW91dF9leHBpcmVzKHNrKSk7XFxuLS1cXG5uZXQvaXB2NC90Y3BfdGltZXIuYy03MjItXFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNmljc2stXFx1MDAzZWljc2tfcGVuZGluZywgMCk7XFxubmV0L2lwdjQvdGNwX3RpbWVyLmM6NzIzOlxcdFxcdHRjcF9yZXRyYW5zbWl0X3RpbWVyKHNrKTtcXG5uZXQvaXB2NC90Y3BfdGltZXIuYy03MjQtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2NC90Y3BfdGltZXIuYz03MzI9c3RhdGljIHZvaWQgdGNwX3dyaXRlX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbm5ldC9pcHY0L3RjcF90aW1lci5jLTczMy17XFxubmV0L2lwdjQvdGNwX3RpbWVyLmM6NzM0OlxcdHN0cnVjdCBzb2NrICpzayA9IHRpbWVyX2NvbnRhaW5lcl9vZihzaywgdCwgdGNwX3JldHJhbnNtaXRfdGltZXIpO1xcbm5ldC9pcHY0L3RjcF90aW1lci5jLTczNS1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTQyOD1zdGF0aWMgdm9pZCBtcHRjcF9zdG9wX3J0eF90aW1lcihzdHJ1Y3Qgc29jayAqc2spXFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDI5LXtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0MzA6XFx0c2tfc3RvcF90aW1lcihzaywgXFx1MDAyNnNrLVxcdTAwM2VtcHRjcF9yZXRyYW5zbWl0X3RpbWVyKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00MzEtXFx0bXB0Y3Bfc2soc2spLVxcdTAwM2V0aW1lcl9pdmFsID0gMDtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTk5Nz1zdGF0aWMgYm9vbCBtcHRjcF9ydHhfdGltZXJfcGVuZGluZyhzdHJ1Y3Qgc29jayAqc2spXFxubmV0L21wdGNwL3Byb3RvY29sLmMtOTk4LXtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo5OTk6XFx0cmV0dXJuIHRpbWVyX3BlbmRpbmcoXFx1MDAyNnNrLVxcdTAwM2VtcHRjcF9yZXRyYW5zbWl0X3RpbWVyKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMDAwLX1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTEwMDI9c3RhdGljIHZvaWQgbXB0Y3BfcmVzZXRfcnR4X3RpbWVyKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTEwMTAtXFx0dG91dCA9IG1wdGNwX3NrKHNrKS1cXHUwMDNldGltZXJfaXZhbDtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoxMDExOlxcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcXHUwMDI2c2stXFx1MDAzZW1wdGNwX3JldHJhbnNtaXRfdGltZXIsIGppZmZpZXMgKyB0b3V0KTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMDEyLX1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTIzMTM9c3RhdGljIGludCBtcHRjcF9yZWN2bXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMjQyNC1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyNDI1OnN0YXRpYyB2b2lkIG1wdGNwX3JldHJhbnNtaXRfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMjQyNi17XFxubmV0L21wdGNwL3Byb3RvY29sLmM6MjQyNzpcXHRzdHJ1Y3Qgc29jayAqc2sgPSB0aW1lcl9jb250YWluZXJfb2Yoc2ssIHQsIG1wdGNwX3JldHJhbnNtaXRfdGltZXIpO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTI0MjgtXFx0c3RydWN0IG1wdGNwX3NvY2sgKm1zayA9IG1wdGNwX3NrKHNrKTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTMwNDQ9c3RhdGljIHZvaWQgX19tcHRjcF9pbml0X3NvY2soc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMzA3NC1cXHQvKiByZS11c2UgdGhlIGNzayByZXRyYW5zIHRpbWVyIGZvciBNUFRDUC1sZXZlbCByZXRyYW5zICovXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzA3NTpcXHR0aW1lcl9zZXR1cChcXHUwMDI2c2stXFx1MDAzZW1wdGNwX3JldHJhbnNtaXRfdGltZXIsIG1wdGNwX3JldHJhbnNtaXRfdGltZXIsIDApO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMwNzYtXFx0dGltZXJfc2V0dXAoXFx1MDAyNm1zay1cXHUwMDNlc2subXB0Y3BfdG91dF90aW1lciwgbXB0Y3BfdG91dF90aW1lciwgMCk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jPTc0PXN0YXRpYyBpbnQgZHVtcF90Y3Bfc29jayhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IHRjcF9zb2NrICp0cCxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A0LmMtMTAxLVxcdFxcdHRpbWVyX2FjdGl2ZSA9IDE7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDQuYzoxMDI6XFx0XFx0dGltZXJfZXhwaXJlcyA9IHNwLVxcdTAwM2V0Y3BfcmV0cmFuc21pdF90aW1lci5leHBpcmVzO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A0LmMtMTAzLVxcdH0gZWxzZSBpZiAoaWNzay1cXHUwMDNlaWNza19wZW5kaW5nID09IElDU0tfVElNRV9QUk9CRTApIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jLTEwNC1cXHRcXHR0aW1lcl9hY3RpdmUgPSA0O1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A0LmM6MTA1OlxcdFxcdHRpbWVyX2V4cGlyZXMgPSBzcC1cXHUwMDNldGNwX3JldHJhbnNtaXRfdGltZXIuZXhwaXJlcztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jLTEwNi1cXHR9IGVsc2UgaWYgKHRpbWVyX3BlbmRpbmcoXFx1MDAyNmljc2stXFx1MDAzZWljc2tfa2VlcGFsaXZlX3RpbWVyKSkge1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDYuYz03ND1zdGF0aWMgaW50IGR1bXBfdGNwNl9zb2NrKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgdGNwNl9zb2NrICp0cCxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A2LmMtMTAxLVxcdFxcdHRpbWVyX2FjdGl2ZSA9IDE7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDYuYzoxMDI6XFx0XFx0dGltZXJfZXhwaXJlcyA9IHNwLVxcdTAwM2V0Y3BfcmV0cmFuc21pdF90aW1lci5leHBpcmVzO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A2LmMtMTAzLVxcdH0gZWxzZSBpZiAoaWNzay1cXHUwMDNlaWNza19wZW5kaW5nID09IElDU0tfVElNRV9QUk9CRTApIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNi5jLTEwNC1cXHRcXHR0aW1lcl9hY3RpdmUgPSA0O1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A2LmM6MTA1OlxcdFxcdHRpbWVyX2V4cGlyZXMgPSBzcC1cXHUwMDNldGNwX3JldHJhbnNtaXRfdGltZXIuZXhwaXJlcztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNi5jLTEwNi1cXHR9IGVsc2UgaWYgKHRpbWVyX3BlbmRpbmcoXFx1MDAyNmljc2stXFx1MDAzZWljc2tfa2VlcGFsaXZlX3RpbWVyKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTo0MDo1Mi4wMjk2MDUzNTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMzNTM0NzQ1NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVENQIFRpbWVyIGFuZCBTb2NrZXQgT3B0aW9uIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUga2V5IGVudHJ5IHBvaW50cyBpbnRvIHRoZSByZWxldmFudCBUQ1AgbG9naWMsIGtlZXBpbmcgaW4gbWluZCB0aGUgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZnVuY3Rpb25zIGFzIHRoZSBcImNsZWFuZXN0XCIgd2F5IHRvIGFjY2VzcyB0aGUgY29kZS4gSSBuZWVkIHRvIHRyYWNlIGhvdyB0aGUgYHRjcF9yZXRyYW5zbWl0X3RpbWVyYCwgYHJlcXNrX3RpbWVyX2hhbmRsZXJgLCBgdGNwX2NoZWNrX3JlcWAsIGFuZCBgZG9fdGNwX3NldHNvY2tvcHRgIGZ1bmN0aW9ucyByZWxhdGUgdG8gZWFjaCBvdGhlci5cblxuRmlyc3QsIEkgc2VlIHRoYXQgYHRjcF9yZXRyYW5zbWl0X3RpbWVyYCBpcyB0cmlnZ2VyZWQgZnJvbSBgdGNwX3dyaXRlX3RpbWVyX2hhbmRsZXJgLCB3aGljaCBpdHNlbGYgaXMgYSBjYWxsYmFjayBmcm9tIHRoZSBgdGNwX3dyaXRlX3RpbWVyYC4gVGhhdCdzIGEgY2xlYXIgY2hhaW4uIFRoZSBsaXN0IEknbSB3b3JraW5nIHdpdGggaXM6XG5cbiogICBgZG9fdGNwX3NldHNvY2tvcHRgXG4qICAgYHRjcF9yZXRyYW5zbWl0X3RpbWVyYFxuKiAgIGByZXFza190aW1lcl9oYW5kbGVyYFxuKiAgIGB0Y3BfY2hlY2tfcmVxYFxuXG5XYWl0LCBgcmVxc2tfdGltZXJfaGFuZGxlcmAgaXMgbWFya2VkIGFzIGBzdGF0aWNgLiBUaGF0IG1lYW5zIGl0J3Mgbm90IGRpcmVjdGx5IGV4cG9ydGVkLiBIb3dldmVyLCBpdCAqaXMqIGEgdGltZXIgY2FsbGJhY2ssIHNvIGl0cyBhZGRyZXNzIGlzIHRha2VuIGFuZCBwYXNzZWQgdG8gYHRpbWVyX3NldHVwYC4gVGhlcmVmb3JlLCBpdCdzIHNhZmUgdG8gdXNlIGl0LCBldmVuIGlmIGl0J3Mgc3RhdGljLCBzaW5jZSBpdCB3b24ndCBiZSBpbmxpbmVkLiBUaGUgb3RoZXIgdGhyZWUgbG9vayBnb29kOiBgdGNwX2NoZWNrX3JlcWAsIGBkb190Y3Bfc2V0c29ja29wdGAsIGFuZCBgdGNwX3JldHJhbnNtaXRfdGltZXJgIGFyZSBhbGwgbm9uLXN0YXRpYy5cblxuTm93LCBJJ20gZGlnZ2luZyBkZWVwZXIgdG8gc2VlIHdoaWNoIG9mIHRoZXNlIGFyZSB0aGUgYmVzdCBlbnRyeSBwb2ludHMuIExvb2tpbmcgYXQgdGhlIGNhbGwgY2hhaW5zOlxuXG4qICAgYGRvX3RjcF9zZXRzb2Nrb3B0YCBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gYHNlY3NfdG9fcmV0cmFuc2Agd2hlbiBzZXR0aW5nIGBUQ1BfREVGRVJfQUNDRVBUYC4gU2VlbXMgbGlrZSBhIGdvb2QgZW50cnkgcG9pbnQuXG4qICAgYHRjcF9yZXRyYW5zbWl0X3RpbWVyYCBkaXJlY3RseSBjYWxscyBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAuIE1ha2VzIHNlbnNlIGFzIGFuIGVudHJ5IHBvaW50LlxuKiAgIGByZXFza190aW1lcl9oYW5kbGVyYCBkaXJlY3RseSBjYWxscyBgdGNwX3JlcXNrX3RpbWVvdXRgLiBDb25maXJtcyB0aGlzIGlzIGEgZ29vZCBlbnRyeSBwb2ludC5cbiogICBgdGNwX2NoZWNrX3JlcWAgYWxzbyBjYWxscyBgdGNwX3JlcXNrX3RpbWVvdXRgLiBDb25maXJtcyB0aGlzIGlzIGEgZ29vZCBlbnRyeSBwb2ludCBhcyB3ZWxsLlxuXG5TbywgSSBoYXZlIGEgZ29vZCBoYW5kbGUgb24gd2hlcmUgdGhlIGxvZ2ljIHN0YXJ0cy4gVGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJIG5lZWQgdG8gd29ycnkgYWJvdXQgaGVyZS5cblxuQmFzZWQgb24gdGhpcyBhbmFseXNpcywgdGhlIHBhdGNoIGZvY3VzZXMgb24gbW9kaWZ5aW5nIFRDUCBTWU5BQ0sgcmV0cmllcyBhbmQgdGltZW91dCBjYWxjdWxhdGlvbiwgc3BlY2lmaWNhbGx5IHRvIGFkZHJlc3MgcG90ZW50aWFsIG92ZXJmbG93IGlzc3VlcyBhbmQgbGltaXQgYHRjcF9zeW5hY2tfcmV0cmllc2AgdG8gMTI3LiBUaGVzZSBjaGFuZ2VzIHRvdWNoIGNvcmUgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGFuZCByZXRyYW5zbWlzc2lvbiBsb2dpYy4gVGhpcyBsb2dpYyBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggc29ja2V0IG9wdGlvbnMgYW5kIHRpbWVyIGNhbGxiYWNrcyBpbnZvbHZlZCBpbiBjb25uZWN0aW9uIGhhbmRsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjE5OCwiT3V0cHV0VG9rZW5zIjoxMjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDE6MDUuMzgzMDgxOTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX3RjcF9zZXRzb2Nrb3B0XCIsXG4gICAgXCJ0Y3BfcmV0cmFuc21pdF90aW1lclwiLFxuICAgIFwicmVxc2tfdGltZXJfaGFuZGxlclwiLFxuICAgIFwidGNwX2NoZWNrX3JlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBTWU5BQ0sgcmV0cmllcyBsaW1pdHMgYW5kIHRpbWVvdXQgY2FsY3VsYXRpb24gbG9naWMgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYW5kIGJvdW5kcyBgdGNwX3N5bmFja19yZXRyaWVzYCB0byAxMjcuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgcmV0cmFuc21pc3Npb24gbG9naWMuIFRoZSBtb2RpZmljYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIFRDUCBzb2NrZXQgb3B0aW9ucyBhbmQgdGltZXIgY2FsbGJhY2tzIGR1cmluZyBjb25uZWN0aW9uIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX3RjcF9zZXRzb2Nrb3B0XCIsXG4gICAgXCJ0Y3BfcmV0cmFuc21pdF90aW1lclwiLFxuICAgIFwicmVxc2tfdGltZXJfaGFuZGxlclwiLFxuICAgIFwidGNwX2NoZWNrX3JlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBTWU5BQ0sgcmV0cmllcyBsaW1pdHMgYW5kIHRpbWVvdXQgY2FsY3VsYXRpb24gbG9naWMgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYW5kIGJvdW5kcyBgdGNwX3N5bmFja19yZXRyaWVzYCB0byAxMjcuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgcmV0cmFuc21pc3Npb24gbG9naWMuIFRoZSBtb2RpZmljYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIFRDUCBzb2NrZXQgb3B0aW9ucyBhbmQgdGltZXIgY2FsbGJhY2tzIGR1cmluZyBjb25uZWN0aW9uIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTo0MTowNS4zODMxMTE2M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzOTAzNzU4NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTo0MTowNS4zODM1NzEzMjlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAzODk4OTM5NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgYW5kIG91dC1vZi1ib3VuZHMgc2hpZnQgaW4gVENQIHRpbWVvdXQgY2FsY3VsYXRpb24gKGByZXEtXFx1MDAzZXRpbWVvdXQgXFx1MDAzY1xcdTAwM2MgcmVxLVxcdTAwM2VudW1fdGltZW91dGApIGJ5IGNhcHBpbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mIFNZTkFDSyByZXRyaWVzIHRvIDEyNyBhbmQgYWRkaW5nIG92ZXJmbG93IGNoZWNrcyBpbiBgdGNwX3JlcXNrX3RpbWVvdXRfc2tgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBkYXRhIGNvcGllZCB0byB1c2Vyc3BhY2UuIFN0YW5kYXJkIEtBU0FOIGFuZCBVQlNBTiBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdW5kZWZpbmVkIGJlaGF2aW9yIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MDY0MzRjYTAzMjgzMDlhMzUwYWVhZmQ3YjYxNmUzMDQxMjg2ODFkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTU6Mzk6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0XG5pbmRleCAyMDhmNDY5NjdlZTU5Li5mZDUwMzhiNmNhYjlmIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0XG5AQCAtOTU0LDcgKzk1NCw3IEBAIHRjcF9zdGR1cmcgLSBCT09MRUFOXG4gXG4gdGNwX3N5bmFja19yZXRyaWVzIC0gSU5URUdFUlxuIFx0TnVtYmVyIG9mIHRpbWVzIFNZTkFDS3MgZm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiBhdHRlbXB0IHdpbGxcbi1cdGJlIHJldHJhbnNtaXR0ZWQuIFNob3VsZCBub3QgYmUgaGlnaGVyIHRoYW4gMjU1LiBEZWZhdWx0IHZhbHVlXG4rXHRiZSByZXRyYW5zbWl0dGVkLiBTaG91bGQgbm90IGJlIGhpZ2hlciB0aGFuIDEyNy4gRGVmYXVsdCB2YWx1ZVxuIFx0aXMgNSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gMzFzZWNvbmRzIHRpbGwgdGhlIGxhc3QgcmV0cmFuc21pc3Npb25cbiBcdHdpdGggdGhlIGN1cnJlbnQgaW5pdGlhbCBSVE8gb2YgMXNlY29uZC4gV2l0aCB0aGlzIHRoZSBmaW5hbCB0aW1lb3V0XG4gXHRmb3IgYSBwYXNzaXZlIFRDUCBjb25uZWN0aW9uIHdpbGwgaGFwcGVuIGFmdGVyIDYzc2Vjb25kcy5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oXG5pbmRleCAyYzViODg5NTMwYjU1Li44YWIyZmQzNjhlZDNiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvdGNwLmhcbisrKyBiL2luY2x1ZGUvbmV0L3RjcC5oXG5AQCAtMTgzLDYgKzE4Myw4IEBAIHN0YXRpY19hc3NlcnQoKDEgXHUwMDNjXHUwMDNjIEFUT19CSVRTKSBcdTAwM2UgVENQX0RFTEFDS19NQVgpO1xuICNkZWZpbmUgTUFYX1RDUF9LRUVQSU5UVkxcdDMyNzY3XG4gI2RlZmluZSBNQVhfVENQX0tFRVBDTlRcdFx0MTI3XG4gI2RlZmluZSBNQVhfVENQX1NZTkNOVFx0XHQxMjdcbisvKiByZXF1ZXN0X3NvY2s6Om51bV90aW1lb3V0IGlzIGEgNy1iaXQgZmllbGQuICovXG4rI2RlZmluZSBNQVhfVENQX1NZTkFDS19SRVRSSUVTXHQxMjdcbiBcbiAvKiBFbnN1cmUgdGhhdCBUQ1AgUEFXUyBjaGVja3MgYXJlIHJlbGF4ZWQgYWZ0ZXIgfjIxNDcgc2Vjb25kc1xuICAqIHRvIGF2b2lkIG92ZXJmbG93cy4gVGhpcyBhc3N1bWVzIGEgY2xvY2sgc21hbGxlciB0aGFuIDEgTWh6LlxuQEAgLTg4MiwxMiArODg0LDIyIEBAIHN0YXRpYyBpbmxpbmUgdTMyIF9fdGNwX3NldF9ydG8oY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cClcbiBcdHJldHVybiB1c2Vjc190b19qaWZmaWVzKCh0cC1cdTAwM2VzcnR0X3VzIFx1MDAzZVx1MDAzZSAzKSArIHRwLVx1MDAzZXJ0dHZhcl91cyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0X3NrKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbitcdFx0XHRcdFx0XHQgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIHtcbi1cdHU2NCB0aW1lb3V0ID0gKHU2NClyZXEtXHUwMDNldGltZW91dCBcdTAwM2NcdTAwM2MgcmVxLVx1MDAzZW51bV90aW1lb3V0O1xuK1x0dTMyIHJ0b19tYXggPSB0Y3BfcnRvX21heChzayk7XG4rXHR1NjQgdGltZW91dCA9IHJlcS1cdTAwM2V0aW1lb3V0O1xuK1xuK1x0aWYgKHJlcS1cdTAwM2VudW1fdGltZW91dCBcdTAwM2U9IEJJVFNfUEVSX1RZUEUodGltZW91dCkgfHxcbitcdCAgICB0aW1lb3V0IFx1MDAzZSBVNjRfTUFYIFx1MDAzZVx1MDAzZSByZXEtXHUwMDNlbnVtX3RpbWVvdXQpXG4rXHRcdHJldHVybiBydG9fbWF4O1xuK1xuK1x0cmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCBcdTAwM2NcdTAwM2MgcmVxLVx1MDAzZW51bV90aW1lb3V0LCBydG9fbWF4KTtcbit9XG4gXG4tXHRyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbWluX3QodTY0LCB0aW1lb3V0LFxuLVx0XHRcdFx0ICAgIHRjcF9ydG9fbWF4KHJlcS1cdTAwM2Vyc2tfbGlzdGVuZXIpKTtcbitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXQoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuK3tcbitcdHJldHVybiB0Y3BfcmVxc2tfdGltZW91dF9zayhyZXEtXHUwMDNlcnNrX2xpc3RlbmVyLCByZXEpO1xuIH1cbiBcbiB1MzIgdGNwX2RlbGFja19tYXgoY29uc3Qgc3RydWN0IHNvY2sgKnNrKTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYyBiL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXG5pbmRleCBjYTExODBkYmExZGVhLi5mYzUxNTJkZmEzYzg2IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcbisrKyBiL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXG5AQCAtMzUsNiArMzUsNyBAQCBzdGF0aWMgaW50IGlwX3R0bF9taW4gPSAxO1xuIHN0YXRpYyBpbnQgaXBfdHRsX21heCA9IDI1NTtcbiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19taW4gPSAxO1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xuK3N0YXRpYyBpbnQgdGNwX3N5bmFja19yZXRyaWVzX21heCA9IE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVM7XG4gc3RhdGljIGludCB0Y3Bfc3luX2xpbmVhcl90aW1lb3V0c19tYXggPSBNQVhfVENQX1NZTkNOVDtcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21pbltdID0geyAwLCAwIH07XG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgaXBfcGluZ19ncm91cF9yYW5nZV9tYXhbXSA9IHsgR0lEX1RfTUFYLCBHSURfVF9NQVggfTtcbkBAIC0xMDM0LDYgKzEwMzUsNyBAQCBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSBpcHY0X25ldF90YWJsZVtdID0ge1xuIFx0XHQubWF4bGVuXHRcdD0gc2l6ZW9mKHU4KSxcbiBcdFx0Lm1vZGVcdFx0PSAwNjQ0LFxuIFx0XHQucHJvY19oYW5kbGVyXHQ9IHByb2NfZG91OHZlY19taW5tYXgsXG4rXHRcdC5leHRyYTJcdFx0PSBcdTAwMjZ0Y3Bfc3luYWNrX3JldHJpZXNfbWF4LFxuIFx0fSxcbiAjaWZkZWYgQ09ORklHX1NZTl9DT09LSUVTXG4gXHR7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xuaW5kZXggNDU1NDQxZjFiNjk0OS4uMjQ4OTZmYTA4YTVkOCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcC5jXG4rKysgYi9uZXQvaXB2NC90Y3AuY1xuQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMgdTggc2Vjc190b19yZXRyYW5zKGludCBzZWNvbmRzLCBpbnQgdGltZW91dCwgaW50IHJ0b19tYXgpXG4gXHRcdGludCBwZXJpb2QgPSB0aW1lb3V0O1xuIFxuIFx0XHRyZXMgPSAxO1xuLVx0XHR3aGlsZSAoc2Vjb25kcyBcdTAwM2UgcGVyaW9kIFx1MDAyNlx1MDAyNiByZXMgXHUwMDNjIDI1NSkge1xuK1x0XHR3aGlsZSAoc2Vjb25kcyBcdTAwM2UgcGVyaW9kIFx1MDAyNlx1MDAyNiByZXMgXHUwMDNjIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpIHtcbiBcdFx0XHRyZXMrKztcbiBcdFx0XHR0aW1lb3V0IFx1MDAzY1x1MDAzYz0gMTtcbiBcdFx0XHRpZiAodGltZW91dCBcdTAwM2UgcnRvX21heClcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfdGltZXIuYyBiL25ldC9pcHY0L3RjcF90aW1lci5jXG5pbmRleCBiZjE3MWI1ZTFlYjMwLi5kYWE0ZWFjMDcyZGQ5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX3RpbWVyLmNcbisrKyBiL25ldC9pcHY0L3RjcF90aW1lci5jXG5AQCAtNDYyLDExICs0NjIsMTMgQEAgc3RhdGljIHZvaWQgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbiBcbiBcdHRjcF9zeW5fYWNrX3RpbWVvdXQocmVxKTtcbiBcbi1cdC8qIEFkZCBvbmUgbW9yZSByZXRyeSBmb3IgZmFzdG9wZW4uXG4rXHQvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuIHdoZW4gdGhlIHRpbWVvdXQgY291bnRlciBjYW5cbitcdCAqIHJlcHJlc2VudCBpdC5cbiBcdCAqIFBhaXJlZCB3aXRoIFdSSVRFX09OQ0UoKSBpbiB0Y3Bfc29ja19zZXRfc3luY250KClcbiBcdCAqL1xuIFx0bWF4X3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay1cdTAwM2VpY3NrX3N5bl9yZXRyaWVzKSA/IDpcbiBcdFx0UkVBRF9PTkNFKHNvY2tfbmV0KHNrKS1cdTAwM2VpcHY0LnN5c2N0bF90Y3Bfc3luYWNrX3JldHJpZXMpICsgMTtcbitcdG1heF9yZXRyaWVzID0gbWluX3QoaW50LCBtYXhfcmV0cmllcywgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUyk7XG4gXG4gXHRpZiAocmVxLVx1MDAzZW51bV90aW1lb3V0IFx1MDAzZT0gbWF4X3JldHJpZXMpIHtcbiBcdFx0dGNwX3dyaXRlX2Vycihzayk7XG5AQCAtNDg4LDcgKzQ5MCw3IEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4gXHRpZiAoIXRwLVx1MDAzZXJldHJhbnNfc3RhbXApXG4gXHRcdHRwLVx1MDAzZXJldHJhbnNfc3RhbXAgPSB0Y3BfdGltZV9zdGFtcF90cyh0cCk7XG4gXHR0Y3BfcmVzZXRfeG1pdF90aW1lcihzaywgSUNTS19USU1FX1JFVFJBTlMsXG4tXHRcdFx0ICByZXEtXHUwMDNldGltZW91dCBcdTAwM2NcdTAwM2MgcmVxLVx1MDAzZW51bV90aW1lb3V0LCBmYWxzZSk7XG4rXHRcdFx0ICAgICB0Y3BfcmVxc2tfdGltZW91dF9zayhzaywgcmVxKSwgZmFsc2UpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCB0Y3BfcnR4X3Byb2JlMF90aW1lZF9vdXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDE6MDUuMzgzNTcxOTQ5WiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzg5ODcwNzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEZ1enppbmcgU2Vzc2lvbiBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoLCB3aGljaCBtb2RpZmllcyB0aGUgVENQIFNZTkFDSyByZXRyeSBsb2dpYywgbGlrZWx5ICpkb2Vzbid0KiB3YXJyYW50IGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gVGhlIGNvcmUgY2hhbmdlIGhlcmUgaW52b2x2ZXMgYWRqdXN0aW5nIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGB0Y3Bfc3luYWNrX3JldHJpZXNgIGZyb20gMjU1IHRvIDEyNyBhbmQgaW1wbGVtZW50aW5nIGB0Y3BfcmVxc2tfdGltZW91dF9za2AgdG8gcHJldmVudCBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvd3MgZHVyaW5nIHRoZSB0aW1lb3V0IGNhbGN1bGF0aW9uLiBUaGUgYHJlcS1cdTAwM2VudW1fdGltZW91dGAgZmllbGQgYmVpbmcgNy1iaXRzIGlzIGEga2V5IHBvaW50LCBiZWNhdXNlIHRoYXQgbWFrZXMgc2hpZnRpbmcgYnkgbW9yZSB0aGFuIDYzIGEgcHJvYmxlbS4gSG93ZXZlciwgdGhlIGV4aXN0aW5nIGFuZCBuZXcgY29kZSBjYXJlZnVsbHkgY2hlY2tzIGZvciBwb3RlbnRpYWwgb3ZlcmZsb3dzIGFuZCBsaW1pdHMgcmV0cnkgY291bnRzLlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBidXQgdGhpcyBwYXRjaCBkb2Vzbid0IHNlZW0gdG8gaW50cm9kdWNlIGFueSBuZXcgZmllbGRzLCBub3IgZG9lcyBpdCBjb3B5IGRhdGEgdG8gdXNlcnNwYWNlLiBJbiBmYWN0LCBpdCBzZWVtcyB0byAqcmVzb2x2ZSogYSBwb3RlbnRpYWwgb3ZlcmZsb3cgaXNzdWUsIHNwZWNpZmljYWxseSB3aXRoIHRoYXQgc2hpZnQgb3BlcmF0aW9uLCBieSBpbmNsdWRpbmcgYSBjaGVjayBvbiB0aGUgdGltZW91dCB2YWx1ZS4gSXQncyBlc3NlbnRpYWxseSBhIGxvZ2ljIGJ1ZyByZWxhdGVkIHRvIGFuIG91dC1vZi1ib3VuZHMgc2hpZnQuIFdoaWxlIGl0IGNvdWxkIHRyaWdnZXIgdW5kZWZpbmVkIGJlaGF2aW9yLCB0aGF0IGlzIG5vdCBkaXJlY3RseSByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBXZSdyZSB0YWxraW5nIGFib3V0IGEgc2hpZnQgdGhhdCBnb2VzIGJleW9uZCBhIGRlZmluZWQgYml0IGxlbmd0aC4gVUJTQU4gb3IgS0FTQU4gd291bGQgYmUgc3VmZmljaWVudCB0byBkZXRlY3QgdGhhdC4gSSd2ZSBkb3VibGUtY2hlY2tlZCB0aGF0IGByZXEtXHUwMDNlbnVtX3RpbWVvdXRgIGlzIGluZGVlZCBhIDctYml0IGZpZWxkLCBhbmQgdGhlIG92ZXJmbG93IGNoZWNrIG1ha2VzIHNlbnNlLlxuXG5HaXZlbiBhbGwgb2YgdGhhdCwgSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgYE5lZWRzS01TQU5gIGlzIGBmYWxzZWAuIFN0YW5kYXJkIEtBU0FOIGFuZCBVQlNBTiBzaG91bGQgYmUgYWRlcXVhdGUgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBLTVNBTiBpcyBub3QgbmVjZXNzYXJ5IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NjIsIk91dHB1dFRva2VucyI6MTMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTI4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDE6MTUuNzczNDQ1Njk0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGFuZCBvdXQtb2YtYm91bmRzIHNoaWZ0IGluIFRDUCB0aW1lb3V0IGNhbGN1bGF0aW9uIChgcmVxLVxcdTAwM2V0aW1lb3V0IFxcdTAwM2NcXHUwMDNjIHJlcS1cXHUwMDNlbnVtX3RpbWVvdXRgKSBieSBjYXBwaW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU5BQ0sgcmV0cmllcyB0byAxMjcgYW5kIGFkZGluZyBvdmVyZmxvdyBjaGVja3MgaW4gYHRjcF9yZXFza190aW1lb3V0X3NrYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlcnNwYWNlLiBTdGFuZGFyZCBLQVNBTiBhbmQgVUJTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBjb3JydXB0aW9uIG9yIHVuZGVmaW5lZCBiZWhhdmlvciByZWxhdGVkIHRvIHRoaXMgY29kZS4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBhbmQgb3V0LW9mLWJvdW5kcyBzaGlmdCBpbiBUQ1AgdGltZW91dCBjYWxjdWxhdGlvbiAoYHJlcS1cXHUwMDNldGltZW91dCBcXHUwMDNjXFx1MDAzYyByZXEtXFx1MDAzZW51bV90aW1lb3V0YCkgYnkgY2FwcGluZyB0aGUgbWF4aW11bSBudW1iZXIgb2YgU1lOQUNLIHJldHJpZXMgdG8gMTI3IGFuZCBhZGRpbmcgb3ZlcmZsb3cgY2hlY2tzIGluIGB0Y3BfcmVxc2tfdGltZW91dF9za2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZS4gU3RhbmRhcmQgS0FTQU4gYW5kIFVCU0FOIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBtZW1vcnkgY29ycnVwdGlvbiBvciB1bmRlZmluZWQgYmVoYXZpb3IgcmVsYXRlZCB0byB0aGlzIGNvZGUuIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow5m52v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 15:22:40 +0000 UTC FinishedAt: 2026-08-12 15:41:16 +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": "883b56ae58fe657d8497806c7059646e9ba6dbd0", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "883b56ae58fe657d8497806c7059646e9ba6dbd0", "config_name": "upstream-apparmor-kasan.config", "series_id": "a221879c-0c47-443c-95b0-bdfd5510675b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "do_tcp_setsockopt", "tcp_retransmit_timer", "reqsk_timer_handler", "tcp_check_req" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG9fdGNwX3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7dGNwX3JldHJhbnNtaXRfdGltZXImIzM0OywKICAgICYjMzQ7cmVxc2tfdGltZXJfaGFuZGxlciYjMzQ7LAogICAgJiMzNDt0Y3BfY2hlY2tfcmVxJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBhbmQgb3V0LW9mLWJvdW5kcyBzaGlmdCBpbiBUQ1AgdGltZW91dCBjYWxjdWxhdGlvbiAoYHJlcS1cdTAwM2V0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXRgKSBieSBjYXBwaW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU5BQ0sgcmV0cmllcyB0byAxMjcgYW5kIGFkZGluZyBvdmVyZmxvdyBjaGVja3MgaW4gYHRjcF9yZXFza190aW1lb3V0X3NrYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlcnNwYWNlLiBTdGFuZGFyZCBLQVNBTiBhbmQgVUJTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBjb3JydXB0aW9uIG9yIHVuZGVmaW5lZCBiZWhhdmlvciByZWxhdGVkIHRvIHRoaXMgY29kZS4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBTWU5BQ0sgcmV0cmllcyBsaW1pdHMgYW5kIHRpbWVvdXQgY2FsY3VsYXRpb24gbG9naWMgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYW5kIGJvdW5kcyBgdGNwX3N5bmFja19yZXRyaWVzYCB0byAxMjcuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgcmV0cmFuc21pc3Npb24gbG9naWMuIFRoZSBtb2RpZmljYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIFRDUCBzb2NrZXQgb3B0aW9ucyBhbmQgdGltZXIgY2FsbGJhY2tzIGR1cmluZyBjb25uZWN0aW9uIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODA2NDM0Y2EwMzI4MzA5YTM1MGFlYWZkN2I2MTZlMzA0MTI4NjgxZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDE1OjM5OjQ3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3RcbmluZGV4IDIwOGY0Njk2N2VlNTkuLmZkNTAzOGI2Y2FiOWYgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3RcbkBAIC05NTQsNyAmIzQzOzk1NCw3IEBAIHRjcF9zdGR1cmcgLSBCT09MRUFOXG4gXG4gdGNwX3N5bmFja19yZXRyaWVzIC0gSU5URUdFUlxuIFx0TnVtYmVyIG9mIHRpbWVzIFNZTkFDS3MgZm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiBhdHRlbXB0IHdpbGxcbi1cdGJlIHJldHJhbnNtaXR0ZWQuIFNob3VsZCBub3QgYmUgaGlnaGVyIHRoYW4gMjU1LiBEZWZhdWx0IHZhbHVlXG4mIzQzO1x0YmUgcmV0cmFuc21pdHRlZC4gU2hvdWxkIG5vdCBiZSBoaWdoZXIgdGhhbiAxMjcuIERlZmF1bHQgdmFsdWVcbiBcdGlzIDUsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIDMxc2Vjb25kcyB0aWxsIHRoZSBsYXN0IHJldHJhbnNtaXNzaW9uXG4gXHR3aXRoIHRoZSBjdXJyZW50IGluaXRpYWwgUlRPIG9mIDFzZWNvbmQuIFdpdGggdGhpcyB0aGUgZmluYWwgdGltZW91dFxuIFx0Zm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiB3aWxsIGhhcHBlbiBhZnRlciA2M3NlY29uZHMuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdGNwLmggYi9pbmNsdWRlL25ldC90Y3AuaFxuaW5kZXggMmM1Yjg4OTUzMGI1NS4uOGFiMmZkMzY4ZWQzYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC90Y3AuaFxuQEAgLTE4Myw2ICYjNDM7MTgzLDggQEAgc3RhdGljX2Fzc2VydCgoMSBcdTAwM2NcdTAwM2MgQVRPX0JJVFMpIFx1MDAzZSBUQ1BfREVMQUNLX01BWCk7XG4gI2RlZmluZSBNQVhfVENQX0tFRVBJTlRWTFx0MzI3NjdcbiAjZGVmaW5lIE1BWF9UQ1BfS0VFUENOVFx0XHQxMjdcbiAjZGVmaW5lIE1BWF9UQ1BfU1lOQ05UXHRcdDEyN1xuJiM0MzsvKiByZXF1ZXN0X3NvY2s6Om51bV90aW1lb3V0IGlzIGEgNy1iaXQgZmllbGQuICovXG4mIzQzOyNkZWZpbmUgTUFYX1RDUF9TWU5BQ0tfUkVUUklFU1x0MTI3XG4gXG4gLyogRW5zdXJlIHRoYXQgVENQIFBBV1MgY2hlY2tzIGFyZSByZWxheGVkIGFmdGVyIH4yMTQ3IHNlY29uZHNcbiAgKiB0byBhdm9pZCBvdmVyZmxvd3MuIFRoaXMgYXNzdW1lcyBhIGNsb2NrIHNtYWxsZXIgdGhhbiAxIE1oei5cbkBAIC04ODIsMTIgJiM0Mzs4ODQsMjIgQEAgc3RhdGljIGlubGluZSB1MzIgX190Y3Bfc2V0X3J0byhjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwKVxuIFx0cmV0dXJuIHVzZWNzX3RvX2ppZmZpZXMoKHRwLVx1MDAzZXNydHRfdXMgXHUwMDNlXHUwMDNlIDMpICYjNDM7IHRwLVx1MDAzZXJ0dHZhcl91cyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4mIzQzO3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4mIzQzO1x0XHRcdFx0XHRcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4ge1xuLVx0dTY0IHRpbWVvdXQgPSAodTY0KXJlcS1cdTAwM2V0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXQ7XG4mIzQzO1x0dTMyIHJ0b19tYXggPSB0Y3BfcnRvX21heChzayk7XG4mIzQzO1x0dTY0IHRpbWVvdXQgPSByZXEtXHUwMDNldGltZW91dDtcbiYjNDM7XG4mIzQzO1x0aWYgKHJlcS1cdTAwM2VudW1fdGltZW91dCBcdTAwM2U9IEJJVFNfUEVSX1RZUEUodGltZW91dCkgfHxcbiYjNDM7XHQgICAgdGltZW91dCBcdTAwM2UgVTY0X01BWCBcdTAwM2VcdTAwM2UgcmVxLVx1MDAzZW51bV90aW1lb3V0KVxuJiM0MztcdFx0cmV0dXJuIHJ0b19tYXg7XG4mIzQzO1xuJiM0MztcdHJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQgXHUwMDNjXHUwMDNjIHJlcS1cdTAwM2VudW1fdGltZW91dCwgcnRvX21heCk7XG4mIzQzO31cbiBcbi1cdHJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQsXG4tXHRcdFx0XHQgICAgdGNwX3J0b19tYXgocmVxLVx1MDAzZXJza19saXN0ZW5lcikpO1xuJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXQoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHRjcF9yZXFza190aW1lb3V0X3NrKHJlcS1cdTAwM2Vyc2tfbGlzdGVuZXIsIHJlcSk7XG4gfVxuIFxuIHUzMiB0Y3BfZGVsYWNrX21heChjb25zdCBzdHJ1Y3Qgc29jayAqc2spO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcbmluZGV4IGNhMTE4MGRiYTFkZWEuLmZjNTE1MmRmYTNjODYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcbkBAIC0zNSw2ICYjNDM7MzUsNyBAQCBzdGF0aWMgaW50IGlwX3R0bF9taW4gPSAxO1xuIHN0YXRpYyBpbnQgaXBfdHRsX21heCA9IDI1NTtcbiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19taW4gPSAxO1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xuJiM0MztzdGF0aWMgaW50IHRjcF9zeW5hY2tfcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkFDS19SRVRSSUVTO1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9saW5lYXJfdGltZW91dHNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7XG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgaXBfcGluZ19ncm91cF9yYW5nZV9taW5bXSA9IHsgMCwgMCB9O1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWF4W10gPSB7IEdJRF9UX01BWCwgR0lEX1RfTUFYIH07XG5AQCAtMTAzNCw2ICYjNDM7MTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7XG4gXHRcdC5tYXhsZW5cdFx0PSBzaXplb2YodTgpLFxuIFx0XHQubW9kZVx0XHQ9IDA2NDQsXG4gXHRcdC5wcm9jX2hhbmRsZXJcdD0gcHJvY19kb3U4dmVjX21pbm1heCxcbiYjNDM7XHRcdC5leHRyYTJcdFx0PSBcdTAwMjZ0Y3Bfc3luYWNrX3JldHJpZXNfbWF4LFxuIFx0fSxcbiAjaWZkZWYgQ09ORklHX1NZTl9DT09LSUVTXG4gXHR7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xuaW5kZXggNDU1NDQxZjFiNjk0OS4uMjQ4OTZmYTA4YTVkOCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3AuY1xuQEAgLTM1Nyw3ICYjNDM7MzU3LDcgQEAgc3RhdGljIHU4IHNlY3NfdG9fcmV0cmFucyhpbnQgc2Vjb25kcywgaW50IHRpbWVvdXQsIGludCBydG9fbWF4KVxuIFx0XHRpbnQgcGVyaW9kID0gdGltZW91dDtcbiBcbiBcdFx0cmVzID0gMTtcbi1cdFx0d2hpbGUgKHNlY29uZHMgXHUwMDNlIHBlcmlvZCBcdTAwMjZcdTAwMjYgcmVzIFx1MDAzYyAyNTUpIHtcbiYjNDM7XHRcdHdoaWxlIChzZWNvbmRzIFx1MDAzZSBwZXJpb2QgXHUwMDI2XHUwMDI2IHJlcyBcdTAwM2MgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUykge1xuIFx0XHRcdHJlcyYjNDM7JiM0Mzs7XG4gXHRcdFx0dGltZW91dCBcdTAwM2NcdTAwM2M9IDE7XG4gXHRcdFx0aWYgKHRpbWVvdXQgXHUwMDNlIHJ0b19tYXgpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuY1xuaW5kZXggYmYxNzFiNWUxZWIzMC4uZGFhNGVhYzA3MmRkOSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF90aW1lci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfdGltZXIuY1xuQEAgLTQ2MiwxMSAmIzQzOzQ2MiwxMyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIFxuIFx0dGNwX3N5bl9hY2tfdGltZW91dChyZXEpO1xuIFxuLVx0LyogQWRkIG9uZSBtb3JlIHJldHJ5IGZvciBmYXN0b3Blbi5cbiYjNDM7XHQvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuIHdoZW4gdGhlIHRpbWVvdXQgY291bnRlciBjYW5cbiYjNDM7XHQgKiByZXByZXNlbnQgaXQuXG4gXHQgKiBQYWlyZWQgd2l0aCBXUklURV9PTkNFKCkgaW4gdGNwX3NvY2tfc2V0X3N5bmNudCgpXG4gXHQgKi9cbiBcdG1heF9yZXRyaWVzID0gUkVBRF9PTkNFKGljc2stXHUwMDNlaWNza19zeW5fcmV0cmllcykgPyA6XG4gXHRcdFJFQURfT05DRShzb2NrX25ldChzayktXHUwMDNlaXB2NC5zeXNjdGxfdGNwX3N5bmFja19yZXRyaWVzKSAmIzQzOyAxO1xuJiM0MztcdG1heF9yZXRyaWVzID0gbWluX3QoaW50LCBtYXhfcmV0cmllcywgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUyk7XG4gXG4gXHRpZiAocmVxLVx1MDAzZW51bV90aW1lb3V0IFx1MDAzZT0gbWF4X3JldHJpZXMpIHtcbiBcdFx0dGNwX3dyaXRlX2Vycihzayk7XG5AQCAtNDg4LDcgJiM0Mzs0OTAsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIFx0aWYgKCF0cC1cdTAwM2VyZXRyYW5zX3N0YW1wKVxuIFx0XHR0cC1cdTAwM2VyZXRyYW5zX3N0YW1wID0gdGNwX3RpbWVfc3RhbXBfdHModHApO1xuIFx0dGNwX3Jlc2V0X3htaXRfdGltZXIoc2ssIElDU0tfVElNRV9SRVRSQU5TLFxuLVx0XHRcdCAgcmVxLVx1MDAzZXRpbWVvdXQgXHUwMDNjXHUwMDNjIHJlcS1cdTAwM2VudW1fdGltZW91dCwgZmFsc2UpO1xuJiM0MztcdFx0XHQgICAgIHRjcF9yZXFza190aW1lb3V0X3NrKHNrLCByZXEpLCBmYWxzZSk7XG4gfVxuIFxuIHN0YXRpYyBib29sIHRjcF9ydHhfcHJvYmUwX3RpbWVkX291dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG9fdGNwX3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7dGNwX3JldHJhbnNtaXRfdGltZXImIzM0OywKICAgICYjMzQ7cmVxc2tfdGltZXJfaGFuZGxlciYjMzQ7LAogICAgJiMzNDt0Y3BfY2hlY2tfcmVxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBTWU5BQ0sgcmV0cmllcyBsaW1pdHMgYW5kIHRpbWVvdXQgY2FsY3VsYXRpb24gbG9naWMgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYW5kIGJvdW5kcyBgdGNwX3N5bmFja19yZXRyaWVzYCB0byAxMjcuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgcmV0cmFuc21pc3Npb24gbG9naWMuIFRoZSBtb2RpZmljYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIFRDUCBzb2NrZXQgb3B0aW9ucyBhbmQgdGltZXIgY2FsbGJhY2tzIGR1cmluZyBjb25uZWN0aW9uIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODA2NDM0Y2EwMzI4MzA5YTM1MGFlYWZkN2I2MTZlMzA0MTI4NjgxZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE1OjM5OjQ3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdAppbmRleCAyMDhmNDY5NjdlZTU5Li5mZDUwMzhiNmNhYjlmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdApAQCAtOTU0LDcgJiM0Mzs5NTQsNyBAQCB0Y3Bfc3RkdXJnIC0gQk9PTEVBTgogCiB0Y3Bfc3luYWNrX3JldHJpZXMgLSBJTlRFR0VSCiAJTnVtYmVyIG9mIHRpbWVzIFNZTkFDS3MgZm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiBhdHRlbXB0IHdpbGwKLQliZSByZXRyYW5zbWl0dGVkLiBTaG91bGQgbm90IGJlIGhpZ2hlciB0aGFuIDI1NS4gRGVmYXVsdCB2YWx1ZQomIzQzOwliZSByZXRyYW5zbWl0dGVkLiBTaG91bGQgbm90IGJlIGhpZ2hlciB0aGFuIDEyNy4gRGVmYXVsdCB2YWx1ZQogCWlzIDUsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIDMxc2Vjb25kcyB0aWxsIHRoZSBsYXN0IHJldHJhbnNtaXNzaW9uCiAJd2l0aCB0aGUgY3VycmVudCBpbml0aWFsIFJUTyBvZiAxc2Vjb25kLiBXaXRoIHRoaXMgdGhlIGZpbmFsIHRpbWVvdXQKIAlmb3IgYSBwYXNzaXZlIFRDUCBjb25uZWN0aW9uIHdpbGwgaGFwcGVuIGFmdGVyIDYzc2Vjb25kcy4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmgKaW5kZXggMmM1Yjg4OTUzMGI1NS4uOGFiMmZkMzY4ZWQzYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvdGNwLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvdGNwLmgKQEAgLTE4Myw2ICYjNDM7MTgzLDggQEAgc3RhdGljX2Fzc2VydCgoMSAmbHQ7Jmx0OyBBVE9fQklUUykgJmd0OyBUQ1BfREVMQUNLX01BWCk7CiAjZGVmaW5lIE1BWF9UQ1BfS0VFUElOVFZMCTMyNzY3CiAjZGVmaW5lIE1BWF9UQ1BfS0VFUENOVAkJMTI3CiAjZGVmaW5lIE1BWF9UQ1BfU1lOQ05UCQkxMjcKJiM0MzsvKiByZXF1ZXN0X3NvY2s6Om51bV90aW1lb3V0IGlzIGEgNy1iaXQgZmllbGQuICovCiYjNDM7I2RlZmluZSBNQVhfVENQX1NZTkFDS19SRVRSSUVTCTEyNwogCiAvKiBFbnN1cmUgdGhhdCBUQ1AgUEFXUyBjaGVja3MgYXJlIHJlbGF4ZWQgYWZ0ZXIgfjIxNDcgc2Vjb25kcwogICogdG8gYXZvaWQgb3ZlcmZsb3dzLiBUaGlzIGFzc3VtZXMgYSBjbG9jayBzbWFsbGVyIHRoYW4gMSBNaHouCkBAIC04ODIsMTIgJiM0Mzs4ODQsMjIgQEAgc3RhdGljIGlubGluZSB1MzIgX190Y3Bfc2V0X3J0byhjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwKQogCXJldHVybiB1c2Vjc190b19qaWZmaWVzKCh0cC0mZ3Q7c3J0dF91cyAmZ3Q7Jmd0OyAzKSAmIzQzOyB0cC0mZ3Q7cnR0dmFyX3VzKTsKIH0KIAotc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSkKJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXRfc2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLAomIzQzOwkJCQkJCSBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiB7Ci0JdTY0IHRpbWVvdXQgPSAodTY0KXJlcS0mZ3Q7dGltZW91dCAmbHQ7Jmx0OyByZXEtJmd0O251bV90aW1lb3V0OwomIzQzOwl1MzIgcnRvX21heCA9IHRjcF9ydG9fbWF4KHNrKTsKJiM0MzsJdTY0IHRpbWVvdXQgPSByZXEtJmd0O3RpbWVvdXQ7CiYjNDM7CiYjNDM7CWlmIChyZXEtJmd0O251bV90aW1lb3V0ICZndDs9IEJJVFNfUEVSX1RZUEUodGltZW91dCkgfHwKJiM0MzsJICAgIHRpbWVvdXQgJmd0OyBVNjRfTUFYICZndDsmZ3Q7IHJlcS0mZ3Q7bnVtX3RpbWVvdXQpCiYjNDM7CQlyZXR1cm4gcnRvX21heDsKJiM0MzsKJiM0MzsJcmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCAmbHQ7Jmx0OyByZXEtJmd0O251bV90aW1lb3V0LCBydG9fbWF4KTsKJiM0Mzt9CiAKLQlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbWluX3QodTY0LCB0aW1lb3V0LAotCQkJCSAgICB0Y3BfcnRvX21heChyZXEtJmd0O3Jza19saXN0ZW5lcikpOwomIzQzO3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiYjNDM7ewomIzQzOwlyZXR1cm4gdGNwX3JlcXNrX3RpbWVvdXRfc2socmVxLSZndDtyc2tfbGlzdGVuZXIsIHJlcSk7CiB9CiAKIHUzMiB0Y3BfZGVsYWNrX21heChjb25zdCBzdHJ1Y3Qgc29jayAqc2spOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMgYi9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYwppbmRleCBjYTExODBkYmExZGVhLi5mYzUxNTJkZmEzYzg2IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYwpAQCAtMzUsNiAmIzQzOzM1LDcgQEAgc3RhdGljIGludCBpcF90dGxfbWluID0gMTsKIHN0YXRpYyBpbnQgaXBfdHRsX21heCA9IDI1NTsKIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21pbiA9IDE7CiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkNOVDsKJiM0MztzdGF0aWMgaW50IHRjcF9zeW5hY2tfcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkFDS19SRVRSSUVTOwogc3RhdGljIGludCB0Y3Bfc3luX2xpbmVhcl90aW1lb3V0c19tYXggPSBNQVhfVENQX1NZTkNOVDsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWluW10gPSB7IDAsIDAgfTsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWF4W10gPSB7IEdJRF9UX01BWCwgR0lEX1RfTUFYIH07CkBAIC0xMDM0LDYgJiM0MzsxMDM1LDcgQEAgc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgaXB2NF9uZXRfdGFibGVbXSA9IHsKIAkJLm1heGxlbgkJPSBzaXplb2YodTgpLAogCQkubW9kZQkJPSAwNjQ0LAogCQkucHJvY19oYW5kbGVyCT0gcHJvY19kb3U4dmVjX21pbm1heCwKJiM0MzsJCS5leHRyYTIJCT0gJmFtcDt0Y3Bfc3luYWNrX3JldHJpZXNfbWF4LAogCX0sCiAjaWZkZWYgQ09ORklHX1NZTl9DT09LSUVTCiAJewpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuYwppbmRleCA0NTU0NDFmMWI2OTQ5Li4yNDg5NmZhMDhhNWQ4IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3AuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3AuYwpAQCAtMzU3LDcgJiM0MzszNTcsNyBAQCBzdGF0aWMgdTggc2Vjc190b19yZXRyYW5zKGludCBzZWNvbmRzLCBpbnQgdGltZW91dCwgaW50IHJ0b19tYXgpCiAJCWludCBwZXJpb2QgPSB0aW1lb3V0OwogCiAJCXJlcyA9IDE7Ci0JCXdoaWxlIChzZWNvbmRzICZndDsgcGVyaW9kICZhbXA7JmFtcDsgcmVzICZsdDsgMjU1KSB7CiYjNDM7CQl3aGlsZSAoc2Vjb25kcyAmZ3Q7IHBlcmlvZCAmYW1wOyZhbXA7IHJlcyAmbHQ7IE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpIHsKIAkJCXJlcyYjNDM7JiM0Mzs7CiAJCQl0aW1lb3V0ICZsdDsmbHQ7PSAxOwogCQkJaWYgKHRpbWVvdXQgJmd0OyBydG9fbWF4KQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuYwppbmRleCBiZjE3MWI1ZTFlYjMwLi5kYWE0ZWFjMDcyZGQ5IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfdGltZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfdGltZXIuYwpAQCAtNDYyLDExICYjNDM7NDYyLDEzIEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiAKIAl0Y3Bfc3luX2Fja190aW1lb3V0KHJlcSk7CiAKLQkvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuLgomIzQzOwkvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuIHdoZW4gdGhlIHRpbWVvdXQgY291bnRlciBjYW4KJiM0MzsJICogcmVwcmVzZW50IGl0LgogCSAqIFBhaXJlZCB3aXRoIFdSSVRFX09OQ0UoKSBpbiB0Y3Bfc29ja19zZXRfc3luY250KCkKIAkgKi8KIAltYXhfcmV0cmllcyA9IFJFQURfT05DRShpY3NrLSZndDtpY3NrX3N5bl9yZXRyaWVzKSA/IDoKIAkJUkVBRF9PTkNFKHNvY2tfbmV0KHNrKS0mZ3Q7aXB2NC5zeXNjdGxfdGNwX3N5bmFja19yZXRyaWVzKSAmIzQzOyAxOwomIzQzOwltYXhfcmV0cmllcyA9IG1pbl90KGludCwgbWF4X3JldHJpZXMsIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpOwogCiAJaWYgKHJlcS0mZ3Q7bnVtX3RpbWVvdXQgJmd0Oz0gbWF4X3JldHJpZXMpIHsKIAkJdGNwX3dyaXRlX2Vycihzayk7CkBAIC00ODgsNyAmIzQzOzQ5MCw3IEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiAJaWYgKCF0cC0mZ3Q7cmV0cmFuc19zdGFtcCkKIAkJdHAtJmd0O3JldHJhbnNfc3RhbXAgPSB0Y3BfdGltZV9zdGFtcF90cyh0cCk7CiAJdGNwX3Jlc2V0X3htaXRfdGltZXIoc2ssIElDU0tfVElNRV9SRVRSQU5TLAotCQkJICByZXEtJmd0O3RpbWVvdXQgJmx0OyZsdDsgcmVxLSZndDtudW1fdGltZW91dCwgZmFsc2UpOwomIzQzOwkJCSAgICAgdGNwX3JlcXNrX3RpbWVvdXRfc2soc2ssIHJlcSksIGZhbHNlKTsKIH0KIAogc3RhdGljIGJvb2wgdGNwX3J0eF9wcm9iZTBfdGltZWRfb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzaywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2NQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDUCBTWU5BQ0sgUmV0cnkgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHR3ZWFraW5nIHRoZSBUQ1AgU1lOQUNLIHJldHJ5IGJlaGF2aW9yLCBzcGVjaWZpY2FsbHkgdGhlIHRpbWVvdXQgY2FsY3VsYXRpb25zIGFuZCByZXRyeSBsaW1pdHMuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZGVzaWduZWQgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYnkgbW9kaWZ5aW5nIGB0Y3BfcmVxc2tfdGltZW91dGAsIGFuZCBpdCYjMzk7cyBjYXBwaW5nIGB0Y3Bfc3luYWNrX3JldHJpZXNgIGF0IDEyNy4gU2VlbXMgc2Vuc2libGUsIGdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHZ1bG5lcmFiaWxpdGllcyBpbiB0aG9zZSBhcmVhcy4KCkdpdmVuIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGVzZSBjaGFuZ2VzLCBhZmZlY3RpbmcgYGluY2x1ZGUvbmV0L3RjcC5oYCwgYG5ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jYCwgYG5ldC9pcHY0L3RjcC5jYCwgYW5kIGBuZXQvaXB2NC90Y3BfdGltZXIuY2AsIHRoaXMgKmRlZmluaXRlbHkqIHdhcnJhbnRzIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRvIGZvY3VzIG91ciBlZmZvcnRzLgoKRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuIFRoZSBjb3JlIG9uZXMgdG91Y2hlZCBzZWVtIHRvIGJlOgoqICAgYHRjcF9yZXFza190aW1lb3V0X3NrYCAoaW5saW5lLCBpbiBgaW5jbHVkZS9uZXQvdGNwLmhgKQoqICAgYHRjcF9yZXFza190aW1lb3V0YCAoaW5saW5lLCBpbiBgaW5jbHVkZS9uZXQvdGNwLmhgKQoqICAgYHNlY3NfdG9fcmV0cmFuc2AgaW4gYG5ldC9pcHY0L3RjcC5jYAoqICAgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgIGluIGBuZXQvaXB2NC90Y3BfdGltZXIuY2AKClNpbmNlIHRob3NlIGZpcnN0IHR3byBhcmUgaW5saW5lLCBhbmQgdGhlcmVmb3JlIHByb2JhYmx5IGxlc3MgY3JpdGljYWwgZm9yIHRhcmdldGVkIGZ1enppbmcsIEkgc2hvdWxkIGxvb2sgbW9yZSBkZWVwbHkgaW50byB0aGUgb3RoZXIgdHdvLiBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAgaXMgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZyAtIHRoYXQgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IHRvIGJlIGNhbGxlZCBvbmx5IGZyb20gd2l0aGluIHRoZSBzYW1lIGZpbGUuIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCBpcyBjYWxsZWQuIFNhbWUgZ29lcyBmb3IgYHNlY3NfdG9fcmV0cmFuc2AgYWxzbyBiZWluZyBzdGF0aWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2Zhc3RvcGVuX3N5bmFja190aW1lciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYz03MTAzPXN0YXRpYyB2b2lkIHRjcF9yY3Zfc3lucmVjdl9zdGF0ZV9mYXN0b3BlbihzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzExNS1cdFdSSVRFX09OQ0UoaW5ldF9jc2soc2spLVx1MDAzZWljc2tfcmV0cmFuc21pdHMsIDApO1xubmV0L2lwdjQvdGNwX2lucHV0LmM6NzExNjpcdC8qIEluIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoKSBvbiB0aGUgZmlyc3QgU1lOQUNLIFJUTyB3ZSBzZXRcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcxMTctXHQgKiByZXRyYW5zX3N0YW1wIGJ1dCBkb24mIzM5O3QgZW50ZXIgQ0FfTG9zcywgc28gaW4gY2FzZSB0aGF0IGhhcHBlbmVkIHdlXG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NDQwPXN0YXRpYyB2b2lkIHRjcF91cGRhdGVfcnRvX3N0YXRzKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvaXB2NC90Y3BfdGltZXIuYy00NTYtICovXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0NTc6c3RhdGljIHZvaWQgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbm5ldC9pcHY0L3RjcF90aW1lci5jLTQ1OC17XG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NTM3PXZvaWQgdGNwX3JldHJhbnNtaXRfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jLTU0OS1cdFx0XHQgICAgIHNrLVx1MDAzZXNrX3N0YXRlICE9IFRDUF9GSU5fV0FJVDEpO1xubmV0L2lwdjQvdGNwX3RpbWVyLmM6NTUwOlx0XHR0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHNrLCByZXEpO1xubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTUxLVx0XHQvKiBCZWZvcmUgd2UgcmVjZWl2ZSBBQ0sgdG8gb3VyIFNZTi1BQ0sgZG9uJiMzOTt0IHJldHJhbnNtaXRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzYxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyB0aGUgUmV0cmFuc21pc3Npb24gVGltaW5nKioKClJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGlzIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uLCBhbmQgdGhlIHdheSBpdCBpbnRlcmFjdHMgd2l0aCBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAgaXMgc29tZXRoaW5nIEkgc2hvdWxkIGZvY3VzIG9uLiBUaGF0IHN1Z2dlc3RzIGFuIGltcG9ydGFudCBjb25uZWN0aW9uIHRvIFRDUCBGYXN0IE9wZW4sIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRoYXQgbmVlZHMgY2FyZWZ1bCBtYW5hZ2VtZW50LgoKTm93LCBsZXQmIzM5O3MgZGlnIGludG8gaG93IHRoZSByZXRyYW5zbWlzc2lvbiB0aW1pbmcgaXMgZGV0ZXJtaW5lZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBpbmZsdWVuY2luZyB0aGUgYWN0dWFsIHJldHJhbnNtaXNzaW9uIHRpbWUuIFNvLCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHRvIGNoZWNrIHRoZSBgc2Vjc190b19yZXRyYW5zYCB2YXJpYWJsZS4gVGhhdCB3aWxsIHRlbGwgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCByZXRyYW5zbWlzc2lvbiBiYWNrb2ZmLCBvciB3aGVuIHRoZSBuZXh0IHJldHJhbnNtaXNzaW9uIHdpbGwgYmUgYXR0ZW1wdGVkLiBJIGhhdmUgdG8gc2VlIGhvdyBpdCYjMzk7cyBjYWxjdWxhdGVkLCBhbmQgd2hhdCBmYWN0b3JzIGFyZSBmZWVkaW5nIGludG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2Vjc190b19yZXRyYW5zJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcC5jPTMzOT12b2lkIHRjcF9sZWF2ZV9tZW1vcnlfcHJlc3N1cmUoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L3RjcC5jLTM1MS0vKiBDb252ZXJ0IHNlY29uZHMgdG8gcmV0cmFuc21pdHMgYmFzZWQgb24gaW5pdGlhbCBhbmQgbWF4IHRpbWVvdXQgKi9cbm5ldC9pcHY0L3RjcC5jOjM1MjpzdGF0aWMgdTggc2Vjc190b19yZXRyYW5zKGludCBzZWNvbmRzLCBpbnQgdGltZW91dCwgaW50IHJ0b19tYXgpXG5uZXQvaXB2NC90Y3AuYy0zNTMte1xuLS1cbm5ldC9pcHY0L3RjcC5jPTM4Mzc9aW50IGRvX3RjcF9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvaXB2NC90Y3AuYy0zOTM1LVx0XHRXUklURV9PTkNFKGljc2stXHUwMDNlaWNza19hY2NlcHRfcXVldWUucnNrcV9kZWZlcl9hY2NlcHQsXG5uZXQvaXB2NC90Y3AuYzozOTM2Olx0XHRcdCAgIHNlY3NfdG9fcmV0cmFucyh2YWwsIFRDUF9USU1FT1VUX0lOSVQgLyBIWixcbm5ldC9pcHY0L3RjcC5jLTM5MzctXHRcdFx0XHRcdCAgIFRDUF9SVE9fTUFYIC8gSFopKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjgxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBTb2NrZXQgT3B0aW9ucyBhbmQgUmV0cmFuc21pc3Npb24gVGltZW91dHMqKgoKUmlnaHQsIGBkb190Y3Bfc2V0c29ja29wdGAg4oCTIHRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBzb2NrZXQgb3B0aW9uIGNvbmZpZ3VyYXRpb25zIGF0IHRoZSBUQ1AgbGV2ZWwuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gYHNlY3NfdG9fcmV0cmFuc2AuIFNvLCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIHRoZXJlIGEgZGlyZWN0IGxpbmsgaGVyZT8mIzM0Oy4KCk9rYXksIHNvIEkgd2lsbCBub3cgYW5hbHl6ZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgYHNlY3NfdG9fcmV0cmFuc2AuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSBpZiB0aGVyZSBhcmUgaXNzdWVzLiBOb3cgSSBzaG91bGQgY2hlY2sgYHRjcF9yZXFza190aW1lb3V0YC4gSXMgaXQgaW4gdGhpcyBzYW1lIGFyZWE/IEkgc2hvdWxkIGNoZWNrIGl0LCBiZWNhdXNlIGl0IGlzIHJlbGF0ZWQgdG8gcmV0cmFuc21pc3Npb24gdmFsdWVzLiBJdCBtaWdodCBhZmZlY3QgVENQIHJlcXVlc3RzIGFuZCB0aGVpciB0aW1lb3V0cywgYW5kIHRoYXQmIzM5O3Mgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgd2l0aCByZWdhcmRzIHRvIHNvY2tldCBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZXNlIHZhbHVlcyBhcmUgY29uc2lzdGVudCBhbmQgY29ycmVjdGx5IHNldCB0byBhY2hpZXZlIG9wdGltYWwgcGVyZm9ybWFuY2UuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBpbnRvIHRoaXMgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9yZXFza190aW1lb3V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3RjcC5oPTg4Mj1zdGF0aWMgaW5saW5lIHUzMiBfX3RjcF9zZXRfcnRvKGNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHApXG4tLVxuaW5jbHVkZS9uZXQvdGNwLmgtODg2LVxuaW5jbHVkZS9uZXQvdGNwLmg6ODg3OnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG5pbmNsdWRlL25ldC90Y3AuaC04ODgtXHRcdFx0XHRcdFx0IHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbi0tXG5pbmNsdWRlL25ldC90Y3AuaC04OTktXG5pbmNsdWRlL25ldC90Y3AuaDo5MDA6c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbmluY2x1ZGUvbmV0L3RjcC5oLTkwMS17XG5pbmNsdWRlL25ldC90Y3AuaDo5MDI6XHRyZXR1cm4gdGNwX3JlcXNrX3RpbWVvdXRfc2socmVxLVx1MDAzZXJza19saXN0ZW5lciwgcmVxKTtcbmluY2x1ZGUvbmV0L3RjcC5oLTkwMy19XG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xMDMzPXN0YXRpYyB2b2lkIHJlcXNrX3RpbWVyX2hhbmRsZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMTEyLVx0XHRcdGF0b21pY19kZWMoXHUwMDI2cXVldWUtXHUwMDNleW91bmcpO1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMTEzOlx0XHRtb2RfdGltZXIoXHUwMDI2cmVxLVx1MDAzZXJza190aW1lciwgamlmZmllcyAmIzQzOyB0Y3BfcmVxc2tfdGltZW91dChyZXEpKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTExNC1cbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9Njg3PXN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtNzE4LVx0XHRcdHRtcF9vcHQudHNfcmVjZW50X3N0YW1wID0ga3RpbWVfZ2V0X3NlY29uZHMoKSAtXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM6NzE5Olx0XHRcdFx0dGNwX3JlcXNrX3RpbWVvdXQocmVxKSAvIEhaO1xubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTcyMC1cdFx0XHRwYXdzX3JlamVjdCA9IHRjcF9wYXdzX3JlamVjdChcdTAwMjZ0bXBfb3B0LCB0aC1cdTAwM2Vyc3QpO1xuLS1cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy03NjctXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM6NzY4Olx0XHRcdFx0ZXhwaXJlcyAmIzQzOz0gdGNwX3JlcXNrX3RpbWVvdXQocmVxKTtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy03NjktXHRcdFx0XHRpZiAoIWZhc3RvcGVuKVxuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jPTQ1Nz1zdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jLTQ5Mi1cdHRjcF9yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfUkVUUkFOUyxcbm5ldC9pcHY0L3RjcF90aW1lci5jOjQ5MzpcdFx0XHQgICAgIHRjcF9yZXFza190aW1lb3V0X3NrKHNrLCByZXEpLCBmYWxzZSk7XG5uZXQvaXB2NC90Y3BfdGltZXIuYy00OTQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNTAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRDUCBSZXF1ZXN0IFNvY2tldCBUaW1lb3V0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIGhvdyB0aGVzZSBUQ1AgcmVxdWVzdCBzb2NrZXQgdGltZW91dHMgYXJlIGhhbmRsZWQsIGFuZCBpdCBzZWVtcyBsaWtlIGEgZmV3IGZ1bmN0aW9ucyBhcmUgY2VudHJhbCB0byB0aGlzIHByb2Nlc3MuIEkgc2VlIHRoYXQgYHJlcXNrX3RpbWVyX2hhbmRsZXJgIGRpcmVjdGx5IGNhbGxzIGB0Y3BfcmVxc2tfdGltZW91dGAuIEludGVyZXN0aW5nLiBBbHNvLCBgdGNwX2NoZWNrX3JlcWAgYWxzbyBjYWxscyBgdGNwX3JlcXNrX3RpbWVvdXRgLCBhbmQgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgIGNhbGxzIGB0Y3BfcmVxc2tfdGltZW91dF9za2AuIFNlZW1zIGxpa2UgYSBwYXR0ZXJuIGhlcmUsIHdpdGggbXVsdGlwbGUgcGF0aHMgbGVhZGluZyB0byB0aGVzZSB0aW1lb3V0IGZ1bmN0aW9ucy4KCkkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYSBmZXcga2V5IHN5bWJvbHM6IGBkb190Y3Bfc2V0c29ja29wdGAsIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAsIGByZXFza190aW1lcl9oYW5kbGVyYCwgYW5kIGB0Y3BfY2hlY2tfcmVxYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHBpZWNlcyBmaXQgdG9nZXRoZXIuCgpOb3csIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZiByZWxhdGVkIHRvIHRoZSB0aW1lb3V0IGJlaGF2aW9yLiBJIHF1aWNrbHkgc2Nhbm5lZCBmb3IgYW55IHJlbGV2YW50IGBDT05GSUdgIG9wdGlvbnMuIEkgbm90aWNlZCBgQ09ORklHX1NZTl9DT09LSUVTYCBtZW50aW9uZWQgaW4gYHN5c2N0bF9uZXRfaXB2NC5jYCwgYnV0IGl0IGFwcGVhcnMgdG8gYmUgcmVsYXRlZCB0byBhbm90aGVyIHN5c2N0bCBzZXR0aW5nLiBUaGUgb25lIEkmIzM5O20gdHJhY2tpbmcgaXMgYHRjcF9zeW5hY2tfcmV0cmllc2AsIHNvIEkmIzM5O2xsIGtlZXAgdGhhdCBpbiBtaW5kLiBOb3RoaW5nIHNwZWNpZmljIGxlYXBzIG91dC4gU28sIGF0IGxlYXN0IGZvciBub3csIGl0IGRvZXNuJiMzOTt0IGxvb2sgbGlrZSBhbnkgc3BlY2lhbCBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgdGltZW91dCBsb2dpYy4KCkZpbmFsbHksIEkmIzM5O2xsIHF1aWNrbHkgdmVyaWZ5IGlmIGByZXFza190aW1lcl9oYW5kbGVyYCBpcyBkZWNsYXJlZCBgc3RhdGljYCBvciBub3QuIElmIGl0JiMzOTtzIHN0YXRpYywgSSB3YW50IHRvIGZpbmQgdGhlIGNhbGxlciB3aXRoaW4gdGhlIHNhbWUgc2NvcGUuIElmIGl0JiMzOTtzIG5vdCwgSSYjMzk7bGwgYnJvYWRlbiBteSBzZWFyY2guIFVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGFuZCBjYWxsZXIgaXMgdml0YWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlIG9mIHRoaXMgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZXFza190aW1lcl9oYW5kbGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTAyNz12b2lkIGluZXRfY3NrX3JlcXNrX3F1ZXVlX2Ryb3BfYW5kX3B1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwMzItXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjEwMzM6c3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTAzNC17XG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDU5LVx0XHRyZWZjb3VudF9zZXQoXHUwMDI2bnJlcS1cdTAwM2Vyc2tfcmVmY250LCAyICYjNDM7IDEpO1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMDYwOlx0XHR0aW1lcl9zZXR1cChcdTAwMjZucmVxLVx1MDAzZXJza190aW1lciwgcmVxc2tfdGltZXJfaGFuZGxlciwgVElNRVJfUElOTkVEKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTA2MS1cdFx0cmVxc2tfcXVldWVfbWlncmF0ZWQoXHUwMDI2aW5ldF9jc2sobnNrKS1cdTAwM2VpY3NrX2FjY2VwdF9xdWV1ZSwgcmVxKTtcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTExNTA9c3RhdGljIGJvb2wgcmVxc2tfcXVldWVfaGFzaF9yZXEoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTE1OC1cdHJlcS1cdTAwM2V0aW1lb3V0ID0gdGNwX3RpbWVvdXRfaW5pdCgoc3RydWN0IHNvY2sgKilyZXEpO1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMTU5Olx0dGltZXJfc2V0dXAoXHUwMDI2cmVxLVx1MDAzZXJza190aW1lciwgcmVxc2tfdGltZXJfaGFuZGxlciwgVElNRVJfUElOTkVEKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTE2MC1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jPTU0PXN0YXRpYyBzdHJ1Y3QgbWlncmF0ZV9yZXVzZXBvcnRfdGVzdF9jYXNlIHtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTgzLVx0e1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYzo4NDpcdFx0Lm5hbWUgPSBcJiMzNDtJUHY0IFRDUF9ORVdfU1lOX1JFQ1YgcmVxc2tfdGltZXJfaGFuZGxlclwmIzM0OyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmMtODUtXHRcdC5mYW1pbHkgPSBBRl9JTkVULFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmMtMTE1LVx0e1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYzoxMTY6XHRcdC5uYW1lID0gXCYjMzQ7SVB2NiBUQ1BfTkVXX1NZTl9SRUNWIHJlcXNrX3RpbWVyX2hhbmRsZXJcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTExNy1cdFx0LmZhbWlseSA9IEFGX0lORVQ2LFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM9NDkxPXN0YXRpYyB2b2lkIHJ1bl90ZXN0KHN0cnVjdCBtaWdyYXRlX3JldXNlcG9ydF90ZXN0X2Nhc2UgKnRlc3RfY2FzZSxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTU0Ny1cdFx0LyogV2FpdCBmb3IgU1lOJiM0MztBQ0sgdGltZXJzIHRvIGV4cGlyZSBzbyB0aGF0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jOjU0ODpcdFx0ICogcmVxc2tfdGltZXJfaGFuZGxlcigpIG1pZ3JhdGVzIFRDUF9ORVdfU1lOX1JFQ1YgcmVxdWVzdHMuXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTU0OS1cdFx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NzMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRW50cnkgUG9pbnQgYW5kIFBvdGVudGlhbCBDcm9zcy1GaWxlIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBJJiMzOTttIGxvb2tpbmcgYXQgYHJlcXNrX3RpbWVyX2hhbmRsZXJgLiBJbW1lZGlhdGVseSwgdGhlICYjMzQ7aGFuZGxlciYjMzQ7IHN1ZmZpeCBhbmQgY29udGV4dCBjbHVlIG1lIGluIOKAkyB0aGlzIGlzIGEgdGltZXIgY2FsbGJhY2suIFNvLCBpdCBmdW5jdGlvbnMgYXMgYW4gZW50cnkgcG9pbnQsIGFuZCB0aGF0IGlzIGltcG9ydGFudCB0byByZW1lbWJlci4gVGhhdCBtZWFucyB0aGlzIGlzIHdoZXJlIHRoZSBleGVjdXRpb24gZmxvdyBiZWdpbnMgYWZ0ZXIgYSBzcGVjaWZpYyB0aW1lciBldmVudC4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIHRyYWNpbmcgZXhlY3V0aW9uLgoKTm93LCBgdGNwX2NoZWNrX3JlcWAgaGFzIG1lIHdvbmRlcmluZy4gSXMgdGhpcyBhIGZ1bmN0aW9uIGV4cG9zZWQgdG8gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCwgb3IgaXMgaXQgdXNlZCBhY3Jvc3MgbXVsdGlwbGUgZmlsZXMgaW4gdGhpcyBzcGVjaWZpYyBtb2R1bGU/IEtub3dpbmcgdGhlIHNjb3BlIG9mIGB0Y3BfY2hlY2tfcmVxYCBpcyBjcnVjaWFsLiBJcyBpdCBhbiBpbnRlcm5hbCBmdW5jdGlvbiBvciBpcyBpdCBzb21ldGhpbmcgZGVjbGFyZWQgYXMgYEVYUE9SVF9TWU1CT0xgPyBVbmRlcnN0YW5kaW5nIGl0cyB2aXNpYmlsaXR5IHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgdGhlIGJyZWFkdGggb2YgaXRzIGltcGFjdCBhbmQgaG93IHRpZ2h0bHkgY291cGxlZCB0aGlzIGNvZGUgaXMuIEkgbmVlZCB0byB0cmFjayBkb3duIGl0cyBkZWNsYXJhdGlvbiBhbmQgdXNhZ2UgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUuIEl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgdGhlIHRpbWVyIGV2ZW50LiBEb2VzIHRoZSB0aW1lciBhZmZlY3QgdGhlIHJlc3VsdCBvciB2aWNlIHZlcnNhPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfY2hlY2tfcmVxJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3RjcC5oPTQ3OD1lbnVtIHRjcF90d19zdGF0dXMgdGNwX3RpbWV3YWl0X3N0YXRlX3Byb2Nlc3Moc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsXG4tLVxuaW5jbHVkZS9uZXQvdGNwLmgtNDgyLVx0XHRcdFx0XHQgICAgICBlbnVtIHNrYl9kcm9wX3JlYXNvbiAqZHJvcF9yZWFzb24pO1xuaW5jbHVkZS9uZXQvdGNwLmg6NDgzOnN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmluY2x1ZGUvbmV0L3RjcC5oLTQ4NC1cdFx0XHQgICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsIGJvb2wgZmFzdG9wZW4sXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmM9NzE1Mj10Y3BfcmN2X3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMTgtXHRcdFNLQl9EUl9TRVQocmVhc29uLCBUQ1BfRkFTVE9QRU4pO1xubmV0L2lwdjQvdGNwX2lucHV0LmM6NzIxOTpcdFx0aWYgKCF0Y3BfY2hlY2tfcmVxKHNrLCBza2IsIHJlcSwgdHJ1ZSwgXHUwMDI2cmVxX3N0b2xlbiwgXHUwMDI2cmVhc29uKSlcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMjAtXHRcdFx0Z290byBkaXNjYXJkO1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MjA3MD1pbnQgdGNwX3Y0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjE2NS1cdFx0XHR0Y3BfdjRfZmlsbF9jYihza2IsIGlwaCwgdGgpO1xubmV0L2lwdjQvdGNwX2lwdjQuYzoyMTY2Olx0XHRcdG5zayA9IHRjcF9jaGVja19yZXEoc2ssIHNrYiwgcmVxLCBmYWxzZSwgXHUwMDI2cmVxX3N0b2xlbixcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjE2Ny1cdFx0XHRcdFx0ICAgIFx1MDAyNmRyb3BfcmVhc29uKTtcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9NTQ2PXN0cnVjdCBzb2NrICp0Y3BfY3JlYXRlX29wZW5yZXFfY2hpbGQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy02ODYtXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM6Njg3OnN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy02ODgtXHRcdFx0ICAgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTczMD1JTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgdGNwX3Y2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTgyMS1cdFx0XHR0Y3BfdjZfZmlsbF9jYihza2IsIGhkciwgdGgpO1xubmV0L2lwdjYvdGNwX2lwdjYuYzoxODIyOlx0XHRcdG5zayA9IHRjcF9jaGVja19yZXEoc2ssIHNrYiwgcmVxLCBmYWxzZSwgXHUwMDI2cmVxX3N0b2xlbixcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTgyMy1cdFx0XHRcdFx0ICAgIFx1MDAyNmRyb3BfcmVhc29uKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY2OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoaXMgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byBUQ1AgQ29ubmVjdGlvbiBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IFRDUCBjb25uZWN0aW9uIHJlcXVlc3RzIGFyZSB2YWxpZGF0ZWQsIGFuZCB3aGVyZSB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGB0Y3BfY2hlY2tfcmVxYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggSVB2NCBhbmQgSVB2NiByZWNlcHRpb24gcGF0aHMgKGB0Y3BfdjRfcmN2YCBhbmQgYHRjcF92Nl9yY3ZgKS4gVGhvc2UgcmVjZWl2ZXIgZnVuY3Rpb25zIGFyZSBkZWZpbml0ZWx5IGdvb2Qgc3RhcnRpbmcgcG9pbnRzIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgY29udGV4dCwgYnV0LCBrbm93aW5nIHRoZSBhcmNoaXRlY3R1cmUsIEkgbmVlZCB0byByZW1lbWJlciB0aG9zZSBhcmUgaW5jcmVkaWJseSBob3QgY29kZSBwYXRocyDigJMgZXZlcnkgcGFja2V0IGdvZXMgdGhyb3VnaCB0aGVtLCB3aGljaCBtZWFucyB0aGV5IGFyZSBsaWtlbHkgb3B0aW1pemVkLiBTbywgYSBkZWVwZXIgZGl2ZSB0aGVyZSB3aWxsIGJlIGNvc3RseSBpbiB0ZXJtcyBvZiB1bmRlcnN0YW5kaW5nLiBUaGVyZWZvcmUsIGB0Y3BfY2hlY2tfcmVxYCBpdHNlbGYgc2VlbXMgbGlrZSBhIGJldHRlciwgbGVzcyBub2lzeSwgZm9jdXMgc3ltYm9sLiBUaGlzIGlzIHdoZXJlIEkgc2hvdWxkIGNvbmNlbnRyYXRlIG15IGluaXRpYWwgZWZmb3J0cy4KCk5vdywgbGV0JiMzOTtzIHBpdm90LiBTaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNvbm5lY3Rpb24gdmFsaWRhdGlvbiBhbmQgcG90ZW50aWFsIHJldHJhbnNtaXNzaW9ucywgYHRjcF9yZXRyYW5zbWl0X3RpbWVyYCBpcyBhbm90aGVyIHN5bWJvbCB0aGF0IHJlcXVpcmVzIGludmVzdGlnYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IGhhcyB0byBvZmZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX3JldHJhbnNtaXRfdGltZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaD0xOTM9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF90aW1lb3V0X2V4cGlyZXMoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0xOTQte1xuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaDoxOTU6XHRyZXR1cm4gUkVBRF9PTkNFKHNrLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLmV4cGlyZXMpO1xuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0xOTYtfVxuLS1cbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg9MjA0PXN0YXRpYyBpbmxpbmUgdm9pZCBpbmV0X2Nza19jbGVhcl94bWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzaywgY29uc3QgaW50IHdoYXQpXG4tLVxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0yMTAtI2lmZGVmIElORVRfQ1NLX0NMRUFSX1RJTUVSU1xuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaDoyMTE6XHRcdHNrX3N0b3BfdGltZXIoc2ssIFx1MDAyNnNrLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyKTtcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmgtMjEyLSNlbmRpZlxuLS1cbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg9MjI3PXN0YXRpYyBpbmxpbmUgdm9pZCBpbmV0X2Nza19yZXNldF94bWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzaywgY29uc3QgaW50IHdoYXQsXG4tLVxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0yNDItXHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNmljc2stXHUwMDNlaWNza19wZW5kaW5nLCB3aGF0KTtcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg6MjQzOlx0XHRza19yZXNldF90aW1lcihzaywgXHUwMDI2c2stXHUwMDNldGNwX3JldHJhbnNtaXRfdGltZXIsIHdoZW4pO1xuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0yNDQtXHR9IGVsc2UgaWYgKHdoYXQgPT0gSUNTS19USU1FX0RBQ0spIHtcbi0tXG5pbmNsdWRlL25ldC9zb2NrLmg9MjQyPXN0cnVjdCBza19maWx0ZXI7XG4tLVxuaW5jbHVkZS9uZXQvc29jay5oLTMxMi0gICpcdEBza190aW1lcjogc29jayBjbGVhbnVwIHRpbWVyXG5pbmNsdWRlL25ldC9zb2NrLmg6MzEzOiAgKlx0QHRjcF9yZXRyYW5zbWl0X3RpbWVyOiB0Y3AgcmV0cmFuc21pdCB0aW1lclxuaW5jbHVkZS9uZXQvc29jay5oOjMxNDogICpcdEBtcHRjcF9yZXRyYW5zbWl0X3RpbWVyOiBtcHRjcCByZXRyYW5zbWl0IHRpbWVyXG5pbmNsdWRlL25ldC9zb2NrLmgtMzE1LSAgKlx0QHNrX3N0YW1wOiB0aW1lIHN0YW1wIG9mIGxhc3QgcGFja2V0IHJlY2VpdmVkXG4tLVxuaW5jbHVkZS9uZXQvc29jay5oPTM2NT1zdHJ1Y3Qgc29jayB7XG4tLVxuaW5jbHVkZS9uZXQvc29jay5oLTQ5NC1cdFx0c3RydWN0IHRpbWVyX2xpc3RcdHNrX3RpbWVyO1xuaW5jbHVkZS9uZXQvc29jay5oOjQ5NTpcdFx0c3RydWN0IHRpbWVyX2xpc3RcdHRjcF9yZXRyYW5zbWl0X3RpbWVyO1xuaW5jbHVkZS9uZXQvc29jay5oOjQ5NjpcdFx0c3RydWN0IHRpbWVyX2xpc3RcdG1wdGNwX3JldHJhbnNtaXRfdGltZXI7XG5pbmNsdWRlL25ldC9zb2NrLmgtNDk3LVx0fTtcbi0tXG5pbmNsdWRlL25ldC90Y3AuaD03NTM9aW50IHRjcF9yZXRyYW5zbWl0X3NrYihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIGludCBzZWdzKTtcbmluY2x1ZGUvbmV0L3RjcC5oOjc1NDp2b2lkIHRjcF9yZXRyYW5zbWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzayk7XG5pbmNsdWRlL25ldC90Y3AuaC03NTUtdm9pZCB0Y3BfeG1pdF9yZXRyYW5zbWl0X3F1ZXVlKHN0cnVjdCBzb2NrICopO1xuLS1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9NzE4PXZvaWQgaW5ldF9jc2tfaW5pdF94bWl0X3RpbWVycyhzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy03MjQtXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjcyNTpcdHRpbWVyX3NldHVwKFx1MDAyNnNrLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLCByZXRyYW5zbWl0X2hhbmRsZXIsIDApO1xubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy03MjYtXHR0aW1lcl9zZXR1cChcdTAwMjZpY3NrLVx1MDAzZWljc2tfZGVsYWNrX3RpbWVyLCBkZWxhY2tfaGFuZGxlciwgMCk7XG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz03MzE9dm9pZCBpbmV0X2Nza19jbGVhcl94bWl0X3RpbWVycyhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy03MzctXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjczODpcdHNrX3N0b3BfdGltZXIoc2ssIFx1MDAyNnNrLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyKTtcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtNzM5LVx0c2tfc3RvcF90aW1lcihzaywgXHUwMDI2aWNzay1cdTAwM2VpY3NrX2RlbGFja190aW1lcik7XG4tLVxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz03NDM9dm9pZCBpbmV0X2Nza19jbGVhcl94bWl0X3RpbWVyc19zeW5jKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTc1Mi1cbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6NzUzOlx0c2tfc3RvcF90aW1lcl9zeW5jKHNrLCBcdTAwMjZzay1cdTAwM2V0Y3BfcmV0cmFuc21pdF90aW1lcik7XG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTc1NC1cdHNrX3N0b3BfdGltZXJfc3luYyhzaywgXHUwMDI2aWNzay1cdTAwM2VpY3NrX2RlbGFja190aW1lcik7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz00Mzg9dm9pZCB0Y3BfbGRfUlRPX3JldmVydChzdHJ1Y3Qgc29jayAqc2ssIHUzMiBzZXEpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy00NzAtXHRcdCAqL1xubmV0L2lwdjQvdGNwX2lwdjQuYzo0NzE6XHRcdHRjcF9yZXRyYW5zbWl0X3RpbWVyKHNrKTtcbm5ldC9pcHY0L3RjcF9pcHY0LmMtNDcyLVx0fVxuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jPTM4OT1zdGF0aWMgdm9pZCB0Y3BfcHJvYmVfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jLTQwNy1cdCAqIGNvcnJlc3BvbmRpbmcgc3lzdGVtIGxpbWl0LiBXZSBhbHNvIGltcGxlbWVudCBzaW1pbGFyIHBvbGljeSB3aGVuXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0MDg6XHQgKiB3ZSB1c2UgUlRPIHRvIHByb2JlIHdpbmRvdyBpbiB0Y3BfcmV0cmFuc21pdF90aW1lcigpLlxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNDA5LVx0ICovXG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NDk2PXN0YXRpYyBib29sIHRjcF9ydHhfcHJvYmUwX3RpbWVkX291dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTI2LS8qKlxubmV0L2lwdjQvdGNwX3RpbWVyLmM6NTI3OiAqICB0Y3BfcmV0cmFuc21pdF90aW1lcigpIC0gVGhlIFRDUCByZXRyYW5zbWl0IHRpbWVvdXQgaGFuZGxlclxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTI4LSAqICBAc2s6ICBQb2ludGVyIHRvIHRoZSBjdXJyZW50IHNvY2tldC5cbi0tXG5uZXQvaXB2NC90Y3BfdGltZXIuYy01MzYtICovXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo1Mzc6dm9pZCB0Y3BfcmV0cmFuc21pdF90aW1lcihzdHJ1Y3Qgc29jayAqc2spXG5uZXQvaXB2NC90Y3BfdGltZXIuYy01Mzgte1xuLS1cbm5ldC9pcHY0L3RjcF90aW1lci5jPTY5Nz12b2lkIHRjcF93cml0ZV90aW1lcl9oYW5kbGVyKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvaXB2NC90Y3BfdGltZXIuYy03MDYtXHRpZiAodGltZV9hZnRlcih0Y3BfdGltZW91dF9leHBpcmVzKHNrKSwgamlmZmllcykpIHtcbm5ldC9pcHY0L3RjcF90aW1lci5jOjcwNzpcdFx0c2tfcmVzZXRfdGltZXIoc2ssIFx1MDAyNnNrLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNzA4LVx0XHRcdCAgICAgICB0Y3BfdGltZW91dF9leHBpcmVzKHNrKSk7XG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNzIyLVx0XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZpY3NrLVx1MDAzZWljc2tfcGVuZGluZywgMCk7XG5uZXQvaXB2NC90Y3BfdGltZXIuYzo3MjM6XHRcdHRjcF9yZXRyYW5zbWl0X3RpbWVyKHNrKTtcbm5ldC9pcHY0L3RjcF90aW1lci5jLTcyNC1cdFx0YnJlYWs7XG4tLVxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NzMyPXN0YXRpYyB2b2lkIHRjcF93cml0ZV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbm5ldC9pcHY0L3RjcF90aW1lci5jLTczMy17XG5uZXQvaXB2NC90Y3BfdGltZXIuYzo3MzQ6XHRzdHJ1Y3Qgc29jayAqc2sgPSB0aW1lcl9jb250YWluZXJfb2Yoc2ssIHQsIHRjcF9yZXRyYW5zbWl0X3RpbWVyKTtcbm5ldC9pcHY0L3RjcF90aW1lci5jLTczNS1cbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz00Mjg9c3RhdGljIHZvaWQgbXB0Y3Bfc3RvcF9ydHhfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxubmV0L21wdGNwL3Byb3RvY29sLmMtNDI5LXtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQzMDpcdHNrX3N0b3BfdGltZXIoc2ssIFx1MDAyNnNrLVx1MDAzZW1wdGNwX3JldHJhbnNtaXRfdGltZXIpO1xubmV0L21wdGNwL3Byb3RvY29sLmMtNDMxLVx0bXB0Y3Bfc2soc2spLVx1MDAzZXRpbWVyX2l2YWwgPSAwO1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTk5Nz1zdGF0aWMgYm9vbCBtcHRjcF9ydHhfdGltZXJfcGVuZGluZyhzdHJ1Y3Qgc29jayAqc2spXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy05OTgte1xubmV0L21wdGNwL3Byb3RvY29sLmM6OTk5Olx0cmV0dXJuIHRpbWVyX3BlbmRpbmcoXHUwMDI2c2stXHUwMDNlbXB0Y3BfcmV0cmFuc21pdF90aW1lcik7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMDAwLX1cbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0xMDAyPXN0YXRpYyB2b2lkIG1wdGNwX3Jlc2V0X3J0eF90aW1lcihzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtMTAxMC1cdHRvdXQgPSBtcHRjcF9zayhzayktXHUwMDNldGltZXJfaXZhbDtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjEwMTE6XHRza19yZXNldF90aW1lcihzaywgXHUwMDI2c2stXHUwMDNlbXB0Y3BfcmV0cmFuc21pdF90aW1lciwgamlmZmllcyAmIzQzOyB0b3V0KTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTEwMTItfVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTIzMTM9c3RhdGljIGludCBtcHRjcF9yZWN2bXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTI0MjQtXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyNDI1OnN0YXRpYyB2b2lkIG1wdGNwX3JldHJhbnNtaXRfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yNDI2LXtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjI0Mjc6XHRzdHJ1Y3Qgc29jayAqc2sgPSB0aW1lcl9jb250YWluZXJfb2Yoc2ssIHQsIG1wdGNwX3JldHJhbnNtaXRfdGltZXIpO1xubmV0L21wdGNwL3Byb3RvY29sLmMtMjQyOC1cdHN0cnVjdCBtcHRjcF9zb2NrICptc2sgPSBtcHRjcF9zayhzayk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9MzA0ND1zdGF0aWMgdm9pZCBfX21wdGNwX2luaXRfc29jayhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtMzA3NC1cdC8qIHJlLXVzZSB0aGUgY3NrIHJldHJhbnMgdGltZXIgZm9yIE1QVENQLWxldmVsIHJldHJhbnMgKi9cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjMwNzU6XHR0aW1lcl9zZXR1cChcdTAwMjZzay1cdTAwM2VtcHRjcF9yZXRyYW5zbWl0X3RpbWVyLCBtcHRjcF9yZXRyYW5zbWl0X3RpbWVyLCAwKTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMwNzYtXHR0aW1lcl9zZXR1cChcdTAwMjZtc2stXHUwMDNlc2subXB0Y3BfdG91dF90aW1lciwgbXB0Y3BfdG91dF90aW1lciwgMCk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDQuYz03ND1zdGF0aWMgaW50IGR1bXBfdGNwX3NvY2soc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCB0Y3Bfc29jayAqdHAsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDQuYy0xMDEtXHRcdHRpbWVyX2FjdGl2ZSA9IDE7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jOjEwMjpcdFx0dGltZXJfZXhwaXJlcyA9IHNwLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLmV4cGlyZXM7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jLTEwMy1cdH0gZWxzZSBpZiAoaWNzay1cdTAwM2VpY3NrX3BlbmRpbmcgPT0gSUNTS19USU1FX1BST0JFMCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDQuYy0xMDQtXHRcdHRpbWVyX2FjdGl2ZSA9IDQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jOjEwNTpcdFx0dGltZXJfZXhwaXJlcyA9IHNwLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLmV4cGlyZXM7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jLTEwNi1cdH0gZWxzZSBpZiAodGltZXJfcGVuZGluZyhcdTAwMjZpY3NrLVx1MDAzZWljc2tfa2VlcGFsaXZlX3RpbWVyKSkge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A2LmM9NzQ9c3RhdGljIGludCBkdW1wX3RjcDZfc29jayhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IHRjcDZfc29jayAqdHAsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDYuYy0xMDEtXHRcdHRpbWVyX2FjdGl2ZSA9IDE7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNi5jOjEwMjpcdFx0dGltZXJfZXhwaXJlcyA9IHNwLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLmV4cGlyZXM7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNi5jLTEwMy1cdH0gZWxzZSBpZiAoaWNzay1cdTAwM2VpY3NrX3BlbmRpbmcgPT0gSUNTS19USU1FX1BST0JFMCkge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDYuYy0xMDQtXHRcdHRpbWVyX2FjdGl2ZSA9IDQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNi5jOjEwNTpcdFx0dGltZXJfZXhwaXJlcyA9IHNwLVx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLmV4cGlyZXM7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNi5jLTEwNi1cdH0gZWxzZSBpZiAodGltZXJfcGVuZGluZyhcdTAwMjZpY3NrLVx1MDAzZWljc2tfa2VlcGFsaXZlX3RpbWVyKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjE5OAoJCQkJCQkJb3V0cHV0OiAxMjcKCQkJCQkJCXRob3VnaHRzOiA3MzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVENQIFRpbWVyIGFuZCBTb2NrZXQgT3B0aW9uIEVudHJ5IFBvaW50cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGlkZW50aWZ5IHRoZSBrZXkgZW50cnkgcG9pbnRzIGludG8gdGhlIHJlbGV2YW50IFRDUCBsb2dpYywga2VlcGluZyBpbiBtaW5kIHRoZSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBmdW5jdGlvbnMgYXMgdGhlICYjMzQ7Y2xlYW5lc3QmIzM0OyB3YXkgdG8gYWNjZXNzIHRoZSBjb2RlLiBJIG5lZWQgdG8gdHJhY2UgaG93IHRoZSBgdGNwX3JldHJhbnNtaXRfdGltZXJgLCBgcmVxc2tfdGltZXJfaGFuZGxlcmAsIGB0Y3BfY2hlY2tfcmVxYCwgYW5kIGBkb190Y3Bfc2V0c29ja29wdGAgZnVuY3Rpb25zIHJlbGF0ZSB0byBlYWNoIG90aGVyLgoKRmlyc3QsIEkgc2VlIHRoYXQgYHRjcF9yZXRyYW5zbWl0X3RpbWVyYCBpcyB0cmlnZ2VyZWQgZnJvbSBgdGNwX3dyaXRlX3RpbWVyX2hhbmRsZXJgLCB3aGljaCBpdHNlbGYgaXMgYSBjYWxsYmFjayBmcm9tIHRoZSBgdGNwX3dyaXRlX3RpbWVyYC4gVGhhdCYjMzk7cyBhIGNsZWFyIGNoYWluLiBUaGUgbGlzdCBJJiMzOTttIHdvcmtpbmcgd2l0aCBpczoKCiogICBgZG9fdGNwX3NldHNvY2tvcHRgCiogICBgdGNwX3JldHJhbnNtaXRfdGltZXJgCiogICBgcmVxc2tfdGltZXJfaGFuZGxlcmAKKiAgIGB0Y3BfY2hlY2tfcmVxYAoKV2FpdCwgYHJlcXNrX3RpbWVyX2hhbmRsZXJgIGlzIG1hcmtlZCBhcyBgc3RhdGljYC4gVGhhdCBtZWFucyBpdCYjMzk7cyBub3QgZGlyZWN0bHkgZXhwb3J0ZWQuIEhvd2V2ZXIsIGl0ICppcyogYSB0aW1lciBjYWxsYmFjaywgc28gaXRzIGFkZHJlc3MgaXMgdGFrZW4gYW5kIHBhc3NlZCB0byBgdGltZXJfc2V0dXBgLiBUaGVyZWZvcmUsIGl0JiMzOTtzIHNhZmUgdG8gdXNlIGl0LCBldmVuIGlmIGl0JiMzOTtzIHN0YXRpYywgc2luY2UgaXQgd29uJiMzOTt0IGJlIGlubGluZWQuIFRoZSBvdGhlciB0aHJlZSBsb29rIGdvb2Q6IGB0Y3BfY2hlY2tfcmVxYCwgYGRvX3RjcF9zZXRzb2Nrb3B0YCwgYW5kIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAgYXJlIGFsbCBub24tc3RhdGljLgoKTm93LCBJJiMzOTttIGRpZ2dpbmcgZGVlcGVyIHRvIHNlZSB3aGljaCBvZiB0aGVzZSBhcmUgdGhlIGJlc3QgZW50cnkgcG9pbnRzLiBMb29raW5nIGF0IHRoZSBjYWxsIGNoYWluczoKCiogICBgZG9fdGNwX3NldHNvY2tvcHRgIGlzIGRpcmVjdGx5IGNvbm5lY3RlZCB0byBgc2Vjc190b19yZXRyYW5zYCB3aGVuIHNldHRpbmcgYFRDUF9ERUZFUl9BQ0NFUFRgLiBTZWVtcyBsaWtlIGEgZ29vZCBlbnRyeSBwb2ludC4KKiAgIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAgZGlyZWN0bHkgY2FsbHMgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgLiBNYWtlcyBzZW5zZSBhcyBhbiBlbnRyeSBwb2ludC4KKiAgIGByZXFza190aW1lcl9oYW5kbGVyYCBkaXJlY3RseSBjYWxscyBgdGNwX3JlcXNrX3RpbWVvdXRgLiBDb25maXJtcyB0aGlzIGlzIGEgZ29vZCBlbnRyeSBwb2ludC4KKiAgIGB0Y3BfY2hlY2tfcmVxYCBhbHNvIGNhbGxzIGB0Y3BfcmVxc2tfdGltZW91dGAuIENvbmZpcm1zIHRoaXMgaXMgYSBnb29kIGVudHJ5IHBvaW50IGFzIHdlbGwuCgpTbywgSSBoYXZlIGEgZ29vZCBoYW5kbGUgb24gd2hlcmUgdGhlIGxvZ2ljIHN0YXJ0cy4gVGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJIG5lZWQgdG8gd29ycnkgYWJvdXQgaGVyZS4KCkJhc2VkIG9uIHRoaXMgYW5hbHlzaXMsIHRoZSBwYXRjaCBmb2N1c2VzIG9uIG1vZGlmeWluZyBUQ1AgU1lOQUNLIHJldHJpZXMgYW5kIHRpbWVvdXQgY2FsY3VsYXRpb24sIHNwZWNpZmljYWxseSB0byBhZGRyZXNzIHBvdGVudGlhbCBvdmVyZmxvdyBpc3N1ZXMgYW5kIGxpbWl0IGB0Y3Bfc3luYWNrX3JldHJpZXNgIHRvIDEyNy4gVGhlc2UgY2hhbmdlcyB0b3VjaCBjb3JlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgcmV0cmFuc21pc3Npb24gbG9naWMuIFRoaXMgbG9naWMgaXMgYWNjZXNzaWJsZSB0aHJvdWdoIHNvY2tldCBvcHRpb25zIGFuZCB0aW1lciBjYWxsYmFja3MgaW52b2x2ZWQgaW4gY29ubmVjdGlvbiBoYW5kbGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RvX3RjcF9zZXRzb2Nrb3B0JiMzNDssCiAgICAmIzM0O3RjcF9yZXRyYW5zbWl0X3RpbWVyJiMzNDssCiAgICAmIzM0O3JlcXNrX3RpbWVyX2hhbmRsZXImIzM0OywKICAgICYjMzQ7dGNwX2NoZWNrX3JlcSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBUQ1AgU1lOQUNLIHJldHJpZXMgbGltaXRzIGFuZCB0aW1lb3V0IGNhbGN1bGF0aW9uIGxvZ2ljIHRvIHByZXZlbnQgc2hpZnQgb3ZlcmZsb3dzIGFuZCBib3VuZHMgYHRjcF9zeW5hY2tfcmV0cmllc2AgdG8gMTI3LiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjb3JlIFRDUCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgYW5kIHJldHJhbnNtaXNzaW9uIGxvZ2ljLiBUaGUgbW9kaWZpY2F0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBUQ1Agc29ja2V0IG9wdGlvbnMgYW5kIHRpbWVyIGNhbGxiYWNrcyBkdXJpbmcgY29ubmVjdGlvbiBoYW5kbGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb190Y3Bfc2V0c29ja29wdCYjMzQ7LAogICAgJiMzNDt0Y3BfcmV0cmFuc21pdF90aW1lciYjMzQ7LAogICAgJiMzNDtyZXFza190aW1lcl9oYW5kbGVyJiMzNDssCiAgICAmIzM0O3RjcF9jaGVja19yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIFNZTkFDSyByZXRyaWVzIGxpbWl0cyBhbmQgdGltZW91dCBjYWxjdWxhdGlvbiBsb2dpYyB0byBwcmV2ZW50IHNoaWZ0IG92ZXJmbG93cyBhbmQgYm91bmRzIGB0Y3Bfc3luYWNrX3JldHJpZXNgIHRvIDEyNy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgY29yZSBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGFuZCByZXRyYW5zbWlzc2lvbiBsb2dpYy4gVGhlIG1vZGlmaWNhdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgVENQIHNvY2tldCBvcHRpb25zIGFuZCB0aW1lciBjYWxsYmFja3MgZHVyaW5nIGNvbm5lY3Rpb24gaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBhbmQgb3V0LW9mLWJvdW5kcyBzaGlmdCBpbiBUQ1AgdGltZW91dCBjYWxjdWxhdGlvbiAoYHJlcS1cdTAwM2V0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXRgKSBieSBjYXBwaW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU5BQ0sgcmV0cmllcyB0byAxMjcgYW5kIGFkZGluZyBvdmVyZmxvdyBjaGVja3MgaW4gYHRjcF9yZXFza190aW1lb3V0X3NrYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlcnNwYWNlLiBTdGFuZGFyZCBLQVNBTiBhbmQgVUJTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBjb3JydXB0aW9uIG9yIHVuZGVmaW5lZCBiZWhhdmlvciByZWxhdGVkIHRvIHRoaXMgY29kZS4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDgwNjQzNGNhMDMyODMwOWEzNTBhZWFmZDdiNjE2ZTMwNDEyODY4MWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAxNTozOTo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QKaW5kZXggMjA4ZjQ2OTY3ZWU1OS4uZmQ1MDM4YjZjYWI5ZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QKQEAgLTk1NCw3ICYjNDM7OTU0LDcgQEAgdGNwX3N0ZHVyZyAtIEJPT0xFQU4KIAogdGNwX3N5bmFja19yZXRyaWVzIC0gSU5URUdFUgogCU51bWJlciBvZiB0aW1lcyBTWU5BQ0tzIGZvciBhIHBhc3NpdmUgVENQIGNvbm5lY3Rpb24gYXR0ZW1wdCB3aWxsCi0JYmUgcmV0cmFuc21pdHRlZC4gU2hvdWxkIG5vdCBiZSBoaWdoZXIgdGhhbiAyNTUuIERlZmF1bHQgdmFsdWUKJiM0MzsJYmUgcmV0cmFuc21pdHRlZC4gU2hvdWxkIG5vdCBiZSBoaWdoZXIgdGhhbiAxMjcuIERlZmF1bHQgdmFsdWUKIAlpcyA1LCB3aGljaCBjb3JyZXNwb25kcyB0byAzMXNlY29uZHMgdGlsbCB0aGUgbGFzdCByZXRyYW5zbWlzc2lvbgogCXdpdGggdGhlIGN1cnJlbnQgaW5pdGlhbCBSVE8gb2YgMXNlY29uZC4gV2l0aCB0aGlzIHRoZSBmaW5hbCB0aW1lb3V0CiAJZm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiB3aWxsIGhhcHBlbiBhZnRlciA2M3NlY29uZHMuCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oCmluZGV4IDJjNWI4ODk1MzBiNTUuLjhhYjJmZDM2OGVkM2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3RjcC5oCkBAIC0xODMsNiAmIzQzOzE4Myw4IEBAIHN0YXRpY19hc3NlcnQoKDEgJmx0OyZsdDsgQVRPX0JJVFMpICZndDsgVENQX0RFTEFDS19NQVgpOwogI2RlZmluZSBNQVhfVENQX0tFRVBJTlRWTAkzMjc2NwogI2RlZmluZSBNQVhfVENQX0tFRVBDTlQJCTEyNwogI2RlZmluZSBNQVhfVENQX1NZTkNOVAkJMTI3CiYjNDM7LyogcmVxdWVzdF9zb2NrOjpudW1fdGltZW91dCBpcyBhIDctYml0IGZpZWxkLiAqLwomIzQzOyNkZWZpbmUgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUwkxMjcKIAogLyogRW5zdXJlIHRoYXQgVENQIFBBV1MgY2hlY2tzIGFyZSByZWxheGVkIGFmdGVyIH4yMTQ3IHNlY29uZHMKICAqIHRvIGF2b2lkIG92ZXJmbG93cy4gVGhpcyBhc3N1bWVzIGEgY2xvY2sgc21hbGxlciB0aGFuIDEgTWh6LgpAQCAtODgyLDEyICYjNDM7ODg0LDIyIEBAIHN0YXRpYyBpbmxpbmUgdTMyIF9fdGNwX3NldF9ydG8oY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cCkKIAlyZXR1cm4gdXNlY3NfdG9famlmZmllcygodHAtJmd0O3NydHRfdXMgJmd0OyZndDsgMykgJiM0MzsgdHAtJmd0O3J0dHZhcl91cyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpCiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0X3NrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywKJiM0MzsJCQkJCQkgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKQogewotCXU2NCB0aW1lb3V0ID0gKHU2NClyZXEtJmd0O3RpbWVvdXQgJmx0OyZsdDsgcmVxLSZndDtudW1fdGltZW91dDsKJiM0MzsJdTMyIHJ0b19tYXggPSB0Y3BfcnRvX21heChzayk7CiYjNDM7CXU2NCB0aW1lb3V0ID0gcmVxLSZndDt0aW1lb3V0OwomIzQzOwomIzQzOwlpZiAocmVxLSZndDtudW1fdGltZW91dCAmZ3Q7PSBCSVRTX1BFUl9UWVBFKHRpbWVvdXQpIHx8CiYjNDM7CSAgICB0aW1lb3V0ICZndDsgVTY0X01BWCAmZ3Q7Jmd0OyByZXEtJmd0O251bV90aW1lb3V0KQomIzQzOwkJcmV0dXJuIHJ0b19tYXg7CiYjNDM7CiYjNDM7CXJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQgJmx0OyZsdDsgcmVxLSZndDtudW1fdGltZW91dCwgcnRvX21heCk7CiYjNDM7fQogCi0JcmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCwKLQkJCQkgICAgdGNwX3J0b19tYXgocmVxLSZndDtyc2tfbGlzdGVuZXIpKTsKJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXQoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKQomIzQzO3sKJiM0MzsJcmV0dXJuIHRjcF9yZXFza190aW1lb3V0X3NrKHJlcS0mZ3Q7cnNrX2xpc3RlbmVyLCByZXEpOwogfQogCiB1MzIgdGNwX2RlbGFja19tYXgoY29uc3Qgc3RydWN0IHNvY2sgKnNrKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMKaW5kZXggY2ExMTgwZGJhMWRlYS4uZmM1MTUyZGZhM2M4NiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMKQEAgLTM1LDYgJiM0MzszNSw3IEBAIHN0YXRpYyBpbnQgaXBfdHRsX21pbiA9IDE7CiBzdGF0aWMgaW50IGlwX3R0bF9tYXggPSAyNTU7CiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19taW4gPSAxOwogc3RhdGljIGludCB0Y3Bfc3luX3JldHJpZXNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7CiYjNDM7c3RhdGljIGludCB0Y3Bfc3luYWNrX3JldHJpZXNfbWF4ID0gTUFYX1RDUF9TWU5BQ0tfUkVUUklFUzsKIHN0YXRpYyBpbnQgdGNwX3N5bl9saW5lYXJfdGltZW91dHNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21pbltdID0geyAwLCAwIH07CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21heFtdID0geyBHSURfVF9NQVgsIEdJRF9UX01BWCB9OwpAQCAtMTAzNCw2ICYjNDM7MTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7CiAJCS5tYXhsZW4JCT0gc2l6ZW9mKHU4KSwKIAkJLm1vZGUJCT0gMDY0NCwKIAkJLnByb2NfaGFuZGxlcgk9IHByb2NfZG91OHZlY19taW5tYXgsCiYjNDM7CQkuZXh0cmEyCQk9ICZhbXA7dGNwX3N5bmFja19yZXRyaWVzX21heCwKIAl9LAogI2lmZGVmIENPTkZJR19TWU5fQ09PS0lFUwogCXsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcC5jIGIvbmV0L2lwdjQvdGNwLmMKaW5kZXggNDU1NDQxZjFiNjk0OS4uMjQ4OTZmYTA4YTVkOCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwLmMKQEAgLTM1Nyw3ICYjNDM7MzU3LDcgQEAgc3RhdGljIHU4IHNlY3NfdG9fcmV0cmFucyhpbnQgc2Vjb25kcywgaW50IHRpbWVvdXQsIGludCBydG9fbWF4KQogCQlpbnQgcGVyaW9kID0gdGltZW91dDsKIAogCQlyZXMgPSAxOwotCQl3aGlsZSAoc2Vjb25kcyAmZ3Q7IHBlcmlvZCAmYW1wOyZhbXA7IHJlcyAmbHQ7IDI1NSkgewomIzQzOwkJd2hpbGUgKHNlY29uZHMgJmd0OyBwZXJpb2QgJmFtcDsmYW1wOyByZXMgJmx0OyBNQVhfVENQX1NZTkFDS19SRVRSSUVTKSB7CiAJCQlyZXMmIzQzOyYjNDM7OwogCQkJdGltZW91dCAmbHQ7Jmx0Oz0gMTsKIAkJCWlmICh0aW1lb3V0ICZndDsgcnRvX21heCkKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF90aW1lci5jIGIvbmV0L2lwdjQvdGNwX3RpbWVyLmMKaW5kZXggYmYxNzFiNWUxZWIzMC4uZGFhNGVhYzA3MmRkOSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX3RpbWVyLmMKQEAgLTQ2MiwxMSAmIzQzOzQ2MiwxMyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKQogCiAJdGNwX3N5bl9hY2tfdGltZW91dChyZXEpOwogCi0JLyogQWRkIG9uZSBtb3JlIHJldHJ5IGZvciBmYXN0b3Blbi4KJiM0MzsJLyogQWRkIG9uZSBtb3JlIHJldHJ5IGZvciBmYXN0b3BlbiB3aGVuIHRoZSB0aW1lb3V0IGNvdW50ZXIgY2FuCiYjNDM7CSAqIHJlcHJlc2VudCBpdC4KIAkgKiBQYWlyZWQgd2l0aCBXUklURV9PTkNFKCkgaW4gdGNwX3NvY2tfc2V0X3N5bmNudCgpCiAJICovCiAJbWF4X3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay0mZ3Q7aWNza19zeW5fcmV0cmllcykgPyA6CiAJCVJFQURfT05DRShzb2NrX25ldChzayktJmd0O2lwdjQuc3lzY3RsX3RjcF9zeW5hY2tfcmV0cmllcykgJiM0MzsgMTsKJiM0MzsJbWF4X3JldHJpZXMgPSBtaW5fdChpbnQsIG1heF9yZXRyaWVzLCBNQVhfVENQX1NZTkFDS19SRVRSSUVTKTsKIAogCWlmIChyZXEtJmd0O251bV90aW1lb3V0ICZndDs9IG1heF9yZXRyaWVzKSB7CiAJCXRjcF93cml0ZV9lcnIoc2spOwpAQCAtNDg4LDcgJiM0Mzs0OTAsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKQogCWlmICghdHAtJmd0O3JldHJhbnNfc3RhbXApCiAJCXRwLSZndDtyZXRyYW5zX3N0YW1wID0gdGNwX3RpbWVfc3RhbXBfdHModHApOwogCXRjcF9yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfUkVUUkFOUywKLQkJCSAgcmVxLSZndDt0aW1lb3V0ICZsdDsmbHQ7IHJlcS0mZ3Q7bnVtX3RpbWVvdXQsIGZhbHNlKTsKJiM0MzsJCQkgICAgIHRjcF9yZXFza190aW1lb3V0X3NrKHNrLCByZXEpLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyBib29sIHRjcF9ydHhfcHJvYmUwX3RpbWVkX291dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNTo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjYyCgkJCQkJCQlvdXRwdXQ6IDEzMQoJCQkJCQkJdGhvdWdodHM6IDUyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBGdXp6aW5nIFNlc3Npb24gQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoLCB3aGljaCBtb2RpZmllcyB0aGUgVENQIFNZTkFDSyByZXRyeSBsb2dpYywgbGlrZWx5ICpkb2VzbiYjMzk7dCogd2FycmFudCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIFRoZSBjb3JlIGNoYW5nZSBoZXJlIGludm9sdmVzIGFkanVzdGluZyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgdGNwX3N5bmFja19yZXRyaWVzYCBmcm9tIDI1NSB0byAxMjcgYW5kIGltcGxlbWVudGluZyBgdGNwX3JlcXNrX3RpbWVvdXRfc2tgIHRvIHByZXZlbnQgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3dzIGR1cmluZyB0aGUgdGltZW91dCBjYWxjdWxhdGlvbi4gVGhlIGByZXEtJmd0O251bV90aW1lb3V0YCBmaWVsZCBiZWluZyA3LWJpdHMgaXMgYSBrZXkgcG9pbnQsIGJlY2F1c2UgdGhhdCBtYWtlcyBzaGlmdGluZyBieSBtb3JlIHRoYW4gNjMgYSBwcm9ibGVtLiBIb3dldmVyLCB0aGUgZXhpc3RpbmcgYW5kIG5ldyBjb2RlIGNhcmVmdWxseSBjaGVja3MgZm9yIHBvdGVudGlhbCBvdmVyZmxvd3MgYW5kIGxpbWl0cyByZXRyeSBjb3VudHMuCgpNeSBwcmltYXJ5IGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBidXQgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBzZWVtIHRvIGludHJvZHVjZSBhbnkgbmV3IGZpZWxkcywgbm9yIGRvZXMgaXQgY29weSBkYXRhIHRvIHVzZXJzcGFjZS4gSW4gZmFjdCwgaXQgc2VlbXMgdG8gKnJlc29sdmUqIGEgcG90ZW50aWFsIG92ZXJmbG93IGlzc3VlLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGF0IHNoaWZ0IG9wZXJhdGlvbiwgYnkgaW5jbHVkaW5nIGEgY2hlY2sgb24gdGhlIHRpbWVvdXQgdmFsdWUuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGEgbG9naWMgYnVnIHJlbGF0ZWQgdG8gYW4gb3V0LW9mLWJvdW5kcyBzaGlmdC4gV2hpbGUgaXQgY291bGQgdHJpZ2dlciB1bmRlZmluZWQgYmVoYXZpb3IsIHRoYXQgaXMgbm90IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgc2hpZnQgdGhhdCBnb2VzIGJleW9uZCBhIGRlZmluZWQgYml0IGxlbmd0aC4gVUJTQU4gb3IgS0FTQU4gd291bGQgYmUgc3VmZmljaWVudCB0byBkZXRlY3QgdGhhdC4gSSYjMzk7dmUgZG91YmxlLWNoZWNrZWQgdGhhdCBgcmVxLSZndDtudW1fdGltZW91dGAgaXMgaW5kZWVkIGEgNy1iaXQgZmllbGQsIGFuZCB0aGUgb3ZlcmZsb3cgY2hlY2sgbWFrZXMgc2Vuc2UuCgpHaXZlbiBhbGwgb2YgdGhhdCwgSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgYE5lZWRzS01TQU5gIGlzIGBmYWxzZWAuIFN0YW5kYXJkIEtBU0FOIGFuZCBVQlNBTiBzaG91bGQgYmUgYWRlcXVhdGUgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBLTVNBTiBpcyBub3QgbmVjZXNzYXJ5IGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgYW5kIG91dC1vZi1ib3VuZHMgc2hpZnQgaW4gVENQIHRpbWVvdXQgY2FsY3VsYXRpb24gKGByZXEtXHUwMDNldGltZW91dCBcdTAwM2NcdTAwM2MgcmVxLVx1MDAzZW51bV90aW1lb3V0YCkgYnkgY2FwcGluZyB0aGUgbWF4aW11bSBudW1iZXIgb2YgU1lOQUNLIHJldHJpZXMgdG8gMTI3IGFuZCBhZGRpbmcgb3ZlcmZsb3cgY2hlY2tzIGluIGB0Y3BfcmVxc2tfdGltZW91dF9za2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZS4gU3RhbmRhcmQgS0FTQU4gYW5kIFVCU0FOIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBtZW1vcnkgY29ycnVwdGlvbiBvciB1bmRlZmluZWQgYmVoYXZpb3IgcmVsYXRlZCB0byB0aGlzIGNvZGUuIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBhbmQgb3V0LW9mLWJvdW5kcyBzaGlmdCBpbiBUQ1AgdGltZW91dCBjYWxjdWxhdGlvbiAoYHJlcS1cdTAwM2V0aW1lb3V0IFx1MDAzY1x1MDAzYyByZXEtXHUwMDNlbnVtX3RpbWVvdXRgKSBieSBjYXBwaW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU5BQ0sgcmV0cmllcyB0byAxMjcgYW5kIGFkZGluZyBvdmVyZmxvdyBjaGVja3MgaW4gYHRjcF9yZXFza190aW1lb3V0X3NrYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlcnNwYWNlLiBTdGFuZGFyZCBLQVNBTiBhbmQgVUJTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBjb3JydXB0aW9uIG9yIHVuZGVmaW5lZCBiZWhhdmlvciByZWxhdGVkIHRvIHRoaXMgY29kZS4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjM5OjQ4Ljc0MTI1MDc3NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MDMyMjQ5OTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX3RjcF9zZXRzb2Nrb3B0XCIsXG4gICAgXCJ0Y3BfcmV0cmFuc21pdF90aW1lclwiLFxuICAgIFwicmVxc2tfdGltZXJfaGFuZGxlclwiLFxuICAgIFwidGNwX2NoZWNrX3JlcVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBhbmQgb3V0LW9mLWJvdW5kcyBzaGlmdCBpbiBUQ1AgdGltZW91dCBjYWxjdWxhdGlvbiAoYHJlcS1cXHUwMDNldGltZW91dCBcXHUwMDNjXFx1MDAzYyByZXEtXFx1MDAzZW51bV90aW1lb3V0YCkgYnkgY2FwcGluZyB0aGUgbWF4aW11bSBudW1iZXIgb2YgU1lOQUNLIHJldHJpZXMgdG8gMTI3IGFuZCBhZGRpbmcgb3ZlcmZsb3cgY2hlY2tzIGluIGB0Y3BfcmVxc2tfdGltZW91dF9za2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZS4gU3RhbmRhcmQgS0FTQU4gYW5kIFVCU0FOIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBtZW1vcnkgY29ycnVwdGlvbiBvciB1bmRlZmluZWQgYmVoYXZpb3IgcmVsYXRlZCB0byB0aGlzIGNvZGUuIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBTWU5BQ0sgcmV0cmllcyBsaW1pdHMgYW5kIHRpbWVvdXQgY2FsY3VsYXRpb24gbG9naWMgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYW5kIGJvdW5kcyBgdGNwX3N5bmFja19yZXRyaWVzYCB0byAxMjcuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgcmV0cmFuc21pc3Npb24gbG9naWMuIFRoZSBtb2RpZmljYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIFRDUCBzb2NrZXQgb3B0aW9ucyBhbmQgdGltZXIgY2FsbGJhY2tzIGR1cmluZyBjb25uZWN0aW9uIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTozOTo0OC43NDEyNTcxODVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDg4NDY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDgwNjQzNGNhMDMyODMwOWEzNTBhZWFmZDdiNjE2ZTMwNDEyODY4MWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTU6Mzk6NDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdFxcbmluZGV4IDIwOGY0Njk2N2VlNTkuLmZkNTAzOGI2Y2FiOWYgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdFxcbkBAIC05NTQsNyArOTU0LDcgQEAgdGNwX3N0ZHVyZyAtIEJPT0xFQU5cXG4gXFxuIHRjcF9zeW5hY2tfcmV0cmllcyAtIElOVEVHRVJcXG4gXFx0TnVtYmVyIG9mIHRpbWVzIFNZTkFDS3MgZm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiBhdHRlbXB0IHdpbGxcXG4tXFx0YmUgcmV0cmFuc21pdHRlZC4gU2hvdWxkIG5vdCBiZSBoaWdoZXIgdGhhbiAyNTUuIERlZmF1bHQgdmFsdWVcXG4rXFx0YmUgcmV0cmFuc21pdHRlZC4gU2hvdWxkIG5vdCBiZSBoaWdoZXIgdGhhbiAxMjcuIERlZmF1bHQgdmFsdWVcXG4gXFx0aXMgNSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gMzFzZWNvbmRzIHRpbGwgdGhlIGxhc3QgcmV0cmFuc21pc3Npb25cXG4gXFx0d2l0aCB0aGUgY3VycmVudCBpbml0aWFsIFJUTyBvZiAxc2Vjb25kLiBXaXRoIHRoaXMgdGhlIGZpbmFsIHRpbWVvdXRcXG4gXFx0Zm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiB3aWxsIGhhcHBlbiBhZnRlciA2M3NlY29uZHMuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmhcXG5pbmRleCAyYzViODg5NTMwYjU1Li44YWIyZmQzNjhlZDNiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvdGNwLmhcXG5AQCAtMTgzLDYgKzE4Myw4IEBAIHN0YXRpY19hc3NlcnQoKDEgXFx1MDAzY1xcdTAwM2MgQVRPX0JJVFMpIFxcdTAwM2UgVENQX0RFTEFDS19NQVgpO1xcbiAjZGVmaW5lIE1BWF9UQ1BfS0VFUElOVFZMXFx0MzI3NjdcXG4gI2RlZmluZSBNQVhfVENQX0tFRVBDTlRcXHRcXHQxMjdcXG4gI2RlZmluZSBNQVhfVENQX1NZTkNOVFxcdFxcdDEyN1xcbisvKiByZXF1ZXN0X3NvY2s6Om51bV90aW1lb3V0IGlzIGEgNy1iaXQgZmllbGQuICovXFxuKyNkZWZpbmUgTUFYX1RDUF9TWU5BQ0tfUkVUUklFU1xcdDEyN1xcbiBcXG4gLyogRW5zdXJlIHRoYXQgVENQIFBBV1MgY2hlY2tzIGFyZSByZWxheGVkIGFmdGVyIH4yMTQ3IHNlY29uZHNcXG4gICogdG8gYXZvaWQgb3ZlcmZsb3dzLiBUaGlzIGFzc3VtZXMgYSBjbG9jayBzbWFsbGVyIHRoYW4gMSBNaHouXFxuQEAgLTg4MiwxMiArODg0LDIyIEBAIHN0YXRpYyBpbmxpbmUgdTMyIF9fdGNwX3NldF9ydG8oY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cClcXG4gXFx0cmV0dXJuIHVzZWNzX3RvX2ppZmZpZXMoKHRwLVxcdTAwM2VzcnR0X3VzIFxcdTAwM2VcXHUwMDNlIDMpICsgdHAtXFx1MDAzZXJ0dHZhcl91cyk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuIHtcXG4tXFx0dTY0IHRpbWVvdXQgPSAodTY0KXJlcS1cXHUwMDNldGltZW91dCBcXHUwMDNjXFx1MDAzYyByZXEtXFx1MDAzZW51bV90aW1lb3V0O1xcbitcXHR1MzIgcnRvX21heCA9IHRjcF9ydG9fbWF4KHNrKTtcXG4rXFx0dTY0IHRpbWVvdXQgPSByZXEtXFx1MDAzZXRpbWVvdXQ7XFxuK1xcbitcXHRpZiAocmVxLVxcdTAwM2VudW1fdGltZW91dCBcXHUwMDNlPSBCSVRTX1BFUl9UWVBFKHRpbWVvdXQpIHx8XFxuK1xcdCAgICB0aW1lb3V0IFxcdTAwM2UgVTY0X01BWCBcXHUwMDNlXFx1MDAzZSByZXEtXFx1MDAzZW51bV90aW1lb3V0KVxcbitcXHRcXHRyZXR1cm4gcnRvX21heDtcXG4rXFxuK1xcdHJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQgXFx1MDAzY1xcdTAwM2MgcmVxLVxcdTAwM2VudW1fdGltZW91dCwgcnRvX21heCk7XFxuK31cXG4gXFxuLVxcdHJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQsXFxuLVxcdFxcdFxcdFxcdCAgICB0Y3BfcnRvX21heChyZXEtXFx1MDAzZXJza19saXN0ZW5lcikpO1xcbitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXQoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbit7XFxuK1xcdHJldHVybiB0Y3BfcmVxc2tfdGltZW91dF9zayhyZXEtXFx1MDAzZXJza19saXN0ZW5lciwgcmVxKTtcXG4gfVxcbiBcXG4gdTMyIHRjcF9kZWxhY2tfbWF4KGNvbnN0IHN0cnVjdCBzb2NrICpzayk7XFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcXG5pbmRleCBjYTExODBkYmExZGVhLi5mYzUxNTJkZmEzYzg2IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXFxuKysrIGIvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcXG5AQCAtMzUsNiArMzUsNyBAQCBzdGF0aWMgaW50IGlwX3R0bF9taW4gPSAxO1xcbiBzdGF0aWMgaW50IGlwX3R0bF9tYXggPSAyNTU7XFxuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21pbiA9IDE7XFxuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xcbitzdGF0aWMgaW50IHRjcF9zeW5hY2tfcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkFDS19SRVRSSUVTO1xcbiBzdGF0aWMgaW50IHRjcF9zeW5fbGluZWFyX3RpbWVvdXRzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21pbltdID0geyAwLCAwIH07XFxuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWF4W10gPSB7IEdJRF9UX01BWCwgR0lEX1RfTUFYIH07XFxuQEAgLTEwMzQsNiArMTAzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGlwdjRfbmV0X3RhYmxlW10gPSB7XFxuIFxcdFxcdC5tYXhsZW5cXHRcXHQ9IHNpemVvZih1OCksXFxuIFxcdFxcdC5tb2RlXFx0XFx0PSAwNjQ0LFxcbiBcXHRcXHQucHJvY19oYW5kbGVyXFx0PSBwcm9jX2RvdTh2ZWNfbWlubWF4LFxcbitcXHRcXHQuZXh0cmEyXFx0XFx0PSBcXHUwMDI2dGNwX3N5bmFja19yZXRyaWVzX21heCxcXG4gXFx0fSxcXG4gI2lmZGVmIENPTkZJR19TWU5fQ09PS0lFU1xcbiBcXHR7XFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcC5jIGIvbmV0L2lwdjQvdGNwLmNcXG5pbmRleCA0NTU0NDFmMWI2OTQ5Li4yNDg5NmZhMDhhNWQ4IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3RjcC5jXFxuKysrIGIvbmV0L2lwdjQvdGNwLmNcXG5AQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyB1OCBzZWNzX3RvX3JldHJhbnMoaW50IHNlY29uZHMsIGludCB0aW1lb3V0LCBpbnQgcnRvX21heClcXG4gXFx0XFx0aW50IHBlcmlvZCA9IHRpbWVvdXQ7XFxuIFxcbiBcXHRcXHRyZXMgPSAxO1xcbi1cXHRcXHR3aGlsZSAoc2Vjb25kcyBcXHUwMDNlIHBlcmlvZCBcXHUwMDI2XFx1MDAyNiByZXMgXFx1MDAzYyAyNTUpIHtcXG4rXFx0XFx0d2hpbGUgKHNlY29uZHMgXFx1MDAzZSBwZXJpb2QgXFx1MDAyNlxcdTAwMjYgcmVzIFxcdTAwM2MgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUykge1xcbiBcXHRcXHRcXHRyZXMrKztcXG4gXFx0XFx0XFx0dGltZW91dCBcXHUwMDNjXFx1MDAzYz0gMTtcXG4gXFx0XFx0XFx0aWYgKHRpbWVvdXQgXFx1MDAzZSBydG9fbWF4KVxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfdGltZXIuYyBiL25ldC9pcHY0L3RjcF90aW1lci5jXFxuaW5kZXggYmYxNzFiNWUxZWIzMC4uZGFhNGVhYzA3MmRkOSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3BfdGltZXIuY1xcbisrKyBiL25ldC9pcHY0L3RjcF90aW1lci5jXFxuQEAgLTQ2MiwxMSArNDYyLDEzIEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuIFxcbiBcXHR0Y3Bfc3luX2Fja190aW1lb3V0KHJlcSk7XFxuIFxcbi1cXHQvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuLlxcbitcXHQvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuIHdoZW4gdGhlIHRpbWVvdXQgY291bnRlciBjYW5cXG4rXFx0ICogcmVwcmVzZW50IGl0LlxcbiBcXHQgKiBQYWlyZWQgd2l0aCBXUklURV9PTkNFKCkgaW4gdGNwX3NvY2tfc2V0X3N5bmNudCgpXFxuIFxcdCAqL1xcbiBcXHRtYXhfcmV0cmllcyA9IFJFQURfT05DRShpY3NrLVxcdTAwM2VpY3NrX3N5bl9yZXRyaWVzKSA/IDpcXG4gXFx0XFx0UkVBRF9PTkNFKHNvY2tfbmV0KHNrKS1cXHUwMDNlaXB2NC5zeXNjdGxfdGNwX3N5bmFja19yZXRyaWVzKSArIDE7XFxuK1xcdG1heF9yZXRyaWVzID0gbWluX3QoaW50LCBtYXhfcmV0cmllcywgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUyk7XFxuIFxcbiBcXHRpZiAocmVxLVxcdTAwM2VudW1fdGltZW91dCBcXHUwMDNlPSBtYXhfcmV0cmllcykge1xcbiBcXHRcXHR0Y3Bfd3JpdGVfZXJyKHNrKTtcXG5AQCAtNDg4LDcgKzQ5MCw3IEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuIFxcdGlmICghdHAtXFx1MDAzZXJldHJhbnNfc3RhbXApXFxuIFxcdFxcdHRwLVxcdTAwM2VyZXRyYW5zX3N0YW1wID0gdGNwX3RpbWVfc3RhbXBfdHModHApO1xcbiBcXHR0Y3BfcmVzZXRfeG1pdF90aW1lcihzaywgSUNTS19USU1FX1JFVFJBTlMsXFxuLVxcdFxcdFxcdCAgcmVxLVxcdTAwM2V0aW1lb3V0IFxcdTAwM2NcXHUwMDNjIHJlcS1cXHUwMDNlbnVtX3RpbWVvdXQsIGZhbHNlKTtcXG4rXFx0XFx0XFx0ICAgICB0Y3BfcmVxc2tfdGltZW91dF9zayhzaywgcmVxKSwgZmFsc2UpO1xcbiB9XFxuIFxcbiBzdGF0aWMgYm9vbCB0Y3BfcnR4X3Byb2JlMF90aW1lZF9vdXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTozOTo0OS4xNTY5MTYxOTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NjIyNjE5MzExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb190Y3Bfc2V0c29ja29wdFwiLFxuICAgIFwidGNwX3JldHJhbnNtaXRfdGltZXJcIixcbiAgICBcInJlcXNrX3RpbWVyX2hhbmRsZXJcIixcbiAgICBcInRjcF9jaGVja19yZXFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUQ1AgU1lOQUNLIHJldHJpZXMgbGltaXRzIGFuZCB0aW1lb3V0IGNhbGN1bGF0aW9uIGxvZ2ljIHRvIHByZXZlbnQgc2hpZnQgb3ZlcmZsb3dzIGFuZCBib3VuZHMgYHRjcF9zeW5hY2tfcmV0cmllc2AgdG8gMTI3LiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjb3JlIFRDUCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgYW5kIHJldHJhbnNtaXNzaW9uIGxvZ2ljLiBUaGUgbW9kaWZpY2F0aW9ucyBhcmUgcmVhY2hhYmxlIHZpYSBUQ1Agc29ja2V0IG9wdGlvbnMgYW5kIHRpbWVyIGNhbGxiYWNrcyBkdXJpbmcgY29ubmVjdGlvbiBoYW5kbGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODA2NDM0Y2EwMzI4MzA5YTM1MGFlYWZkN2I2MTZlMzA0MTI4NjgxZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDE1OjM5OjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdFxuaW5kZXggMjA4ZjQ2OTY3ZWU1OS4uZmQ1MDM4YjZjYWI5ZiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0XG4rKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdFxuQEAgLTk1NCw3ICs5NTQsNyBAQCB0Y3Bfc3RkdXJnIC0gQk9PTEVBTlxuIFxuIHRjcF9zeW5hY2tfcmV0cmllcyAtIElOVEVHRVJcbiBcdE51bWJlciBvZiB0aW1lcyBTWU5BQ0tzIGZvciBhIHBhc3NpdmUgVENQIGNvbm5lY3Rpb24gYXR0ZW1wdCB3aWxsXG4tXHRiZSByZXRyYW5zbWl0dGVkLiBTaG91bGQgbm90IGJlIGhpZ2hlciB0aGFuIDI1NS4gRGVmYXVsdCB2YWx1ZVxuK1x0YmUgcmV0cmFuc21pdHRlZC4gU2hvdWxkIG5vdCBiZSBoaWdoZXIgdGhhbiAxMjcuIERlZmF1bHQgdmFsdWVcbiBcdGlzIDUsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIDMxc2Vjb25kcyB0aWxsIHRoZSBsYXN0IHJldHJhbnNtaXNzaW9uXG4gXHR3aXRoIHRoZSBjdXJyZW50IGluaXRpYWwgUlRPIG9mIDFzZWNvbmQuIFdpdGggdGhpcyB0aGUgZmluYWwgdGltZW91dFxuIFx0Zm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiB3aWxsIGhhcHBlbiBhZnRlciA2M3NlY29uZHMuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdGNwLmggYi9pbmNsdWRlL25ldC90Y3AuaFxuaW5kZXggMmM1Yjg4OTUzMGI1NS4uOGFiMmZkMzY4ZWQzYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXG4rKysgYi9pbmNsdWRlL25ldC90Y3AuaFxuQEAgLTE4Myw2ICsxODMsOCBAQCBzdGF0aWNfYXNzZXJ0KCgxIFx1MDAzY1x1MDAzYyBBVE9fQklUUykgXHUwMDNlIFRDUF9ERUxBQ0tfTUFYKTtcbiAjZGVmaW5lIE1BWF9UQ1BfS0VFUElOVFZMXHQzMjc2N1xuICNkZWZpbmUgTUFYX1RDUF9LRUVQQ05UXHRcdDEyN1xuICNkZWZpbmUgTUFYX1RDUF9TWU5DTlRcdFx0MTI3XG4rLyogcmVxdWVzdF9zb2NrOjpudW1fdGltZW91dCBpcyBhIDctYml0IGZpZWxkLiAqL1xuKyNkZWZpbmUgTUFYX1RDUF9TWU5BQ0tfUkVUUklFU1x0MTI3XG4gXG4gLyogRW5zdXJlIHRoYXQgVENQIFBBV1MgY2hlY2tzIGFyZSByZWxheGVkIGFmdGVyIH4yMTQ3IHNlY29uZHNcbiAgKiB0byBhdm9pZCBvdmVyZmxvd3MuIFRoaXMgYXNzdW1lcyBhIGNsb2NrIHNtYWxsZXIgdGhhbiAxIE1oei5cbkBAIC04ODIsMTIgKzg4NCwyMiBAQCBzdGF0aWMgaW5saW5lIHUzMiBfX3RjcF9zZXRfcnRvKGNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHApXG4gXHRyZXR1cm4gdXNlY3NfdG9famlmZmllcygodHAtXHUwMDNlc3J0dF91cyBcdTAwM2VcdTAwM2UgMykgKyB0cC1cdTAwM2VydHR2YXJfdXMpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXQoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4rXHRcdFx0XHRcdFx0IHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbiB7XG4tXHR1NjQgdGltZW91dCA9ICh1NjQpcmVxLVx1MDAzZXRpbWVvdXQgXHUwMDNjXHUwMDNjIHJlcS1cdTAwM2VudW1fdGltZW91dDtcbitcdHUzMiBydG9fbWF4ID0gdGNwX3J0b19tYXgoc2spO1xuK1x0dTY0IHRpbWVvdXQgPSByZXEtXHUwMDNldGltZW91dDtcbitcbitcdGlmIChyZXEtXHUwMDNlbnVtX3RpbWVvdXQgXHUwMDNlPSBCSVRTX1BFUl9UWVBFKHRpbWVvdXQpIHx8XG4rXHQgICAgdGltZW91dCBcdTAwM2UgVTY0X01BWCBcdTAwM2VcdTAwM2UgcmVxLVx1MDAzZW51bV90aW1lb3V0KVxuK1x0XHRyZXR1cm4gcnRvX21heDtcbitcbitcdHJldHVybiAodW5zaWduZWQgbG9uZyltaW5fdCh1NjQsIHRpbWVvdXQgXHUwMDNjXHUwMDNjIHJlcS1cdTAwM2VudW1fdGltZW91dCwgcnRvX21heCk7XG4rfVxuIFxuLVx0cmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCxcbi1cdFx0XHRcdCAgICB0Y3BfcnRvX21heChyZXEtXHUwMDNlcnNrX2xpc3RlbmVyKSk7XG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbit7XG4rXHRyZXR1cm4gdGNwX3JlcXNrX3RpbWVvdXRfc2socmVxLVx1MDAzZXJza19saXN0ZW5lciwgcmVxKTtcbiB9XG4gXG4gdTMyIHRjcF9kZWxhY2tfbWF4KGNvbnN0IHN0cnVjdCBzb2NrICpzayk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmMgYi9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuY1xuaW5kZXggY2ExMTgwZGJhMWRlYS4uZmM1MTUyZGZhM2M4NiAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXG4rKysgYi9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuY1xuQEAgLTM1LDYgKzM1LDcgQEAgc3RhdGljIGludCBpcF90dGxfbWluID0gMTtcbiBzdGF0aWMgaW50IGlwX3R0bF9tYXggPSAyNTU7XG4gc3RhdGljIGludCB0Y3Bfc3luX3JldHJpZXNfbWluID0gMTtcbiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkNOVDtcbitzdGF0aWMgaW50IHRjcF9zeW5hY2tfcmV0cmllc19tYXggPSBNQVhfVENQX1NZTkFDS19SRVRSSUVTO1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9saW5lYXJfdGltZW91dHNfbWF4ID0gTUFYX1RDUF9TWU5DTlQ7XG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgaXBfcGluZ19ncm91cF9yYW5nZV9taW5bXSA9IHsgMCwgMCB9O1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlwX3BpbmdfZ3JvdXBfcmFuZ2VfbWF4W10gPSB7IEdJRF9UX01BWCwgR0lEX1RfTUFYIH07XG5AQCAtMTAzNCw2ICsxMDM1LDcgQEAgc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgaXB2NF9uZXRfdGFibGVbXSA9IHtcbiBcdFx0Lm1heGxlblx0XHQ9IHNpemVvZih1OCksXG4gXHRcdC5tb2RlXHRcdD0gMDY0NCxcbiBcdFx0LnByb2NfaGFuZGxlclx0PSBwcm9jX2RvdTh2ZWNfbWlubWF4LFxuK1x0XHQuZXh0cmEyXHRcdD0gXHUwMDI2dGNwX3N5bmFja19yZXRyaWVzX21heCxcbiBcdH0sXG4gI2lmZGVmIENPTkZJR19TWU5fQ09PS0lFU1xuIFx0e1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcC5jIGIvbmV0L2lwdjQvdGNwLmNcbmluZGV4IDQ1NTQ0MWYxYjY5NDkuLjI0ODk2ZmEwOGE1ZDggMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3AuY1xuKysrIGIvbmV0L2lwdjQvdGNwLmNcbkBAIC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIHU4IHNlY3NfdG9fcmV0cmFucyhpbnQgc2Vjb25kcywgaW50IHRpbWVvdXQsIGludCBydG9fbWF4KVxuIFx0XHRpbnQgcGVyaW9kID0gdGltZW91dDtcbiBcbiBcdFx0cmVzID0gMTtcbi1cdFx0d2hpbGUgKHNlY29uZHMgXHUwMDNlIHBlcmlvZCBcdTAwMjZcdTAwMjYgcmVzIFx1MDAzYyAyNTUpIHtcbitcdFx0d2hpbGUgKHNlY29uZHMgXHUwMDNlIHBlcmlvZCBcdTAwMjZcdTAwMjYgcmVzIFx1MDAzYyBNQVhfVENQX1NZTkFDS19SRVRSSUVTKSB7XG4gXHRcdFx0cmVzKys7XG4gXHRcdFx0dGltZW91dCBcdTAwM2NcdTAwM2M9IDE7XG4gXHRcdFx0aWYgKHRpbWVvdXQgXHUwMDNlIHJ0b19tYXgpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuY1xuaW5kZXggYmYxNzFiNWUxZWIzMC4uZGFhNGVhYzA3MmRkOSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF90aW1lci5jXG4rKysgYi9uZXQvaXB2NC90Y3BfdGltZXIuY1xuQEAgLTQ2MiwxMSArNDYyLDEzIEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4gXG4gXHR0Y3Bfc3luX2Fja190aW1lb3V0KHJlcSk7XG4gXG4tXHQvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuLlxuK1x0LyogQWRkIG9uZSBtb3JlIHJldHJ5IGZvciBmYXN0b3BlbiB3aGVuIHRoZSB0aW1lb3V0IGNvdW50ZXIgY2FuXG4rXHQgKiByZXByZXNlbnQgaXQuXG4gXHQgKiBQYWlyZWQgd2l0aCBXUklURV9PTkNFKCkgaW4gdGNwX3NvY2tfc2V0X3N5bmNudCgpXG4gXHQgKi9cbiBcdG1heF9yZXRyaWVzID0gUkVBRF9PTkNFKGljc2stXHUwMDNlaWNza19zeW5fcmV0cmllcykgPyA6XG4gXHRcdFJFQURfT05DRShzb2NrX25ldChzayktXHUwMDNlaXB2NC5zeXNjdGxfdGNwX3N5bmFja19yZXRyaWVzKSArIDE7XG4rXHRtYXhfcmV0cmllcyA9IG1pbl90KGludCwgbWF4X3JldHJpZXMsIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpO1xuIFxuIFx0aWYgKHJlcS1cdTAwM2VudW1fdGltZW91dCBcdTAwM2U9IG1heF9yZXRyaWVzKSB7XG4gXHRcdHRjcF93cml0ZV9lcnIoc2spO1xuQEAgLTQ4OCw3ICs0OTAsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIFx0aWYgKCF0cC1cdTAwM2VyZXRyYW5zX3N0YW1wKVxuIFx0XHR0cC1cdTAwM2VyZXRyYW5zX3N0YW1wID0gdGNwX3RpbWVfc3RhbXBfdHModHApO1xuIFx0dGNwX3Jlc2V0X3htaXRfdGltZXIoc2ssIElDU0tfVElNRV9SRVRSQU5TLFxuLVx0XHRcdCAgcmVxLVx1MDAzZXRpbWVvdXQgXHUwMDNjXHUwMDNjIHJlcS1cdTAwM2VudW1fdGltZW91dCwgZmFsc2UpO1xuK1x0XHRcdCAgICAgdGNwX3JlcXNrX3RpbWVvdXRfc2soc2ssIHJlcSksIGZhbHNlKTtcbiB9XG4gXG4gc3RhdGljIGJvb2wgdGNwX3J0eF9wcm9iZTBfdGltZWRfb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjM5OjQ5LjE1NjkxNzY1MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3NTgxNjE5ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQ1AgU1lOQUNLIFJldHJ5IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0d2Vha2luZyB0aGUgVENQIFNZTkFDSyByZXRyeSBiZWhhdmlvciwgc3BlY2lmaWNhbGx5IHRoZSB0aW1lb3V0IGNhbGN1bGF0aW9ucyBhbmQgcmV0cnkgbGltaXRzLiBJdCBsb29rcyBsaWtlIGl0J3MgZGVzaWduZWQgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYnkgbW9kaWZ5aW5nIGB0Y3BfcmVxc2tfdGltZW91dGAsIGFuZCBpdCdzIGNhcHBpbmcgYHRjcF9zeW5hY2tfcmV0cmllc2AgYXQgMTI3LiBTZWVtcyBzZW5zaWJsZSwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgdnVsbmVyYWJpbGl0aWVzIGluIHRob3NlIGFyZWFzLlxuXG5HaXZlbiB0aGUgY29yZSBuYXR1cmUgb2YgdGhlc2UgY2hhbmdlcywgYWZmZWN0aW5nIGBpbmNsdWRlL25ldC90Y3AuaGAsIGBuZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuY2AsIGBuZXQvaXB2NC90Y3AuY2AsIGFuZCBgbmV0L2lwdjQvdGNwX3RpbWVyLmNgLCB0aGlzICpkZWZpbml0ZWx5KiB3YXJyYW50cyBzb21lIHNlcmlvdXMgZnV6emluZy4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHdoZXJlIHRvIGZvY3VzIG91ciBlZmZvcnRzLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZC4gVGhlIGNvcmUgb25lcyB0b3VjaGVkIHNlZW0gdG8gYmU6XG4qICAgYHRjcF9yZXFza190aW1lb3V0X3NrYCAoaW5saW5lLCBpbiBgaW5jbHVkZS9uZXQvdGNwLmhgKVxuKiAgIGB0Y3BfcmVxc2tfdGltZW91dGAgKGlubGluZSwgaW4gYGluY2x1ZGUvbmV0L3RjcC5oYClcbiogICBgc2Vjc190b19yZXRyYW5zYCBpbiBgbmV0L2lwdjQvdGNwLmNgXG4qICAgYHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXJgIGluIGBuZXQvaXB2NC90Y3BfdGltZXIuY2BcblxuU2luY2UgdGhvc2UgZmlyc3QgdHdvIGFyZSBpbmxpbmUsIGFuZCB0aGVyZWZvcmUgcHJvYmFibHkgbGVzcyBjcml0aWNhbCBmb3IgdGFyZ2V0ZWQgZnV6emluZywgSSBzaG91bGQgbG9vayBtb3JlIGRlZXBseSBpbnRvIHRoZSBvdGhlciB0d28uIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nIC0gdGhhdCBtZWFucyBpdCdzIGxpa2VseSB0byBiZSBjYWxsZWQgb25seSBmcm9tIHdpdGhpbiB0aGUgc2FtZSBmaWxlLiBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAgaXMgY2FsbGVkLiBTYW1lIGdvZXMgZm9yIGBzZWNzX3RvX3JldHJhbnNgIGFsc28gYmVpbmcgc3RhdGljLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjY1LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6Mzk6NTUuOTE1MDgyMjQ2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDMxMDEyMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX2Zhc3RvcGVuX3N5bmFja190aW1lclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaW5wdXQuYz03MTAzPXN0YXRpYyB2b2lkIHRjcF9yY3Zfc3lucmVjdl9zdGF0ZV9mYXN0b3BlbihzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MTE1LVxcdFdSSVRFX09OQ0UoaW5ldF9jc2soc2spLVxcdTAwM2VpY3NrX3JldHJhbnNtaXRzLCAwKTtcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo3MTE2OlxcdC8qIEluIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoKSBvbiB0aGUgZmlyc3QgU1lOQUNLIFJUTyB3ZSBzZXRcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MTE3LVxcdCAqIHJldHJhbnNfc3RhbXAgYnV0IGRvbid0IGVudGVyIENBX0xvc3MsIHNvIGluIGNhc2UgdGhhdCBoYXBwZW5lZCB3ZVxcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NDQwPXN0YXRpYyB2b2lkIHRjcF91cGRhdGVfcnRvX3N0YXRzKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jLTQ1Ni0gKi9cXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0NTc6c3RhdGljIHZvaWQgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcXG5uZXQvaXB2NC90Y3BfdGltZXIuYy00NTgte1xcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmM9NTM3PXZvaWQgdGNwX3JldHJhbnNtaXRfdGltZXIoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTQ5LVxcdFxcdFxcdCAgICAgc2stXFx1MDAzZXNrX3N0YXRlICE9IFRDUF9GSU5fV0FJVDEpO1xcbm5ldC9pcHY0L3RjcF90aW1lci5jOjU1MDpcXHRcXHR0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHNrLCByZXEpO1xcbm5ldC9pcHY0L3RjcF90aW1lci5jLTU1MS1cXHRcXHQvKiBCZWZvcmUgd2UgcmVjZWl2ZSBBQ0sgdG8gb3VyIFNZTi1BQ0sgZG9uJ3QgcmV0cmFuc21pdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTozOTo1Ny43MTgxOTIwMDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzc2MTAzMjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBSZXRyYW5zbWlzc2lvbiBUaW1pbmcqKlxuXG5SaWdodCwgbGV0J3MgemVybyBpbiBvbiB0aGlzIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAuIEl0J3MgYSBrZXkgZnVuY3Rpb24sIGFuZCB0aGUgd2F5IGl0IGludGVyYWN0cyB3aXRoIGB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyYCBpcyBzb21ldGhpbmcgSSBzaG91bGQgZm9jdXMgb24uIFRoYXQgc3VnZ2VzdHMgYW4gaW1wb3J0YW50IGNvbm5lY3Rpb24gdG8gVENQIEZhc3QgT3BlbiwgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdGhhdCBuZWVkcyBjYXJlZnVsIG1hbmFnZW1lbnQuXG5cbk5vdywgbGV0J3MgZGlnIGludG8gaG93IHRoZSByZXRyYW5zbWlzc2lvbiB0aW1pbmcgaXMgZGV0ZXJtaW5lZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGluZmx1ZW5jaW5nIHRoZSBhY3R1YWwgcmV0cmFuc21pc3Npb24gdGltZS4gU28sIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gY2hlY2sgdGhlIGBzZWNzX3RvX3JldHJhbnNgIHZhcmlhYmxlLiBUaGF0IHdpbGwgdGVsbCBtZSBldmVyeXRoaW5nIEkgbmVlZCB0byBrbm93IGFib3V0IHRoZSBjdXJyZW50IHJldHJhbnNtaXNzaW9uIGJhY2tvZmYsIG9yIHdoZW4gdGhlIG5leHQgcmV0cmFuc21pc3Npb24gd2lsbCBiZSBhdHRlbXB0ZWQuIEkgaGF2ZSB0byBzZWUgaG93IGl0J3MgY2FsY3VsYXRlZCwgYW5kIHdoYXQgZmFjdG9ycyBhcmUgZmVlZGluZyBpbnRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzYxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDA6MDIuMDk0Mjk4MDUxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzM4MTM2NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2Vjc190b19yZXRyYW5zXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcC5jPTMzOT12b2lkIHRjcF9sZWF2ZV9tZW1vcnlfcHJlc3N1cmUoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMzUxLS8qIENvbnZlcnQgc2Vjb25kcyB0byByZXRyYW5zbWl0cyBiYXNlZCBvbiBpbml0aWFsIGFuZCBtYXggdGltZW91dCAqL1xcbm5ldC9pcHY0L3RjcC5jOjM1MjpzdGF0aWMgdTggc2Vjc190b19yZXRyYW5zKGludCBzZWNvbmRzLCBpbnQgdGltZW91dCwgaW50IHJ0b19tYXgpXFxubmV0L2lwdjQvdGNwLmMtMzUzLXtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jPTM4Mzc9aW50IGRvX3RjcF9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTM5MzUtXFx0XFx0V1JJVEVfT05DRShpY3NrLVxcdTAwM2VpY3NrX2FjY2VwdF9xdWV1ZS5yc2txX2RlZmVyX2FjY2VwdCxcXG5uZXQvaXB2NC90Y3AuYzozOTM2OlxcdFxcdFxcdCAgIHNlY3NfdG9fcmV0cmFucyh2YWwsIFRDUF9USU1FT1VUX0lOSVQgLyBIWixcXG5uZXQvaXB2NC90Y3AuYy0zOTM3LVxcdFxcdFxcdFxcdFxcdCAgIFRDUF9SVE9fTUFYIC8gSFopKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDA6MDQuMDI4MTE4NTc5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE1MzI0Nzg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBTb2NrZXQgT3B0aW9ucyBhbmQgUmV0cmFuc21pc3Npb24gVGltZW91dHMqKlxuXG5SaWdodCwgYGRvX3RjcF9zZXRzb2Nrb3B0YCDigJMgdGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgc29ja2V0IG9wdGlvbiBjb25maWd1cmF0aW9ucyBhdCB0aGUgVENQIGxldmVsLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBkaXJlY3RseSByZWxhdGVkIHRvIGBzZWNzX3RvX3JldHJhbnNgLiBTbywgSSdtIHRoaW5raW5nLCBcIklzIHRoZXJlIGEgZGlyZWN0IGxpbmsgaGVyZT9cIi5cblxuT2theSwgc28gSSB3aWxsIG5vdyBhbmFseXplIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBgc2Vjc190b19yZXRyYW5zYC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBpc3N1ZXMuIE5vdyBJIHNob3VsZCBjaGVjayBgdGNwX3JlcXNrX3RpbWVvdXRgLiBJcyBpdCBpbiB0aGlzIHNhbWUgYXJlYT8gSSBzaG91bGQgY2hlY2sgaXQsIGJlY2F1c2UgaXQgaXMgcmVsYXRlZCB0byByZXRyYW5zbWlzc2lvbiB2YWx1ZXMuIEl0IG1pZ2h0IGFmZmVjdCBUQ1AgcmVxdWVzdHMgYW5kIHRoZWlyIHRpbWVvdXRzLCBhbmQgdGhhdCdzIHNvbWV0aGluZyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHdpdGggcmVnYXJkcyB0byBzb2NrZXQgY29uZmlndXJhdGlvbi4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGVzZSB2YWx1ZXMgYXJlIGNvbnNpc3RlbnQgYW5kIGNvcnJlY3RseSBzZXQgdG8gYWNoaWV2ZSBvcHRpbWFsIHBlcmZvcm1hbmNlLiBJJ20gZ29pbmcgdG8gbG9vayBpbnRvIHRoaXMgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjgxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDA6MDkuMTgxMzY5NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjUxNDE0NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9yZXFza190aW1lb3V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3RjcC5oPTg4Mj1zdGF0aWMgaW5saW5lIHUzMiBfX3RjcF9zZXRfcnRvKGNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHApXFxuLS1cXG5pbmNsdWRlL25ldC90Y3AuaC04ODYtXFxuaW5jbHVkZS9uZXQvdGNwLmg6ODg3OnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dF9zayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuaW5jbHVkZS9uZXQvdGNwLmgtODg4LVxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuLS1cXG5pbmNsdWRlL25ldC90Y3AuaC04OTktXFxuaW5jbHVkZS9uZXQvdGNwLmg6OTAwOnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuaW5jbHVkZS9uZXQvdGNwLmgtOTAxLXtcXG5pbmNsdWRlL25ldC90Y3AuaDo5MDI6XFx0cmV0dXJuIHRjcF9yZXFza190aW1lb3V0X3NrKHJlcS1cXHUwMDNlcnNrX2xpc3RlbmVyLCByZXEpO1xcbmluY2x1ZGUvbmV0L3RjcC5oLTkwMy19XFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jPTEwMzM9c3RhdGljIHZvaWQgcmVxc2tfdGltZXJfaGFuZGxlcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTExMi1cXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZxdWV1ZS1cXHUwMDNleW91bmcpO1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTExMzpcXHRcXHRtb2RfdGltZXIoXFx1MDAyNnJlcS1cXHUwMDNlcnNrX3RpbWVyLCBqaWZmaWVzICsgdGNwX3JlcXNrX3RpbWVvdXQocmVxKSk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMTE0LVxcbi0tXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jPTY4Nz1zdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtNzE4LVxcdFxcdFxcdHRtcF9vcHQudHNfcmVjZW50X3N0YW1wID0ga3RpbWVfZ2V0X3NlY29uZHMoKSAtXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jOjcxOTpcXHRcXHRcXHRcXHR0Y3BfcmVxc2tfdGltZW91dChyZXEpIC8gSFo7XFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTcyMC1cXHRcXHRcXHRwYXdzX3JlamVjdCA9IHRjcF9wYXdzX3JlamVjdChcXHUwMDI2dG1wX29wdCwgdGgtXFx1MDAzZXJzdCk7XFxuLS1cXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtNzY3LVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo3Njg6XFx0XFx0XFx0XFx0ZXhwaXJlcyArPSB0Y3BfcmVxc2tfdGltZW91dChyZXEpO1xcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy03NjktXFx0XFx0XFx0XFx0aWYgKCFmYXN0b3BlbilcXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jPTQ1Nz1zdGF0aWMgdm9pZCB0Y3BfZmFzdG9wZW5fc3luYWNrX3RpbWVyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNDkyLVxcdHRjcF9yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfUkVUUkFOUyxcXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0OTM6XFx0XFx0XFx0ICAgICB0Y3BfcmVxc2tfdGltZW91dF9zayhzaywgcmVxKSwgZmFsc2UpO1xcbm5ldC9pcHY0L3RjcF90aW1lci5jLTQ5NC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjQwOjEwLjgzMjc5MDExOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NDQ1NTk5MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBUQ1AgUmVxdWVzdCBTb2NrZXQgVGltZW91dHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gaG93IHRoZXNlIFRDUCByZXF1ZXN0IHNvY2tldCB0aW1lb3V0cyBhcmUgaGFuZGxlZCwgYW5kIGl0IHNlZW1zIGxpa2UgYSBmZXcgZnVuY3Rpb25zIGFyZSBjZW50cmFsIHRvIHRoaXMgcHJvY2Vzcy4gSSBzZWUgdGhhdCBgcmVxc2tfdGltZXJfaGFuZGxlcmAgZGlyZWN0bHkgY2FsbHMgYHRjcF9yZXFza190aW1lb3V0YC4gSW50ZXJlc3RpbmcuIEFsc28sIGB0Y3BfY2hlY2tfcmVxYCBhbHNvIGNhbGxzIGB0Y3BfcmVxc2tfdGltZW91dGAsIGFuZCBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAgY2FsbHMgYHRjcF9yZXFza190aW1lb3V0X3NrYC4gU2VlbXMgbGlrZSBhIHBhdHRlcm4gaGVyZSwgd2l0aCBtdWx0aXBsZSBwYXRocyBsZWFkaW5nIHRvIHRoZXNlIHRpbWVvdXQgZnVuY3Rpb25zLlxuXG5JJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gYSBmZXcga2V5IHN5bWJvbHM6IGBkb190Y3Bfc2V0c29ja29wdGAsIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAsIGByZXFza190aW1lcl9oYW5kbGVyYCwgYW5kIGB0Y3BfY2hlY2tfcmVxYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHBpZWNlcyBmaXQgdG9nZXRoZXIuXG5cbk5vdywgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgcmVsYXRlZCB0byB0aGUgdGltZW91dCBiZWhhdmlvci4gSSBxdWlja2x5IHNjYW5uZWQgZm9yIGFueSByZWxldmFudCBgQ09ORklHYCBvcHRpb25zLiBJIG5vdGljZWQgYENPTkZJR19TWU5fQ09PS0lFU2AgbWVudGlvbmVkIGluIGBzeXNjdGxfbmV0X2lwdjQuY2AsIGJ1dCBpdCBhcHBlYXJzIHRvIGJlIHJlbGF0ZWQgdG8gYW5vdGhlciBzeXNjdGwgc2V0dGluZy4gVGhlIG9uZSBJJ20gdHJhY2tpbmcgaXMgYHRjcF9zeW5hY2tfcmV0cmllc2AsIHNvIEknbGwga2VlcCB0aGF0IGluIG1pbmQuIE5vdGhpbmcgc3BlY2lmaWMgbGVhcHMgb3V0LiBTbywgYXQgbGVhc3QgZm9yIG5vdywgaXQgZG9lc24ndCBsb29rIGxpa2UgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIGZvciB0aGlzIHRpbWVvdXQgbG9naWMuXG5cbkZpbmFsbHksIEknbGwgcXVpY2tseSB2ZXJpZnkgaWYgYHJlcXNrX3RpbWVyX2hhbmRsZXJgIGlzIGRlY2xhcmVkIGBzdGF0aWNgIG9yIG5vdC4gSWYgaXQncyBzdGF0aWMsIEkgd2FudCB0byBmaW5kIHRoZSBjYWxsZXIgd2l0aGluIHRoZSBzYW1lIHNjb3BlLiBJZiBpdCdzIG5vdCwgSSdsbCBicm9hZGVuIG15IHNlYXJjaC4gVW5kZXJzdGFuZGluZyBpdHMgc2NvcGUgYW5kIGNhbGxlciBpcyB2aXRhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHBpY3R1cmUgb2YgdGhpcyBzdWJzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNTAsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDA6MzguMjc4MzkyMDgyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk4MjI5MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXNrX3RpbWVyX2hhbmRsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz0xMDI3PXZvaWQgaW5ldF9jc2tfcmVxc2tfcXVldWVfZHJvcF9hbmRfcHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDMyLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTAzMzpzdGF0aWMgdm9pZCByZXFza190aW1lcl9oYW5kbGVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtMTAzNC17XFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTEwNTktXFx0XFx0cmVmY291bnRfc2V0KFxcdTAwMjZucmVxLVxcdTAwM2Vyc2tfcmVmY250LCAyICsgMSk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYzoxMDYwOlxcdFxcdHRpbWVyX3NldHVwKFxcdTAwMjZucmVxLVxcdTAwM2Vyc2tfdGltZXIsIHJlcXNrX3RpbWVyX2hhbmRsZXIsIFRJTUVSX1BJTk5FRCk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMDYxLVxcdFxcdHJlcXNrX3F1ZXVlX21pZ3JhdGVkKFxcdTAwMjZpbmV0X2Nzayhuc2spLVxcdTAwM2VpY3NrX2FjY2VwdF9xdWV1ZSwgcmVxKTtcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9MTE1MD1zdGF0aWMgYm9vbCByZXFza19xdWV1ZV9oYXNoX3JlcShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTExNTgtXFx0cmVxLVxcdTAwM2V0aW1lb3V0ID0gdGNwX3RpbWVvdXRfaW5pdCgoc3RydWN0IHNvY2sgKilyZXEpO1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6MTE1OTpcXHR0aW1lcl9zZXR1cChcXHUwMDI2cmVxLVxcdTAwM2Vyc2tfdGltZXIsIHJlcXNrX3RpbWVyX2hhbmRsZXIsIFRJTUVSX1BJTk5FRCk7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy0xMTYwLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYz01ND1zdGF0aWMgc3RydWN0IG1pZ3JhdGVfcmV1c2Vwb3J0X3Rlc3RfY2FzZSB7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTgzLVxcdHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jOjg0OlxcdFxcdC5uYW1lID0gXFxcIklQdjQgVENQX05FV19TWU5fUkVDViByZXFza190aW1lcl9oYW5kbGVyXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTg1LVxcdFxcdC5mYW1pbHkgPSBBRl9JTkVULFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWlncmF0ZV9yZXVzZXBvcnQuYy0xMTUtXFx0e1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM6MTE2OlxcdFxcdC5uYW1lID0gXFxcIklQdjYgVENQX05FV19TWU5fUkVDViByZXFza190aW1lcl9oYW5kbGVyXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTExNy1cXHRcXHQuZmFtaWx5ID0gQUZfSU5FVDYsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jPTQ5MT1zdGF0aWMgdm9pZCBydW5fdGVzdChzdHJ1Y3QgbWlncmF0ZV9yZXVzZXBvcnRfdGVzdF9jYXNlICp0ZXN0X2Nhc2UsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9taWdyYXRlX3JldXNlcG9ydC5jLTU0Ny1cXHRcXHQvKiBXYWl0IGZvciBTWU4rQUNLIHRpbWVycyB0byBleHBpcmUgc28gdGhhdFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmM6NTQ4OlxcdFxcdCAqIHJlcXNrX3RpbWVyX2hhbmRsZXIoKSBtaWdyYXRlcyBUQ1BfTkVXX1NZTl9SRUNWIHJlcXVlc3RzLlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21pZ3JhdGVfcmV1c2Vwb3J0LmMtNTQ5LVxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTo0MDo0MC4xNzY2MjkzOTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwNTgxMTE4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIEVudHJ5IFBvaW50IGFuZCBQb3RlbnRpYWwgQ3Jvc3MtRmlsZSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBJJ20gbG9va2luZyBhdCBgcmVxc2tfdGltZXJfaGFuZGxlcmAuIEltbWVkaWF0ZWx5LCB0aGUgXCJoYW5kbGVyXCIgc3VmZml4IGFuZCBjb250ZXh0IGNsdWUgbWUgaW4g4oCTIHRoaXMgaXMgYSB0aW1lciBjYWxsYmFjay4gU28sIGl0IGZ1bmN0aW9ucyBhcyBhbiBlbnRyeSBwb2ludCwgYW5kIHRoYXQgaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBUaGF0IG1lYW5zIHRoaXMgaXMgd2hlcmUgdGhlIGV4ZWN1dGlvbiBmbG93IGJlZ2lucyBhZnRlciBhIHNwZWNpZmljIHRpbWVyIGV2ZW50LiBJJ2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0cmFjaW5nIGV4ZWN1dGlvbi5cblxuTm93LCBgdGNwX2NoZWNrX3JlcWAgaGFzIG1lIHdvbmRlcmluZy4gSXMgdGhpcyBhIGZ1bmN0aW9uIGV4cG9zZWQgdG8gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCwgb3IgaXMgaXQgdXNlZCBhY3Jvc3MgbXVsdGlwbGUgZmlsZXMgaW4gdGhpcyBzcGVjaWZpYyBtb2R1bGU/IEtub3dpbmcgdGhlIHNjb3BlIG9mIGB0Y3BfY2hlY2tfcmVxYCBpcyBjcnVjaWFsLiBJcyBpdCBhbiBpbnRlcm5hbCBmdW5jdGlvbiBvciBpcyBpdCBzb21ldGhpbmcgZGVjbGFyZWQgYXMgYEVYUE9SVF9TWU1CT0xgPyBVbmRlcnN0YW5kaW5nIGl0cyB2aXNpYmlsaXR5IHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgdGhlIGJyZWFkdGggb2YgaXRzIGltcGFjdCBhbmQgaG93IHRpZ2h0bHkgY291cGxlZCB0aGlzIGNvZGUgaXMuIEkgbmVlZCB0byB0cmFjayBkb3duIGl0cyBkZWNsYXJhdGlvbiBhbmQgdXNhZ2UgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUuIEl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgdGhlIHRpbWVyIGV2ZW50LiBEb2VzIHRoZSB0aW1lciBhZmZlY3QgdGhlIHJlc3VsdCBvciB2aWNlIHZlcnNhP1xuXG5cbiIsIklucHV0VG9rZW5zIjo3NjczLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDA6NDQuMjgyNDQzMjY2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ1MzkzNDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9jaGVja19yZXFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvdGNwLmg9NDc4PWVudW0gdGNwX3R3X3N0YXR1cyB0Y3BfdGltZXdhaXRfc3RhdGVfcHJvY2VzcyhzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dyxcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oLTQ4Mi1cXHRcXHRcXHRcXHRcXHQgICAgICBlbnVtIHNrYl9kcm9wX3JlYXNvbiAqZHJvcF9yZWFzb24pO1xcbmluY2x1ZGUvbmV0L3RjcC5oOjQ4MzpzdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuaW5jbHVkZS9uZXQvdGNwLmgtNDg0LVxcdFxcdFxcdCAgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSwgYm9vbCBmYXN0b3BlbixcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTcxNTI9dGNwX3Jjdl9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMTgtXFx0XFx0U0tCX0RSX1NFVChyZWFzb24sIFRDUF9GQVNUT1BFTik7XFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NzIxOTpcXHRcXHRpZiAoIXRjcF9jaGVja19yZXEoc2ssIHNrYiwgcmVxLCB0cnVlLCBcXHUwMDI2cmVxX3N0b2xlbiwgXFx1MDAyNnJlYXNvbikpXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzIyMC1cXHRcXHRcXHRnb3RvIGRpc2NhcmQ7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTIwNzA9aW50IHRjcF92NF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjE2NS1cXHRcXHRcXHR0Y3BfdjRfZmlsbF9jYihza2IsIGlwaCwgdGgpO1xcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MjE2NjpcXHRcXHRcXHRuc2sgPSB0Y3BfY2hlY2tfcmVxKHNrLCBza2IsIHJlcSwgZmFsc2UsIFxcdTAwMjZyZXFfc3RvbGVuLFxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjE2Ny1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmRyb3BfcmVhc29uKTtcXG4tLVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYz01NDY9c3RydWN0IHNvY2sgKnRjcF9jcmVhdGVfb3BlbnJlcV9jaGlsZChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtNjg2LVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo2ODc6c3RydWN0IHNvY2sgKnRjcF9jaGVja19yZXEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy02ODgtXFx0XFx0XFx0ICAgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xNzMwPUlORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCB0Y3BfdjZfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE4MjEtXFx0XFx0XFx0dGNwX3Y2X2ZpbGxfY2Ioc2tiLCBoZHIsIHRoKTtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE4MjI6XFx0XFx0XFx0bnNrID0gdGNwX2NoZWNrX3JlcShzaywgc2tiLCByZXEsIGZhbHNlLCBcXHUwMDI2cmVxX3N0b2xlbixcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE4MjMtXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZkcm9wX3JlYXNvbik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjQwOjQ1LjkyNzg0MjQzM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDg3OTEzNjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhpcyBjb2RlIHNuaXBwZXQ6XG5cbioqRGl2aW5nIGludG8gVENQIENvbm5lY3Rpb24gSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgVENQIGNvbm5lY3Rpb24gcmVxdWVzdHMgYXJlIHZhbGlkYXRlZCwgYW5kIHdoZXJlIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gSXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgdGNwX2NoZWNrX3JlcWAgaXMgdGhlIGtleSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgZnJvbSBib3RoIElQdjQgYW5kIElQdjYgcmVjZXB0aW9uIHBhdGhzIChgdGNwX3Y0X3JjdmAgYW5kIGB0Y3BfdjZfcmN2YCkuIFRob3NlIHJlY2VpdmVyIGZ1bmN0aW9ucyBhcmUgZGVmaW5pdGVseSBnb29kIHN0YXJ0aW5nIHBvaW50cyB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQsIGJ1dCwga25vd2luZyB0aGUgYXJjaGl0ZWN0dXJlLCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhvc2UgYXJlIGluY3JlZGlibHkgaG90IGNvZGUgcGF0aHMg4oCTIGV2ZXJ5IHBhY2tldCBnb2VzIHRocm91Z2ggdGhlbSwgd2hpY2ggbWVhbnMgdGhleSBhcmUgbGlrZWx5IG9wdGltaXplZC4gU28sIGEgZGVlcGVyIGRpdmUgdGhlcmUgd2lsbCBiZSBjb3N0bHkgaW4gdGVybXMgb2YgdW5kZXJzdGFuZGluZy4gVGhlcmVmb3JlLCBgdGNwX2NoZWNrX3JlcWAgaXRzZWxmIHNlZW1zIGxpa2UgYSBiZXR0ZXIsIGxlc3Mgbm9pc3ksIGZvY3VzIHN5bWJvbC4gVGhpcyBpcyB3aGVyZSBJIHNob3VsZCBjb25jZW50cmF0ZSBteSBpbml0aWFsIGVmZm9ydHMuXG5cbk5vdywgbGV0J3MgcGl2b3QuIFNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBjb25uZWN0aW9uIHZhbGlkYXRpb24gYW5kIHBvdGVudGlhbCByZXRyYW5zbWlzc2lvbnMsIGB0Y3BfcmV0cmFuc21pdF90aW1lcmAgaXMgYW5vdGhlciBzeW1ib2wgdGhhdCByZXF1aXJlcyBpbnZlc3RpZ2F0aW9uLiBMZXQncyBzZWUgd2hhdCB0aGF0IGhhcyB0byBvZmZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY2OSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjQwOjUwLjQxNTc1OTU0NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxMzgzOTE1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfcmV0cmFuc21pdF90aW1lclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9pbmV0X2Nvbm5lY3Rpb25fc29jay5oPTE5Mz1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3RpbWVvdXRfZXhwaXJlcyhjb25zdCBzdHJ1Y3Qgc29jayAqc2spXFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0xOTQte1xcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg6MTk1OlxcdHJldHVybiBSRUFEX09OQ0Uoc2stXFx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLmV4cGlyZXMpO1xcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmgtMTk2LX1cXG4tLVxcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmg9MjA0PXN0YXRpYyBpbmxpbmUgdm9pZCBpbmV0X2Nza19jbGVhcl94bWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzaywgY29uc3QgaW50IHdoYXQpXFxuLS1cXG5pbmNsdWRlL25ldC9pbmV0X2Nvbm5lY3Rpb25fc29jay5oLTIxMC0jaWZkZWYgSU5FVF9DU0tfQ0xFQVJfVElNRVJTXFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaDoyMTE6XFx0XFx0c2tfc3RvcF90aW1lcihzaywgXFx1MDAyNnNrLVxcdTAwM2V0Y3BfcmV0cmFuc21pdF90aW1lcik7XFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0yMTItI2VuZGlmXFxuLS1cXG5pbmNsdWRlL25ldC9pbmV0X2Nvbm5lY3Rpb25fc29jay5oPTIyNz1zdGF0aWMgaW5saW5lIHZvaWQgaW5ldF9jc2tfcmVzZXRfeG1pdF90aW1lcihzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IGludCB3aGF0LFxcbi0tXFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaC0yNDItXFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNmljc2stXFx1MDAzZWljc2tfcGVuZGluZywgd2hhdCk7XFxuaW5jbHVkZS9uZXQvaW5ldF9jb25uZWN0aW9uX3NvY2suaDoyNDM6XFx0XFx0c2tfcmVzZXRfdGltZXIoc2ssIFxcdTAwMjZzay1cXHUwMDNldGNwX3JldHJhbnNtaXRfdGltZXIsIHdoZW4pO1xcbmluY2x1ZGUvbmV0L2luZXRfY29ubmVjdGlvbl9zb2NrLmgtMjQ0LVxcdH0gZWxzZSBpZiAod2hhdCA9PSBJQ1NLX1RJTUVfREFDSykge1xcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oPTI0Mj1zdHJ1Y3Qgc2tfZmlsdGVyO1xcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oLTMxMi0gICpcXHRAc2tfdGltZXI6IHNvY2sgY2xlYW51cCB0aW1lclxcbmluY2x1ZGUvbmV0L3NvY2suaDozMTM6ICAqXFx0QHRjcF9yZXRyYW5zbWl0X3RpbWVyOiB0Y3AgcmV0cmFuc21pdCB0aW1lclxcbmluY2x1ZGUvbmV0L3NvY2suaDozMTQ6ICAqXFx0QG1wdGNwX3JldHJhbnNtaXRfdGltZXI6IG1wdGNwIHJldHJhbnNtaXQgdGltZXJcXG5pbmNsdWRlL25ldC9zb2NrLmgtMzE1LSAgKlxcdEBza19zdGFtcDogdGltZSBzdGFtcCBvZiBsYXN0IHBhY2tldCByZWNlaXZlZFxcbi0tXFxuaW5jbHVkZS9uZXQvc29jay5oPTM2NT1zdHJ1Y3Qgc29jayB7XFxuLS1cXG5pbmNsdWRlL25ldC9zb2NrLmgtNDk0LVxcdFxcdHN0cnVjdCB0aW1lcl9saXN0XFx0c2tfdGltZXI7XFxuaW5jbHVkZS9uZXQvc29jay5oOjQ5NTpcXHRcXHRzdHJ1Y3QgdGltZXJfbGlzdFxcdHRjcF9yZXRyYW5zbWl0X3RpbWVyO1xcbmluY2x1ZGUvbmV0L3NvY2suaDo0OTY6XFx0XFx0c3RydWN0IHRpbWVyX2xpc3RcXHRtcHRjcF9yZXRyYW5zbWl0X3RpbWVyO1xcbmluY2x1ZGUvbmV0L3NvY2suaC00OTctXFx0fTtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oPTc1Mz1pbnQgdGNwX3JldHJhbnNtaXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHNlZ3MpO1xcbmluY2x1ZGUvbmV0L3RjcC5oOjc1NDp2b2lkIHRjcF9yZXRyYW5zbWl0X3RpbWVyKHN0cnVjdCBzb2NrICpzayk7XFxuaW5jbHVkZS9uZXQvdGNwLmgtNzU1LXZvaWQgdGNwX3htaXRfcmV0cmFuc21pdF9xdWV1ZShzdHJ1Y3Qgc29jayAqKTtcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM9NzE4PXZvaWQgaW5ldF9jc2tfaW5pdF94bWl0X3RpbWVycyhzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTcyNC1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjcyNTpcXHR0aW1lcl9zZXR1cChcXHUwMDI2c2stXFx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyLCByZXRyYW5zbWl0X2hhbmRsZXIsIDApO1xcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtNzI2LVxcdHRpbWVyX3NldHVwKFxcdTAwMjZpY3NrLVxcdTAwM2VpY3NrX2RlbGFja190aW1lciwgZGVsYWNrX2hhbmRsZXIsIDApO1xcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz03MzE9dm9pZCBpbmV0X2Nza19jbGVhcl94bWl0X3RpbWVycyhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTczNy1cXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjczODpcXHRza19zdG9wX3RpbWVyKHNrLCBcXHUwMDI2c2stXFx1MDAzZXRjcF9yZXRyYW5zbWl0X3RpbWVyKTtcXG5uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jLTczOS1cXHRza19zdG9wX3RpbWVyKHNrLCBcXHUwMDI2aWNzay1cXHUwMDNlaWNza19kZWxhY2tfdGltZXIpO1xcbi0tXFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYz03NDM9dm9pZCBpbmV0X2Nza19jbGVhcl94bWl0X3RpbWVyc19zeW5jKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMtNzUyLVxcbm5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6NzUzOlxcdHNrX3N0b3BfdGltZXJfc3luYyhzaywgXFx1MDAyNnNrLVxcdTAwM2V0Y3BfcmV0cmFuc21pdF90aW1lcik7XFxubmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYy03NTQtXFx0c2tfc3RvcF90aW1lcl9zeW5jKHNrLCBcXHUwMDI2aWNzay1cXHUwMDNlaWNza19kZWxhY2tfdGltZXIpO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz00Mzg9dm9pZCB0Y3BfbGRfUlRPX3JldmVydChzdHJ1Y3Qgc29jayAqc2ssIHUzMiBzZXEpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTQ3MC1cXHRcXHQgKi9cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjQ3MTpcXHRcXHR0Y3BfcmV0cmFuc21pdF90aW1lcihzayk7XFxubmV0L2lwdjQvdGNwX2lwdjQuYy00NzItXFx0fVxcbi0tXFxubmV0L2lwdjQvdGNwX3RpbWVyLmM9Mzg5PXN0YXRpYyB2b2lkIHRjcF9wcm9iZV90aW1lcihzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvaXB2NC90Y3BfdGltZXIuYy00MDctXFx0ICogY29ycmVzcG9uZGluZyBzeXN0ZW0gbGltaXQuIFdlIGFsc28gaW1wbGVtZW50IHNpbWlsYXIgcG9saWN5IHdoZW5cXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo0MDg6XFx0ICogd2UgdXNlIFJUTyB0byBwcm9iZSB3aW5kb3cgaW4gdGNwX3JldHJhbnNtaXRfdGltZXIoKS5cXG5uZXQvaXB2NC90Y3BfdGltZXIuYy00MDktXFx0ICovXFxuLS1cXG5uZXQvaXB2NC90Y3BfdGltZXIuYz00OTY9c3RhdGljIGJvb2wgdGNwX3J0eF9wcm9iZTBfdGltZWRfb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jLTUyNi0vKipcXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo1Mjc6ICogIHRjcF9yZXRyYW5zbWl0X3RpbWVyKCkgLSBUaGUgVENQIHJldHJhbnNtaXQgdGltZW91dCBoYW5kbGVyXFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTI4LSAqICBAc2s6ICBQb2ludGVyIHRvIHRoZSBjdXJyZW50IHNvY2tldC5cXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jLTUzNi0gKi9cXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo1Mzc6dm9pZCB0Y3BfcmV0cmFuc21pdF90aW1lcihzdHJ1Y3Qgc29jayAqc2spXFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNTM4LXtcXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jPTY5Nz12b2lkIHRjcF93cml0ZV90aW1lcl9oYW5kbGVyKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L3RjcF90aW1lci5jLTcwNi1cXHRpZiAodGltZV9hZnRlcih0Y3BfdGltZW91dF9leHBpcmVzKHNrKSwgamlmZmllcykpIHtcXG5uZXQvaXB2NC90Y3BfdGltZXIuYzo3MDc6XFx0XFx0c2tfcmVzZXRfdGltZXIoc2ssIFxcdTAwMjZzay1cXHUwMDNldGNwX3JldHJhbnNtaXRfdGltZXIsXFxubmV0L2lwdjQvdGNwX3RpbWVyLmMtNzA4LVxcdFxcdFxcdCAgICAgICB0Y3BfdGltZW91dF9leHBpcmVzKHNrKSk7XFxuLS1cXG5uZXQvaXB2NC90Y3BfdGltZXIuYy03MjItXFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNmljc2stXFx1MDAzZWljc2tfcGVuZGluZywgMCk7XFxubmV0L2lwdjQvdGNwX3RpbWVyLmM6NzIzOlxcdFxcdHRjcF9yZXRyYW5zbWl0X3RpbWVyKHNrKTtcXG5uZXQvaXB2NC90Y3BfdGltZXIuYy03MjQtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2NC90Y3BfdGltZXIuYz03MzI9c3RhdGljIHZvaWQgdGNwX3dyaXRlX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbm5ldC9pcHY0L3RjcF90aW1lci5jLTczMy17XFxubmV0L2lwdjQvdGNwX3RpbWVyLmM6NzM0OlxcdHN0cnVjdCBzb2NrICpzayA9IHRpbWVyX2NvbnRhaW5lcl9vZihzaywgdCwgdGNwX3JldHJhbnNtaXRfdGltZXIpO1xcbm5ldC9pcHY0L3RjcF90aW1lci5jLTczNS1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTQyOD1zdGF0aWMgdm9pZCBtcHRjcF9zdG9wX3J0eF90aW1lcihzdHJ1Y3Qgc29jayAqc2spXFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDI5LXtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0MzA6XFx0c2tfc3RvcF90aW1lcihzaywgXFx1MDAyNnNrLVxcdTAwM2VtcHRjcF9yZXRyYW5zbWl0X3RpbWVyKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00MzEtXFx0bXB0Y3Bfc2soc2spLVxcdTAwM2V0aW1lcl9pdmFsID0gMDtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTk5Nz1zdGF0aWMgYm9vbCBtcHRjcF9ydHhfdGltZXJfcGVuZGluZyhzdHJ1Y3Qgc29jayAqc2spXFxubmV0L21wdGNwL3Byb3RvY29sLmMtOTk4LXtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo5OTk6XFx0cmV0dXJuIHRpbWVyX3BlbmRpbmcoXFx1MDAyNnNrLVxcdTAwM2VtcHRjcF9yZXRyYW5zbWl0X3RpbWVyKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMDAwLX1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTEwMDI9c3RhdGljIHZvaWQgbXB0Y3BfcmVzZXRfcnR4X3RpbWVyKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTEwMTAtXFx0dG91dCA9IG1wdGNwX3NrKHNrKS1cXHUwMDNldGltZXJfaXZhbDtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoxMDExOlxcdHNrX3Jlc2V0X3RpbWVyKHNrLCBcXHUwMDI2c2stXFx1MDAzZW1wdGNwX3JldHJhbnNtaXRfdGltZXIsIGppZmZpZXMgKyB0b3V0KTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMDEyLX1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTIzMTM9c3RhdGljIGludCBtcHRjcF9yZWN2bXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMjQyNC1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyNDI1OnN0YXRpYyB2b2lkIG1wdGNwX3JldHJhbnNtaXRfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMjQyNi17XFxubmV0L21wdGNwL3Byb3RvY29sLmM6MjQyNzpcXHRzdHJ1Y3Qgc29jayAqc2sgPSB0aW1lcl9jb250YWluZXJfb2Yoc2ssIHQsIG1wdGNwX3JldHJhbnNtaXRfdGltZXIpO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTI0MjgtXFx0c3RydWN0IG1wdGNwX3NvY2sgKm1zayA9IG1wdGNwX3NrKHNrKTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTMwNDQ9c3RhdGljIHZvaWQgX19tcHRjcF9pbml0X3NvY2soc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMzA3NC1cXHQvKiByZS11c2UgdGhlIGNzayByZXRyYW5zIHRpbWVyIGZvciBNUFRDUC1sZXZlbCByZXRyYW5zICovXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzA3NTpcXHR0aW1lcl9zZXR1cChcXHUwMDI2c2stXFx1MDAzZW1wdGNwX3JldHJhbnNtaXRfdGltZXIsIG1wdGNwX3JldHJhbnNtaXRfdGltZXIsIDApO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMwNzYtXFx0dGltZXJfc2V0dXAoXFx1MDAyNm1zay1cXHUwMDNlc2subXB0Y3BfdG91dF90aW1lciwgbXB0Y3BfdG91dF90aW1lciwgMCk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jPTc0PXN0YXRpYyBpbnQgZHVtcF90Y3Bfc29jayhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IHRjcF9zb2NrICp0cCxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A0LmMtMTAxLVxcdFxcdHRpbWVyX2FjdGl2ZSA9IDE7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDQuYzoxMDI6XFx0XFx0dGltZXJfZXhwaXJlcyA9IHNwLVxcdTAwM2V0Y3BfcmV0cmFuc21pdF90aW1lci5leHBpcmVzO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A0LmMtMTAzLVxcdH0gZWxzZSBpZiAoaWNzay1cXHUwMDNlaWNza19wZW5kaW5nID09IElDU0tfVElNRV9QUk9CRTApIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jLTEwNC1cXHRcXHR0aW1lcl9hY3RpdmUgPSA0O1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A0LmM6MTA1OlxcdFxcdHRpbWVyX2V4cGlyZXMgPSBzcC1cXHUwMDNldGNwX3JldHJhbnNtaXRfdGltZXIuZXhwaXJlcztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNC5jLTEwNi1cXHR9IGVsc2UgaWYgKHRpbWVyX3BlbmRpbmcoXFx1MDAyNmljc2stXFx1MDAzZWljc2tfa2VlcGFsaXZlX3RpbWVyKSkge1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDYuYz03ND1zdGF0aWMgaW50IGR1bXBfdGNwNl9zb2NrKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgdGNwNl9zb2NrICp0cCxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A2LmMtMTAxLVxcdFxcdHRpbWVyX2FjdGl2ZSA9IDE7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX3RjcDYuYzoxMDI6XFx0XFx0dGltZXJfZXhwaXJlcyA9IHNwLVxcdTAwM2V0Y3BfcmV0cmFuc21pdF90aW1lci5leHBpcmVzO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A2LmMtMTAzLVxcdH0gZWxzZSBpZiAoaWNzay1cXHUwMDNlaWNza19wZW5kaW5nID09IElDU0tfVElNRV9QUk9CRTApIHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNi5jLTEwNC1cXHRcXHR0aW1lcl9hY3RpdmUgPSA0O1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl90Y3A2LmM6MTA1OlxcdFxcdHRpbWVyX2V4cGlyZXMgPSBzcC1cXHUwMDNldGNwX3JldHJhbnNtaXRfdGltZXIuZXhwaXJlcztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfdGNwNi5jLTEwNi1cXHR9IGVsc2UgaWYgKHRpbWVyX3BlbmRpbmcoXFx1MDAyNmljc2stXFx1MDAzZWljc2tfa2VlcGFsaXZlX3RpbWVyKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTo0MDo1Mi4wMjk2MDUzNTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMzNTM0NzQ1NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVENQIFRpbWVyIGFuZCBTb2NrZXQgT3B0aW9uIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUga2V5IGVudHJ5IHBvaW50cyBpbnRvIHRoZSByZWxldmFudCBUQ1AgbG9naWMsIGtlZXBpbmcgaW4gbWluZCB0aGUgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZnVuY3Rpb25zIGFzIHRoZSBcImNsZWFuZXN0XCIgd2F5IHRvIGFjY2VzcyB0aGUgY29kZS4gSSBuZWVkIHRvIHRyYWNlIGhvdyB0aGUgYHRjcF9yZXRyYW5zbWl0X3RpbWVyYCwgYHJlcXNrX3RpbWVyX2hhbmRsZXJgLCBgdGNwX2NoZWNrX3JlcWAsIGFuZCBgZG9fdGNwX3NldHNvY2tvcHRgIGZ1bmN0aW9ucyByZWxhdGUgdG8gZWFjaCBvdGhlci5cblxuRmlyc3QsIEkgc2VlIHRoYXQgYHRjcF9yZXRyYW5zbWl0X3RpbWVyYCBpcyB0cmlnZ2VyZWQgZnJvbSBgdGNwX3dyaXRlX3RpbWVyX2hhbmRsZXJgLCB3aGljaCBpdHNlbGYgaXMgYSBjYWxsYmFjayBmcm9tIHRoZSBgdGNwX3dyaXRlX3RpbWVyYC4gVGhhdCdzIGEgY2xlYXIgY2hhaW4uIFRoZSBsaXN0IEknbSB3b3JraW5nIHdpdGggaXM6XG5cbiogICBgZG9fdGNwX3NldHNvY2tvcHRgXG4qICAgYHRjcF9yZXRyYW5zbWl0X3RpbWVyYFxuKiAgIGByZXFza190aW1lcl9oYW5kbGVyYFxuKiAgIGB0Y3BfY2hlY2tfcmVxYFxuXG5XYWl0LCBgcmVxc2tfdGltZXJfaGFuZGxlcmAgaXMgbWFya2VkIGFzIGBzdGF0aWNgLiBUaGF0IG1lYW5zIGl0J3Mgbm90IGRpcmVjdGx5IGV4cG9ydGVkLiBIb3dldmVyLCBpdCAqaXMqIGEgdGltZXIgY2FsbGJhY2ssIHNvIGl0cyBhZGRyZXNzIGlzIHRha2VuIGFuZCBwYXNzZWQgdG8gYHRpbWVyX3NldHVwYC4gVGhlcmVmb3JlLCBpdCdzIHNhZmUgdG8gdXNlIGl0LCBldmVuIGlmIGl0J3Mgc3RhdGljLCBzaW5jZSBpdCB3b24ndCBiZSBpbmxpbmVkLiBUaGUgb3RoZXIgdGhyZWUgbG9vayBnb29kOiBgdGNwX2NoZWNrX3JlcWAsIGBkb190Y3Bfc2V0c29ja29wdGAsIGFuZCBgdGNwX3JldHJhbnNtaXRfdGltZXJgIGFyZSBhbGwgbm9uLXN0YXRpYy5cblxuTm93LCBJJ20gZGlnZ2luZyBkZWVwZXIgdG8gc2VlIHdoaWNoIG9mIHRoZXNlIGFyZSB0aGUgYmVzdCBlbnRyeSBwb2ludHMuIExvb2tpbmcgYXQgdGhlIGNhbGwgY2hhaW5zOlxuXG4qICAgYGRvX3RjcF9zZXRzb2Nrb3B0YCBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gYHNlY3NfdG9fcmV0cmFuc2Agd2hlbiBzZXR0aW5nIGBUQ1BfREVGRVJfQUNDRVBUYC4gU2VlbXMgbGlrZSBhIGdvb2QgZW50cnkgcG9pbnQuXG4qICAgYHRjcF9yZXRyYW5zbWl0X3RpbWVyYCBkaXJlY3RseSBjYWxscyBgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcmAuIE1ha2VzIHNlbnNlIGFzIGFuIGVudHJ5IHBvaW50LlxuKiAgIGByZXFza190aW1lcl9oYW5kbGVyYCBkaXJlY3RseSBjYWxscyBgdGNwX3JlcXNrX3RpbWVvdXRgLiBDb25maXJtcyB0aGlzIGlzIGEgZ29vZCBlbnRyeSBwb2ludC5cbiogICBgdGNwX2NoZWNrX3JlcWAgYWxzbyBjYWxscyBgdGNwX3JlcXNrX3RpbWVvdXRgLiBDb25maXJtcyB0aGlzIGlzIGEgZ29vZCBlbnRyeSBwb2ludCBhcyB3ZWxsLlxuXG5TbywgSSBoYXZlIGEgZ29vZCBoYW5kbGUgb24gd2hlcmUgdGhlIGxvZ2ljIHN0YXJ0cy4gVGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJIG5lZWQgdG8gd29ycnkgYWJvdXQgaGVyZS5cblxuQmFzZWQgb24gdGhpcyBhbmFseXNpcywgdGhlIHBhdGNoIGZvY3VzZXMgb24gbW9kaWZ5aW5nIFRDUCBTWU5BQ0sgcmV0cmllcyBhbmQgdGltZW91dCBjYWxjdWxhdGlvbiwgc3BlY2lmaWNhbGx5IHRvIGFkZHJlc3MgcG90ZW50aWFsIG92ZXJmbG93IGlzc3VlcyBhbmQgbGltaXQgYHRjcF9zeW5hY2tfcmV0cmllc2AgdG8gMTI3LiBUaGVzZSBjaGFuZ2VzIHRvdWNoIGNvcmUgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGFuZCByZXRyYW5zbWlzc2lvbiBsb2dpYy4gVGhpcyBsb2dpYyBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggc29ja2V0IG9wdGlvbnMgYW5kIHRpbWVyIGNhbGxiYWNrcyBpbnZvbHZlZCBpbiBjb25uZWN0aW9uIGhhbmRsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjE5OCwiT3V0cHV0VG9rZW5zIjoxMjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDE6MDUuMzgzMDgxOTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX3RjcF9zZXRzb2Nrb3B0XCIsXG4gICAgXCJ0Y3BfcmV0cmFuc21pdF90aW1lclwiLFxuICAgIFwicmVxc2tfdGltZXJfaGFuZGxlclwiLFxuICAgIFwidGNwX2NoZWNrX3JlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBTWU5BQ0sgcmV0cmllcyBsaW1pdHMgYW5kIHRpbWVvdXQgY2FsY3VsYXRpb24gbG9naWMgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYW5kIGJvdW5kcyBgdGNwX3N5bmFja19yZXRyaWVzYCB0byAxMjcuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgcmV0cmFuc21pc3Npb24gbG9naWMuIFRoZSBtb2RpZmljYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIFRDUCBzb2NrZXQgb3B0aW9ucyBhbmQgdGltZXIgY2FsbGJhY2tzIGR1cmluZyBjb25uZWN0aW9uIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX3RjcF9zZXRzb2Nrb3B0XCIsXG4gICAgXCJ0Y3BfcmV0cmFuc21pdF90aW1lclwiLFxuICAgIFwicmVxc2tfdGltZXJfaGFuZGxlclwiLFxuICAgIFwidGNwX2NoZWNrX3JlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBTWU5BQ0sgcmV0cmllcyBsaW1pdHMgYW5kIHRpbWVvdXQgY2FsY3VsYXRpb24gbG9naWMgdG8gcHJldmVudCBzaGlmdCBvdmVyZmxvd3MgYW5kIGJvdW5kcyBgdGNwX3N5bmFja19yZXRyaWVzYCB0byAxMjcuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IGNvcmUgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgcmV0cmFuc21pc3Npb24gbG9naWMuIFRoZSBtb2RpZmljYXRpb25zIGFyZSByZWFjaGFibGUgdmlhIFRDUCBzb2NrZXQgb3B0aW9ucyBhbmQgdGltZXIgY2FsbGJhY2tzIGR1cmluZyBjb25uZWN0aW9uIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTo0MTowNS4zODMxMTE2M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzOTAzNzU4NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNTo0MTowNS4zODM1NzEzMjlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAzODk4OTM5NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIGludGVnZXIgb3ZlcmZsb3cgYW5kIG91dC1vZi1ib3VuZHMgc2hpZnQgaW4gVENQIHRpbWVvdXQgY2FsY3VsYXRpb24gKGByZXEtXFx1MDAzZXRpbWVvdXQgXFx1MDAzY1xcdTAwM2MgcmVxLVxcdTAwM2VudW1fdGltZW91dGApIGJ5IGNhcHBpbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mIFNZTkFDSyByZXRyaWVzIHRvIDEyNyBhbmQgYWRkaW5nIG92ZXJmbG93IGNoZWNrcyBpbiBgdGNwX3JlcXNrX3RpbWVvdXRfc2tgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBvciBkYXRhIGNvcGllZCB0byB1c2Vyc3BhY2UuIFN0YW5kYXJkIEtBU0FOIGFuZCBVQlNBTiBhcmUgc3VmZmljaWVudCB0byBkZXRlY3QgbWVtb3J5IGNvcnJ1cHRpb24gb3IgdW5kZWZpbmVkIGJlaGF2aW9yIHJlbGF0ZWQgdG8gdGhpcyBjb2RlLiBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MDY0MzRjYTAzMjgzMDlhMzUwYWVhZmQ3YjYxNmUzMDQxMjg2ODFkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTU6Mzk6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnJzdCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0XG5pbmRleCAyMDhmNDY5NjdlZTU5Li5mZDUwMzhiNmNhYjlmIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwucnN0XG5AQCAtOTU0LDcgKzk1NCw3IEBAIHRjcF9zdGR1cmcgLSBCT09MRUFOXG4gXG4gdGNwX3N5bmFja19yZXRyaWVzIC0gSU5URUdFUlxuIFx0TnVtYmVyIG9mIHRpbWVzIFNZTkFDS3MgZm9yIGEgcGFzc2l2ZSBUQ1AgY29ubmVjdGlvbiBhdHRlbXB0IHdpbGxcbi1cdGJlIHJldHJhbnNtaXR0ZWQuIFNob3VsZCBub3QgYmUgaGlnaGVyIHRoYW4gMjU1LiBEZWZhdWx0IHZhbHVlXG4rXHRiZSByZXRyYW5zbWl0dGVkLiBTaG91bGQgbm90IGJlIGhpZ2hlciB0aGFuIDEyNy4gRGVmYXVsdCB2YWx1ZVxuIFx0aXMgNSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gMzFzZWNvbmRzIHRpbGwgdGhlIGxhc3QgcmV0cmFuc21pc3Npb25cbiBcdHdpdGggdGhlIGN1cnJlbnQgaW5pdGlhbCBSVE8gb2YgMXNlY29uZC4gV2l0aCB0aGlzIHRoZSBmaW5hbCB0aW1lb3V0XG4gXHRmb3IgYSBwYXNzaXZlIFRDUCBjb25uZWN0aW9uIHdpbGwgaGFwcGVuIGFmdGVyIDYzc2Vjb25kcy5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oXG5pbmRleCAyYzViODg5NTMwYjU1Li44YWIyZmQzNjhlZDNiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvdGNwLmhcbisrKyBiL2luY2x1ZGUvbmV0L3RjcC5oXG5AQCAtMTgzLDYgKzE4Myw4IEBAIHN0YXRpY19hc3NlcnQoKDEgXHUwMDNjXHUwMDNjIEFUT19CSVRTKSBcdTAwM2UgVENQX0RFTEFDS19NQVgpO1xuICNkZWZpbmUgTUFYX1RDUF9LRUVQSU5UVkxcdDMyNzY3XG4gI2RlZmluZSBNQVhfVENQX0tFRVBDTlRcdFx0MTI3XG4gI2RlZmluZSBNQVhfVENQX1NZTkNOVFx0XHQxMjdcbisvKiByZXF1ZXN0X3NvY2s6Om51bV90aW1lb3V0IGlzIGEgNy1iaXQgZmllbGQuICovXG4rI2RlZmluZSBNQVhfVENQX1NZTkFDS19SRVRSSUVTXHQxMjdcbiBcbiAvKiBFbnN1cmUgdGhhdCBUQ1AgUEFXUyBjaGVja3MgYXJlIHJlbGF4ZWQgYWZ0ZXIgfjIxNDcgc2Vjb25kc1xuICAqIHRvIGF2b2lkIG92ZXJmbG93cy4gVGhpcyBhc3N1bWVzIGEgY2xvY2sgc21hbGxlciB0aGFuIDEgTWh6LlxuQEAgLTg4MiwxMiArODg0LDIyIEBAIHN0YXRpYyBpbmxpbmUgdTMyIF9fdGNwX3NldF9ydG8oY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cClcbiBcdHJldHVybiB1c2Vjc190b19qaWZmaWVzKCh0cC1cdTAwM2VzcnR0X3VzIFx1MDAzZVx1MDAzZSAzKSArIHRwLVx1MDAzZXJ0dHZhcl91cyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0Y3BfcmVxc2tfdGltZW91dChzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRjcF9yZXFza190aW1lb3V0X3NrKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbitcdFx0XHRcdFx0XHQgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuIHtcbi1cdHU2NCB0aW1lb3V0ID0gKHU2NClyZXEtXHUwMDNldGltZW91dCBcdTAwM2NcdTAwM2MgcmVxLVx1MDAzZW51bV90aW1lb3V0O1xuK1x0dTMyIHJ0b19tYXggPSB0Y3BfcnRvX21heChzayk7XG4rXHR1NjQgdGltZW91dCA9IHJlcS1cdTAwM2V0aW1lb3V0O1xuK1xuK1x0aWYgKHJlcS1cdTAwM2VudW1fdGltZW91dCBcdTAwM2U9IEJJVFNfUEVSX1RZUEUodGltZW91dCkgfHxcbitcdCAgICB0aW1lb3V0IFx1MDAzZSBVNjRfTUFYIFx1MDAzZVx1MDAzZSByZXEtXHUwMDNlbnVtX3RpbWVvdXQpXG4rXHRcdHJldHVybiBydG9fbWF4O1xuK1xuK1x0cmV0dXJuICh1bnNpZ25lZCBsb25nKW1pbl90KHU2NCwgdGltZW91dCBcdTAwM2NcdTAwM2MgcmVxLVx1MDAzZW51bV90aW1lb3V0LCBydG9fbWF4KTtcbit9XG4gXG4tXHRyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbWluX3QodTY0LCB0aW1lb3V0LFxuLVx0XHRcdFx0ICAgIHRjcF9ydG9fbWF4KHJlcS1cdTAwM2Vyc2tfbGlzdGVuZXIpKTtcbitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGNwX3JlcXNrX3RpbWVvdXQoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKVxuK3tcbitcdHJldHVybiB0Y3BfcmVxc2tfdGltZW91dF9zayhyZXEtXHUwMDNlcnNrX2xpc3RlbmVyLCByZXEpO1xuIH1cbiBcbiB1MzIgdGNwX2RlbGFja19tYXgoY29uc3Qgc3RydWN0IHNvY2sgKnNrKTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9zeXNjdGxfbmV0X2lwdjQuYyBiL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXG5pbmRleCBjYTExODBkYmExZGVhLi5mYzUxNTJkZmEzYzg2IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvc3lzY3RsX25ldF9pcHY0LmNcbisrKyBiL25ldC9pcHY0L3N5c2N0bF9uZXRfaXB2NC5jXG5AQCAtMzUsNiArMzUsNyBAQCBzdGF0aWMgaW50IGlwX3R0bF9taW4gPSAxO1xuIHN0YXRpYyBpbnQgaXBfdHRsX21heCA9IDI1NTtcbiBzdGF0aWMgaW50IHRjcF9zeW5fcmV0cmllc19taW4gPSAxO1xuIHN0YXRpYyBpbnQgdGNwX3N5bl9yZXRyaWVzX21heCA9IE1BWF9UQ1BfU1lOQ05UO1xuK3N0YXRpYyBpbnQgdGNwX3N5bmFja19yZXRyaWVzX21heCA9IE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVM7XG4gc3RhdGljIGludCB0Y3Bfc3luX2xpbmVhcl90aW1lb3V0c19tYXggPSBNQVhfVENQX1NZTkNOVDtcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBpcF9waW5nX2dyb3VwX3JhbmdlX21pbltdID0geyAwLCAwIH07XG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgaXBfcGluZ19ncm91cF9yYW5nZV9tYXhbXSA9IHsgR0lEX1RfTUFYLCBHSURfVF9NQVggfTtcbkBAIC0xMDM0LDYgKzEwMzUsNyBAQCBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSBpcHY0X25ldF90YWJsZVtdID0ge1xuIFx0XHQubWF4bGVuXHRcdD0gc2l6ZW9mKHU4KSxcbiBcdFx0Lm1vZGVcdFx0PSAwNjQ0LFxuIFx0XHQucHJvY19oYW5kbGVyXHQ9IHByb2NfZG91OHZlY19taW5tYXgsXG4rXHRcdC5leHRyYTJcdFx0PSBcdTAwMjZ0Y3Bfc3luYWNrX3JldHJpZXNfbWF4LFxuIFx0fSxcbiAjaWZkZWYgQ09ORklHX1NZTl9DT09LSUVTXG4gXHR7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xuaW5kZXggNDU1NDQxZjFiNjk0OS4uMjQ4OTZmYTA4YTVkOCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcC5jXG4rKysgYi9uZXQvaXB2NC90Y3AuY1xuQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMgdTggc2Vjc190b19yZXRyYW5zKGludCBzZWNvbmRzLCBpbnQgdGltZW91dCwgaW50IHJ0b19tYXgpXG4gXHRcdGludCBwZXJpb2QgPSB0aW1lb3V0O1xuIFxuIFx0XHRyZXMgPSAxO1xuLVx0XHR3aGlsZSAoc2Vjb25kcyBcdTAwM2UgcGVyaW9kIFx1MDAyNlx1MDAyNiByZXMgXHUwMDNjIDI1NSkge1xuK1x0XHR3aGlsZSAoc2Vjb25kcyBcdTAwM2UgcGVyaW9kIFx1MDAyNlx1MDAyNiByZXMgXHUwMDNjIE1BWF9UQ1BfU1lOQUNLX1JFVFJJRVMpIHtcbiBcdFx0XHRyZXMrKztcbiBcdFx0XHR0aW1lb3V0IFx1MDAzY1x1MDAzYz0gMTtcbiBcdFx0XHRpZiAodGltZW91dCBcdTAwM2UgcnRvX21heClcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfdGltZXIuYyBiL25ldC9pcHY0L3RjcF90aW1lci5jXG5pbmRleCBiZjE3MWI1ZTFlYjMwLi5kYWE0ZWFjMDcyZGQ5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX3RpbWVyLmNcbisrKyBiL25ldC9pcHY0L3RjcF90aW1lci5jXG5AQCAtNDYyLDExICs0NjIsMTMgQEAgc3RhdGljIHZvaWQgdGNwX2Zhc3RvcGVuX3N5bmFja190aW1lcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbiBcbiBcdHRjcF9zeW5fYWNrX3RpbWVvdXQocmVxKTtcbiBcbi1cdC8qIEFkZCBvbmUgbW9yZSByZXRyeSBmb3IgZmFzdG9wZW4uXG4rXHQvKiBBZGQgb25lIG1vcmUgcmV0cnkgZm9yIGZhc3RvcGVuIHdoZW4gdGhlIHRpbWVvdXQgY291bnRlciBjYW5cbitcdCAqIHJlcHJlc2VudCBpdC5cbiBcdCAqIFBhaXJlZCB3aXRoIFdSSVRFX09OQ0UoKSBpbiB0Y3Bfc29ja19zZXRfc3luY250KClcbiBcdCAqL1xuIFx0bWF4X3JldHJpZXMgPSBSRUFEX09OQ0UoaWNzay1cdTAwM2VpY3NrX3N5bl9yZXRyaWVzKSA/IDpcbiBcdFx0UkVBRF9PTkNFKHNvY2tfbmV0KHNrKS1cdTAwM2VpcHY0LnN5c2N0bF90Y3Bfc3luYWNrX3JldHJpZXMpICsgMTtcbitcdG1heF9yZXRyaWVzID0gbWluX3QoaW50LCBtYXhfcmV0cmllcywgTUFYX1RDUF9TWU5BQ0tfUkVUUklFUyk7XG4gXG4gXHRpZiAocmVxLVx1MDAzZW51bV90aW1lb3V0IFx1MDAzZT0gbWF4X3JldHJpZXMpIHtcbiBcdFx0dGNwX3dyaXRlX2Vycihzayk7XG5AQCAtNDg4LDcgKzQ5MCw3IEBAIHN0YXRpYyB2b2lkIHRjcF9mYXN0b3Blbl9zeW5hY2tfdGltZXIoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4gXHRpZiAoIXRwLVx1MDAzZXJldHJhbnNfc3RhbXApXG4gXHRcdHRwLVx1MDAzZXJldHJhbnNfc3RhbXAgPSB0Y3BfdGltZV9zdGFtcF90cyh0cCk7XG4gXHR0Y3BfcmVzZXRfeG1pdF90aW1lcihzaywgSUNTS19USU1FX1JFVFJBTlMsXG4tXHRcdFx0ICByZXEtXHUwMDNldGltZW91dCBcdTAwM2NcdTAwM2MgcmVxLVx1MDAzZW51bV90aW1lb3V0LCBmYWxzZSk7XG4rXHRcdFx0ICAgICB0Y3BfcmVxc2tfdGltZW91dF9zayhzaywgcmVxKSwgZmFsc2UpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCB0Y3BfcnR4X3Byb2JlMF90aW1lZF9vdXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDE6MDUuMzgzNTcxOTQ5WiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzg5ODcwNzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEZ1enppbmcgU2Vzc2lvbiBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoLCB3aGljaCBtb2RpZmllcyB0aGUgVENQIFNZTkFDSyByZXRyeSBsb2dpYywgbGlrZWx5ICpkb2Vzbid0KiB3YXJyYW50IGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gVGhlIGNvcmUgY2hhbmdlIGhlcmUgaW52b2x2ZXMgYWRqdXN0aW5nIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGB0Y3Bfc3luYWNrX3JldHJpZXNgIGZyb20gMjU1IHRvIDEyNyBhbmQgaW1wbGVtZW50aW5nIGB0Y3BfcmVxc2tfdGltZW91dF9za2AgdG8gcHJldmVudCBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvd3MgZHVyaW5nIHRoZSB0aW1lb3V0IGNhbGN1bGF0aW9uLiBUaGUgYHJlcS1cdTAwM2VudW1fdGltZW91dGAgZmllbGQgYmVpbmcgNy1iaXRzIGlzIGEga2V5IHBvaW50LCBiZWNhdXNlIHRoYXQgbWFrZXMgc2hpZnRpbmcgYnkgbW9yZSB0aGFuIDYzIGEgcHJvYmxlbS4gSG93ZXZlciwgdGhlIGV4aXN0aW5nIGFuZCBuZXcgY29kZSBjYXJlZnVsbHkgY2hlY2tzIGZvciBwb3RlbnRpYWwgb3ZlcmZsb3dzIGFuZCBsaW1pdHMgcmV0cnkgY291bnRzLlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBidXQgdGhpcyBwYXRjaCBkb2Vzbid0IHNlZW0gdG8gaW50cm9kdWNlIGFueSBuZXcgZmllbGRzLCBub3IgZG9lcyBpdCBjb3B5IGRhdGEgdG8gdXNlcnNwYWNlLiBJbiBmYWN0LCBpdCBzZWVtcyB0byAqcmVzb2x2ZSogYSBwb3RlbnRpYWwgb3ZlcmZsb3cgaXNzdWUsIHNwZWNpZmljYWxseSB3aXRoIHRoYXQgc2hpZnQgb3BlcmF0aW9uLCBieSBpbmNsdWRpbmcgYSBjaGVjayBvbiB0aGUgdGltZW91dCB2YWx1ZS4gSXQncyBlc3NlbnRpYWxseSBhIGxvZ2ljIGJ1ZyByZWxhdGVkIHRvIGFuIG91dC1vZi1ib3VuZHMgc2hpZnQuIFdoaWxlIGl0IGNvdWxkIHRyaWdnZXIgdW5kZWZpbmVkIGJlaGF2aW9yLCB0aGF0IGlzIG5vdCBkaXJlY3RseSByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBXZSdyZSB0YWxraW5nIGFib3V0IGEgc2hpZnQgdGhhdCBnb2VzIGJleW9uZCBhIGRlZmluZWQgYml0IGxlbmd0aC4gVUJTQU4gb3IgS0FTQU4gd291bGQgYmUgc3VmZmljaWVudCB0byBkZXRlY3QgdGhhdC4gSSd2ZSBkb3VibGUtY2hlY2tlZCB0aGF0IGByZXEtXHUwMDNlbnVtX3RpbWVvdXRgIGlzIGluZGVlZCBhIDctYml0IGZpZWxkLCBhbmQgdGhlIG92ZXJmbG93IGNoZWNrIG1ha2VzIHNlbnNlLlxuXG5HaXZlbiBhbGwgb2YgdGhhdCwgSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgYE5lZWRzS01TQU5gIGlzIGBmYWxzZWAuIFN0YW5kYXJkIEtBU0FOIGFuZCBVQlNBTiBzaG91bGQgYmUgYWRlcXVhdGUgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBpc3N1ZXMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBLTVNBTiBpcyBub3QgbmVjZXNzYXJ5IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NjIsIk91dHB1dFRva2VucyI6MTMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTI4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6NDE6MTUuNzczNDQ1Njk0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGFuZCBvdXQtb2YtYm91bmRzIHNoaWZ0IGluIFRDUCB0aW1lb3V0IGNhbGN1bGF0aW9uIChgcmVxLVxcdTAwM2V0aW1lb3V0IFxcdTAwM2NcXHUwMDNjIHJlcS1cXHUwMDNlbnVtX3RpbWVvdXRgKSBieSBjYXBwaW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTWU5BQ0sgcmV0cmllcyB0byAxMjcgYW5kIGFkZGluZyBvdmVyZmxvdyBjaGVja3MgaW4gYHRjcF9yZXFza190aW1lb3V0X3NrYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlcnNwYWNlLiBTdGFuZGFyZCBLQVNBTiBhbmQgVUJTQU4gYXJlIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG1lbW9yeSBjb3JydXB0aW9uIG9yIHVuZGVmaW5lZCBiZWhhdmlvciByZWxhdGVkIHRvIHRoaXMgY29kZS4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW50ZWdlciBvdmVyZmxvdyBhbmQgb3V0LW9mLWJvdW5kcyBzaGlmdCBpbiBUQ1AgdGltZW91dCBjYWxjdWxhdGlvbiAoYHJlcS1cXHUwMDNldGltZW91dCBcXHUwMDNjXFx1MDAzYyByZXEtXFx1MDAzZW51bV90aW1lb3V0YCkgYnkgY2FwcGluZyB0aGUgbWF4aW11bSBudW1iZXIgb2YgU1lOQUNLIHJldHJpZXMgdG8gMTI3IGFuZCBhZGRpbmcgb3ZlcmZsb3cgY2hlY2tzIGluIGB0Y3BfcmVxc2tfdGltZW91dF9za2AuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZS4gU3RhbmRhcmQgS0FTQU4gYW5kIFVCU0FOIGFyZSBzdWZmaWNpZW50IHRvIGRldGVjdCBtZW1vcnkgY29ycnVwdGlvbiBvciB1bmRlZmluZWQgYmVoYXZpb3IgcmVsYXRlZCB0byB0aGlzIGNvZGUuIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow5m52v[1] Phase: Succeeded StartedAt: 2026-08-12 15:41:26 +0000 UTC FinishedAt: 2026-08-12 15:41:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-12 15:41:26 +0000 UTC FinishedAt: 2026-08-12 15:41:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2] Phase: Succeeded StartedAt: 2026-08-12 15:41:26 +0000 UTC FinishedAt: 2026-08-12 19:27:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 15:41:26 +0000 UTC FinishedAt: 2026-08-12 19:27:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 15:41:26 +0000 UTC FinishedAt: 2026-08-12 15:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 15:41:26 +0000 UTC FinishedAt: 2026-08-12 15:41:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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-workflow5m52v/series-workflow5m52v-convert-artifact-1418676930/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 15:41:36 +0000 UTC FinishedAt: 2026-08-12 16:02:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 15:41:36 +0000 UTC FinishedAt: 2026-08-12 16:02:00 +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:*d36e880a-b815-4d1a-ac2d-43e5ed5624c8,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-workflow5m52v/series-workflow5m52v-convert-artifact-1418676930/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": "a49055d8-6391-43cd-a97e-a0718a15d352", "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-workflow5m52v/series-workflow5m52v-build-action-1073874304/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 15:41:36 +0000 UTC FinishedAt: 2026-08-12 16:01:50 +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:*d36e880a-b815-4d1a-ac2d-43e5ed5624c8,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-workflow5m52v/series-workflow5m52v-convert-artifact-1418676930/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": "a49055d8-6391-43cd-a97e-a0718a15d352", "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-workflow5m52v/series-workflow5m52v-build-action-1073874304/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:02:00 +0000 UTC FinishedAt: 2026-08-12 16:02:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:02:00 +0000 UTC FinishedAt: 2026-08-12 16:02:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:02:00 +0000 UTC FinishedAt: 2026-08-12 16:02:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:02:00 +0000 UTC FinishedAt: 2026-08-12 16:02:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-workflow5m52v/series-workflow5m52v-convert-artifact-3626321437/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:02:11 +0000 UTC FinishedAt: 2026-08-12 16:04:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:02:11 +0000 UTC FinishedAt: 2026-08-12 16:04:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a49055d8-6391-43cd-a97e-a0718a15d352,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-workflow5m52v/series-workflow5m52v-build-action-1073874304/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-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:04:38 +0000 UTC FinishedAt: 2026-08-12 16:04:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:04:38 +0000 UTC FinishedAt: 2026-08-12 16:04:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:04:38 +0000 UTC FinishedAt: 2026-08-12 16:24:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:04:38 +0000 UTC FinishedAt: 2026-08-12 16:24:13 +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:*d36e880a-b815-4d1a-ac2d-43e5ed5624c8,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-workflow5m52v/series-workflow5m52v-convert-artifact-3626321437/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": "124a0998-0afa-4a9f-a44a-f8a844941165", "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-workflow5m52v/series-workflow5m52v-build-action-593892089/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:04:38 +0000 UTC FinishedAt: 2026-08-12 16:24:03 +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:*d36e880a-b815-4d1a-ac2d-43e5ed5624c8,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-workflow5m52v/series-workflow5m52v-convert-artifact-3626321437/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": "124a0998-0afa-4a9f-a44a-f8a844941165", "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-workflow5m52v/series-workflow5m52v-build-action-593892089/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:24:13 +0000 UTC FinishedAt: 2026-08-12 16:24:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:24:13 +0000 UTC FinishedAt: 2026-08-12 16:24:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:24:13 +0000 UTC FinishedAt: 2026-08-12 16:26:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:24:13 +0000 UTC FinishedAt: 2026-08-12 16:26: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:*124a0998-0afa-4a9f-a44a-f8a844941165,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-workflow5m52v/series-workflow5m52v-build-action-593892089/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-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:26:17 +0000 UTC FinishedAt: 2026-08-12 19:27:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:26:17 +0000 UTC FinishedAt: 2026-08-12 19:27:36 +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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"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:*a49055d8-6391-43cd-a97e-a0718a15d352,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*124a0998-0afa-4a9f-a44a-f8a844941165,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-workflow5m52v/series-workflow5m52v-build-action-1073874304/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-workflow5m52v/series-workflow5m52v-build-action-593892089/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:26:17 +0000 UTC FinishedAt: 2026-08-12 16:26:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:26:17 +0000 UTC FinishedAt: 2026-08-12 16:26: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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"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-workflow5m52v/series-workflow5m52v-convert-artifact-298097314/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:26:17 +0000 UTC FinishedAt: 2026-08-12 16:26:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:26:17 +0000 UTC FinishedAt: 2026-08-12 16:26:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:26:17 +0000 UTC FinishedAt: 2026-08-12 16:26:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:26:27 +0000 UTC FinishedAt: 2026-08-12 19:27:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5m52v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","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":["do_tcp_setsockopt","tcp_retransmit_timer","reqsk_timer_handler","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"883b56ae58fe657d8497806c7059646e9ba6dbd0","config_name":"upstream-apparmor-kasan.config","series_id":"a221879c-0c47-443c-95b0-bdfd5510675b","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-08-12 16:26:27 +0000 UTC FinishedAt: 2026-08-12 19:27:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a49055d8-6391-43cd-a97e-a0718a15d352,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*124a0998-0afa-4a9f-a44a-f8a844941165,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-workflow5m52v/series-workflow5m52v-build-action-1073874304/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-workflow5m52v/series-workflow5m52v-build-action-593892089/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-workflow5m52v/series-workflow5m52v-convert-artifact-298097314/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,}