Name: series-workflow74jsg Phase: Succeeded StartedAt: 2026-08-26 11:48:14 +0000 UTC FinishedAt: 2026-08-26 15:56:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[0] Phase: Succeeded StartedAt: 2026-08-26 11:48:14 +0000 UTC FinishedAt: 2026-08-26 12:13:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[0].run-triage Phase: Succeeded StartedAt: 2026-08-26 11:48:14 +0000 UTC FinishedAt: 2026-08-26 12:13:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "POSIX_TIMERS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "POSIX_TIMERS" ], "series_id": "6dd63e09-9990-4f04-b67d-e35ee3141b4e" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "posix_cpu_timers_exit", "begin_new_exec" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BPU0lYX1RJTUVSUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7LAogICAgJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSBpbiBgZGVfdGhyZWFkKClgIHdoZXJlIGEgdGhyZWFkJiMzOTtzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIsIHdoaWNoIGlzIHRoZW4gcmVhcGVkLiBUaGlzIGNhdXNlcyBhIFBJRCBsb29rdXAgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIGlmIHBlci10aHJlYWQgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLiBUbyBmaXggdGhpcywgdGhlIHBhdGNoIGRlcXVldWVzIHRoZSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgUElEIGV4Y2hhbmdlLiBUaGlzIGlzIGEgbG9naWMvbGlmZWN5Y2xlIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgYW5kIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyBkdXJpbmcgYGV4ZWN2ZWAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGluIHRoaXMgYXJlYSAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGRlX3RocmVhZCgpYCBpbiBgZnMvZXhlYy5jYCB0byBkZXF1ZXVlIHBlci10aHJlYWQgQ1BVIHRpbWVycyBieSBjYWxsaW5nIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgYmVmb3JlIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyJiMzOTtzIFBJRCBpcyBleGNoYW5nZWQuIFRoaXMgcHJldmVudHMgYSBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgd2hlbiB0aGUgb2xkIGxlYWRlciBpcyByZWFwZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwmIzM5O3MgZXhlY3ZlIHBhdGggYW5kIGlzIHJlYWNoYWJsZSB3aGVuIGEgbXVsdGktdGhyZWFkZWQgcHJvY2VzcyBjYWxscyBleGVjdmUuIEl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTI6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZGY2ODI3ZjAxNDM5NGVlZDUwNmE1YTRmZmRlNmI3MzAzMjViN2Q2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMTI6MDQ6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXhlYy5jIGIvZnMvZXhlYy5jXG5pbmRleCA3NDVmNmViNTI3OWU2Li45YjJkMTQwYmQ5ZjJhIDEwMDY0NFxuLS0tIGEvZnMvZXhlYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leGVjLmNcbkBAIC0xMDAzLDYgJiM0MzsxMDAzLDE4IEBAIHN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuIFx0XHQgKiB0aGUgZm9ybWVyIHRocmVhZCBncm91cCBsZWFkZXI6XG4gXHRcdCAqL1xuIFxuJiM0MzsjaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIGV4Y2hhbmdlX3RpZHMoKSBoYW5kcyB0aGlzIHRocmVhZCYjMzk7cyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsXG4mIzQzO1x0XHQgKiB3aGljaCBpcyByZWFwZWQgcmlnaHQgYWZ0ZXIuIFRoZSBQSUQgbG9va3VwIGluXG4mIzQzO1x0XHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxuJiM0MztcdFx0ICogdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgaGVyZSwgc28gZGVxdWV1ZSB0aGVtIGZpcnN0LlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRzcGluX2xvY2sobG9jayk7XG4mIzQzO1x0XHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrKGxvY2spO1xuJiM0MzsjZW5kaWZcbiYjNDM7XG4gXHRcdC8qIEJlY29tZSBhIHByb2Nlc3MgZ3JvdXAgbGVhZGVyIHdpdGggdGhlIG9sZCBsZWFkZXImIzM5O3MgcGlkLlxuIFx0XHQgKiBUaGUgb2xkIGxlYWRlciBiZWNvbWVzIGEgdGhyZWFkIG9mIHRoZSB0aGlzIHRocmVhZCBncm91cC5cbiBcdFx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTI6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BPU0lYX1RJTUVSUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7LAogICAgJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgZGVfdGhyZWFkKClgIGluIGBmcy9leGVjLmNgIHRvIGRlcXVldWUgcGVyLXRocmVhZCBDUFUgdGltZXJzIGJ5IGNhbGxpbmcgYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBiZWZvcmUgdGhlIHRocmVhZCBncm91cCBsZWFkZXImIzM5O3MgUElEIGlzIGV4Y2hhbmdlZC4gVGhpcyBwcmV2ZW50cyBhIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCB3aGVuIHRoZSBvbGQgbGVhZGVyIGlzIHJlYXBlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCYjMzk7cyBleGVjdmUgcGF0aCBhbmQgaXMgcmVhY2hhYmxlIHdoZW4gYSBtdWx0aS10aHJlYWRlZCBwcm9jZXNzIGNhbGxzIGV4ZWN2ZS4gSXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVkZjY4MjdmMDE0Mzk0ZWVkNTA2YTVhNGZmZGU2YjczMDMyNWI3ZDYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAxMjowNDo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuYwppbmRleCA3NDVmNmViNTI3OWU2Li45YjJkMTQwYmQ5ZjJhIDEwMDY0NAotLS0gYS9mcy9leGVjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhlYy5jCkBAIC0xMDAzLDYgJiM0MzsxMDAzLDE4IEBAIHN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQogCQkgKiB0aGUgZm9ybWVyIHRocmVhZCBncm91cCBsZWFkZXI6CiAJCSAqLwogCiYjNDM7I2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlMKJiM0MzsJCS8qCiYjNDM7CQkgKiBleGNoYW5nZV90aWRzKCkgaGFuZHMgdGhpcyB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLAomIzQzOwkJICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpbgomIzQzOwkJICogdGltZXJfbG9ja19zaWdoYW5kKCkgdGhlbiBmYWlscyB3aGlsZSB0aGUgcGVyIHRocmVhZCBDUFUKJiM0MzsJCSAqIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkIGhlcmUsIHNvIGRlcXVldWUgdGhlbSBmaXJzdC4KJiM0MzsJCSAqLwomIzQzOwkJc3Bpbl9sb2NrKGxvY2spOwomIzQzOwkJcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7CiYjNDM7CQlzcGluX3VubG9jayhsb2NrKTsKJiM0MzsjZW5kaWYKJiM0MzsKIAkJLyogQmVjb21lIGEgcHJvY2VzcyBncm91cCBsZWFkZXIgd2l0aCB0aGUgb2xkIGxlYWRlciYjMzk7cyBwaWQuCiAJCSAqIFRoZSBvbGQgbGVhZGVyIGJlY29tZXMgYSB0aHJlYWQgb2YgdGhlIHRoaXMgdGhyZWFkIGdyb3VwLgogCQkgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTI6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1NgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDEzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIG1vZGlmeWluZyBgZnMvZXhlYy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgZGVfdGhyZWFkKClgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgKmNvbmRpdGlvbmFsbHkqIOKAkyBvbmx5IGlmIGBDT05GSUdfUE9TSVhfVElNRVJTYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGEgcHJldHR5IHNpZ25pZmljYW50IGFkZGl0aW9uLCBlc3BlY2lhbGx5IGdpdmVuIHRoYXQgYGRlX3RocmVhZCgpYCBpcyByaWdodCBpbiB0aGUgaGVhcnQgb2YgdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gcGF0aCwgZGVhbGluZyB3aXRoIHRocmVhZCB0ZXJtaW5hdGlvbiBhbmQgYGV4ZWN2ZWAuIFdlJiMzOTtyZSB0YWxraW5nIGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdHkgaGVyZS4KCkdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCB0aGlzIHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldCYjMzQ7IHRvIG1lLiBBbnkgY2hhbmdlIGluIGEgZnVuY3Rpb24gbGlrZSB0aGlzIGhhcyB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUsIGhhcmQtdG8tZGV0ZWN0IGJ1Z3MgdGhhdCBjb3VsZCBsZWFkIHRvIGNyYXNoZXMgb3IsIHdvcnNlLCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIEl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggaW52ZXN0aW5nIHRpbWUgaW4gdGhvcm91Z2hseSB0ZXN0aW5nIHRoaXMuCgpUaW1lIHRvIGRpdmUgaW4gYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgZGVfdGhyZWFkKClgIGl0c2VsZiwgd2l0aGluIGBmcy9leGVjLmNgLCBrZWVwaW5nIHRoYXQgYFBPU0lYX1RJTUVSU2AgY29uZmlndXJhdGlvbiBpbiBtaW5kLiBJJiMzOTtsbCBwcm9iYWJseSBhbHNvIGRvIGEgcXVpY2sgZ3JlcCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsYXRlZCwgYnV0IHBvdGVudGlhbGx5IGxlc3Mgb2J2aW91cywgY2hhbmdlcyB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgaW50ZXJhY3Rpb25zIG9yIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGJlIHN1cmUgdG8gY2hlY2sgYW55dGhpbmcgZWxzZSB0aGF0IG1heSBiZSBsaW5rZWQgdG8gdGhpcyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlX3RocmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4ZWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGVjLmM9OTE1PXN0YXRpYyB2b2lkIGV4ZWNfbW1fcHV0X29sZChzdHJ1Y3QgbW1fc3RydWN0ICpvbGRfbW0pXG4tLVxuZnMvZXhlYy5jLTkyMS1cbmZzL2V4ZWMuYzo5MjI6c3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG5mcy9leGVjLmMtOTIzLXtcbi0tXG5mcy9leGVjLmM9MTEyMz1zdGF0aWMgc3RydWN0IGZpbGUgKmJwcm1faWRlbnRpdHlfZmlsZShjb25zdCBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2V4ZWMuYy0xMTMyLSAqIHNlZW4gYnkgdXNlcnNwYWNlIHNpbmNlIGVpdGhlciB0aGUgcHJvY2VzcyBpcyBhbHJlYWR5IHRha2luZyBhIGZhdGFsXG5mcy9leGVjLmM6MTEzMzogKiBzaWduYWwgKHZpYSBkZV90aHJlYWQoKSBvciBjb3JlZHVtcCksIG9yIHdpbGwgaGF2ZSBTRUdWIHJhaXNlZFxuZnMvZXhlYy5jLTExMzQtICogKGFmdGVyIGV4ZWNfbW1hcCgpKSBieSBzZWFyY2hfYmluYXJ5X2hhbmRsZXIgKHNlZSBiZWxvdykuXG4tLVxuZnMvZXhlYy5jPTExMzY9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxuLS1cbmZzL2V4ZWMuYy0xMTYzLVx0LyogTWFrZSB0aGlzIHRoZSBvbmx5IHRocmVhZCBpbiB0aGUgdGhyZWFkIGdyb3VwICovXG5mcy9leGVjLmM6MTE2NDpcdHJldHZhbCA9IGRlX3RocmVhZChtZSk7XG5mcy9leGVjLmMtMTE2NS1cdGlmIChyZXR2YWwpXG4tLVxuZnMvZXhlYy5jPTE0Njk9c3RhdGljIHZvaWQgZnJlZV9icHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTE0NzgtXHRpZiAoYnBybS1cdTAwM2VjcmVkKSB7XG5mcy9leGVjLmM6MTQ3OTpcdFx0LyogaW4gY2FzZSBleGVjIGZhaWxzIGJlZm9yZSBkZV90aHJlYWQoKSBzdWNjZWVkcyAqL1xuZnMvZXhlYy5jLTE0ODAtXHRcdGN1cnJlbnQtXHUwMDNlZnMtXHUwMDNlaW5fZXhlYyA9IDA7XG4tLVxuZnMvZXhlYy5jPTE1OTM9c3RhdGljIHZvaWQgY2hlY2tfdW5zYWZlX2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtMTYxNC1cdCAqIE90aGVyd2lzZSB3ZSBzZXQgZnMtXHUwMDNlaW5fZXhlYyA9IDEgdG8gZGVueSBjbG9uZShDTE9ORV9GUylcbmZzL2V4ZWMuYzoxNjE1Olx0ICogZnJvbSBhbm90aGVyIHN1Yi10aHJlYWQgdW50aWwgZGVfdGhyZWFkKCkgc3VjY2VlZHMsIHRoaXNcbmZzL2V4ZWMuYy0xNjE2LVx0ICogc3RhdGUgaXMgcHJvdGVjdGVkIGJ5IGNyZWRfZ3VhcmRfbXV0ZXggd2UgaG9sZC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMjowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDMwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gVGhyZWFkaW5nIGFuZCBFeGVjdXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRlX3RocmVhZGAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBtYXJrZWQgYXMgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgaXNzdWUuIEl0JiMzOTtzIHN0YXRpYywgd2hpY2ggbWVhbnMgaXRzIHNjb3BlIGlzIGxpbWl0ZWQsIHlldCBJIHNlZSBpdCBiZWluZyBjYWxsZWQgZnJvbSBgYmVnaW5fbmV3X2V4ZWNgLiBgYmVnaW5fbmV3X2V4ZWNgIGlzIHRyaWdnZXJlZCBieSB0aGUgYGV4ZWN2ZWAgZmFtaWx5IG9mIGZ1bmN0aW9ucywgcmlnaHQ/IFNvLCB0aGVyZSYjMzk7cyBhIHBvdGVudGlhbCBpbnRlci1tb2R1bGUgZGVwZW5kZW5jeSBoZXJlIHRoYXQgcmVxdWlyZXMgZnVydGhlciBzY3J1dGlueS4KCkdpdmVuIHRoYXQgYGRlX3RocmVhZGAgaXMgc3RhdGljLCBJJiMzOTttIGdvaW5nIHRvIHNoaWZ0IG15IGZvY3VzIGF3YXkgZnJvbSBpdCBkaXJlY3RseS4gSW5zdGVhZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4ZWN1dGlvbiBmbG93LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBgYmVnaW5fbmV3X2V4ZWNgIGFuZCB0aGUgYGV4ZWN2ZWAgZmFtaWx5LiBQZXJoYXBzLCBpdCYjMzk7cyBlYXNpZXIgdG8gdHJhY2sgYGRvX2V4ZWN2ZWF0X2NvbW1vbmAgYW5kIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgLiBUaGUgY29udGV4dCBuZWVkcyBmdXJ0aGVyIGV4YW1pbmF0aW9uISBIbW1tLCBsZXQmIzM5O3Mgc2VlLCBgcG9zaXhfY3B1X3RpbWVyc19leGl0YC4uLiB0aGF0IGNvdWxkIGJlIGludGVyZXN0aW5nLiBXYWl0LCBpcyAqdGhhdCogc3RhdGljIHRvbz8gSSBuZWVkIHRvIGNoZWNrIGl0cyBkZWNsYXJhdGlvbiBhbmQgc2NvcGUuIFRoYXQgbWlnaHQgb2ZmZXIgYSBtb3JlIGRpcmVjdCBwb2ludCBvZiBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGVjLmM9OTIyPXN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmZzL2V4ZWMuYy0xMDEzLVx0XHRzcGluX2xvY2sobG9jayk7XG5mcy9leGVjLmM6MTAxNDpcdFx0cG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7XG5mcy9leGVjLmMtMTAxNS1cdFx0c3Bpbl91bmxvY2sobG9jayk7XG4tLVxuZnMvZXhlYy5jPTExMzY9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxuLS1cbmZzL2V4ZWMuYy0xMjA4LVx0c3Bpbl9sb2NrX2lycShcdTAwMjZtZS1cdTAwM2VzaWdoYW5kLVx1MDAzZXNpZ2xvY2spO1xuZnMvZXhlYy5jOjEyMDk6XHRwb3NpeF9jcHVfdGltZXJzX2V4aXQobWUpO1xuZnMvZXhlYy5jLTEyMTAtXHRzcGluX3VubG9ja19pcnEoXHUwMDI2bWUtXHUwMDNlc2lnaGFuZC1cdTAwM2VzaWdsb2NrKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oPTIyNj12b2lkIHJ1bl9wb3NpeF9jcHVfdGltZXJzKHZvaWQpO1xuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaDoyMjc6dm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmg6MjI4OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0X2dyb3VwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oLTIyOS12b2lkIHNldF9wcm9jZXNzX2NwdV90aW1lcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGludCBjbG9ja19pZHgsXG4tLVxua2VybmVsL2V4aXQuYz0xNTg9c3RhdGljIHZvaWQgX19leGl0X3NpZ25hbChzdHJ1Y3QgcmVsZWFzZV90YXNrX3Bvc3QgKnBvc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmtlcm5lbC9leGl0LmMtMTcwLSNpZmRlZiBDT05GSUdfUE9TSVhfVElNRVJTXG5rZXJuZWwvZXhpdC5jOjE3MTpcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xua2VybmVsL2V4aXQuYy0xNzItXHRpZiAoZ3JvdXBfZGVhZClcbmtlcm5lbC9leGl0LmM6MTczOlx0XHRwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAodHNrKTtcbmtlcm5lbC9leGl0LmMtMTc0LSNlbmRpZlxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDgxLSAqXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDgyOiAqIF9fZXhpdF9zaWduYWwoKSBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpIGFuZCBpZiB0aGUgdGhyZWFkIGdyb3VwIGlzXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDgzLSAqIGRlYWQgaXQgYWxzbyBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZ3JvdXBfZXhpdCgpLiBUaGVzZSBmdW5jdGlvbnMgZGVsZXRlXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ4OS0gKiB0aHJlYWQgZ3JvdXAgaXMgbm90IGRlYWQgdGhleSBvbmx5IGNsZWFuIHVwIHRoZSBwZXIgdGFzayB0aW1lcnMgdmlhXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDkwOiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpLlxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ5MS0gKlxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz02MjQ9c3RhdGljIHZvaWQgY2xlYW51cF90aW1lcnMoc3RydWN0IHBvc2l4X2NwdXRpbWVycyAqcGN0KVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzMtICogaXMgYmVpbmcgcmVhcGVkLiAgV2hlbiB0aGUgZmluYWwgKGxlYWRlcikgdGhyZWFkIGluIHRoZSBncm91cCBpcyByZWFwZWQsXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM0OiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCB3aWxsIGJlIGNhbGxlZCBhZnRlciBwb3NpeF9jcHVfdGltZXJzX2V4aXQuXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNjM1LSAqL1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjYzNjp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02Mzcte1xuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzktfVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjY0MDp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02NDEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzODMKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IFRoaW5raW5nOiBBZGRpbmcgU3ltYm9scyBmb3IgRW5oYW5jZWQgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBjb25maWd1cmF0aW9uLiBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCBpc24mIzM5O3Qgc3RhdGljLCBtZWFuaW5nIGl0JiMzOTtzIGV4dGVybmFsbHkgdmlzaWJsZSwgYW5kIHRoYXQmIzM5O3MgaW1wb3J0YW50IGZvciBhbmFseXNpcy4gVGhlbiB0aGVyZSYjMzk7cyBgZGVfdGhyZWFkYCwgd2hpY2ggKmlzKiBzdGF0aWM7IEkmIzM5O2xsIGtlZXAgdGhhdCBpbiBtaW5kIGZvciBzY29waW5nIGJ1dCBpdCYjMzk7cyBsZXNzIGltbWVkaWF0ZWx5IHJlbGV2YW50IHRvIHRoZSBiaWdnZXIgcGljdHVyZS4gYGJlZ2luX25ld19leGVjYCBpcyBhbHNvIG5vbi1zdGF0aWMuCgpHaXZlbiB0aGUgbm9uLXN0YXRpYyBuYXR1cmUgb2YgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgYW5kIGBiZWdpbl9uZXdfZXhlY2AsIGFuZCBrbm93aW5nIHRoZSBjb250ZXh0IEkmIzM5O20gd29ya2luZyBpbiwgSSYjMzk7bSBnb2luZyB0byBhZGQgYm90aCBvZiB0aG9zZSBmdW5jdGlvbnMgdG8gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuIFRoaXMgc2hvdWxkIGhlbHAgbWUga2VlcCB0cmFjayBvZiB0aGVpciB1c2UgYW5kIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uCgpOb3csIHRoZSBjb25maWd1cmF0aW9uLi4uIEkmIzM5O20gcmVtaW5kZWQgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBoZXJlIGlzIGBQT1NJWF9USU1FUlNgLiBUaW1lIHRvIHB1bGwgdXAgS2NvbmZpZyBhbmQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhhdCBjb25maWcgdmFyaWFibGUgaW5mbHVlbmNlcyB0aGUgYmVoYXZpb3Igb2YgdGhlc2UgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGluIHRoZSBsYXJnZXIgZnJhbWV3b3JrLiBVbmRlcnN0YW5kaW5nIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIHN5bWJvbHMgbWlnaHQgcmVsYXRlIHRvIHRoZSB3aWRlciBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTI6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBPU0lYX1RJTUVSUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbml0L0tjb25maWc9MTc1Mz1jb25maWcgRkhBTkRMRVxuLS1cbmluaXQvS2NvbmZpZy0xNzY1LVxuaW5pdC9LY29uZmlnOjE3NjY6Y29uZmlnIFBPU0lYX1RJTUVSU1xuaW5pdC9LY29uZmlnLTE3NjctXHRib29sIFwmIzM0O1Bvc2l4IENsb2NrcyBcdTAwMjYgdGltZXJzXCYjMzQ7IGlmIEVYUEVSVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBPU0lYIFRpbWVycyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIGBQT1NJWF9USU1FUlNgIG9wdGlvbiBpcyBhIGJvb2xlYW4gY29uZmlnLiBTdHJhaWdodGZvcndhcmQgZW5vdWdoLCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgbmVlZHMgdG8gaW5jbHVkZSBgWyYjMzQ7UE9TSVhfVElNRVJTJiMzNDtdYC4gVGhhdCYjMzk7cyBhIHF1aWNrIHdpbi4KCk5vdywgbGV0IG1lIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGguIEFoLCB5ZXMsIGBkZV90aHJlYWRgIGlzIGluZGVlZCByZWFjaGFibGUuIEl0IGdldHMgY2FsbGVkIGR1cmluZyB0aGUgYGV4ZWN2ZWAgc3lzdGVtIGNhbGwsIHNwZWNpZmljYWxseSB3aGVuIGEgbXVsdGktdGhyZWFkZWQgcHJvY2VzcyBleGVjdXRlcyBgZXhlY3ZlYC4gTWFrZXMgc2Vuc2UuIFRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHNwZWNpZmljIGZhaWx1cmUgc2NlbmFyaW8sIG5hbWVseSB0aGF0IGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgZmFpbHMgaWYgcGVyLXRocmVhZCBDUFUgdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQuIFRoZSBmaXggYXBwZWFycyB0byBiZSBkZXF1ZXVpbmcgdGhvc2UgdGltZXJzICpiZWZvcmUqIHNvbWV0aGluZyBlbHNlIGhhcHBlbnMg4oCTIHNwZWNpZmljYWxseSwgYmVmb3JlIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyJiMzOTtzIFBJRCBpcyBleGNoYW5nZWQuIFRoaXMgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNsYXNzaWMgcmFjZSBjb25kaXRpb24gZml4LCBhbmQgZGVmaW5pdGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIGZ1enouCgpMZXQgbWUgYXJ0aWN1bGF0ZSB0aGF0IGNsZWFybHkgZm9yIHRoZSByZWNvcmQuIFRoZSBwYXRjaCBhbHRlcnMgYGRlX3RocmVhZCgpYCB3aXRoaW4gYGZzL2V4ZWMuY2AuIEl0IGRlcXVldWVzIHBlci10aHJlYWQgQ1BVIHRpbWVycyBieSBpbnZva2luZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIHByaW9yIHRvIHN3aXRjaGluZyB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlciYjMzk7cyBQSUQsIGF2b2lkaW5nIHRoZSBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgd2hlbiB0aGUgb2xkIGxlYWRlciBpcyByZWFwZWQuIFRoaXMgaW1wYWN0cyB0aGUga2VybmVsJiMzOTtzIGNvcmUgYGV4ZWN2ZWAgcGF0aCBhbmQgaXMgcmVhY2hhYmxlIGluIG11bHRpLXRocmVhZGVkIGV4ZWN2ZSBjYWxscy4gV29ydGggZnV6emluZywgYWJzb2x1dGVseS4KClRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgYW5kIGBiZWdpbl9uZXdfZXhlY2AuIEkgc2hvdWxkIHByb2JhYmx5IHZlcmlmeSBgYmVnaW5fbmV3X2V4ZWNgIGp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3Q9MTY1Nj1kaXNwbGF5LWdyYXBoIG9wdGlvbjo6XG4tLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTE2OTktICAgPVx1MDAzZSBtbXB1dFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0OjE3MDA6ICAgPVx1MDAzZSBiZWdpbl9uZXdfZXhlY1xuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTE3MDEtICAgPVx1MDAzZSBsb2FkX2VsZl9iaW5hcnlcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYz0xNzY0PXZvaWQgZnBzaW1kX3Jlc3RvcmVfY3VycmVudF9zdGF0ZSh2b2lkKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jLTE3NzEtXHQgKlxuYXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmM6MTc3MjpcdCAqIFdoZW4gRlAvU0lNRCBpcyBkZXRlY3RlZCwgYmVnaW5fbmV3X2V4ZWMoKSB3aWxsIHNldFxuYXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmMtMTc3My1cdCAqIFRJRl9GT1JFSUdOX0ZQU1RBVEUgdmlhIGZsdXNoX3RocmVhZCgpIC1cdTAwM2UgZnBzaW1kX2ZsdXNoX3RocmVhZCgpLFxuLS1cbmZzL2JpbmZtdF9lbGYuYz04Mjk9c3RhdGljIGludCBsb2FkX2VsZl9iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9iaW5mbXRfZWxmLmMtMTAwOS1cdC8qIEZsdXNoIGFsbCB0cmFjZXMgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIGV4ZWN1dGFibGUgKi9cbmZzL2JpbmZtdF9lbGYuYzoxMDEwOlx0cmV0dmFsID0gYmVnaW5fbmV3X2V4ZWMoYnBybSk7XG5mcy9iaW5mbXRfZWxmLmMtMTAxMS1cdGlmIChyZXR2YWwpXG4tLVxuZnMvYmluZm10X2VsZl9mZHBpYy5jPTE4Mj1zdGF0aWMgaW50IGxvYWRfZWxmX2ZkcGljX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2JpbmZtdF9lbGZfZmRwaWMuYy0zNDgtXHQvKiBmbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXG5mcy9iaW5mbXRfZWxmX2ZkcGljLmM6MzQ5Olx0cmV0dmFsID0gYmVnaW5fbmV3X2V4ZWMoYnBybSk7XG5mcy9iaW5mbXRfZWxmX2ZkcGljLmMtMzUwLVx0aWYgKHJldHZhbClcbi0tXG5mcy9iaW5mbXRfZmxhdC5jPTQwNj1zdGF0aWMgaW50IGxvYWRfZmxhdF9maWxlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sXG4tLVxuZnMvYmluZm10X2ZsYXQuYy01MDgtXHQvKiBGbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXG5mcy9iaW5mbXRfZmxhdC5jOjUwOTpcdHJldCA9IGJlZ2luX25ld19leGVjKGJwcm0pO1xuZnMvYmluZm10X2ZsYXQuYy01MTAtXHRpZiAocmV0KVxuLS1cbmZzL2V4ZWMuYz0yNTg9c3RhdGljIGludCBicHJtX21tX2luaXQoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtMjY3LVxuZnMvZXhlYy5jOjI2ODpcdC8qIFN0YWdlZCBmb3Igd291bGRfZHVtcCgpIG5hcnJvd2luZzsgY29uc3VtZWQgYnkgYmVnaW5fbmV3X2V4ZWMoKS4gKi9cbmZzL2V4ZWMuYy0yNjktXHRicHJtLVx1MDAzZXVzZXJfbnMgPSBnZXRfdXNlcl9ucyhjdXJyZW50X3VzZXJfbnMoKSk7XG4tLVxuZnMvZXhlYy5jPTExMjM9c3RhdGljIHN0cnVjdCBmaWxlICpicHJtX2lkZW50aXR5X2ZpbGUoY29uc3Qgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtMTEzNS0gKi9cbmZzL2V4ZWMuYzoxMTM2OmludCBiZWdpbl9uZXdfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSlcbmZzL2V4ZWMuYy0xMTM3LXtcbi0tXG5mcy9leGVjLmMtMTM0OC19XG5mcy9leGVjLmM6MTM0OTpFWFBPUlRfU1lNQk9MKGJlZ2luX25ld19leGVjKTtcbmZzL2V4ZWMuYy0xMzUwLVxuLS1cbmZzL2V4ZWMuYz0xNDQ4PXN0cnVjdCBmaWxlICpicHJtX29wZW5faW50ZXJwcmV0ZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgY29uc3QgY2hhciAqcGF0aClcbi0tXG5mcy9leGVjLmMtMTQ2MC0gKiBvdmVycmlkZSBhbmQgbGV0IHRoZSBiaW5hcnkgbG9hZCBuYXRpdmVseSByYXRoZXIgdGhhbiBoYXZlXG5mcy9leGVjLmM6MTQ2MTogKiBiZWdpbl9uZXdfZXhlYygpIHJlZnVzZSBpdC4gQSBuby1vcCBvbmNlIGJwcm1fb3Blbl9pbnRlcnByZXRlcigpIHRvb2tcbmZzL2V4ZWMuYy0xNDYyLSAqIHRoZSBzdWJzdGl0dXRlLlxuLS1cbmZzL2V4ZWMuYz0xNzUyPXN0YXRpYyBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTE3ODQtXG5mcy9leGVjLmM6MTc4NTovKiBiaW5mbXQgaGFuZGxlcnMgd2lsbCBjYWxsIGJhY2sgaW50byBiZWdpbl9uZXdfZXhlYygpIG9uIHN1Y2Nlc3MuICovXG5mcy9leGVjLmMtMTc4Ni1zdGF0aWMgaW50IGV4ZWNfYmlucHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jPTE4MzU9c3RhdGljIGludCBicHJtX2V4ZWN2ZShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2V4ZWMuYy0xODQ0LVx0ICogQ2hlY2sgZm9yIHVuc2FmZSBleGVjdXRpb24gc3RhdGVzIGJlZm9yZSBleGVjX2JpbnBybSgpLCB3aGljaFxuZnMvZXhlYy5jOjE4NDU6XHQgKiB3aWxsIGNhbGwgYmFjayBpbnRvIGJlZ2luX25ld19leGVjKCksIGludG8gYnBybV9jcmVkc19mcm9tX2ZpbGUoKSxcbmZzL2V4ZWMuYy0xODQ2LVx0ICogd2hlcmUgc2V0dWlkLW5lc3MgaXMgZXZhbHVhdGVkLlxuLS1cbmluY2x1ZGUvbGludXgvYmluZm10cy5oPTE2MT1leHRlcm4gaW50IF9fbXVzdF9jaGVjayByZW1vdmVfYXJnX3plcm8oc3RydWN0IGxpbnV4X2JpbnBybSAqKTtcbmluY2x1ZGUvbGludXgvYmluZm10cy5oOjE2MjpleHRlcm4gaW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTtcbmluY2x1ZGUvbGludXgvYmluZm10cy5oLTE2My1leHRlcm4gdm9pZCBzZXR1cF9uZXdfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSk7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC5oPTgzNT1zdHJ1Y3QgdGFza19zdHJ1Y3Qge1xuLS1cbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMTg1LVx0ICpcbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxMTg2Olx0ICogLSBub3JtYWxseSBpbml0aWFsaXplZCBieSBiZWdpbl9uZXdfZXhlYygpXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTE4Ny1cdCAqIC0gc2V0IGl0IHdpdGggc2V0X3Rhc2tfY29tbSgpIHRvIGVuc3VyZSBpdCBpcyBhbHdheXNcbi0tXG5rZXJuZWwvZXhlY19zdGF0ZS5jPTcxPWludCB0YXNrX2V4ZWNfc3RhdGVfY29weShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbi0tXG5rZXJuZWwvZXhlY19zdGF0ZS5jLTg1LSAqIFN0b3JlIFRBU0tfRFVNUEFCTEVfKiBvbiBjdXJyZW50LVx1MDAzZWV4ZWNfc3RhdGUuICBBbGwgY2FsbGVyc1xua2VybmVsL2V4ZWNfc3RhdGUuYzo4NjogKiAoY29tbWl0X2NyZWRzLCBiZWdpbl9uZXdfZXhlYywgcHJjdGwoUFJfU0VUX0RVTVBBQkxFKSkgYWN0IG9uIHRoZVxua2VybmVsL2V4ZWNfc3RhdGUuYy04Ny0gKiBydW5uaW5nIHRhc2ssIHdoaWNoIGd1YXJhbnRlZXMgLVx1MDAzZWV4ZWNfc3RhdGUgaXMgYWxsb2NhdGVkIGFuZCBjYW5ub3Rcbi0tXG5ydXN0L2tlcm5lbC90YXNrLnJzPTM1PW1hY3JvX3J1bGVzISBjdXJyZW50IHtcbi0tXG5ydXN0L2tlcm5lbC90YXNrLnJzLTQxLSAgICAgICAgLy8gKiBUbyByZXR1cm4gdG8gdXNlcnNwYWNlLCB0aGUgY2FsbGVyIG11c3QgbGVhdmUgdGhlIGN1cnJlbnQgc2NvcGUuXG5ydXN0L2tlcm5lbC90YXNrLnJzOjQyOiAgICAgICAgLy8gKiBPcGVyYXRpb25zIHN1Y2ggYXMgYGJlZ2luX25ld19leGVjKClgIGFyZSBuZWNlc3NhcmlseSB1bnNhZmUgYW5kIHRoZSBjYWxsZXIgb2ZcbnJ1c3Qva2VybmVsL3Rhc2sucnM6NDM6ICAgICAgICAvLyAgIGBiZWdpbl9uZXdfZXhlYygpYCBpcyByZXNwb25zaWJsZSBmb3Igc2FmZXR5LlxucnVzdC9rZXJuZWwvdGFzay5ycy00NC0gICAgICAgIC8vICogUnVzdCBhYnN0cmFjdGlvbnMgZm9yIHRoaW5ncyBzdWNoIGFzIGEgYGt0aHJlYWRfdXNlX21tKClgIHNjb3BlIG11c3QgcmVxdWlyZSB0aGVcbi0tXG5ydXN0L2tlcm5lbC90YXNrLnJzPTEwNz11bnNhZmUgaW1wbCBTeW5jIGZvciBUYXNrIHt9XG4tLVxucnVzdC9rZXJuZWwvdGFzay5ycy0xMjMtLy8vICogQ2FsbGluZyBgcmVsZWFzZV90YXNrKClgLlxucnVzdC9rZXJuZWwvdGFzay5yczoxMjQ6Ly8vICogQ2FsbGluZyBgYmVnaW5fbmV3X2V4ZWMoKWAgaW4gYSBiaW5hcnkgZm9ybWF0IGxvYWRlci5cbnJ1c3Qva2VybmVsL3Rhc2sucnMtMTI1LS8vL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTU4CgkJCQkJCQlvdXRwdXQ6IDE1NwoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkVudHJ5IFBvaW50cyBmb3IgRnV6emluZyBhbmQgUmVzdWx0IE1hbmFnZW1lbnQqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGlzLCBJJiMzOTttIHRoaW5raW5nIHRoYXQgYGJlZ2luX25ld19leGVjYCBzZWVtcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGZ1enppbmcuIEl0JiMzOTtzIG9mdGVuIHRoZSBjYXNlIHRoYXQgdGhlIHByb2dyYW0gaW5pdGlhbGl6YXRpb24gcm91dGluZXMgYXJlIGZlcnRpbGUgZ3JvdW5kIGZvciBmaW5kaW5nIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMuIEFuZCB5ZWFoLCBgcG9zaXhfY3B1X3RpbWVyc19leGl0YC4uLiB0aGF0JiMzOTtzIGFub3RoZXIgcG90ZW50aWFsbHkganVpY3kgYXJlYSB0byB0YXJnZXQuIFRoZSBpbnRlcmFjdGlvbiB3aXRoIHRpbWVycyBhbHdheXMgaW50cm9kdWNlcyBpbnRlcmVzdGluZyBjb25jdXJyZW5jeSBzY2VuYXJpb3MgYW5kIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9ucyB0aGF0IGZ1enppbmcgZXhjZWxzIGF0IHVuY292ZXJpbmcuCgpMZXQmIzM5O3Mgbm90IGZvcmdldCB0aGUgaW1wb3J0YW5jZSBvZiBjb2xsZWN0aW5nIG91ciByZXN1bHRzIHRob3VnaC4gSSYjMzk7ZCBiZXR0ZXIgbWFrZSBhIG5vdGUgdG8gY2FsbCBzZXQtcmVzdWx0cy4gR2V0dGluZyB0aG9zZSByZXN1bHRzIG9yZ2FuaXplZCBlYXJseSBpcyBhIGdvb2QgaWRlYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BPU0lYX1RJTUVSUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7LAogICAgJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgZGVfdGhyZWFkKClgIGluIGBmcy9leGVjLmNgIHRvIGRlcXVldWUgcGVyLXRocmVhZCBDUFUgdGltZXJzIGJ5IGNhbGxpbmcgYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBiZWZvcmUgdGhlIHRocmVhZCBncm91cCBsZWFkZXImIzM5O3MgUElEIGlzIGV4Y2hhbmdlZC4gVGhpcyBwcmV2ZW50cyBhIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCB3aGVuIHRoZSBvbGQgbGVhZGVyIGlzIHJlYXBlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCYjMzk7cyBleGVjdmUgcGF0aCBhbmQgaXMgcmVhY2hhYmxlIHdoZW4gYSBtdWx0aS10aHJlYWRlZCBwcm9jZXNzIGNhbGxzIGV4ZWN2ZS4gSXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UE9TSVhfVElNRVJTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cG9zaXhfY3B1X3RpbWVyc19leGl0JiMzNDssCiAgICAmIzM0O2JlZ2luX25ld19leGVjJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkZV90aHJlYWQoKWAgaW4gYGZzL2V4ZWMuY2AgdG8gZGVxdWV1ZSBwZXItdGhyZWFkIENQVSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlciYjMzk7cyBQSUQgaXMgZXhjaGFuZ2VkLiBUaGlzIHByZXZlbnRzIGEgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIHdoZW4gdGhlIG9sZCBsZWFkZXIgaXMgcmVhcGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsJiMzOTtzIGV4ZWN2ZSBwYXRoIGFuZCBpcyByZWFjaGFibGUgd2hlbiBhIG11bHRpLXRocmVhZGVkIHByb2Nlc3MgY2FsbHMgZXhlY3ZlLiBJdCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMjoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjEzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSBpbiBgZGVfdGhyZWFkKClgIHdoZXJlIGEgdGhyZWFkJiMzOTtzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIsIHdoaWNoIGlzIHRoZW4gcmVhcGVkLiBUaGlzIGNhdXNlcyBhIFBJRCBsb29rdXAgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIGlmIHBlci10aHJlYWQgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLiBUbyBmaXggdGhpcywgdGhlIHBhdGNoIGRlcXVldWVzIHRoZSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgUElEIGV4Y2hhbmdlLiBUaGlzIGlzIGEgbG9naWMvbGlmZWN5Y2xlIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgYW5kIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyBkdXJpbmcgYGV4ZWN2ZWAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGluIHRoaXMgYXJlYSAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWRmNjgyN2YwMTQzOTRlZWQ1MDZhNWE0ZmZkZTZiNzMwMzI1YjdkNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDI2IDEyOjA0OjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXhlYy5jIGIvZnMvZXhlYy5jCmluZGV4IDc0NWY2ZWI1Mjc5ZTYuLjliMmQxNDBiZDlmMmEgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZWMuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leGVjLmMKQEAgLTEwMDMsNiAmIzQzOzEwMDMsMTggQEAgc3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCiAJCSAqIHRoZSBmb3JtZXIgdGhyZWFkIGdyb3VwIGxlYWRlcjoKIAkJICovCiAKJiM0MzsjaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSUwomIzQzOwkJLyoKJiM0MzsJCSAqIGV4Y2hhbmdlX3RpZHMoKSBoYW5kcyB0aGlzIHRocmVhZCYjMzk7cyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsCiYjNDM7CQkgKiB3aGljaCBpcyByZWFwZWQgcmlnaHQgYWZ0ZXIuIFRoZSBQSUQgbG9va3VwIGluCiYjNDM7CQkgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVQomIzQzOwkJICogdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgaGVyZSwgc28gZGVxdWV1ZSB0aGVtIGZpcnN0LgomIzQzOwkJICovCiYjNDM7CQlzcGluX2xvY2sobG9jayk7CiYjNDM7CQlwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTsKJiM0MzsJCXNwaW5fdW5sb2NrKGxvY2spOwomIzQzOyNlbmRpZgomIzQzOwogCQkvKiBCZWNvbWUgYSBwcm9jZXNzIGdyb3VwIGxlYWRlciB3aXRoIHRoZSBvbGQgbGVhZGVyJiMzOTtzIHBpZC4KIAkJICogVGhlIG9sZCBsZWFkZXIgYmVjb21lcyBhIHRocmVhZCBvZiB0aGUgdGhpcyB0aHJlYWQgZ3JvdXAuCiAJCSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1MwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggUmVsYXRlZCB0byBQT1NJWCBDUFUgVGltZXJzIGFuZCBgZXhlY3ZlYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZnMvZXhlYy5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRlX3RocmVhZCgpYCBmdW5jdGlvbi4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXNpZGVzIHVuZGVyIGFuIGAjaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU2AgYmxvY2ssIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIHNvbWV0aGluZyBkZWFsaW5nIHdpdGggUE9TSVgtY29tcGxpYW50IENQVSB0aW1lcnMuIFRoZSBrZXkgYWN0aW9uIGhlcmUgaXMgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgd2hpbGUgYSBsb2NrIGlzIGhlbGQsIHN1Z2dlc3Rpbmcgc3luY2hyb25pemF0aW9uIGlzIGNydWNpYWwuIFRoZSBjb21tZW50IHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgY29udGV4dDogdGhpcyBpcyB0cmlnZ2VyZWQgZHVyaW5nIGBleGVjdmVgIGFuZCBkZWFscyB3aXRoIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyB2aWEgYGV4Y2hhbmdlX3RpZHMoKWAuIEFwcGFyZW50bHksIHRoZSBvbGQgbGVhZGVyIGlzIHF1aWNrbHkgcmVhcGVkLiBUaGUgcHJvYmxlbSBhcmlzZXMgd2hlbiB0aGUgUElEIGxvb2t1cCB1c2VkIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgZmFpbHMgd2hpbGUgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLCB3aGljaCB3b3VsZCBsZWFkIHRvIGEgbWVtb3J5IGFjY2VzcyB2aW9sYXRpb24uIFRoaXMgaXMgbGlrZWx5IGEgZml4IGZvciBhIHNlcmlvdXMgaXNzdWUsIGxpa2UgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UsIGEgbG9ja2luZyBidWcsIG9yIHBvdGVudGlhbGx5IGEgdGltZXIgZmlyaW5nIG9uIGEgdGFzayB0aGF0IGlzIG5vIGxvbmdlciB2YWxpZC4gSSB0aGluayB0aGUgdGltZXIgaGFzIGEgcG9pbnRlciB0byB0aGUgdGFzaywgYW5kIHRoZSB0YXNrIG1pZ2h0IGJlIGZyZWVkIHByaW9yIHRvIHRoZSB0aW1lci4gSXQgZG9lc24mIzM5O3Qgc2VlbSB0byBpbnZvbHZlIGFueSBvYnZpb3VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcyBiYXNlZCBvbiB3aGF0IEkgY2FuIHNlZS4gSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCBmdW5jdGlvbiB0byBjb25maXJtIG15IGluaXRpYWwgYXNzZXNzbWVudCBvZiB0aGUgaXNzdWUgYW5kIHRoZSBzYWZldHkgb2YgdGhlIHByb3Bvc2VkIGZpeC4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgbGlmZWN5Y2xlIG9mIHRoZXNlIHRpbWVycyBkdXJpbmcgcHJvY2VzcyBleGVjdXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGVjLmM9OTIyPXN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmZzL2V4ZWMuYy0xMDEzLVx0XHRzcGluX2xvY2sobG9jayk7XG5mcy9leGVjLmM6MTAxNDpcdFx0cG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7XG5mcy9leGVjLmMtMTAxNS1cdFx0c3Bpbl91bmxvY2sobG9jayk7XG4tLVxuZnMvZXhlYy5jPTExMzY9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxuLS1cbmZzL2V4ZWMuYy0xMjA4LVx0c3Bpbl9sb2NrX2lycShcdTAwMjZtZS1cdTAwM2VzaWdoYW5kLVx1MDAzZXNpZ2xvY2spO1xuZnMvZXhlYy5jOjEyMDk6XHRwb3NpeF9jcHVfdGltZXJzX2V4aXQobWUpO1xuZnMvZXhlYy5jLTEyMTAtXHRzcGluX3VubG9ja19pcnEoXHUwMDI2bWUtXHUwMDNlc2lnaGFuZC1cdTAwM2VzaWdsb2NrKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oPTIyNj12b2lkIHJ1bl9wb3NpeF9jcHVfdGltZXJzKHZvaWQpO1xuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaDoyMjc6dm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmg6MjI4OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0X2dyb3VwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oLTIyOS12b2lkIHNldF9wcm9jZXNzX2NwdV90aW1lcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGludCBjbG9ja19pZHgsXG4tLVxua2VybmVsL2V4aXQuYz0xNTg9c3RhdGljIHZvaWQgX19leGl0X3NpZ25hbChzdHJ1Y3QgcmVsZWFzZV90YXNrX3Bvc3QgKnBvc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmtlcm5lbC9leGl0LmMtMTcwLSNpZmRlZiBDT05GSUdfUE9TSVhfVElNRVJTXG5rZXJuZWwvZXhpdC5jOjE3MTpcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xua2VybmVsL2V4aXQuYy0xNzItXHRpZiAoZ3JvdXBfZGVhZClcbmtlcm5lbC9leGl0LmM6MTczOlx0XHRwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAodHNrKTtcbmtlcm5lbC9leGl0LmMtMTc0LSNlbmRpZlxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDgxLSAqXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDgyOiAqIF9fZXhpdF9zaWduYWwoKSBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpIGFuZCBpZiB0aGUgdGhyZWFkIGdyb3VwIGlzXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDgzLSAqIGRlYWQgaXQgYWxzbyBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZ3JvdXBfZXhpdCgpLiBUaGVzZSBmdW5jdGlvbnMgZGVsZXRlXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ4OS0gKiB0aHJlYWQgZ3JvdXAgaXMgbm90IGRlYWQgdGhleSBvbmx5IGNsZWFuIHVwIHRoZSBwZXIgdGFzayB0aW1lcnMgdmlhXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDkwOiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpLlxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ5MS0gKlxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz02MjQ9c3RhdGljIHZvaWQgY2xlYW51cF90aW1lcnMoc3RydWN0IHBvc2l4X2NwdXRpbWVycyAqcGN0KVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzMtICogaXMgYmVpbmcgcmVhcGVkLiAgV2hlbiB0aGUgZmluYWwgKGxlYWRlcikgdGhyZWFkIGluIHRoZSBncm91cCBpcyByZWFwZWQsXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM0OiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCB3aWxsIGJlIGNhbGxlZCBhZnRlciBwb3NpeF9jcHVfdGltZXJzX2V4aXQuXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNjM1LSAqL1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjYzNjp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02Mzcte1xuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzktfVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjY0MDp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02NDEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTcyCgkJCQkJCQlvdXRwdXQ6IDIwNgoJCQkJCQkJdGhvdWdodHM6IDI5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLTVNBTiBOZWNlc3NpdHkqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBkZWFsaW5nIHdpdGggYSBwcmV0dHkgc3BlY2lmaWMgcmFjZSBjb25kaXRpb24gY2VudGVyZWQgYXJvdW5kIHRhc2sgbGlmZWN5Y2xlIGFuZCwgaW1wb3J0YW50bHksIHRoZSBtYW5hZ2VtZW50IG9mIHRpbWVycyDigJMgc3BlY2lmaWNhbGx5LCBQT1NJWCBDUFUgdGltZXJzLiBUaGUgY29yZSBpc3N1ZSBpcyB0aGF0IGEgdGhyZWFkJiMzOTtzIFBJRCBjYW4gYmUgcGFzc2VkIHRvIGFuICpvbGQqIGxlYWRlciBkdXJpbmcgYGRlX3RocmVhZCgpYCwgYW5kIHRoaXMgbGVhZHMgdG8gYSBQSUQgbG9va3VwIGZhaWx1cmUgd2l0aGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAsIGVzcGVjaWFsbHkgaWYgdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgZm9yIHRoYXQgdGhyZWFkLiBUaGUgc29sdXRpb24gdGhleSYjMzk7dmUgY29tZSB1cCB3aXRoLCBkZXF1ZXVlaW5nIHRoZSB0aW1lcnMgd2l0aCBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgUElEIHN3YXAsIG1ha2VzIHNlbnNlLiBJdCYjMzk7cyBhIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZpeCwgYmFzaWNhbGx5IGVuc3VyaW5nIHRoZSB0aW1lcnMgYXJlIHByb3Blcmx5IGNsZWFuZWQgdXAgYmVmb3JlIHRoaXMgUElEIHJlYXNzaWdubWVudCBoYXBwZW5zLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyByZXF1aXJlcyBhIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgY2hlY2suIEFuZCBJJiMzOTttIHNheWluZyAqbm8qLiBLTVNBTiBpcyBnZW5lcmFsbHkgY29uY2VybmVkIHdpdGggdGhpbmdzIGxpa2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgYW5kIGluZm9ybWF0aW9uIGxlYWtzLCB0aGluZ3MgdGhhdCBleHBvc2Uga2VybmVsIGludGVybmFscy4gVGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBub3IgaXMgaXQgZGVhbGluZyB3aXRoIG1lbW9yeSB0aGF0JiMzOTtzIHVuaW5pdGlhbGl6ZWQuIFRoaXMgc291bmRzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgbG9naWMgZmxhdyB3aXRoIGhvdyB0aW1lcnMgYXJlIGhhbmRsZWQgd2hlbiBhIHRocmVhZCBjaGFuZ2VzIGl0cyBncm91cCBsZWFkZXIgZHVyaW5nIGBleGVjdmVgLgoKQW55IHByb2JsZW1zIGludHJvZHVjZWQgYnkgdGhpcyBmaXgsIGxpa2UgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd291bGQgYmUgY2F1Z2h0IHBlcmZlY3RseSB3ZWxsIGJ5IEtBU0FOLCBvciBldmVuIGJ5IGp1c3QgZ29vZCwgb2xkLWZhc2hpb25lZCBrZXJuZWwgZGVidWdnaW5nLiBObyBuZWVkIHRvIGJyaW5nIG91dCB0aGUgaGVhdnkgYXJ0aWxsZXJ5IG9mIEtNU0FOIGhlcmUuIEl0JiMzOTtzIG5vdCB0YXJnZXRpbmcgdGhlIGtpbmQgb2YgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgdGhhdCBLTVNBTiBpcyBkZXNpZ25lZCB0byBmaW5kLiBBIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIHdvdWxkIGJlIG92ZXJraWxsIGFuZCBhIHdhc3RlIG9mIHJlc291cmNlcyBpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZS4gVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgc2hvdWxkIGRlZmluaXRlbHkgYmUgc2V0IHRvIGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSBpbiBgZGVfdGhyZWFkKClgIHdoZXJlIGEgdGhyZWFkJiMzOTtzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIsIHdoaWNoIGlzIHRoZW4gcmVhcGVkLiBUaGlzIGNhdXNlcyBhIFBJRCBsb29rdXAgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIGlmIHBlci10aHJlYWQgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLiBUbyBmaXggdGhpcywgdGhlIHBhdGNoIGRlcXVldWVzIHRoZSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgUElEIGV4Y2hhbmdlLiBUaGlzIGlzIGEgbG9naWMvbGlmZWN5Y2xlIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgYW5kIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyBkdXJpbmcgYGV4ZWN2ZWAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGluIHRoaXMgYXJlYSAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSBpbiBgZGVfdGhyZWFkKClgIHdoZXJlIGEgdGhyZWFkJiMzOTtzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIsIHdoaWNoIGlzIHRoZW4gcmVhcGVkLiBUaGlzIGNhdXNlcyBhIFBJRCBsb29rdXAgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIGlmIHBlci10aHJlYWQgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLiBUbyBmaXggdGhpcywgdGhlIHBhdGNoIGRlcXVldWVzIHRoZSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgUElEIGV4Y2hhbmdlLiBUaGlzIGlzIGEgbG9naWMvbGlmZWN5Y2xlIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgYW5kIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyBkdXJpbmcgYGV4ZWN2ZWAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGluIHRoaXMgYXJlYSAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MDQ6NTkuMjkyODYyNzkzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzMjc0Mzc0OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBPU0lYX1RJTUVSU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBvc2l4X2NwdV90aW1lcnNfZXhpdFwiLFxuICAgIFwiYmVnaW5fbmV3X2V4ZWNcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSBpbiBgZGVfdGhyZWFkKClgIHdoZXJlIGEgdGhyZWFkJ3MgUElEIGlzIGhhbmRlZCB0byB0aGUgb2xkIGxlYWRlciwgd2hpY2ggaXMgdGhlbiByZWFwZWQuIFRoaXMgY2F1c2VzIGEgUElEIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgaWYgcGVyLXRocmVhZCBDUFUgdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQuIFRvIGZpeCB0aGlzLCB0aGUgcGF0Y2ggZGVxdWV1ZXMgdGhlIHRpbWVycyBieSBjYWxsaW5nIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgYmVmb3JlIHRoZSBQSUQgZXhjaGFuZ2UuIFRoaXMgaXMgYSBsb2dpYy9saWZlY3ljbGUgYnVnIHJlbGF0ZWQgdG8gUE9TSVggQ1BVIHRpbWVycyBhbmQgdGhyZWFkIGdyb3VwIGxlYWRlciBjaGFuZ2VzIGR1cmluZyBgZXhlY3ZlYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW4gdGhpcyBhcmVhIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBkZV90aHJlYWQoKWAgaW4gYGZzL2V4ZWMuY2AgdG8gZGVxdWV1ZSBwZXItdGhyZWFkIENQVSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlcidzIFBJRCBpcyBleGNoYW5nZWQuIFRoaXMgcHJldmVudHMgYSBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgd2hlbiB0aGUgb2xkIGxlYWRlciBpcyByZWFwZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwncyBleGVjdmUgcGF0aCBhbmQgaXMgcmVhY2hhYmxlIHdoZW4gYSBtdWx0aS10aHJlYWRlZCBwcm9jZXNzIGNhbGxzIGV4ZWN2ZS4gSXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MDQ6NTkuMjkyODY5NDkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTM1MjQ2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1ZGY2ODI3ZjAxNDM5NGVlZDUwNmE1YTRmZmRlNmI3MzAzMjViN2Q2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDI2IDEyOjA0OjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuY1xcbmluZGV4IDc0NWY2ZWI1Mjc5ZTYuLjliMmQxNDBiZDlmMmEgMTAwNjQ0XFxuLS0tIGEvZnMvZXhlYy5jXFxuKysrIGIvZnMvZXhlYy5jXFxuQEAgLTEwMDMsNiArMTAwMywxOCBAQCBzdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4gXFx0XFx0ICogdGhlIGZvcm1lciB0aHJlYWQgZ3JvdXAgbGVhZGVyOlxcbiBcXHRcXHQgKi9cXG4gXFxuKyNpZmRlZiBDT05GSUdfUE9TSVhfVElNRVJTXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIGV4Y2hhbmdlX3RpZHMoKSBoYW5kcyB0aGlzIHRocmVhZCdzIFBJRCB0byB0aGUgb2xkIGxlYWRlcixcXG4rXFx0XFx0ICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpblxcbitcXHRcXHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxcbitcXHRcXHQgKiB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCBoZXJlLCBzbyBkZXF1ZXVlIHRoZW0gZmlyc3QuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRzcGluX2xvY2sobG9jayk7XFxuK1xcdFxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xcbitcXHRcXHRzcGluX3VubG9jayhsb2NrKTtcXG4rI2VuZGlmXFxuK1xcbiBcXHRcXHQvKiBCZWNvbWUgYSBwcm9jZXNzIGdyb3VwIGxlYWRlciB3aXRoIHRoZSBvbGQgbGVhZGVyJ3MgcGlkLlxcbiBcXHRcXHQgKiBUaGUgb2xkIGxlYWRlciBiZWNvbWVzIGEgdGhyZWFkIG9mIHRoZSB0aGlzIHRocmVhZCBncm91cC5cXG4gXFx0XFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEyOjA0OjU5Ljc4NzMwMjI0MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ5NjAzMDM3MTcxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQT1NJWF9USU1FUlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwb3NpeF9jcHVfdGltZXJzX2V4aXRcIixcbiAgICBcImJlZ2luX25ld19leGVjXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGRlX3RocmVhZCgpYCBpbiBgZnMvZXhlYy5jYCB0byBkZXF1ZXVlIHBlci10aHJlYWQgQ1BVIHRpbWVycyBieSBjYWxsaW5nIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgYmVmb3JlIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyJ3MgUElEIGlzIGV4Y2hhbmdlZC4gVGhpcyBwcmV2ZW50cyBhIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCB3aGVuIHRoZSBvbGQgbGVhZGVyIGlzIHJlYXBlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCdzIGV4ZWN2ZSBwYXRoIGFuZCBpcyByZWFjaGFibGUgd2hlbiBhIG11bHRpLXRocmVhZGVkIHByb2Nlc3MgY2FsbHMgZXhlY3ZlLiBJdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZGY2ODI3ZjAxNDM5NGVlZDUwNmE1YTRmZmRlNmI3MzAzMjViN2Q2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMTI6MDQ6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmNcbmluZGV4IDc0NWY2ZWI1Mjc5ZTYuLjliMmQxNDBiZDlmMmEgMTAwNjQ0XG4tLS0gYS9mcy9leGVjLmNcbisrKyBiL2ZzL2V4ZWMuY1xuQEAgLTEwMDMsNiArMTAwMywxOCBAQCBzdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbiBcdFx0ICogdGhlIGZvcm1lciB0aHJlYWQgZ3JvdXAgbGVhZGVyOlxuIFx0XHQgKi9cbiBcbisjaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU1xuK1x0XHQvKlxuK1x0XHQgKiBleGNoYW5nZV90aWRzKCkgaGFuZHMgdGhpcyB0aHJlYWQncyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsXG4rXHRcdCAqIHdoaWNoIGlzIHJlYXBlZCByaWdodCBhZnRlci4gVGhlIFBJRCBsb29rdXAgaW5cbitcdFx0ICogdGltZXJfbG9ja19zaWdoYW5kKCkgdGhlbiBmYWlscyB3aGlsZSB0aGUgcGVyIHRocmVhZCBDUFVcbitcdFx0ICogdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgaGVyZSwgc28gZGVxdWV1ZSB0aGVtIGZpcnN0LlxuK1x0XHQgKi9cbitcdFx0c3Bpbl9sb2NrKGxvY2spO1xuK1x0XHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcbitcdFx0c3Bpbl91bmxvY2sobG9jayk7XG4rI2VuZGlmXG4rXG4gXHRcdC8qIEJlY29tZSBhIHByb2Nlc3MgZ3JvdXAgbGVhZGVyIHdpdGggdGhlIG9sZCBsZWFkZXIncyBwaWQuXG4gXHRcdCAqIFRoZSBvbGQgbGVhZGVyIGJlY29tZXMgYSB0aHJlYWQgb2YgdGhlIHRoaXMgdGhyZWFkIGdyb3VwLlxuIFx0XHQgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEyOjA0OjU5Ljc4NzMwMzc3MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4ODI2MTM0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyBtb2RpZnlpbmcgYGZzL2V4ZWMuY2AsIHNwZWNpZmljYWxseSB0aGUgYGRlX3RocmVhZCgpYCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gYmUgYWRkaW5nIGEgY2FsbCB0byBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgICpjb25kaXRpb25hbGx5KiDigJMgb25seSBpZiBgQ09ORklHX1BPU0lYX1RJTUVSU2AgaXMgZW5hYmxlZC4gVGhhdCdzIGEgcHJldHR5IHNpZ25pZmljYW50IGFkZGl0aW9uLCBlc3BlY2lhbGx5IGdpdmVuIHRoYXQgYGRlX3RocmVhZCgpYCBpcyByaWdodCBpbiB0aGUgaGVhcnQgb2YgdGhlIGtlcm5lbCdzIGV4ZWN1dGlvbiBwYXRoLCBkZWFsaW5nIHdpdGggdGhyZWFkIHRlcm1pbmF0aW9uIGFuZCBgZXhlY3ZlYC4gV2UncmUgdGFsa2luZyBjb3JlIGtlcm5lbCBmdW5jdGlvbmFsaXR5IGhlcmUuXG5cbkdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCB0aGlzIHNjcmVhbXMgXCJmdXp6aW5nIHRhcmdldFwiIHRvIG1lLiBBbnkgY2hhbmdlIGluIGEgZnVuY3Rpb24gbGlrZSB0aGlzIGhhcyB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUsIGhhcmQtdG8tZGV0ZWN0IGJ1Z3MgdGhhdCBjb3VsZCBsZWFkIHRvIGNyYXNoZXMgb3IsIHdvcnNlLCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIEl0J3MgZGVmaW5pdGVseSB3b3J0aCBpbnZlc3RpbmcgdGltZSBpbiB0aG9yb3VnaGx5IHRlc3RpbmcgdGhpcy5cblxuVGltZSB0byBkaXZlIGluIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGRlX3RocmVhZCgpYCBpdHNlbGYsIHdpdGhpbiBgZnMvZXhlYy5jYCwga2VlcGluZyB0aGF0IGBQT1NJWF9USU1FUlNgIGNvbmZpZ3VyYXRpb24gaW4gbWluZC4gSSdsbCBwcm9iYWJseSBhbHNvIGRvIGEgcXVpY2sgZ3JlcCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciByZWxhdGVkLCBidXQgcG90ZW50aWFsbHkgbGVzcyBvYnZpb3VzLCBjaGFuZ2VzIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSBpbnRlcmFjdGlvbnMgb3IgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gYmUgc3VyZSB0byBjaGVjayBhbnl0aGluZyBlbHNlIHRoYXQgbWF5IGJlIGxpbmtlZCB0byB0aGlzIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMjowNTowNC42Njk5MjA2MjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk4NjAwNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVfdGhyZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4ZWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGVjLmM9OTE1PXN0YXRpYyB2b2lkIGV4ZWNfbW1fcHV0X29sZChzdHJ1Y3QgbW1fc3RydWN0ICpvbGRfbW0pXFxuLS1cXG5mcy9leGVjLmMtOTIxLVxcbmZzL2V4ZWMuYzo5MjI6c3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuZnMvZXhlYy5jLTkyMy17XFxuLS1cXG5mcy9leGVjLmM9MTEyMz1zdGF0aWMgc3RydWN0IGZpbGUgKmJwcm1faWRlbnRpdHlfZmlsZShjb25zdCBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTExMzItICogc2VlbiBieSB1c2Vyc3BhY2Ugc2luY2UgZWl0aGVyIHRoZSBwcm9jZXNzIGlzIGFscmVhZHkgdGFraW5nIGEgZmF0YWxcXG5mcy9leGVjLmM6MTEzMzogKiBzaWduYWwgKHZpYSBkZV90aHJlYWQoKSBvciBjb3JlZHVtcCksIG9yIHdpbGwgaGF2ZSBTRUdWIHJhaXNlZFxcbmZzL2V4ZWMuYy0xMTM0LSAqIChhZnRlciBleGVjX21tYXAoKSkgYnkgc2VhcmNoX2JpbmFyeV9oYW5kbGVyIChzZWUgYmVsb3cpLlxcbi0tXFxuZnMvZXhlYy5jPTExMzY9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTExNjMtXFx0LyogTWFrZSB0aGlzIHRoZSBvbmx5IHRocmVhZCBpbiB0aGUgdGhyZWFkIGdyb3VwICovXFxuZnMvZXhlYy5jOjExNjQ6XFx0cmV0dmFsID0gZGVfdGhyZWFkKG1lKTtcXG5mcy9leGVjLmMtMTE2NS1cXHRpZiAocmV0dmFsKVxcbi0tXFxuZnMvZXhlYy5jPTE0Njk9c3RhdGljIHZvaWQgZnJlZV9icHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTQ3OC1cXHRpZiAoYnBybS1cXHUwMDNlY3JlZCkge1xcbmZzL2V4ZWMuYzoxNDc5OlxcdFxcdC8qIGluIGNhc2UgZXhlYyBmYWlscyBiZWZvcmUgZGVfdGhyZWFkKCkgc3VjY2VlZHMgKi9cXG5mcy9leGVjLmMtMTQ4MC1cXHRcXHRjdXJyZW50LVxcdTAwM2Vmcy1cXHUwMDNlaW5fZXhlYyA9IDA7XFxuLS1cXG5mcy9leGVjLmM9MTU5Mz1zdGF0aWMgdm9pZCBjaGVja191bnNhZmVfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTE2MTQtXFx0ICogT3RoZXJ3aXNlIHdlIHNldCBmcy1cXHUwMDNlaW5fZXhlYyA9IDEgdG8gZGVueSBjbG9uZShDTE9ORV9GUylcXG5mcy9leGVjLmM6MTYxNTpcXHQgKiBmcm9tIGFub3RoZXIgc3ViLXRocmVhZCB1bnRpbCBkZV90aHJlYWQoKSBzdWNjZWVkcywgdGhpc1xcbmZzL2V4ZWMuYy0xNjE2LVxcdCAqIHN0YXRlIGlzIHByb3RlY3RlZCBieSBjcmVkX2d1YXJkX211dGV4IHdlIGhvbGQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEyOjA1OjA0LjcxOTgwNzY3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MTM2MjE2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBUaHJlYWRpbmcgYW5kIEV4ZWN1dGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGRlX3RocmVhZGAgZnVuY3Rpb24sIGFuZCBpdCdzIG1hcmtlZCBhcyBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBpc3N1ZS4gSXQncyBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0cyBzY29wZSBpcyBsaW1pdGVkLCB5ZXQgSSBzZWUgaXQgYmVpbmcgY2FsbGVkIGZyb20gYGJlZ2luX25ld19leGVjYC4gYGJlZ2luX25ld19leGVjYCBpcyB0cmlnZ2VyZWQgYnkgdGhlIGBleGVjdmVgIGZhbWlseSBvZiBmdW5jdGlvbnMsIHJpZ2h0PyBTbywgdGhlcmUncyBhIHBvdGVudGlhbCBpbnRlci1tb2R1bGUgZGVwZW5kZW5jeSBoZXJlIHRoYXQgcmVxdWlyZXMgZnVydGhlciBzY3J1dGlueS5cblxuR2l2ZW4gdGhhdCBgZGVfdGhyZWFkYCBpcyBzdGF0aWMsIEknbSBnb2luZyB0byBzaGlmdCBteSBmb2N1cyBhd2F5IGZyb20gaXQgZGlyZWN0bHkuIEluc3RlYWQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gZmxvdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYGJlZ2luX25ld19leGVjYCBhbmQgdGhlIGBleGVjdmVgIGZhbWlseS4gUGVyaGFwcywgaXQncyBlYXNpZXIgdG8gdHJhY2sgYGRvX2V4ZWN2ZWF0X2NvbW1vbmAgYW5kIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgLiBUaGUgY29udGV4dCBuZWVkcyBmdXJ0aGVyIGV4YW1pbmF0aW9uISBIbW1tLCBsZXQncyBzZWUsIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgLi4uIHRoYXQgY291bGQgYmUgaW50ZXJlc3RpbmcuIFdhaXQsIGlzICp0aGF0KiBzdGF0aWMgdG9vPyBJIG5lZWQgdG8gY2hlY2sgaXRzIGRlY2xhcmF0aW9uIGFuZCBzY29wZS4gVGhhdCBtaWdodCBvZmZlciBhIG1vcmUgZGlyZWN0IHBvaW50IG9mIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzAsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MDU6MTAuNTMzNDMxNTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwNTM1NjUxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwb3NpeF9jcHVfdGltZXJzX2V4aXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXhlYy5jPTkyMj1zdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4tLVxcbmZzL2V4ZWMuYy0xMDEzLVxcdFxcdHNwaW5fbG9jayhsb2NrKTtcXG5mcy9leGVjLmM6MTAxNDpcXHRcXHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcXG5mcy9leGVjLmMtMTAxNS1cXHRcXHRzcGluX3VubG9jayhsb2NrKTtcXG4tLVxcbmZzL2V4ZWMuYz0xMTM2PWludCBiZWdpbl9uZXdfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0xMjA4LVxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNm1lLVxcdTAwM2VzaWdoYW5kLVxcdTAwM2VzaWdsb2NrKTtcXG5mcy9leGVjLmM6MTIwOTpcXHRwb3NpeF9jcHVfdGltZXJzX2V4aXQobWUpO1xcbmZzL2V4ZWMuYy0xMjEwLVxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2bWUtXFx1MDAzZXNpZ2hhbmQtXFx1MDAzZXNpZ2xvY2spO1xcbi0tXFxuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaD0yMjY9dm9pZCBydW5fcG9zaXhfY3B1X3RpbWVycyh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oOjIyNzp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xcbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmg6MjI4OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0X2dyb3VwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XFxuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaC0yMjktdm9pZCBzZXRfcHJvY2Vzc19jcHVfdGltZXIoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCB1bnNpZ25lZCBpbnQgY2xvY2tfaWR4LFxcbi0tXFxua2VybmVsL2V4aXQuYz0xNTg9c3RhdGljIHZvaWQgX19leGl0X3NpZ25hbChzdHJ1Y3QgcmVsZWFzZV90YXNrX3Bvc3QgKnBvc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxua2VybmVsL2V4aXQuYy0xNzAtI2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlNcXG5rZXJuZWwvZXhpdC5jOjE3MTpcXHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcXG5rZXJuZWwvZXhpdC5jLTE3Mi1cXHRpZiAoZ3JvdXBfZGVhZClcXG5rZXJuZWwvZXhpdC5jOjE3MzpcXHRcXHRwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAodHNrKTtcXG5rZXJuZWwvZXhpdC5jLTE3NC0jZW5kaWZcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy00ODEtICpcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDgyOiAqIF9fZXhpdF9zaWduYWwoKSBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpIGFuZCBpZiB0aGUgdGhyZWFkIGdyb3VwIGlzXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ4My0gKiBkZWFkIGl0IGFsc28gaW52b2tlcyBwb3NpeF9jcHVfdGltZXJzX2dyb3VwX2V4aXQoKS4gVGhlc2UgZnVuY3Rpb25zIGRlbGV0ZVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ4OS0gKiB0aHJlYWQgZ3JvdXAgaXMgbm90IGRlYWQgdGhleSBvbmx5IGNsZWFuIHVwIHRoZSBwZXIgdGFzayB0aW1lcnMgdmlhXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjQ5MDogKiBwb3NpeF9jcHVfdGltZXJzX2V4aXQoKS5cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDkxLSAqXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9NjI0PXN0YXRpYyB2b2lkIGNsZWFudXBfdGltZXJzKHN0cnVjdCBwb3NpeF9jcHV0aW1lcnMgKnBjdClcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzMtICogaXMgYmVpbmcgcmVhcGVkLiAgV2hlbiB0aGUgZmluYWwgKGxlYWRlcikgdGhyZWFkIGluIHRoZSBncm91cCBpcyByZWFwZWQsXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjYzNDogKiBwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgcG9zaXhfY3B1X3RpbWVyc19leGl0Llxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzUtICovXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjYzNjp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNjM3LXtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzktfVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo2NDA6dm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTY0MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEyOjA1OjEyLjQzODc5Njg4N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NzYzNTg3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBUaGlua2luZzogQWRkaW5nIFN5bWJvbHMgZm9yIEVuaGFuY2VkIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIGNvbmZpZ3VyYXRpb24uIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgIGlzbid0IHN0YXRpYywgbWVhbmluZyBpdCdzIGV4dGVybmFsbHkgdmlzaWJsZSwgYW5kIHRoYXQncyBpbXBvcnRhbnQgZm9yIGFuYWx5c2lzLiBUaGVuIHRoZXJlJ3MgYGRlX3RocmVhZGAsIHdoaWNoICppcyogc3RhdGljOyBJJ2xsIGtlZXAgdGhhdCBpbiBtaW5kIGZvciBzY29waW5nIGJ1dCBpdCdzIGxlc3MgaW1tZWRpYXRlbHkgcmVsZXZhbnQgdG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBgYmVnaW5fbmV3X2V4ZWNgIGlzIGFsc28gbm9uLXN0YXRpYy5cblxuR2l2ZW4gdGhlIG5vbi1zdGF0aWMgbmF0dXJlIG9mIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgIGFuZCBgYmVnaW5fbmV3X2V4ZWNgLCBhbmQga25vd2luZyB0aGUgY29udGV4dCBJJ20gd29ya2luZyBpbiwgSSdtIGdvaW5nIHRvIGFkZCBib3RoIG9mIHRob3NlIGZ1bmN0aW9ucyB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdC4gVGhpcyBzaG91bGQgaGVscCBtZSBrZWVwIHRyYWNrIG9mIHRoZWlyIHVzZSBhbmQgcmVsYXRpb25zaGlwIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS5cblxuTm93LCB0aGUgY29uZmlndXJhdGlvbi4uLiBJJ20gcmVtaW5kZWQgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBoZXJlIGlzIGBQT1NJWF9USU1FUlNgLiBUaW1lIHRvIHB1bGwgdXAgS2NvbmZpZyBhbmQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhhdCBjb25maWcgdmFyaWFibGUgaW5mbHVlbmNlcyB0aGUgYmVoYXZpb3Igb2YgdGhlc2UgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGluIHRoZSBsYXJnZXIgZnJhbWV3b3JrLiBVbmRlcnN0YW5kaW5nIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIHN5bWJvbHMgbWlnaHQgcmVsYXRlIHRvIHRoZSB3aWRlciBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzODMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMjowNToxNy4xMTUxNTgxMjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1MzM1OTczNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUE9TSVhfVElNRVJTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluaXQvS2NvbmZpZz0xNzUzPWNvbmZpZyBGSEFORExFXFxuLS1cXG5pbml0L0tjb25maWctMTc2NS1cXG5pbml0L0tjb25maWc6MTc2Njpjb25maWcgUE9TSVhfVElNRVJTXFxuaW5pdC9LY29uZmlnLTE3NjctXFx0Ym9vbCBcXFwiUG9zaXggQ2xvY2tzIFxcdTAwMjYgdGltZXJzXFxcIiBpZiBFWFBFUlRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MDU6MTkuMDY4NTIzNTk2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcxMTM1MDUwNDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQT1NJWCBUaW1lcnMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGBQT1NJWF9USU1FUlNgIG9wdGlvbiBpcyBhIGJvb2xlYW4gY29uZmlnLiBTdHJhaWdodGZvcndhcmQgZW5vdWdoLCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgbmVlZHMgdG8gaW5jbHVkZSBgW1wiUE9TSVhfVElNRVJTXCJdYC4gVGhhdCdzIGEgcXVpY2sgd2luLlxuXG5Ob3csIGxldCBtZSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoLiBBaCwgeWVzLCBgZGVfdGhyZWFkYCBpcyBpbmRlZWQgcmVhY2hhYmxlLiBJdCBnZXRzIGNhbGxlZCBkdXJpbmcgdGhlIGBleGVjdmVgIHN5c3RlbSBjYWxsLCBzcGVjaWZpY2FsbHkgd2hlbiBhIG11bHRpLXRocmVhZGVkIHByb2Nlc3MgZXhlY3V0ZXMgYGV4ZWN2ZWAuIE1ha2VzIHNlbnNlLiBUaGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBzcGVjaWZpYyBmYWlsdXJlIHNjZW5hcmlvLCBuYW1lbHkgdGhhdCBgdGltZXJfbG9ja19zaWdoYW5kKClgIGZhaWxzIGlmIHBlci10aHJlYWQgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLiBUaGUgZml4IGFwcGVhcnMgdG8gYmUgZGVxdWV1aW5nIHRob3NlIHRpbWVycyAqYmVmb3JlKiBzb21ldGhpbmcgZWxzZSBoYXBwZW5zIOKAkyBzcGVjaWZpY2FsbHksIGJlZm9yZSB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlcidzIFBJRCBpcyBleGNoYW5nZWQuIFRoaXMgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNsYXNzaWMgcmFjZSBjb25kaXRpb24gZml4LCBhbmQgZGVmaW5pdGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIGZ1enouXG5cbkxldCBtZSBhcnRpY3VsYXRlIHRoYXQgY2xlYXJseSBmb3IgdGhlIHJlY29yZC4gVGhlIHBhdGNoIGFsdGVycyBgZGVfdGhyZWFkKClgIHdpdGhpbiBgZnMvZXhlYy5jYC4gSXQgZGVxdWV1ZXMgcGVyLXRocmVhZCBDUFUgdGltZXJzIGJ5IGludm9raW5nIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgcHJpb3IgdG8gc3dpdGNoaW5nIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyJ3MgUElELCBhdm9pZGluZyB0aGUgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIHdoZW4gdGhlIG9sZCBsZWFkZXIgaXMgcmVhcGVkLiBUaGlzIGltcGFjdHMgdGhlIGtlcm5lbCdzIGNvcmUgYGV4ZWN2ZWAgcGF0aCBhbmQgaXMgcmVhY2hhYmxlIGluIG11bHRpLXRocmVhZGVkIGV4ZWN2ZSBjYWxscy4gV29ydGggZnV6emluZywgYWJzb2x1dGVseS5cblxuVGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCBhbmQgYGJlZ2luX25ld19leGVjYC4gSSBzaG91bGQgcHJvYmFibHkgdmVyaWZ5IGBiZWdpbl9uZXdfZXhlY2AganVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MjgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MDk6NTAuMjAzNTc3NjQ5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTIyNTc4NzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJlZ2luX25ld19leGVjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdD0xNjU2PWRpc3BsYXktZ3JhcGggb3B0aW9uOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdC0xNjk5LSAgID1cXHUwMDNlIG1tcHV0XFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0OjE3MDA6ICAgPVxcdTAwM2UgYmVnaW5fbmV3X2V4ZWNcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3QtMTcwMS0gICA9XFx1MDAzZSBsb2FkX2VsZl9iaW5hcnlcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jPTE3NjQ9dm9pZCBmcHNpbWRfcmVzdG9yZV9jdXJyZW50X3N0YXRlKHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYy0xNzcxLVxcdCAqXFxuYXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmM6MTc3MjpcXHQgKiBXaGVuIEZQL1NJTUQgaXMgZGV0ZWN0ZWQsIGJlZ2luX25ld19leGVjKCkgd2lsbCBzZXRcXG5hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYy0xNzczLVxcdCAqIFRJRl9GT1JFSUdOX0ZQU1RBVEUgdmlhIGZsdXNoX3RocmVhZCgpIC1cXHUwMDNlIGZwc2ltZF9mbHVzaF90aHJlYWQoKSxcXG4tLVxcbmZzL2JpbmZtdF9lbGYuYz04Mjk9c3RhdGljIGludCBsb2FkX2VsZl9iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2JpbmZtdF9lbGYuYy0xMDA5LVxcdC8qIEZsdXNoIGFsbCB0cmFjZXMgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIGV4ZWN1dGFibGUgKi9cXG5mcy9iaW5mbXRfZWxmLmM6MTAxMDpcXHRyZXR2YWwgPSBiZWdpbl9uZXdfZXhlYyhicHJtKTtcXG5mcy9iaW5mbXRfZWxmLmMtMTAxMS1cXHRpZiAocmV0dmFsKVxcbi0tXFxuZnMvYmluZm10X2VsZl9mZHBpYy5jPTE4Mj1zdGF0aWMgaW50IGxvYWRfZWxmX2ZkcGljX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvYmluZm10X2VsZl9mZHBpYy5jLTM0OC1cXHQvKiBmbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXFxuZnMvYmluZm10X2VsZl9mZHBpYy5jOjM0OTpcXHRyZXR2YWwgPSBiZWdpbl9uZXdfZXhlYyhicHJtKTtcXG5mcy9iaW5mbXRfZWxmX2ZkcGljLmMtMzUwLVxcdGlmIChyZXR2YWwpXFxuLS1cXG5mcy9iaW5mbXRfZmxhdC5jPTQwNj1zdGF0aWMgaW50IGxvYWRfZmxhdF9maWxlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sXFxuLS1cXG5mcy9iaW5mbXRfZmxhdC5jLTUwOC1cXHQvKiBGbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXFxuZnMvYmluZm10X2ZsYXQuYzo1MDk6XFx0cmV0ID0gYmVnaW5fbmV3X2V4ZWMoYnBybSk7XFxuZnMvYmluZm10X2ZsYXQuYy01MTAtXFx0aWYgKHJldClcXG4tLVxcbmZzL2V4ZWMuYz0yNTg9c3RhdGljIGludCBicHJtX21tX2luaXQoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0yNjctXFxuZnMvZXhlYy5jOjI2ODpcXHQvKiBTdGFnZWQgZm9yIHdvdWxkX2R1bXAoKSBuYXJyb3dpbmc7IGNvbnN1bWVkIGJ5IGJlZ2luX25ld19leGVjKCkuICovXFxuZnMvZXhlYy5jLTI2OS1cXHRicHJtLVxcdTAwM2V1c2VyX25zID0gZ2V0X3VzZXJfbnMoY3VycmVudF91c2VyX25zKCkpO1xcbi0tXFxuZnMvZXhlYy5jPTExMjM9c3RhdGljIHN0cnVjdCBmaWxlICpicHJtX2lkZW50aXR5X2ZpbGUoY29uc3Qgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0xMTM1LSAqL1xcbmZzL2V4ZWMuYzoxMTM2OmludCBiZWdpbl9uZXdfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSlcXG5mcy9leGVjLmMtMTEzNy17XFxuLS1cXG5mcy9leGVjLmMtMTM0OC19XFxuZnMvZXhlYy5jOjEzNDk6RVhQT1JUX1NZTUJPTChiZWdpbl9uZXdfZXhlYyk7XFxuZnMvZXhlYy5jLTEzNTAtXFxuLS1cXG5mcy9leGVjLmM9MTQ0OD1zdHJ1Y3QgZmlsZSAqYnBybV9vcGVuX2ludGVycHJldGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIGNvbnN0IGNoYXIgKnBhdGgpXFxuLS1cXG5mcy9leGVjLmMtMTQ2MC0gKiBvdmVycmlkZSBhbmQgbGV0IHRoZSBiaW5hcnkgbG9hZCBuYXRpdmVseSByYXRoZXIgdGhhbiBoYXZlXFxuZnMvZXhlYy5jOjE0NjE6ICogYmVnaW5fbmV3X2V4ZWMoKSByZWZ1c2UgaXQuIEEgbm8tb3Agb25jZSBicHJtX29wZW5faW50ZXJwcmV0ZXIoKSB0b29rXFxuZnMvZXhlYy5jLTE0NjItICogdGhlIHN1YnN0aXR1dGUuXFxuLS1cXG5mcy9leGVjLmM9MTc1Mj1zdGF0aWMgaW50IHNlYXJjaF9iaW5hcnlfaGFuZGxlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTE3ODQtXFxuZnMvZXhlYy5jOjE3ODU6LyogYmluZm10IGhhbmRsZXJzIHdpbGwgY2FsbCBiYWNrIGludG8gYmVnaW5fbmV3X2V4ZWMoKSBvbiBzdWNjZXNzLiAqL1xcbmZzL2V4ZWMuYy0xNzg2LXN0YXRpYyBpbnQgZXhlY19iaW5wcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYz0xODM1PXN0YXRpYyBpbnQgYnBybV9leGVjdmUoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0xODQ0LVxcdCAqIENoZWNrIGZvciB1bnNhZmUgZXhlY3V0aW9uIHN0YXRlcyBiZWZvcmUgZXhlY19iaW5wcm0oKSwgd2hpY2hcXG5mcy9leGVjLmM6MTg0NTpcXHQgKiB3aWxsIGNhbGwgYmFjayBpbnRvIGJlZ2luX25ld19leGVjKCksIGludG8gYnBybV9jcmVkc19mcm9tX2ZpbGUoKSxcXG5mcy9leGVjLmMtMTg0Ni1cXHQgKiB3aGVyZSBzZXR1aWQtbmVzcyBpcyBldmFsdWF0ZWQuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaD0xNjE9ZXh0ZXJuIGludCBfX211c3RfY2hlY2sgcmVtb3ZlX2FyZ196ZXJvKHN0cnVjdCBsaW51eF9iaW5wcm0gKik7XFxuaW5jbHVkZS9saW51eC9iaW5mbXRzLmg6MTYyOmV4dGVybiBpbnQgYmVnaW5fbmV3X2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pO1xcbmluY2x1ZGUvbGludXgvYmluZm10cy5oLTE2My1leHRlcm4gdm9pZCBzZXR1cF9uZXdfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODM1PXN0cnVjdCB0YXNrX3N0cnVjdCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTE4NS1cXHQgKlxcbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxMTg2OlxcdCAqIC0gbm9ybWFsbHkgaW5pdGlhbGl6ZWQgYnkgYmVnaW5fbmV3X2V4ZWMoKVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMTg3LVxcdCAqIC0gc2V0IGl0IHdpdGggc2V0X3Rhc2tfY29tbSgpIHRvIGVuc3VyZSBpdCBpcyBhbHdheXNcXG4tLVxcbmtlcm5lbC9leGVjX3N0YXRlLmM9NzE9aW50IHRhc2tfZXhlY19zdGF0ZV9jb3B5KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxua2VybmVsL2V4ZWNfc3RhdGUuYy04NS0gKiBTdG9yZSBUQVNLX0RVTVBBQkxFXyogb24gY3VycmVudC1cXHUwMDNlZXhlY19zdGF0ZS4gIEFsbCBjYWxsZXJzXFxua2VybmVsL2V4ZWNfc3RhdGUuYzo4NjogKiAoY29tbWl0X2NyZWRzLCBiZWdpbl9uZXdfZXhlYywgcHJjdGwoUFJfU0VUX0RVTVBBQkxFKSkgYWN0IG9uIHRoZVxcbmtlcm5lbC9leGVjX3N0YXRlLmMtODctICogcnVubmluZyB0YXNrLCB3aGljaCBndWFyYW50ZWVzIC1cXHUwMDNlZXhlY19zdGF0ZSBpcyBhbGxvY2F0ZWQgYW5kIGNhbm5vdFxcbi0tXFxucnVzdC9rZXJuZWwvdGFzay5ycz0zNT1tYWNyb19ydWxlcyEgY3VycmVudCB7XFxuLS1cXG5ydXN0L2tlcm5lbC90YXNrLnJzLTQxLSAgICAgICAgLy8gKiBUbyByZXR1cm4gdG8gdXNlcnNwYWNlLCB0aGUgY2FsbGVyIG11c3QgbGVhdmUgdGhlIGN1cnJlbnQgc2NvcGUuXFxucnVzdC9rZXJuZWwvdGFzay5yczo0MjogICAgICAgIC8vICogT3BlcmF0aW9ucyBzdWNoIGFzIGBiZWdpbl9uZXdfZXhlYygpYCBhcmUgbmVjZXNzYXJpbHkgdW5zYWZlIGFuZCB0aGUgY2FsbGVyIG9mXFxucnVzdC9rZXJuZWwvdGFzay5yczo0MzogICAgICAgIC8vICAgYGJlZ2luX25ld19leGVjKClgIGlzIHJlc3BvbnNpYmxlIGZvciBzYWZldHkuXFxucnVzdC9rZXJuZWwvdGFzay5ycy00NC0gICAgICAgIC8vICogUnVzdCBhYnN0cmFjdGlvbnMgZm9yIHRoaW5ncyBzdWNoIGFzIGEgYGt0aHJlYWRfdXNlX21tKClgIHNjb3BlIG11c3QgcmVxdWlyZSB0aGVcXG4tLVxcbnJ1c3Qva2VybmVsL3Rhc2sucnM9MTA3PXVuc2FmZSBpbXBsIFN5bmMgZm9yIFRhc2sge31cXG4tLVxcbnJ1c3Qva2VybmVsL3Rhc2sucnMtMTIzLS8vLyAqIENhbGxpbmcgYHJlbGVhc2VfdGFzaygpYC5cXG5ydXN0L2tlcm5lbC90YXNrLnJzOjEyNDovLy8gKiBDYWxsaW5nIGBiZWdpbl9uZXdfZXhlYygpYCBpbiBhIGJpbmFyeSBmb3JtYXQgbG9hZGVyLlxcbnJ1c3Qva2VybmVsL3Rhc2sucnMtMTI1LS8vL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMjowOTo1Mi4xMjYxNjU2MTZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAzNjE0MjU0ODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipFbnRyeSBQb2ludHMgZm9yIEZ1enppbmcgYW5kIFJlc3VsdCBNYW5hZ2VtZW50KipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGlzLCBJJ20gdGhpbmtpbmcgdGhhdCBgYmVnaW5fbmV3X2V4ZWNgIHNlZW1zIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZnV6emluZy4gSXQncyBvZnRlbiB0aGUgY2FzZSB0aGF0IHRoZSBwcm9ncmFtIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIGFyZSBmZXJ0aWxlIGdyb3VuZCBmb3IgZmluZGluZyBpbnRlcmVzdGluZyBlZGdlIGNhc2VzLiBBbmQgeWVhaCwgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAuLi4gdGhhdCdzIGFub3RoZXIgcG90ZW50aWFsbHkganVpY3kgYXJlYSB0byB0YXJnZXQuIFRoZSBpbnRlcmFjdGlvbiB3aXRoIHRpbWVycyBhbHdheXMgaW50cm9kdWNlcyBpbnRlcmVzdGluZyBjb25jdXJyZW5jeSBzY2VuYXJpb3MgYW5kIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9ucyB0aGF0IGZ1enppbmcgZXhjZWxzIGF0IHVuY292ZXJpbmcuXG5cbkxldCdzIG5vdCBmb3JnZXQgdGhlIGltcG9ydGFuY2Ugb2YgY29sbGVjdGluZyBvdXIgcmVzdWx0cyB0aG91Z2guIEknZCBiZXR0ZXIgbWFrZSBhIG5vdGUgdG8gY2FsbCBzZXQtcmVzdWx0cy4gR2V0dGluZyB0aG9zZSByZXN1bHRzIG9yZ2FuaXplZCBlYXJseSBpcyBhIGdvb2QgaWRlYS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE1OCwiT3V0cHV0VG9rZW5zIjoxNTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMjoxMzoxNS43NDA0MjM2NThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzI0NzU5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUE9TSVhfVElNRVJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicG9zaXhfY3B1X3RpbWVyc19leGl0XCIsXG4gICAgXCJiZWdpbl9uZXdfZXhlY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBkZV90aHJlYWQoKWAgaW4gYGZzL2V4ZWMuY2AgdG8gZGVxdWV1ZSBwZXItdGhyZWFkIENQVSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlcidzIFBJRCBpcyBleGNoYW5nZWQuIFRoaXMgcHJldmVudHMgYSBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgd2hlbiB0aGUgb2xkIGxlYWRlciBpcyByZWFwZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwncyBleGVjdmUgcGF0aCBhbmQgaXMgcmVhY2hhYmxlIHdoZW4gYSBtdWx0aS10aHJlYWRlZCBwcm9jZXNzIGNhbGxzIGV4ZWN2ZS4gSXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQT1NJWF9USU1FUlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwb3NpeF9jcHVfdGltZXJzX2V4aXRcIixcbiAgICBcImJlZ2luX25ld19leGVjXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGRlX3RocmVhZCgpYCBpbiBgZnMvZXhlYy5jYCB0byBkZXF1ZXVlIHBlci10aHJlYWQgQ1BVIHRpbWVycyBieSBjYWxsaW5nIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgYmVmb3JlIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyJ3MgUElEIGlzIGV4Y2hhbmdlZC4gVGhpcyBwcmV2ZW50cyBhIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCB3aGVuIHRoZSBvbGQgbGVhZGVyIGlzIHJlYXBlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCdzIGV4ZWN2ZSBwYXRoIGFuZCBpcyByZWFjaGFibGUgd2hlbiBhIG11bHRpLXRocmVhZGVkIHByb2Nlc3MgY2FsbHMgZXhlY3ZlLiBJdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMjoxMzoxNS44MTc2Nzc3MjVaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzQ5NTQ3NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MTM6MTUuODE4MjMzMzg1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE2NzQ4OTg1ODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gaXNzdWUgaW4gYGRlX3RocmVhZCgpYCB3aGVyZSBhIHRocmVhZCdzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIsIHdoaWNoIGlzIHRoZW4gcmVhcGVkLiBUaGlzIGNhdXNlcyBhIFBJRCBsb29rdXAgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIGlmIHBlci10aHJlYWQgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLiBUbyBmaXggdGhpcywgdGhlIHBhdGNoIGRlcXVldWVzIHRoZSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgUElEIGV4Y2hhbmdlLiBUaGlzIGlzIGEgbG9naWMvbGlmZWN5Y2xlIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgYW5kIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyBkdXJpbmcgYGV4ZWN2ZWAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGluIHRoaXMgYXJlYSAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZGY2ODI3ZjAxNDM5NGVlZDUwNmE1YTRmZmRlNmI3MzAzMjViN2Q2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMTI6MDQ6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmNcbmluZGV4IDc0NWY2ZWI1Mjc5ZTYuLjliMmQxNDBiZDlmMmEgMTAwNjQ0XG4tLS0gYS9mcy9leGVjLmNcbisrKyBiL2ZzL2V4ZWMuY1xuQEAgLTEwMDMsNiArMTAwMywxOCBAQCBzdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbiBcdFx0ICogdGhlIGZvcm1lciB0aHJlYWQgZ3JvdXAgbGVhZGVyOlxuIFx0XHQgKi9cbiBcbisjaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU1xuK1x0XHQvKlxuK1x0XHQgKiBleGNoYW5nZV90aWRzKCkgaGFuZHMgdGhpcyB0aHJlYWQncyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsXG4rXHRcdCAqIHdoaWNoIGlzIHJlYXBlZCByaWdodCBhZnRlci4gVGhlIFBJRCBsb29rdXAgaW5cbitcdFx0ICogdGltZXJfbG9ja19zaWdoYW5kKCkgdGhlbiBmYWlscyB3aGlsZSB0aGUgcGVyIHRocmVhZCBDUFVcbitcdFx0ICogdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgaGVyZSwgc28gZGVxdWV1ZSB0aGVtIGZpcnN0LlxuK1x0XHQgKi9cbitcdFx0c3Bpbl9sb2NrKGxvY2spO1xuK1x0XHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcbitcdFx0c3Bpbl91bmxvY2sobG9jayk7XG4rI2VuZGlmXG4rXG4gXHRcdC8qIEJlY29tZSBhIHByb2Nlc3MgZ3JvdXAgbGVhZGVyIHdpdGggdGhlIG9sZCBsZWFkZXIncyBwaWQuXG4gXHRcdCAqIFRoZSBvbGQgbGVhZGVyIGJlY29tZXMgYSB0aHJlYWQgb2YgdGhlIHRoaXMgdGhyZWFkIGdyb3VwLlxuIFx0XHQgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEyOjEzOjE1LjgxODIzNTcxNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjczMzE1NTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBSZWxhdGVkIHRvIFBPU0lYIENQVSBUaW1lcnMgYW5kIGBleGVjdmVgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZnMvZXhlYy5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRlX3RocmVhZCgpYCBmdW5jdGlvbi4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXNpZGVzIHVuZGVyIGFuIGAjaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU2AgYmxvY2ssIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIHNvbWV0aGluZyBkZWFsaW5nIHdpdGggUE9TSVgtY29tcGxpYW50IENQVSB0aW1lcnMuIFRoZSBrZXkgYWN0aW9uIGhlcmUgaXMgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgd2hpbGUgYSBsb2NrIGlzIGhlbGQsIHN1Z2dlc3Rpbmcgc3luY2hyb25pemF0aW9uIGlzIGNydWNpYWwuIFRoZSBjb21tZW50IHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgY29udGV4dDogdGhpcyBpcyB0cmlnZ2VyZWQgZHVyaW5nIGBleGVjdmVgIGFuZCBkZWFscyB3aXRoIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyB2aWEgYGV4Y2hhbmdlX3RpZHMoKWAuIEFwcGFyZW50bHksIHRoZSBvbGQgbGVhZGVyIGlzIHF1aWNrbHkgcmVhcGVkLiBUaGUgcHJvYmxlbSBhcmlzZXMgd2hlbiB0aGUgUElEIGxvb2t1cCB1c2VkIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgZmFpbHMgd2hpbGUgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLCB3aGljaCB3b3VsZCBsZWFkIHRvIGEgbWVtb3J5IGFjY2VzcyB2aW9sYXRpb24uIFRoaXMgaXMgbGlrZWx5IGEgZml4IGZvciBhIHNlcmlvdXMgaXNzdWUsIGxpa2UgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UsIGEgbG9ja2luZyBidWcsIG9yIHBvdGVudGlhbGx5IGEgdGltZXIgZmlyaW5nIG9uIGEgdGFzayB0aGF0IGlzIG5vIGxvbmdlciB2YWxpZC4gSSB0aGluayB0aGUgdGltZXIgaGFzIGEgcG9pbnRlciB0byB0aGUgdGFzaywgYW5kIHRoZSB0YXNrIG1pZ2h0IGJlIGZyZWVkIHByaW9yIHRvIHRoZSB0aW1lci4gSXQgZG9lc24ndCBzZWVtIHRvIGludm9sdmUgYW55IG9idmlvdXMgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzIGJhc2VkIG9uIHdoYXQgSSBjYW4gc2VlLiBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoYXQgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgZnVuY3Rpb24gdG8gY29uZmlybSBteSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlIGlzc3VlIGFuZCB0aGUgc2FmZXR5IG9mIHRoZSBwcm9wb3NlZCBmaXguIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgbGlmZWN5Y2xlIG9mIHRoZXNlIHRpbWVycyBkdXJpbmcgcHJvY2VzcyBleGVjdXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMjoxMzoyMi40OTE1NTM4NDdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDMwODE1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicG9zaXhfY3B1X3RpbWVyc19leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGVjLmM9OTIyPXN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxuZnMvZXhlYy5jLTEwMTMtXFx0XFx0c3Bpbl9sb2NrKGxvY2spO1xcbmZzL2V4ZWMuYzoxMDE0OlxcdFxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xcbmZzL2V4ZWMuYy0xMDE1LVxcdFxcdHNwaW5fdW5sb2NrKGxvY2spO1xcbi0tXFxuZnMvZXhlYy5jPTExMzY9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTEyMDgtXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2bWUtXFx1MDAzZXNpZ2hhbmQtXFx1MDAzZXNpZ2xvY2spO1xcbmZzL2V4ZWMuYzoxMjA5OlxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdChtZSk7XFxuZnMvZXhlYy5jLTEyMTAtXFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZtZS1cXHUwMDNlc2lnaGFuZC1cXHUwMDNlc2lnbG9jayk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oPTIyNj12b2lkIHJ1bl9wb3NpeF9jcHVfdGltZXJzKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmg6MjI3OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XFxuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaDoyMjg6dm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oLTIyOS12b2lkIHNldF9wcm9jZXNzX2NwdV90aW1lcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGludCBjbG9ja19pZHgsXFxuLS1cXG5rZXJuZWwvZXhpdC5jPTE1OD1zdGF0aWMgdm9pZCBfX2V4aXRfc2lnbmFsKHN0cnVjdCByZWxlYXNlX3Rhc2tfcG9zdCAqcG9zdCwgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuLS1cXG5rZXJuZWwvZXhpdC5jLTE3MC0jaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU1xcbmtlcm5lbC9leGl0LmM6MTcxOlxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xcbmtlcm5lbC9leGl0LmMtMTcyLVxcdGlmIChncm91cF9kZWFkKVxcbmtlcm5lbC9leGl0LmM6MTczOlxcdFxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCh0c2spO1xcbmtlcm5lbC9leGl0LmMtMTc0LSNlbmRpZlxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jPTQ1MT1zdGF0aWMgdm9pZCBkaXNhcm1fdGltZXIoc3RydWN0IGtfaXRpbWVyICp0aW1lciwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ4MS0gKlxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo0ODI6ICogX19leGl0X3NpZ25hbCgpIGludm9rZXMgcG9zaXhfY3B1X3RpbWVyc19leGl0KCkgYW5kIGlmIHRoZSB0aHJlYWQgZ3JvdXAgaXNcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDgzLSAqIGRlYWQgaXQgYWxzbyBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZ3JvdXBfZXhpdCgpLiBUaGVzZSBmdW5jdGlvbnMgZGVsZXRlXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDg5LSAqIHRocmVhZCBncm91cCBpcyBub3QgZGVhZCB0aGV5IG9ubHkgY2xlYW4gdXAgdGhlIHBlciB0YXNrIHRpbWVycyB2aWFcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDkwOiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpLlxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy00OTEtICpcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz02MjQ9c3RhdGljIHZvaWQgY2xlYW51cF90aW1lcnMoc3RydWN0IHBvc2l4X2NwdXRpbWVycyAqcGN0KVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzMy0gKiBpcyBiZWluZyByZWFwZWQuICBXaGVuIHRoZSBmaW5hbCAobGVhZGVyKSB0aHJlYWQgaW4gdGhlIGdyb3VwIGlzIHJlYXBlZCxcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM0OiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCB3aWxsIGJlIGNhbGxlZCBhZnRlciBwb3NpeF9jcHVfdGltZXJzX2V4aXQuXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzNS0gKi9cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM2OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02Mzcte1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzOS19XFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjY0MDp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNjQxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MTM6MjQuMTk0NjQxMjA0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNzI1NDU5MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS01TQU4gTmVjZXNzaXR5KipcblxuT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBkZWFsaW5nIHdpdGggYSBwcmV0dHkgc3BlY2lmaWMgcmFjZSBjb25kaXRpb24gY2VudGVyZWQgYXJvdW5kIHRhc2sgbGlmZWN5Y2xlIGFuZCwgaW1wb3J0YW50bHksIHRoZSBtYW5hZ2VtZW50IG9mIHRpbWVycyDigJMgc3BlY2lmaWNhbGx5LCBQT1NJWCBDUFUgdGltZXJzLiBUaGUgY29yZSBpc3N1ZSBpcyB0aGF0IGEgdGhyZWFkJ3MgUElEIGNhbiBiZSBwYXNzZWQgdG8gYW4gKm9sZCogbGVhZGVyIGR1cmluZyBgZGVfdGhyZWFkKClgLCBhbmQgdGhpcyBsZWFkcyB0byBhIFBJRCBsb29rdXAgZmFpbHVyZSB3aXRoaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCwgZXNwZWNpYWxseSBpZiB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCBmb3IgdGhhdCB0aHJlYWQuIFRoZSBzb2x1dGlvbiB0aGV5J3ZlIGNvbWUgdXAgd2l0aCwgZGVxdWV1ZWluZyB0aGUgdGltZXJzIHdpdGggYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBiZWZvcmUgdGhlIFBJRCBzd2FwLCBtYWtlcyBzZW5zZS4gSXQncyBhIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZpeCwgYmFzaWNhbGx5IGVuc3VyaW5nIHRoZSB0aW1lcnMgYXJlIHByb3Blcmx5IGNsZWFuZWQgdXAgYmVmb3JlIHRoaXMgUElEIHJlYXNzaWdubWVudCBoYXBwZW5zLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIHJlcXVpcmVzIGEgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBjaGVjay4gQW5kIEknbSBzYXlpbmcgKm5vKi4gS01TQU4gaXMgZ2VuZXJhbGx5IGNvbmNlcm5lZCB3aXRoIHRoaW5ncyBsaWtlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFuZCBpbmZvcm1hdGlvbiBsZWFrcywgdGhpbmdzIHRoYXQgZXhwb3NlIGtlcm5lbCBpbnRlcm5hbHMuIFRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBub3IgaXMgaXQgZGVhbGluZyB3aXRoIG1lbW9yeSB0aGF0J3MgdW5pbml0aWFsaXplZC4gVGhpcyBzb3VuZHMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBsb2dpYyBmbGF3IHdpdGggaG93IHRpbWVycyBhcmUgaGFuZGxlZCB3aGVuIGEgdGhyZWFkIGNoYW5nZXMgaXRzIGdyb3VwIGxlYWRlciBkdXJpbmcgYGV4ZWN2ZWAuXG5cbkFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgZml4LCBsaWtlIGEgdXNlLWFmdGVyLWZyZWUgb3IgYSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UsIHdvdWxkIGJlIGNhdWdodCBwZXJmZWN0bHkgd2VsbCBieSBLQVNBTiwgb3IgZXZlbiBieSBqdXN0IGdvb2QsIG9sZC1mYXNoaW9uZWQga2VybmVsIGRlYnVnZ2luZy4gTm8gbmVlZCB0byBicmluZyBvdXQgdGhlIGhlYXZ5IGFydGlsbGVyeSBvZiBLTVNBTiBoZXJlLiBJdCdzIG5vdCB0YXJnZXRpbmcgdGhlIGtpbmQgb2YgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgdGhhdCBLTVNBTiBpcyBkZXNpZ25lZCB0byBmaW5kLiBBIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIHdvdWxkIGJlIG92ZXJraWxsIGFuZCBhIHdhc3RlIG9mIHJlc291cmNlcyBpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZS4gVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgc2hvdWxkIGRlZmluaXRlbHkgYmUgc2V0IHRvIGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NzIsIk91dHB1dFRva2VucyI6MjA2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEyOjEzOjMyLjU2NzE5MTIzM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGFuIGlzc3VlIGluIGBkZV90aHJlYWQoKWAgd2hlcmUgYSB0aHJlYWQncyBQSUQgaXMgaGFuZGVkIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBpcyB0aGVuIHJlYXBlZC4gVGhpcyBjYXVzZXMgYSBQSUQgbG9va3VwIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCBpZiBwZXItdGhyZWFkIENQVSB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZC4gVG8gZml4IHRoaXMsIHRoZSBwYXRjaCBkZXF1ZXVlcyB0aGUgdGltZXJzIGJ5IGNhbGxpbmcgYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBiZWZvcmUgdGhlIFBJRCBleGNoYW5nZS4gVGhpcyBpcyBhIGxvZ2ljL2xpZmVjeWNsZSBidWcgcmVsYXRlZCB0byBQT1NJWCBDUFUgdGltZXJzIGFuZCB0aHJlYWQgZ3JvdXAgbGVhZGVyIGNoYW5nZXMgZHVyaW5nIGBleGVjdmVgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIGFyZWEgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGFuIGlzc3VlIGluIGBkZV90aHJlYWQoKWAgd2hlcmUgYSB0aHJlYWQncyBQSUQgaXMgaGFuZGVkIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBpcyB0aGVuIHJlYXBlZC4gVGhpcyBjYXVzZXMgYSBQSUQgbG9va3VwIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCBpZiBwZXItdGhyZWFkIENQVSB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZC4gVG8gZml4IHRoaXMsIHRoZSBwYXRjaCBkZXF1ZXVlcyB0aGUgdGltZXJzIGJ5IGNhbGxpbmcgYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBiZWZvcmUgdGhlIFBJRCBleGNoYW5nZS4gVGhpcyBpcyBhIGxvZ2ljL2xpZmVjeWNsZSBidWcgcmVsYXRlZCB0byBQT1NJWCBDUFUgdGltZXJzIGFuZCB0aHJlYWQgZ3JvdXAgbGVhZGVyIGNoYW5nZXMgZHVyaW5nIGBleGVjdmVgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIGFyZWEgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jsg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-26 11:48:14 +0000 UTC FinishedAt: 2026-08-26 12:13:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "POSIX_TIMERS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "POSIX_TIMERS" ], "series_id": "6dd63e09-9990-4f04-b67d-e35ee3141b4e" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "posix_cpu_timers_exit", "begin_new_exec" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BPU0lYX1RJTUVSUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7LAogICAgJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSBpbiBgZGVfdGhyZWFkKClgIHdoZXJlIGEgdGhyZWFkJiMzOTtzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIsIHdoaWNoIGlzIHRoZW4gcmVhcGVkLiBUaGlzIGNhdXNlcyBhIFBJRCBsb29rdXAgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIGlmIHBlci10aHJlYWQgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLiBUbyBmaXggdGhpcywgdGhlIHBhdGNoIGRlcXVldWVzIHRoZSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgUElEIGV4Y2hhbmdlLiBUaGlzIGlzIGEgbG9naWMvbGlmZWN5Y2xlIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgYW5kIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyBkdXJpbmcgYGV4ZWN2ZWAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGluIHRoaXMgYXJlYSAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGRlX3RocmVhZCgpYCBpbiBgZnMvZXhlYy5jYCB0byBkZXF1ZXVlIHBlci10aHJlYWQgQ1BVIHRpbWVycyBieSBjYWxsaW5nIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgYmVmb3JlIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyJiMzOTtzIFBJRCBpcyBleGNoYW5nZWQuIFRoaXMgcHJldmVudHMgYSBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgd2hlbiB0aGUgb2xkIGxlYWRlciBpcyByZWFwZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwmIzM5O3MgZXhlY3ZlIHBhdGggYW5kIGlzIHJlYWNoYWJsZSB3aGVuIGEgbXVsdGktdGhyZWFkZWQgcHJvY2VzcyBjYWxscyBleGVjdmUuIEl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTI6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZGY2ODI3ZjAxNDM5NGVlZDUwNmE1YTRmZmRlNmI3MzAzMjViN2Q2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMTI6MDQ6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXhlYy5jIGIvZnMvZXhlYy5jXG5pbmRleCA3NDVmNmViNTI3OWU2Li45YjJkMTQwYmQ5ZjJhIDEwMDY0NFxuLS0tIGEvZnMvZXhlYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leGVjLmNcbkBAIC0xMDAzLDYgJiM0MzsxMDAzLDE4IEBAIHN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuIFx0XHQgKiB0aGUgZm9ybWVyIHRocmVhZCBncm91cCBsZWFkZXI6XG4gXHRcdCAqL1xuIFxuJiM0MzsjaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIGV4Y2hhbmdlX3RpZHMoKSBoYW5kcyB0aGlzIHRocmVhZCYjMzk7cyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsXG4mIzQzO1x0XHQgKiB3aGljaCBpcyByZWFwZWQgcmlnaHQgYWZ0ZXIuIFRoZSBQSUQgbG9va3VwIGluXG4mIzQzO1x0XHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxuJiM0MztcdFx0ICogdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgaGVyZSwgc28gZGVxdWV1ZSB0aGVtIGZpcnN0LlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRzcGluX2xvY2sobG9jayk7XG4mIzQzO1x0XHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrKGxvY2spO1xuJiM0MzsjZW5kaWZcbiYjNDM7XG4gXHRcdC8qIEJlY29tZSBhIHByb2Nlc3MgZ3JvdXAgbGVhZGVyIHdpdGggdGhlIG9sZCBsZWFkZXImIzM5O3MgcGlkLlxuIFx0XHQgKiBUaGUgb2xkIGxlYWRlciBiZWNvbWVzIGEgdGhyZWFkIG9mIHRoZSB0aGlzIHRocmVhZCBncm91cC5cbiBcdFx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTI6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BPU0lYX1RJTUVSUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7LAogICAgJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgZGVfdGhyZWFkKClgIGluIGBmcy9leGVjLmNgIHRvIGRlcXVldWUgcGVyLXRocmVhZCBDUFUgdGltZXJzIGJ5IGNhbGxpbmcgYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBiZWZvcmUgdGhlIHRocmVhZCBncm91cCBsZWFkZXImIzM5O3MgUElEIGlzIGV4Y2hhbmdlZC4gVGhpcyBwcmV2ZW50cyBhIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCB3aGVuIHRoZSBvbGQgbGVhZGVyIGlzIHJlYXBlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCYjMzk7cyBleGVjdmUgcGF0aCBhbmQgaXMgcmVhY2hhYmxlIHdoZW4gYSBtdWx0aS10aHJlYWRlZCBwcm9jZXNzIGNhbGxzIGV4ZWN2ZS4gSXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVkZjY4MjdmMDE0Mzk0ZWVkNTA2YTVhNGZmZGU2YjczMDMyNWI3ZDYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAxMjowNDo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuYwppbmRleCA3NDVmNmViNTI3OWU2Li45YjJkMTQwYmQ5ZjJhIDEwMDY0NAotLS0gYS9mcy9leGVjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhlYy5jCkBAIC0xMDAzLDYgJiM0MzsxMDAzLDE4IEBAIHN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQogCQkgKiB0aGUgZm9ybWVyIHRocmVhZCBncm91cCBsZWFkZXI6CiAJCSAqLwogCiYjNDM7I2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlMKJiM0MzsJCS8qCiYjNDM7CQkgKiBleGNoYW5nZV90aWRzKCkgaGFuZHMgdGhpcyB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLAomIzQzOwkJICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpbgomIzQzOwkJICogdGltZXJfbG9ja19zaWdoYW5kKCkgdGhlbiBmYWlscyB3aGlsZSB0aGUgcGVyIHRocmVhZCBDUFUKJiM0MzsJCSAqIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkIGhlcmUsIHNvIGRlcXVldWUgdGhlbSBmaXJzdC4KJiM0MzsJCSAqLwomIzQzOwkJc3Bpbl9sb2NrKGxvY2spOwomIzQzOwkJcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7CiYjNDM7CQlzcGluX3VubG9jayhsb2NrKTsKJiM0MzsjZW5kaWYKJiM0MzsKIAkJLyogQmVjb21lIGEgcHJvY2VzcyBncm91cCBsZWFkZXIgd2l0aCB0aGUgb2xkIGxlYWRlciYjMzk7cyBwaWQuCiAJCSAqIFRoZSBvbGQgbGVhZGVyIGJlY29tZXMgYSB0aHJlYWQgb2YgdGhlIHRoaXMgdGhyZWFkIGdyb3VwLgogCQkgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTI6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1NgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDEzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIG1vZGlmeWluZyBgZnMvZXhlYy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgZGVfdGhyZWFkKClgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgKmNvbmRpdGlvbmFsbHkqIOKAkyBvbmx5IGlmIGBDT05GSUdfUE9TSVhfVElNRVJTYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGEgcHJldHR5IHNpZ25pZmljYW50IGFkZGl0aW9uLCBlc3BlY2lhbGx5IGdpdmVuIHRoYXQgYGRlX3RocmVhZCgpYCBpcyByaWdodCBpbiB0aGUgaGVhcnQgb2YgdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gcGF0aCwgZGVhbGluZyB3aXRoIHRocmVhZCB0ZXJtaW5hdGlvbiBhbmQgYGV4ZWN2ZWAuIFdlJiMzOTtyZSB0YWxraW5nIGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdHkgaGVyZS4KCkdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCB0aGlzIHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldCYjMzQ7IHRvIG1lLiBBbnkgY2hhbmdlIGluIGEgZnVuY3Rpb24gbGlrZSB0aGlzIGhhcyB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUsIGhhcmQtdG8tZGV0ZWN0IGJ1Z3MgdGhhdCBjb3VsZCBsZWFkIHRvIGNyYXNoZXMgb3IsIHdvcnNlLCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIEl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggaW52ZXN0aW5nIHRpbWUgaW4gdGhvcm91Z2hseSB0ZXN0aW5nIHRoaXMuCgpUaW1lIHRvIGRpdmUgaW4gYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgZGVfdGhyZWFkKClgIGl0c2VsZiwgd2l0aGluIGBmcy9leGVjLmNgLCBrZWVwaW5nIHRoYXQgYFBPU0lYX1RJTUVSU2AgY29uZmlndXJhdGlvbiBpbiBtaW5kLiBJJiMzOTtsbCBwcm9iYWJseSBhbHNvIGRvIGEgcXVpY2sgZ3JlcCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsYXRlZCwgYnV0IHBvdGVudGlhbGx5IGxlc3Mgb2J2aW91cywgY2hhbmdlcyB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgaW50ZXJhY3Rpb25zIG9yIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGJlIHN1cmUgdG8gY2hlY2sgYW55dGhpbmcgZWxzZSB0aGF0IG1heSBiZSBsaW5rZWQgdG8gdGhpcyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlX3RocmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4ZWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGVjLmM9OTE1PXN0YXRpYyB2b2lkIGV4ZWNfbW1fcHV0X29sZChzdHJ1Y3QgbW1fc3RydWN0ICpvbGRfbW0pXG4tLVxuZnMvZXhlYy5jLTkyMS1cbmZzL2V4ZWMuYzo5MjI6c3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG5mcy9leGVjLmMtOTIzLXtcbi0tXG5mcy9leGVjLmM9MTEyMz1zdGF0aWMgc3RydWN0IGZpbGUgKmJwcm1faWRlbnRpdHlfZmlsZShjb25zdCBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2V4ZWMuYy0xMTMyLSAqIHNlZW4gYnkgdXNlcnNwYWNlIHNpbmNlIGVpdGhlciB0aGUgcHJvY2VzcyBpcyBhbHJlYWR5IHRha2luZyBhIGZhdGFsXG5mcy9leGVjLmM6MTEzMzogKiBzaWduYWwgKHZpYSBkZV90aHJlYWQoKSBvciBjb3JlZHVtcCksIG9yIHdpbGwgaGF2ZSBTRUdWIHJhaXNlZFxuZnMvZXhlYy5jLTExMzQtICogKGFmdGVyIGV4ZWNfbW1hcCgpKSBieSBzZWFyY2hfYmluYXJ5X2hhbmRsZXIgKHNlZSBiZWxvdykuXG4tLVxuZnMvZXhlYy5jPTExMzY9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxuLS1cbmZzL2V4ZWMuYy0xMTYzLVx0LyogTWFrZSB0aGlzIHRoZSBvbmx5IHRocmVhZCBpbiB0aGUgdGhyZWFkIGdyb3VwICovXG5mcy9leGVjLmM6MTE2NDpcdHJldHZhbCA9IGRlX3RocmVhZChtZSk7XG5mcy9leGVjLmMtMTE2NS1cdGlmIChyZXR2YWwpXG4tLVxuZnMvZXhlYy5jPTE0Njk9c3RhdGljIHZvaWQgZnJlZV9icHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTE0NzgtXHRpZiAoYnBybS1cdTAwM2VjcmVkKSB7XG5mcy9leGVjLmM6MTQ3OTpcdFx0LyogaW4gY2FzZSBleGVjIGZhaWxzIGJlZm9yZSBkZV90aHJlYWQoKSBzdWNjZWVkcyAqL1xuZnMvZXhlYy5jLTE0ODAtXHRcdGN1cnJlbnQtXHUwMDNlZnMtXHUwMDNlaW5fZXhlYyA9IDA7XG4tLVxuZnMvZXhlYy5jPTE1OTM9c3RhdGljIHZvaWQgY2hlY2tfdW5zYWZlX2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtMTYxNC1cdCAqIE90aGVyd2lzZSB3ZSBzZXQgZnMtXHUwMDNlaW5fZXhlYyA9IDEgdG8gZGVueSBjbG9uZShDTE9ORV9GUylcbmZzL2V4ZWMuYzoxNjE1Olx0ICogZnJvbSBhbm90aGVyIHN1Yi10aHJlYWQgdW50aWwgZGVfdGhyZWFkKCkgc3VjY2VlZHMsIHRoaXNcbmZzL2V4ZWMuYy0xNjE2LVx0ICogc3RhdGUgaXMgcHJvdGVjdGVkIGJ5IGNyZWRfZ3VhcmRfbXV0ZXggd2UgaG9sZC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMjowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDMwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gVGhyZWFkaW5nIGFuZCBFeGVjdXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRlX3RocmVhZGAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBtYXJrZWQgYXMgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgaXNzdWUuIEl0JiMzOTtzIHN0YXRpYywgd2hpY2ggbWVhbnMgaXRzIHNjb3BlIGlzIGxpbWl0ZWQsIHlldCBJIHNlZSBpdCBiZWluZyBjYWxsZWQgZnJvbSBgYmVnaW5fbmV3X2V4ZWNgLiBgYmVnaW5fbmV3X2V4ZWNgIGlzIHRyaWdnZXJlZCBieSB0aGUgYGV4ZWN2ZWAgZmFtaWx5IG9mIGZ1bmN0aW9ucywgcmlnaHQ/IFNvLCB0aGVyZSYjMzk7cyBhIHBvdGVudGlhbCBpbnRlci1tb2R1bGUgZGVwZW5kZW5jeSBoZXJlIHRoYXQgcmVxdWlyZXMgZnVydGhlciBzY3J1dGlueS4KCkdpdmVuIHRoYXQgYGRlX3RocmVhZGAgaXMgc3RhdGljLCBJJiMzOTttIGdvaW5nIHRvIHNoaWZ0IG15IGZvY3VzIGF3YXkgZnJvbSBpdCBkaXJlY3RseS4gSW5zdGVhZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4ZWN1dGlvbiBmbG93LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBgYmVnaW5fbmV3X2V4ZWNgIGFuZCB0aGUgYGV4ZWN2ZWAgZmFtaWx5LiBQZXJoYXBzLCBpdCYjMzk7cyBlYXNpZXIgdG8gdHJhY2sgYGRvX2V4ZWN2ZWF0X2NvbW1vbmAgYW5kIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgLiBUaGUgY29udGV4dCBuZWVkcyBmdXJ0aGVyIGV4YW1pbmF0aW9uISBIbW1tLCBsZXQmIzM5O3Mgc2VlLCBgcG9zaXhfY3B1X3RpbWVyc19leGl0YC4uLiB0aGF0IGNvdWxkIGJlIGludGVyZXN0aW5nLiBXYWl0LCBpcyAqdGhhdCogc3RhdGljIHRvbz8gSSBuZWVkIHRvIGNoZWNrIGl0cyBkZWNsYXJhdGlvbiBhbmQgc2NvcGUuIFRoYXQgbWlnaHQgb2ZmZXIgYSBtb3JlIGRpcmVjdCBwb2ludCBvZiBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGVjLmM9OTIyPXN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmZzL2V4ZWMuYy0xMDEzLVx0XHRzcGluX2xvY2sobG9jayk7XG5mcy9leGVjLmM6MTAxNDpcdFx0cG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7XG5mcy9leGVjLmMtMTAxNS1cdFx0c3Bpbl91bmxvY2sobG9jayk7XG4tLVxuZnMvZXhlYy5jPTExMzY9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxuLS1cbmZzL2V4ZWMuYy0xMjA4LVx0c3Bpbl9sb2NrX2lycShcdTAwMjZtZS1cdTAwM2VzaWdoYW5kLVx1MDAzZXNpZ2xvY2spO1xuZnMvZXhlYy5jOjEyMDk6XHRwb3NpeF9jcHVfdGltZXJzX2V4aXQobWUpO1xuZnMvZXhlYy5jLTEyMTAtXHRzcGluX3VubG9ja19pcnEoXHUwMDI2bWUtXHUwMDNlc2lnaGFuZC1cdTAwM2VzaWdsb2NrKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oPTIyNj12b2lkIHJ1bl9wb3NpeF9jcHVfdGltZXJzKHZvaWQpO1xuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaDoyMjc6dm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmg6MjI4OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0X2dyb3VwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oLTIyOS12b2lkIHNldF9wcm9jZXNzX2NwdV90aW1lcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGludCBjbG9ja19pZHgsXG4tLVxua2VybmVsL2V4aXQuYz0xNTg9c3RhdGljIHZvaWQgX19leGl0X3NpZ25hbChzdHJ1Y3QgcmVsZWFzZV90YXNrX3Bvc3QgKnBvc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmtlcm5lbC9leGl0LmMtMTcwLSNpZmRlZiBDT05GSUdfUE9TSVhfVElNRVJTXG5rZXJuZWwvZXhpdC5jOjE3MTpcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xua2VybmVsL2V4aXQuYy0xNzItXHRpZiAoZ3JvdXBfZGVhZClcbmtlcm5lbC9leGl0LmM6MTczOlx0XHRwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAodHNrKTtcbmtlcm5lbC9leGl0LmMtMTc0LSNlbmRpZlxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDgxLSAqXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDgyOiAqIF9fZXhpdF9zaWduYWwoKSBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpIGFuZCBpZiB0aGUgdGhyZWFkIGdyb3VwIGlzXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDgzLSAqIGRlYWQgaXQgYWxzbyBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZ3JvdXBfZXhpdCgpLiBUaGVzZSBmdW5jdGlvbnMgZGVsZXRlXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ4OS0gKiB0aHJlYWQgZ3JvdXAgaXMgbm90IGRlYWQgdGhleSBvbmx5IGNsZWFuIHVwIHRoZSBwZXIgdGFzayB0aW1lcnMgdmlhXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDkwOiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpLlxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ5MS0gKlxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz02MjQ9c3RhdGljIHZvaWQgY2xlYW51cF90aW1lcnMoc3RydWN0IHBvc2l4X2NwdXRpbWVycyAqcGN0KVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzMtICogaXMgYmVpbmcgcmVhcGVkLiAgV2hlbiB0aGUgZmluYWwgKGxlYWRlcikgdGhyZWFkIGluIHRoZSBncm91cCBpcyByZWFwZWQsXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM0OiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCB3aWxsIGJlIGNhbGxlZCBhZnRlciBwb3NpeF9jcHVfdGltZXJzX2V4aXQuXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNjM1LSAqL1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjYzNjp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02Mzcte1xuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzktfVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjY0MDp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02NDEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzODMKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IFRoaW5raW5nOiBBZGRpbmcgU3ltYm9scyBmb3IgRW5oYW5jZWQgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBjb25maWd1cmF0aW9uLiBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCBpc24mIzM5O3Qgc3RhdGljLCBtZWFuaW5nIGl0JiMzOTtzIGV4dGVybmFsbHkgdmlzaWJsZSwgYW5kIHRoYXQmIzM5O3MgaW1wb3J0YW50IGZvciBhbmFseXNpcy4gVGhlbiB0aGVyZSYjMzk7cyBgZGVfdGhyZWFkYCwgd2hpY2ggKmlzKiBzdGF0aWM7IEkmIzM5O2xsIGtlZXAgdGhhdCBpbiBtaW5kIGZvciBzY29waW5nIGJ1dCBpdCYjMzk7cyBsZXNzIGltbWVkaWF0ZWx5IHJlbGV2YW50IHRvIHRoZSBiaWdnZXIgcGljdHVyZS4gYGJlZ2luX25ld19leGVjYCBpcyBhbHNvIG5vbi1zdGF0aWMuCgpHaXZlbiB0aGUgbm9uLXN0YXRpYyBuYXR1cmUgb2YgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgYW5kIGBiZWdpbl9uZXdfZXhlY2AsIGFuZCBrbm93aW5nIHRoZSBjb250ZXh0IEkmIzM5O20gd29ya2luZyBpbiwgSSYjMzk7bSBnb2luZyB0byBhZGQgYm90aCBvZiB0aG9zZSBmdW5jdGlvbnMgdG8gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuIFRoaXMgc2hvdWxkIGhlbHAgbWUga2VlcCB0cmFjayBvZiB0aGVpciB1c2UgYW5kIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uCgpOb3csIHRoZSBjb25maWd1cmF0aW9uLi4uIEkmIzM5O20gcmVtaW5kZWQgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBoZXJlIGlzIGBQT1NJWF9USU1FUlNgLiBUaW1lIHRvIHB1bGwgdXAgS2NvbmZpZyBhbmQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhhdCBjb25maWcgdmFyaWFibGUgaW5mbHVlbmNlcyB0aGUgYmVoYXZpb3Igb2YgdGhlc2UgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGluIHRoZSBsYXJnZXIgZnJhbWV3b3JrLiBVbmRlcnN0YW5kaW5nIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIHN5bWJvbHMgbWlnaHQgcmVsYXRlIHRvIHRoZSB3aWRlciBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTI6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBPU0lYX1RJTUVSUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbml0L0tjb25maWc9MTc1Mz1jb25maWcgRkhBTkRMRVxuLS1cbmluaXQvS2NvbmZpZy0xNzY1LVxuaW5pdC9LY29uZmlnOjE3NjY6Y29uZmlnIFBPU0lYX1RJTUVSU1xuaW5pdC9LY29uZmlnLTE3NjctXHRib29sIFwmIzM0O1Bvc2l4IENsb2NrcyBcdTAwMjYgdGltZXJzXCYjMzQ7IGlmIEVYUEVSVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBPU0lYIFRpbWVycyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIGBQT1NJWF9USU1FUlNgIG9wdGlvbiBpcyBhIGJvb2xlYW4gY29uZmlnLiBTdHJhaWdodGZvcndhcmQgZW5vdWdoLCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgbmVlZHMgdG8gaW5jbHVkZSBgWyYjMzQ7UE9TSVhfVElNRVJTJiMzNDtdYC4gVGhhdCYjMzk7cyBhIHF1aWNrIHdpbi4KCk5vdywgbGV0IG1lIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGguIEFoLCB5ZXMsIGBkZV90aHJlYWRgIGlzIGluZGVlZCByZWFjaGFibGUuIEl0IGdldHMgY2FsbGVkIGR1cmluZyB0aGUgYGV4ZWN2ZWAgc3lzdGVtIGNhbGwsIHNwZWNpZmljYWxseSB3aGVuIGEgbXVsdGktdGhyZWFkZWQgcHJvY2VzcyBleGVjdXRlcyBgZXhlY3ZlYC4gTWFrZXMgc2Vuc2UuIFRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHNwZWNpZmljIGZhaWx1cmUgc2NlbmFyaW8sIG5hbWVseSB0aGF0IGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgZmFpbHMgaWYgcGVyLXRocmVhZCBDUFUgdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQuIFRoZSBmaXggYXBwZWFycyB0byBiZSBkZXF1ZXVpbmcgdGhvc2UgdGltZXJzICpiZWZvcmUqIHNvbWV0aGluZyBlbHNlIGhhcHBlbnMg4oCTIHNwZWNpZmljYWxseSwgYmVmb3JlIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyJiMzOTtzIFBJRCBpcyBleGNoYW5nZWQuIFRoaXMgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNsYXNzaWMgcmFjZSBjb25kaXRpb24gZml4LCBhbmQgZGVmaW5pdGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIGZ1enouCgpMZXQgbWUgYXJ0aWN1bGF0ZSB0aGF0IGNsZWFybHkgZm9yIHRoZSByZWNvcmQuIFRoZSBwYXRjaCBhbHRlcnMgYGRlX3RocmVhZCgpYCB3aXRoaW4gYGZzL2V4ZWMuY2AuIEl0IGRlcXVldWVzIHBlci10aHJlYWQgQ1BVIHRpbWVycyBieSBpbnZva2luZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIHByaW9yIHRvIHN3aXRjaGluZyB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlciYjMzk7cyBQSUQsIGF2b2lkaW5nIHRoZSBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgd2hlbiB0aGUgb2xkIGxlYWRlciBpcyByZWFwZWQuIFRoaXMgaW1wYWN0cyB0aGUga2VybmVsJiMzOTtzIGNvcmUgYGV4ZWN2ZWAgcGF0aCBhbmQgaXMgcmVhY2hhYmxlIGluIG11bHRpLXRocmVhZGVkIGV4ZWN2ZSBjYWxscy4gV29ydGggZnV6emluZywgYWJzb2x1dGVseS4KClRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgYW5kIGBiZWdpbl9uZXdfZXhlY2AuIEkgc2hvdWxkIHByb2JhYmx5IHZlcmlmeSBgYmVnaW5fbmV3X2V4ZWNgIGp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMjowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3Q9MTY1Nj1kaXNwbGF5LWdyYXBoIG9wdGlvbjo6XG4tLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTE2OTktICAgPVx1MDAzZSBtbXB1dFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0OjE3MDA6ICAgPVx1MDAzZSBiZWdpbl9uZXdfZXhlY1xuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTE3MDEtICAgPVx1MDAzZSBsb2FkX2VsZl9iaW5hcnlcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYz0xNzY0PXZvaWQgZnBzaW1kX3Jlc3RvcmVfY3VycmVudF9zdGF0ZSh2b2lkKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jLTE3NzEtXHQgKlxuYXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmM6MTc3MjpcdCAqIFdoZW4gRlAvU0lNRCBpcyBkZXRlY3RlZCwgYmVnaW5fbmV3X2V4ZWMoKSB3aWxsIHNldFxuYXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmMtMTc3My1cdCAqIFRJRl9GT1JFSUdOX0ZQU1RBVEUgdmlhIGZsdXNoX3RocmVhZCgpIC1cdTAwM2UgZnBzaW1kX2ZsdXNoX3RocmVhZCgpLFxuLS1cbmZzL2JpbmZtdF9lbGYuYz04Mjk9c3RhdGljIGludCBsb2FkX2VsZl9iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9iaW5mbXRfZWxmLmMtMTAwOS1cdC8qIEZsdXNoIGFsbCB0cmFjZXMgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIGV4ZWN1dGFibGUgKi9cbmZzL2JpbmZtdF9lbGYuYzoxMDEwOlx0cmV0dmFsID0gYmVnaW5fbmV3X2V4ZWMoYnBybSk7XG5mcy9iaW5mbXRfZWxmLmMtMTAxMS1cdGlmIChyZXR2YWwpXG4tLVxuZnMvYmluZm10X2VsZl9mZHBpYy5jPTE4Mj1zdGF0aWMgaW50IGxvYWRfZWxmX2ZkcGljX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2JpbmZtdF9lbGZfZmRwaWMuYy0zNDgtXHQvKiBmbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXG5mcy9iaW5mbXRfZWxmX2ZkcGljLmM6MzQ5Olx0cmV0dmFsID0gYmVnaW5fbmV3X2V4ZWMoYnBybSk7XG5mcy9iaW5mbXRfZWxmX2ZkcGljLmMtMzUwLVx0aWYgKHJldHZhbClcbi0tXG5mcy9iaW5mbXRfZmxhdC5jPTQwNj1zdGF0aWMgaW50IGxvYWRfZmxhdF9maWxlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sXG4tLVxuZnMvYmluZm10X2ZsYXQuYy01MDgtXHQvKiBGbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXG5mcy9iaW5mbXRfZmxhdC5jOjUwOTpcdHJldCA9IGJlZ2luX25ld19leGVjKGJwcm0pO1xuZnMvYmluZm10X2ZsYXQuYy01MTAtXHRpZiAocmV0KVxuLS1cbmZzL2V4ZWMuYz0yNTg9c3RhdGljIGludCBicHJtX21tX2luaXQoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtMjY3LVxuZnMvZXhlYy5jOjI2ODpcdC8qIFN0YWdlZCBmb3Igd291bGRfZHVtcCgpIG5hcnJvd2luZzsgY29uc3VtZWQgYnkgYmVnaW5fbmV3X2V4ZWMoKS4gKi9cbmZzL2V4ZWMuYy0yNjktXHRicHJtLVx1MDAzZXVzZXJfbnMgPSBnZXRfdXNlcl9ucyhjdXJyZW50X3VzZXJfbnMoKSk7XG4tLVxuZnMvZXhlYy5jPTExMjM9c3RhdGljIHN0cnVjdCBmaWxlICpicHJtX2lkZW50aXR5X2ZpbGUoY29uc3Qgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtMTEzNS0gKi9cbmZzL2V4ZWMuYzoxMTM2OmludCBiZWdpbl9uZXdfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSlcbmZzL2V4ZWMuYy0xMTM3LXtcbi0tXG5mcy9leGVjLmMtMTM0OC19XG5mcy9leGVjLmM6MTM0OTpFWFBPUlRfU1lNQk9MKGJlZ2luX25ld19leGVjKTtcbmZzL2V4ZWMuYy0xMzUwLVxuLS1cbmZzL2V4ZWMuYz0xNDQ4PXN0cnVjdCBmaWxlICpicHJtX29wZW5faW50ZXJwcmV0ZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgY29uc3QgY2hhciAqcGF0aClcbi0tXG5mcy9leGVjLmMtMTQ2MC0gKiBvdmVycmlkZSBhbmQgbGV0IHRoZSBiaW5hcnkgbG9hZCBuYXRpdmVseSByYXRoZXIgdGhhbiBoYXZlXG5mcy9leGVjLmM6MTQ2MTogKiBiZWdpbl9uZXdfZXhlYygpIHJlZnVzZSBpdC4gQSBuby1vcCBvbmNlIGJwcm1fb3Blbl9pbnRlcnByZXRlcigpIHRvb2tcbmZzL2V4ZWMuYy0xNDYyLSAqIHRoZSBzdWJzdGl0dXRlLlxuLS1cbmZzL2V4ZWMuYz0xNzUyPXN0YXRpYyBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTE3ODQtXG5mcy9leGVjLmM6MTc4NTovKiBiaW5mbXQgaGFuZGxlcnMgd2lsbCBjYWxsIGJhY2sgaW50byBiZWdpbl9uZXdfZXhlYygpIG9uIHN1Y2Nlc3MuICovXG5mcy9leGVjLmMtMTc4Ni1zdGF0aWMgaW50IGV4ZWNfYmlucHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jPTE4MzU9c3RhdGljIGludCBicHJtX2V4ZWN2ZShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2V4ZWMuYy0xODQ0LVx0ICogQ2hlY2sgZm9yIHVuc2FmZSBleGVjdXRpb24gc3RhdGVzIGJlZm9yZSBleGVjX2JpbnBybSgpLCB3aGljaFxuZnMvZXhlYy5jOjE4NDU6XHQgKiB3aWxsIGNhbGwgYmFjayBpbnRvIGJlZ2luX25ld19leGVjKCksIGludG8gYnBybV9jcmVkc19mcm9tX2ZpbGUoKSxcbmZzL2V4ZWMuYy0xODQ2LVx0ICogd2hlcmUgc2V0dWlkLW5lc3MgaXMgZXZhbHVhdGVkLlxuLS1cbmluY2x1ZGUvbGludXgvYmluZm10cy5oPTE2MT1leHRlcm4gaW50IF9fbXVzdF9jaGVjayByZW1vdmVfYXJnX3plcm8oc3RydWN0IGxpbnV4X2JpbnBybSAqKTtcbmluY2x1ZGUvbGludXgvYmluZm10cy5oOjE2MjpleHRlcm4gaW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTtcbmluY2x1ZGUvbGludXgvYmluZm10cy5oLTE2My1leHRlcm4gdm9pZCBzZXR1cF9uZXdfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSk7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC5oPTgzNT1zdHJ1Y3QgdGFza19zdHJ1Y3Qge1xuLS1cbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMTg1LVx0ICpcbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxMTg2Olx0ICogLSBub3JtYWxseSBpbml0aWFsaXplZCBieSBiZWdpbl9uZXdfZXhlYygpXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTE4Ny1cdCAqIC0gc2V0IGl0IHdpdGggc2V0X3Rhc2tfY29tbSgpIHRvIGVuc3VyZSBpdCBpcyBhbHdheXNcbi0tXG5rZXJuZWwvZXhlY19zdGF0ZS5jPTcxPWludCB0YXNrX2V4ZWNfc3RhdGVfY29weShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbi0tXG5rZXJuZWwvZXhlY19zdGF0ZS5jLTg1LSAqIFN0b3JlIFRBU0tfRFVNUEFCTEVfKiBvbiBjdXJyZW50LVx1MDAzZWV4ZWNfc3RhdGUuICBBbGwgY2FsbGVyc1xua2VybmVsL2V4ZWNfc3RhdGUuYzo4NjogKiAoY29tbWl0X2NyZWRzLCBiZWdpbl9uZXdfZXhlYywgcHJjdGwoUFJfU0VUX0RVTVBBQkxFKSkgYWN0IG9uIHRoZVxua2VybmVsL2V4ZWNfc3RhdGUuYy04Ny0gKiBydW5uaW5nIHRhc2ssIHdoaWNoIGd1YXJhbnRlZXMgLVx1MDAzZWV4ZWNfc3RhdGUgaXMgYWxsb2NhdGVkIGFuZCBjYW5ub3Rcbi0tXG5ydXN0L2tlcm5lbC90YXNrLnJzPTM1PW1hY3JvX3J1bGVzISBjdXJyZW50IHtcbi0tXG5ydXN0L2tlcm5lbC90YXNrLnJzLTQxLSAgICAgICAgLy8gKiBUbyByZXR1cm4gdG8gdXNlcnNwYWNlLCB0aGUgY2FsbGVyIG11c3QgbGVhdmUgdGhlIGN1cnJlbnQgc2NvcGUuXG5ydXN0L2tlcm5lbC90YXNrLnJzOjQyOiAgICAgICAgLy8gKiBPcGVyYXRpb25zIHN1Y2ggYXMgYGJlZ2luX25ld19leGVjKClgIGFyZSBuZWNlc3NhcmlseSB1bnNhZmUgYW5kIHRoZSBjYWxsZXIgb2ZcbnJ1c3Qva2VybmVsL3Rhc2sucnM6NDM6ICAgICAgICAvLyAgIGBiZWdpbl9uZXdfZXhlYygpYCBpcyByZXNwb25zaWJsZSBmb3Igc2FmZXR5LlxucnVzdC9rZXJuZWwvdGFzay5ycy00NC0gICAgICAgIC8vICogUnVzdCBhYnN0cmFjdGlvbnMgZm9yIHRoaW5ncyBzdWNoIGFzIGEgYGt0aHJlYWRfdXNlX21tKClgIHNjb3BlIG11c3QgcmVxdWlyZSB0aGVcbi0tXG5ydXN0L2tlcm5lbC90YXNrLnJzPTEwNz11bnNhZmUgaW1wbCBTeW5jIGZvciBUYXNrIHt9XG4tLVxucnVzdC9rZXJuZWwvdGFzay5ycy0xMjMtLy8vICogQ2FsbGluZyBgcmVsZWFzZV90YXNrKClgLlxucnVzdC9rZXJuZWwvdGFzay5yczoxMjQ6Ly8vICogQ2FsbGluZyBgYmVnaW5fbmV3X2V4ZWMoKWAgaW4gYSBiaW5hcnkgZm9ybWF0IGxvYWRlci5cbnJ1c3Qva2VybmVsL3Rhc2sucnMtMTI1LS8vL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTU4CgkJCQkJCQlvdXRwdXQ6IDE1NwoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkVudHJ5IFBvaW50cyBmb3IgRnV6emluZyBhbmQgUmVzdWx0IE1hbmFnZW1lbnQqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGlzLCBJJiMzOTttIHRoaW5raW5nIHRoYXQgYGJlZ2luX25ld19leGVjYCBzZWVtcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGZ1enppbmcuIEl0JiMzOTtzIG9mdGVuIHRoZSBjYXNlIHRoYXQgdGhlIHByb2dyYW0gaW5pdGlhbGl6YXRpb24gcm91dGluZXMgYXJlIGZlcnRpbGUgZ3JvdW5kIGZvciBmaW5kaW5nIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMuIEFuZCB5ZWFoLCBgcG9zaXhfY3B1X3RpbWVyc19leGl0YC4uLiB0aGF0JiMzOTtzIGFub3RoZXIgcG90ZW50aWFsbHkganVpY3kgYXJlYSB0byB0YXJnZXQuIFRoZSBpbnRlcmFjdGlvbiB3aXRoIHRpbWVycyBhbHdheXMgaW50cm9kdWNlcyBpbnRlcmVzdGluZyBjb25jdXJyZW5jeSBzY2VuYXJpb3MgYW5kIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9ucyB0aGF0IGZ1enppbmcgZXhjZWxzIGF0IHVuY292ZXJpbmcuCgpMZXQmIzM5O3Mgbm90IGZvcmdldCB0aGUgaW1wb3J0YW5jZSBvZiBjb2xsZWN0aW5nIG91ciByZXN1bHRzIHRob3VnaC4gSSYjMzk7ZCBiZXR0ZXIgbWFrZSBhIG5vdGUgdG8gY2FsbCBzZXQtcmVzdWx0cy4gR2V0dGluZyB0aG9zZSByZXN1bHRzIG9yZ2FuaXplZCBlYXJseSBpcyBhIGdvb2QgaWRlYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BPU0lYX1RJTUVSUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7LAogICAgJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgZGVfdGhyZWFkKClgIGluIGBmcy9leGVjLmNgIHRvIGRlcXVldWUgcGVyLXRocmVhZCBDUFUgdGltZXJzIGJ5IGNhbGxpbmcgYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBiZWZvcmUgdGhlIHRocmVhZCBncm91cCBsZWFkZXImIzM5O3MgUElEIGlzIGV4Y2hhbmdlZC4gVGhpcyBwcmV2ZW50cyBhIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCB3aGVuIHRoZSBvbGQgbGVhZGVyIGlzIHJlYXBlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCYjMzk7cyBleGVjdmUgcGF0aCBhbmQgaXMgcmVhY2hhYmxlIHdoZW4gYSBtdWx0aS10aHJlYWRlZCBwcm9jZXNzIGNhbGxzIGV4ZWN2ZS4gSXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UE9TSVhfVElNRVJTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cG9zaXhfY3B1X3RpbWVyc19leGl0JiMzNDssCiAgICAmIzM0O2JlZ2luX25ld19leGVjJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkZV90aHJlYWQoKWAgaW4gYGZzL2V4ZWMuY2AgdG8gZGVxdWV1ZSBwZXItdGhyZWFkIENQVSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlciYjMzk7cyBQSUQgaXMgZXhjaGFuZ2VkLiBUaGlzIHByZXZlbnRzIGEgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIHdoZW4gdGhlIG9sZCBsZWFkZXIgaXMgcmVhcGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsJiMzOTtzIGV4ZWN2ZSBwYXRoIGFuZCBpcyByZWFjaGFibGUgd2hlbiBhIG11bHRpLXRocmVhZGVkIHByb2Nlc3MgY2FsbHMgZXhlY3ZlLiBJdCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMjoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjEzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSBpbiBgZGVfdGhyZWFkKClgIHdoZXJlIGEgdGhyZWFkJiMzOTtzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIsIHdoaWNoIGlzIHRoZW4gcmVhcGVkLiBUaGlzIGNhdXNlcyBhIFBJRCBsb29rdXAgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIGlmIHBlci10aHJlYWQgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLiBUbyBmaXggdGhpcywgdGhlIHBhdGNoIGRlcXVldWVzIHRoZSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgUElEIGV4Y2hhbmdlLiBUaGlzIGlzIGEgbG9naWMvbGlmZWN5Y2xlIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgYW5kIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyBkdXJpbmcgYGV4ZWN2ZWAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGluIHRoaXMgYXJlYSAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWRmNjgyN2YwMTQzOTRlZWQ1MDZhNWE0ZmZkZTZiNzMwMzI1YjdkNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDI2IDEyOjA0OjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXhlYy5jIGIvZnMvZXhlYy5jCmluZGV4IDc0NWY2ZWI1Mjc5ZTYuLjliMmQxNDBiZDlmMmEgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZWMuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leGVjLmMKQEAgLTEwMDMsNiAmIzQzOzEwMDMsMTggQEAgc3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCiAJCSAqIHRoZSBmb3JtZXIgdGhyZWFkIGdyb3VwIGxlYWRlcjoKIAkJICovCiAKJiM0MzsjaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSUwomIzQzOwkJLyoKJiM0MzsJCSAqIGV4Y2hhbmdlX3RpZHMoKSBoYW5kcyB0aGlzIHRocmVhZCYjMzk7cyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsCiYjNDM7CQkgKiB3aGljaCBpcyByZWFwZWQgcmlnaHQgYWZ0ZXIuIFRoZSBQSUQgbG9va3VwIGluCiYjNDM7CQkgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVQomIzQzOwkJICogdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgaGVyZSwgc28gZGVxdWV1ZSB0aGVtIGZpcnN0LgomIzQzOwkJICovCiYjNDM7CQlzcGluX2xvY2sobG9jayk7CiYjNDM7CQlwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTsKJiM0MzsJCXNwaW5fdW5sb2NrKGxvY2spOwomIzQzOyNlbmRpZgomIzQzOwogCQkvKiBCZWNvbWUgYSBwcm9jZXNzIGdyb3VwIGxlYWRlciB3aXRoIHRoZSBvbGQgbGVhZGVyJiMzOTtzIHBpZC4KIAkJICogVGhlIG9sZCBsZWFkZXIgYmVjb21lcyBhIHRocmVhZCBvZiB0aGUgdGhpcyB0aHJlYWQgZ3JvdXAuCiAJCSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMTI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1MwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggUmVsYXRlZCB0byBQT1NJWCBDUFUgVGltZXJzIGFuZCBgZXhlY3ZlYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZnMvZXhlYy5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRlX3RocmVhZCgpYCBmdW5jdGlvbi4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXNpZGVzIHVuZGVyIGFuIGAjaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU2AgYmxvY2ssIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIHNvbWV0aGluZyBkZWFsaW5nIHdpdGggUE9TSVgtY29tcGxpYW50IENQVSB0aW1lcnMuIFRoZSBrZXkgYWN0aW9uIGhlcmUgaXMgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgd2hpbGUgYSBsb2NrIGlzIGhlbGQsIHN1Z2dlc3Rpbmcgc3luY2hyb25pemF0aW9uIGlzIGNydWNpYWwuIFRoZSBjb21tZW50IHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgY29udGV4dDogdGhpcyBpcyB0cmlnZ2VyZWQgZHVyaW5nIGBleGVjdmVgIGFuZCBkZWFscyB3aXRoIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyB2aWEgYGV4Y2hhbmdlX3RpZHMoKWAuIEFwcGFyZW50bHksIHRoZSBvbGQgbGVhZGVyIGlzIHF1aWNrbHkgcmVhcGVkLiBUaGUgcHJvYmxlbSBhcmlzZXMgd2hlbiB0aGUgUElEIGxvb2t1cCB1c2VkIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgZmFpbHMgd2hpbGUgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLCB3aGljaCB3b3VsZCBsZWFkIHRvIGEgbWVtb3J5IGFjY2VzcyB2aW9sYXRpb24uIFRoaXMgaXMgbGlrZWx5IGEgZml4IGZvciBhIHNlcmlvdXMgaXNzdWUsIGxpa2UgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UsIGEgbG9ja2luZyBidWcsIG9yIHBvdGVudGlhbGx5IGEgdGltZXIgZmlyaW5nIG9uIGEgdGFzayB0aGF0IGlzIG5vIGxvbmdlciB2YWxpZC4gSSB0aGluayB0aGUgdGltZXIgaGFzIGEgcG9pbnRlciB0byB0aGUgdGFzaywgYW5kIHRoZSB0YXNrIG1pZ2h0IGJlIGZyZWVkIHByaW9yIHRvIHRoZSB0aW1lci4gSXQgZG9lc24mIzM5O3Qgc2VlbSB0byBpbnZvbHZlIGFueSBvYnZpb3VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcyBiYXNlZCBvbiB3aGF0IEkgY2FuIHNlZS4gSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCBmdW5jdGlvbiB0byBjb25maXJtIG15IGluaXRpYWwgYXNzZXNzbWVudCBvZiB0aGUgaXNzdWUgYW5kIHRoZSBzYWZldHkgb2YgdGhlIHByb3Bvc2VkIGZpeC4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgbGlmZWN5Y2xlIG9mIHRoZXNlIHRpbWVycyBkdXJpbmcgcHJvY2VzcyBleGVjdXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leGVjLmM9OTIyPXN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmZzL2V4ZWMuYy0xMDEzLVx0XHRzcGluX2xvY2sobG9jayk7XG5mcy9leGVjLmM6MTAxNDpcdFx0cG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7XG5mcy9leGVjLmMtMTAxNS1cdFx0c3Bpbl91bmxvY2sobG9jayk7XG4tLVxuZnMvZXhlYy5jPTExMzY9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxuLS1cbmZzL2V4ZWMuYy0xMjA4LVx0c3Bpbl9sb2NrX2lycShcdTAwMjZtZS1cdTAwM2VzaWdoYW5kLVx1MDAzZXNpZ2xvY2spO1xuZnMvZXhlYy5jOjEyMDk6XHRwb3NpeF9jcHVfdGltZXJzX2V4aXQobWUpO1xuZnMvZXhlYy5jLTEyMTAtXHRzcGluX3VubG9ja19pcnEoXHUwMDI2bWUtXHUwMDNlc2lnaGFuZC1cdTAwM2VzaWdsb2NrKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oPTIyNj12b2lkIHJ1bl9wb3NpeF9jcHVfdGltZXJzKHZvaWQpO1xuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaDoyMjc6dm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmg6MjI4OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0X2dyb3VwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oLTIyOS12b2lkIHNldF9wcm9jZXNzX2NwdV90aW1lcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGludCBjbG9ja19pZHgsXG4tLVxua2VybmVsL2V4aXQuYz0xNTg9c3RhdGljIHZvaWQgX19leGl0X3NpZ25hbChzdHJ1Y3QgcmVsZWFzZV90YXNrX3Bvc3QgKnBvc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuLS1cbmtlcm5lbC9leGl0LmMtMTcwLSNpZmRlZiBDT05GSUdfUE9TSVhfVElNRVJTXG5rZXJuZWwvZXhpdC5jOjE3MTpcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xua2VybmVsL2V4aXQuYy0xNzItXHRpZiAoZ3JvdXBfZGVhZClcbmtlcm5lbC9leGl0LmM6MTczOlx0XHRwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAodHNrKTtcbmtlcm5lbC9leGl0LmMtMTc0LSNlbmRpZlxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDgxLSAqXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDgyOiAqIF9fZXhpdF9zaWduYWwoKSBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpIGFuZCBpZiB0aGUgdGhyZWFkIGdyb3VwIGlzXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDgzLSAqIGRlYWQgaXQgYWxzbyBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZ3JvdXBfZXhpdCgpLiBUaGVzZSBmdW5jdGlvbnMgZGVsZXRlXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ4OS0gKiB0aHJlYWQgZ3JvdXAgaXMgbm90IGRlYWQgdGhleSBvbmx5IGNsZWFuIHVwIHRoZSBwZXIgdGFzayB0aW1lcnMgdmlhXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDkwOiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpLlxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ5MS0gKlxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz02MjQ9c3RhdGljIHZvaWQgY2xlYW51cF90aW1lcnMoc3RydWN0IHBvc2l4X2NwdXRpbWVycyAqcGN0KVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzMtICogaXMgYmVpbmcgcmVhcGVkLiAgV2hlbiB0aGUgZmluYWwgKGxlYWRlcikgdGhyZWFkIGluIHRoZSBncm91cCBpcyByZWFwZWQsXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM0OiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCB3aWxsIGJlIGNhbGxlZCBhZnRlciBwb3NpeF9jcHVfdGltZXJzX2V4aXQuXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNjM1LSAqL1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjYzNjp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02Mzcte1xuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzktfVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjY0MDp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02NDEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAxMjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTcyCgkJCQkJCQlvdXRwdXQ6IDIwNgoJCQkJCQkJdGhvdWdodHM6IDI5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLTVNBTiBOZWNlc3NpdHkqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBkZWFsaW5nIHdpdGggYSBwcmV0dHkgc3BlY2lmaWMgcmFjZSBjb25kaXRpb24gY2VudGVyZWQgYXJvdW5kIHRhc2sgbGlmZWN5Y2xlIGFuZCwgaW1wb3J0YW50bHksIHRoZSBtYW5hZ2VtZW50IG9mIHRpbWVycyDigJMgc3BlY2lmaWNhbGx5LCBQT1NJWCBDUFUgdGltZXJzLiBUaGUgY29yZSBpc3N1ZSBpcyB0aGF0IGEgdGhyZWFkJiMzOTtzIFBJRCBjYW4gYmUgcGFzc2VkIHRvIGFuICpvbGQqIGxlYWRlciBkdXJpbmcgYGRlX3RocmVhZCgpYCwgYW5kIHRoaXMgbGVhZHMgdG8gYSBQSUQgbG9va3VwIGZhaWx1cmUgd2l0aGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAsIGVzcGVjaWFsbHkgaWYgdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgZm9yIHRoYXQgdGhyZWFkLiBUaGUgc29sdXRpb24gdGhleSYjMzk7dmUgY29tZSB1cCB3aXRoLCBkZXF1ZXVlaW5nIHRoZSB0aW1lcnMgd2l0aCBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgUElEIHN3YXAsIG1ha2VzIHNlbnNlLiBJdCYjMzk7cyBhIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZpeCwgYmFzaWNhbGx5IGVuc3VyaW5nIHRoZSB0aW1lcnMgYXJlIHByb3Blcmx5IGNsZWFuZWQgdXAgYmVmb3JlIHRoaXMgUElEIHJlYXNzaWdubWVudCBoYXBwZW5zLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyByZXF1aXJlcyBhIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgY2hlY2suIEFuZCBJJiMzOTttIHNheWluZyAqbm8qLiBLTVNBTiBpcyBnZW5lcmFsbHkgY29uY2VybmVkIHdpdGggdGhpbmdzIGxpa2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgYW5kIGluZm9ybWF0aW9uIGxlYWtzLCB0aGluZ3MgdGhhdCBleHBvc2Uga2VybmVsIGludGVybmFscy4gVGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBub3IgaXMgaXQgZGVhbGluZyB3aXRoIG1lbW9yeSB0aGF0JiMzOTtzIHVuaW5pdGlhbGl6ZWQuIFRoaXMgc291bmRzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgbG9naWMgZmxhdyB3aXRoIGhvdyB0aW1lcnMgYXJlIGhhbmRsZWQgd2hlbiBhIHRocmVhZCBjaGFuZ2VzIGl0cyBncm91cCBsZWFkZXIgZHVyaW5nIGBleGVjdmVgLgoKQW55IHByb2JsZW1zIGludHJvZHVjZWQgYnkgdGhpcyBmaXgsIGxpa2UgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd291bGQgYmUgY2F1Z2h0IHBlcmZlY3RseSB3ZWxsIGJ5IEtBU0FOLCBvciBldmVuIGJ5IGp1c3QgZ29vZCwgb2xkLWZhc2hpb25lZCBrZXJuZWwgZGVidWdnaW5nLiBObyBuZWVkIHRvIGJyaW5nIG91dCB0aGUgaGVhdnkgYXJ0aWxsZXJ5IG9mIEtNU0FOIGhlcmUuIEl0JiMzOTtzIG5vdCB0YXJnZXRpbmcgdGhlIGtpbmQgb2YgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgdGhhdCBLTVNBTiBpcyBkZXNpZ25lZCB0byBmaW5kLiBBIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIHdvdWxkIGJlIG92ZXJraWxsIGFuZCBhIHdhc3RlIG9mIHJlc291cmNlcyBpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZS4gVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgc2hvdWxkIGRlZmluaXRlbHkgYmUgc2V0IHRvIGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDEyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSBpbiBgZGVfdGhyZWFkKClgIHdoZXJlIGEgdGhyZWFkJiMzOTtzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIsIHdoaWNoIGlzIHRoZW4gcmVhcGVkLiBUaGlzIGNhdXNlcyBhIFBJRCBsb29rdXAgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIGlmIHBlci10aHJlYWQgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLiBUbyBmaXggdGhpcywgdGhlIHBhdGNoIGRlcXVldWVzIHRoZSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgUElEIGV4Y2hhbmdlLiBUaGlzIGlzIGEgbG9naWMvbGlmZWN5Y2xlIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgYW5kIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyBkdXJpbmcgYGV4ZWN2ZWAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGluIHRoaXMgYXJlYSAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSBpbiBgZGVfdGhyZWFkKClgIHdoZXJlIGEgdGhyZWFkJiMzOTtzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIsIHdoaWNoIGlzIHRoZW4gcmVhcGVkLiBUaGlzIGNhdXNlcyBhIFBJRCBsb29rdXAgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIGlmIHBlci10aHJlYWQgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLiBUbyBmaXggdGhpcywgdGhlIHBhdGNoIGRlcXVldWVzIHRoZSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgUElEIGV4Y2hhbmdlLiBUaGlzIGlzIGEgbG9naWMvbGlmZWN5Y2xlIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgYW5kIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyBkdXJpbmcgYGV4ZWN2ZWAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGluIHRoaXMgYXJlYSAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MDQ6NTkuMjkyODYyNzkzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzMjc0Mzc0OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBPU0lYX1RJTUVSU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBvc2l4X2NwdV90aW1lcnNfZXhpdFwiLFxuICAgIFwiYmVnaW5fbmV3X2V4ZWNcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhbiBpc3N1ZSBpbiBgZGVfdGhyZWFkKClgIHdoZXJlIGEgdGhyZWFkJ3MgUElEIGlzIGhhbmRlZCB0byB0aGUgb2xkIGxlYWRlciwgd2hpY2ggaXMgdGhlbiByZWFwZWQuIFRoaXMgY2F1c2VzIGEgUElEIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgaWYgcGVyLXRocmVhZCBDUFUgdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQuIFRvIGZpeCB0aGlzLCB0aGUgcGF0Y2ggZGVxdWV1ZXMgdGhlIHRpbWVycyBieSBjYWxsaW5nIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgYmVmb3JlIHRoZSBQSUQgZXhjaGFuZ2UuIFRoaXMgaXMgYSBsb2dpYy9saWZlY3ljbGUgYnVnIHJlbGF0ZWQgdG8gUE9TSVggQ1BVIHRpbWVycyBhbmQgdGhyZWFkIGdyb3VwIGxlYWRlciBjaGFuZ2VzIGR1cmluZyBgZXhlY3ZlYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm9yIGRvZXMgaXQgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW4gdGhpcyBhcmVhIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBkZV90aHJlYWQoKWAgaW4gYGZzL2V4ZWMuY2AgdG8gZGVxdWV1ZSBwZXItdGhyZWFkIENQVSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlcidzIFBJRCBpcyBleGNoYW5nZWQuIFRoaXMgcHJldmVudHMgYSBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgd2hlbiB0aGUgb2xkIGxlYWRlciBpcyByZWFwZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwncyBleGVjdmUgcGF0aCBhbmQgaXMgcmVhY2hhYmxlIHdoZW4gYSBtdWx0aS10aHJlYWRlZCBwcm9jZXNzIGNhbGxzIGV4ZWN2ZS4gSXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MDQ6NTkuMjkyODY5NDkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTM1MjQ2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1ZGY2ODI3ZjAxNDM5NGVlZDUwNmE1YTRmZmRlNmI3MzAzMjViN2Q2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDI2IDEyOjA0OjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuY1xcbmluZGV4IDc0NWY2ZWI1Mjc5ZTYuLjliMmQxNDBiZDlmMmEgMTAwNjQ0XFxuLS0tIGEvZnMvZXhlYy5jXFxuKysrIGIvZnMvZXhlYy5jXFxuQEAgLTEwMDMsNiArMTAwMywxOCBAQCBzdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4gXFx0XFx0ICogdGhlIGZvcm1lciB0aHJlYWQgZ3JvdXAgbGVhZGVyOlxcbiBcXHRcXHQgKi9cXG4gXFxuKyNpZmRlZiBDT05GSUdfUE9TSVhfVElNRVJTXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIGV4Y2hhbmdlX3RpZHMoKSBoYW5kcyB0aGlzIHRocmVhZCdzIFBJRCB0byB0aGUgb2xkIGxlYWRlcixcXG4rXFx0XFx0ICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpblxcbitcXHRcXHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxcbitcXHRcXHQgKiB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCBoZXJlLCBzbyBkZXF1ZXVlIHRoZW0gZmlyc3QuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRzcGluX2xvY2sobG9jayk7XFxuK1xcdFxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xcbitcXHRcXHRzcGluX3VubG9jayhsb2NrKTtcXG4rI2VuZGlmXFxuK1xcbiBcXHRcXHQvKiBCZWNvbWUgYSBwcm9jZXNzIGdyb3VwIGxlYWRlciB3aXRoIHRoZSBvbGQgbGVhZGVyJ3MgcGlkLlxcbiBcXHRcXHQgKiBUaGUgb2xkIGxlYWRlciBiZWNvbWVzIGEgdGhyZWFkIG9mIHRoZSB0aGlzIHRocmVhZCBncm91cC5cXG4gXFx0XFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEyOjA0OjU5Ljc4NzMwMjI0MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ5NjAzMDM3MTcxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQT1NJWF9USU1FUlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwb3NpeF9jcHVfdGltZXJzX2V4aXRcIixcbiAgICBcImJlZ2luX25ld19leGVjXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGRlX3RocmVhZCgpYCBpbiBgZnMvZXhlYy5jYCB0byBkZXF1ZXVlIHBlci10aHJlYWQgQ1BVIHRpbWVycyBieSBjYWxsaW5nIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgYmVmb3JlIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyJ3MgUElEIGlzIGV4Y2hhbmdlZC4gVGhpcyBwcmV2ZW50cyBhIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCB3aGVuIHRoZSBvbGQgbGVhZGVyIGlzIHJlYXBlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCdzIGV4ZWN2ZSBwYXRoIGFuZCBpcyByZWFjaGFibGUgd2hlbiBhIG11bHRpLXRocmVhZGVkIHByb2Nlc3MgY2FsbHMgZXhlY3ZlLiBJdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZGY2ODI3ZjAxNDM5NGVlZDUwNmE1YTRmZmRlNmI3MzAzMjViN2Q2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMTI6MDQ6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmNcbmluZGV4IDc0NWY2ZWI1Mjc5ZTYuLjliMmQxNDBiZDlmMmEgMTAwNjQ0XG4tLS0gYS9mcy9leGVjLmNcbisrKyBiL2ZzL2V4ZWMuY1xuQEAgLTEwMDMsNiArMTAwMywxOCBAQCBzdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbiBcdFx0ICogdGhlIGZvcm1lciB0aHJlYWQgZ3JvdXAgbGVhZGVyOlxuIFx0XHQgKi9cbiBcbisjaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU1xuK1x0XHQvKlxuK1x0XHQgKiBleGNoYW5nZV90aWRzKCkgaGFuZHMgdGhpcyB0aHJlYWQncyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsXG4rXHRcdCAqIHdoaWNoIGlzIHJlYXBlZCByaWdodCBhZnRlci4gVGhlIFBJRCBsb29rdXAgaW5cbitcdFx0ICogdGltZXJfbG9ja19zaWdoYW5kKCkgdGhlbiBmYWlscyB3aGlsZSB0aGUgcGVyIHRocmVhZCBDUFVcbitcdFx0ICogdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgaGVyZSwgc28gZGVxdWV1ZSB0aGVtIGZpcnN0LlxuK1x0XHQgKi9cbitcdFx0c3Bpbl9sb2NrKGxvY2spO1xuK1x0XHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcbitcdFx0c3Bpbl91bmxvY2sobG9jayk7XG4rI2VuZGlmXG4rXG4gXHRcdC8qIEJlY29tZSBhIHByb2Nlc3MgZ3JvdXAgbGVhZGVyIHdpdGggdGhlIG9sZCBsZWFkZXIncyBwaWQuXG4gXHRcdCAqIFRoZSBvbGQgbGVhZGVyIGJlY29tZXMgYSB0aHJlYWQgb2YgdGhlIHRoaXMgdGhyZWFkIGdyb3VwLlxuIFx0XHQgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEyOjA0OjU5Ljc4NzMwMzc3MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4ODI2MTM0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyBtb2RpZnlpbmcgYGZzL2V4ZWMuY2AsIHNwZWNpZmljYWxseSB0aGUgYGRlX3RocmVhZCgpYCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gYmUgYWRkaW5nIGEgY2FsbCB0byBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgICpjb25kaXRpb25hbGx5KiDigJMgb25seSBpZiBgQ09ORklHX1BPU0lYX1RJTUVSU2AgaXMgZW5hYmxlZC4gVGhhdCdzIGEgcHJldHR5IHNpZ25pZmljYW50IGFkZGl0aW9uLCBlc3BlY2lhbGx5IGdpdmVuIHRoYXQgYGRlX3RocmVhZCgpYCBpcyByaWdodCBpbiB0aGUgaGVhcnQgb2YgdGhlIGtlcm5lbCdzIGV4ZWN1dGlvbiBwYXRoLCBkZWFsaW5nIHdpdGggdGhyZWFkIHRlcm1pbmF0aW9uIGFuZCBgZXhlY3ZlYC4gV2UncmUgdGFsa2luZyBjb3JlIGtlcm5lbCBmdW5jdGlvbmFsaXR5IGhlcmUuXG5cbkdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCB0aGlzIHNjcmVhbXMgXCJmdXp6aW5nIHRhcmdldFwiIHRvIG1lLiBBbnkgY2hhbmdlIGluIGEgZnVuY3Rpb24gbGlrZSB0aGlzIGhhcyB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUsIGhhcmQtdG8tZGV0ZWN0IGJ1Z3MgdGhhdCBjb3VsZCBsZWFkIHRvIGNyYXNoZXMgb3IsIHdvcnNlLCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIEl0J3MgZGVmaW5pdGVseSB3b3J0aCBpbnZlc3RpbmcgdGltZSBpbiB0aG9yb3VnaGx5IHRlc3RpbmcgdGhpcy5cblxuVGltZSB0byBkaXZlIGluIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGRlX3RocmVhZCgpYCBpdHNlbGYsIHdpdGhpbiBgZnMvZXhlYy5jYCwga2VlcGluZyB0aGF0IGBQT1NJWF9USU1FUlNgIGNvbmZpZ3VyYXRpb24gaW4gbWluZC4gSSdsbCBwcm9iYWJseSBhbHNvIGRvIGEgcXVpY2sgZ3JlcCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciByZWxhdGVkLCBidXQgcG90ZW50aWFsbHkgbGVzcyBvYnZpb3VzLCBjaGFuZ2VzIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSBpbnRlcmFjdGlvbnMgb3IgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gYmUgc3VyZSB0byBjaGVjayBhbnl0aGluZyBlbHNlIHRoYXQgbWF5IGJlIGxpbmtlZCB0byB0aGlzIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMjowNTowNC42Njk5MjA2MjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk4NjAwNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVfdGhyZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4ZWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGVjLmM9OTE1PXN0YXRpYyB2b2lkIGV4ZWNfbW1fcHV0X29sZChzdHJ1Y3QgbW1fc3RydWN0ICpvbGRfbW0pXFxuLS1cXG5mcy9leGVjLmMtOTIxLVxcbmZzL2V4ZWMuYzo5MjI6c3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuZnMvZXhlYy5jLTkyMy17XFxuLS1cXG5mcy9leGVjLmM9MTEyMz1zdGF0aWMgc3RydWN0IGZpbGUgKmJwcm1faWRlbnRpdHlfZmlsZShjb25zdCBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTExMzItICogc2VlbiBieSB1c2Vyc3BhY2Ugc2luY2UgZWl0aGVyIHRoZSBwcm9jZXNzIGlzIGFscmVhZHkgdGFraW5nIGEgZmF0YWxcXG5mcy9leGVjLmM6MTEzMzogKiBzaWduYWwgKHZpYSBkZV90aHJlYWQoKSBvciBjb3JlZHVtcCksIG9yIHdpbGwgaGF2ZSBTRUdWIHJhaXNlZFxcbmZzL2V4ZWMuYy0xMTM0LSAqIChhZnRlciBleGVjX21tYXAoKSkgYnkgc2VhcmNoX2JpbmFyeV9oYW5kbGVyIChzZWUgYmVsb3cpLlxcbi0tXFxuZnMvZXhlYy5jPTExMzY9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTExNjMtXFx0LyogTWFrZSB0aGlzIHRoZSBvbmx5IHRocmVhZCBpbiB0aGUgdGhyZWFkIGdyb3VwICovXFxuZnMvZXhlYy5jOjExNjQ6XFx0cmV0dmFsID0gZGVfdGhyZWFkKG1lKTtcXG5mcy9leGVjLmMtMTE2NS1cXHRpZiAocmV0dmFsKVxcbi0tXFxuZnMvZXhlYy5jPTE0Njk9c3RhdGljIHZvaWQgZnJlZV9icHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTQ3OC1cXHRpZiAoYnBybS1cXHUwMDNlY3JlZCkge1xcbmZzL2V4ZWMuYzoxNDc5OlxcdFxcdC8qIGluIGNhc2UgZXhlYyBmYWlscyBiZWZvcmUgZGVfdGhyZWFkKCkgc3VjY2VlZHMgKi9cXG5mcy9leGVjLmMtMTQ4MC1cXHRcXHRjdXJyZW50LVxcdTAwM2Vmcy1cXHUwMDNlaW5fZXhlYyA9IDA7XFxuLS1cXG5mcy9leGVjLmM9MTU5Mz1zdGF0aWMgdm9pZCBjaGVja191bnNhZmVfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTE2MTQtXFx0ICogT3RoZXJ3aXNlIHdlIHNldCBmcy1cXHUwMDNlaW5fZXhlYyA9IDEgdG8gZGVueSBjbG9uZShDTE9ORV9GUylcXG5mcy9leGVjLmM6MTYxNTpcXHQgKiBmcm9tIGFub3RoZXIgc3ViLXRocmVhZCB1bnRpbCBkZV90aHJlYWQoKSBzdWNjZWVkcywgdGhpc1xcbmZzL2V4ZWMuYy0xNjE2LVxcdCAqIHN0YXRlIGlzIHByb3RlY3RlZCBieSBjcmVkX2d1YXJkX211dGV4IHdlIGhvbGQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEyOjA1OjA0LjcxOTgwNzY3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MTM2MjE2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBUaHJlYWRpbmcgYW5kIEV4ZWN1dGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGRlX3RocmVhZGAgZnVuY3Rpb24sIGFuZCBpdCdzIG1hcmtlZCBhcyBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBpc3N1ZS4gSXQncyBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0cyBzY29wZSBpcyBsaW1pdGVkLCB5ZXQgSSBzZWUgaXQgYmVpbmcgY2FsbGVkIGZyb20gYGJlZ2luX25ld19leGVjYC4gYGJlZ2luX25ld19leGVjYCBpcyB0cmlnZ2VyZWQgYnkgdGhlIGBleGVjdmVgIGZhbWlseSBvZiBmdW5jdGlvbnMsIHJpZ2h0PyBTbywgdGhlcmUncyBhIHBvdGVudGlhbCBpbnRlci1tb2R1bGUgZGVwZW5kZW5jeSBoZXJlIHRoYXQgcmVxdWlyZXMgZnVydGhlciBzY3J1dGlueS5cblxuR2l2ZW4gdGhhdCBgZGVfdGhyZWFkYCBpcyBzdGF0aWMsIEknbSBnb2luZyB0byBzaGlmdCBteSBmb2N1cyBhd2F5IGZyb20gaXQgZGlyZWN0bHkuIEluc3RlYWQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gZmxvdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYGJlZ2luX25ld19leGVjYCBhbmQgdGhlIGBleGVjdmVgIGZhbWlseS4gUGVyaGFwcywgaXQncyBlYXNpZXIgdG8gdHJhY2sgYGRvX2V4ZWN2ZWF0X2NvbW1vbmAgYW5kIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgLiBUaGUgY29udGV4dCBuZWVkcyBmdXJ0aGVyIGV4YW1pbmF0aW9uISBIbW1tLCBsZXQncyBzZWUsIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgLi4uIHRoYXQgY291bGQgYmUgaW50ZXJlc3RpbmcuIFdhaXQsIGlzICp0aGF0KiBzdGF0aWMgdG9vPyBJIG5lZWQgdG8gY2hlY2sgaXRzIGRlY2xhcmF0aW9uIGFuZCBzY29wZS4gVGhhdCBtaWdodCBvZmZlciBhIG1vcmUgZGlyZWN0IHBvaW50IG9mIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzAsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MDU6MTAuNTMzNDMxNTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwNTM1NjUxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwb3NpeF9jcHVfdGltZXJzX2V4aXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXhlYy5jPTkyMj1zdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4tLVxcbmZzL2V4ZWMuYy0xMDEzLVxcdFxcdHNwaW5fbG9jayhsb2NrKTtcXG5mcy9leGVjLmM6MTAxNDpcXHRcXHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcXG5mcy9leGVjLmMtMTAxNS1cXHRcXHRzcGluX3VubG9jayhsb2NrKTtcXG4tLVxcbmZzL2V4ZWMuYz0xMTM2PWludCBiZWdpbl9uZXdfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0xMjA4LVxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNm1lLVxcdTAwM2VzaWdoYW5kLVxcdTAwM2VzaWdsb2NrKTtcXG5mcy9leGVjLmM6MTIwOTpcXHRwb3NpeF9jcHVfdGltZXJzX2V4aXQobWUpO1xcbmZzL2V4ZWMuYy0xMjEwLVxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2bWUtXFx1MDAzZXNpZ2hhbmQtXFx1MDAzZXNpZ2xvY2spO1xcbi0tXFxuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaD0yMjY9dm9pZCBydW5fcG9zaXhfY3B1X3RpbWVycyh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oOjIyNzp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xcbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmg6MjI4OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0X2dyb3VwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XFxuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaC0yMjktdm9pZCBzZXRfcHJvY2Vzc19jcHVfdGltZXIoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCB1bnNpZ25lZCBpbnQgY2xvY2tfaWR4LFxcbi0tXFxua2VybmVsL2V4aXQuYz0xNTg9c3RhdGljIHZvaWQgX19leGl0X3NpZ25hbChzdHJ1Y3QgcmVsZWFzZV90YXNrX3Bvc3QgKnBvc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxua2VybmVsL2V4aXQuYy0xNzAtI2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlNcXG5rZXJuZWwvZXhpdC5jOjE3MTpcXHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcXG5rZXJuZWwvZXhpdC5jLTE3Mi1cXHRpZiAoZ3JvdXBfZGVhZClcXG5rZXJuZWwvZXhpdC5jOjE3MzpcXHRcXHRwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAodHNrKTtcXG5rZXJuZWwvZXhpdC5jLTE3NC0jZW5kaWZcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy00ODEtICpcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDgyOiAqIF9fZXhpdF9zaWduYWwoKSBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpIGFuZCBpZiB0aGUgdGhyZWFkIGdyb3VwIGlzXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ4My0gKiBkZWFkIGl0IGFsc28gaW52b2tlcyBwb3NpeF9jcHVfdGltZXJzX2dyb3VwX2V4aXQoKS4gVGhlc2UgZnVuY3Rpb25zIGRlbGV0ZVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ4OS0gKiB0aHJlYWQgZ3JvdXAgaXMgbm90IGRlYWQgdGhleSBvbmx5IGNsZWFuIHVwIHRoZSBwZXIgdGFzayB0aW1lcnMgdmlhXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjQ5MDogKiBwb3NpeF9jcHVfdGltZXJzX2V4aXQoKS5cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDkxLSAqXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9NjI0PXN0YXRpYyB2b2lkIGNsZWFudXBfdGltZXJzKHN0cnVjdCBwb3NpeF9jcHV0aW1lcnMgKnBjdClcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzMtICogaXMgYmVpbmcgcmVhcGVkLiAgV2hlbiB0aGUgZmluYWwgKGxlYWRlcikgdGhyZWFkIGluIHRoZSBncm91cCBpcyByZWFwZWQsXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjYzNDogKiBwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgcG9zaXhfY3B1X3RpbWVyc19leGl0Llxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzUtICovXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjYzNjp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNjM3LXtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzktfVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo2NDA6dm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTY0MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEyOjA1OjEyLjQzODc5Njg4N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NzYzNTg3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBUaGlua2luZzogQWRkaW5nIFN5bWJvbHMgZm9yIEVuaGFuY2VkIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIGNvbmZpZ3VyYXRpb24uIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgIGlzbid0IHN0YXRpYywgbWVhbmluZyBpdCdzIGV4dGVybmFsbHkgdmlzaWJsZSwgYW5kIHRoYXQncyBpbXBvcnRhbnQgZm9yIGFuYWx5c2lzLiBUaGVuIHRoZXJlJ3MgYGRlX3RocmVhZGAsIHdoaWNoICppcyogc3RhdGljOyBJJ2xsIGtlZXAgdGhhdCBpbiBtaW5kIGZvciBzY29waW5nIGJ1dCBpdCdzIGxlc3MgaW1tZWRpYXRlbHkgcmVsZXZhbnQgdG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBgYmVnaW5fbmV3X2V4ZWNgIGlzIGFsc28gbm9uLXN0YXRpYy5cblxuR2l2ZW4gdGhlIG5vbi1zdGF0aWMgbmF0dXJlIG9mIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgIGFuZCBgYmVnaW5fbmV3X2V4ZWNgLCBhbmQga25vd2luZyB0aGUgY29udGV4dCBJJ20gd29ya2luZyBpbiwgSSdtIGdvaW5nIHRvIGFkZCBib3RoIG9mIHRob3NlIGZ1bmN0aW9ucyB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdC4gVGhpcyBzaG91bGQgaGVscCBtZSBrZWVwIHRyYWNrIG9mIHRoZWlyIHVzZSBhbmQgcmVsYXRpb25zaGlwIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS5cblxuTm93LCB0aGUgY29uZmlndXJhdGlvbi4uLiBJJ20gcmVtaW5kZWQgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBoZXJlIGlzIGBQT1NJWF9USU1FUlNgLiBUaW1lIHRvIHB1bGwgdXAgS2NvbmZpZyBhbmQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhhdCBjb25maWcgdmFyaWFibGUgaW5mbHVlbmNlcyB0aGUgYmVoYXZpb3Igb2YgdGhlc2UgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IGluIHRoZSBsYXJnZXIgZnJhbWV3b3JrLiBVbmRlcnN0YW5kaW5nIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIHN5bWJvbHMgbWlnaHQgcmVsYXRlIHRvIHRoZSB3aWRlciBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzODMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMjowNToxNy4xMTUxNTgxMjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1MzM1OTczNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUE9TSVhfVElNRVJTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluaXQvS2NvbmZpZz0xNzUzPWNvbmZpZyBGSEFORExFXFxuLS1cXG5pbml0L0tjb25maWctMTc2NS1cXG5pbml0L0tjb25maWc6MTc2Njpjb25maWcgUE9TSVhfVElNRVJTXFxuaW5pdC9LY29uZmlnLTE3NjctXFx0Ym9vbCBcXFwiUG9zaXggQ2xvY2tzIFxcdTAwMjYgdGltZXJzXFxcIiBpZiBFWFBFUlRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MDU6MTkuMDY4NTIzNTk2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjcxMTM1MDUwNDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQT1NJWCBUaW1lcnMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGBQT1NJWF9USU1FUlNgIG9wdGlvbiBpcyBhIGJvb2xlYW4gY29uZmlnLiBTdHJhaWdodGZvcndhcmQgZW5vdWdoLCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgbmVlZHMgdG8gaW5jbHVkZSBgW1wiUE9TSVhfVElNRVJTXCJdYC4gVGhhdCdzIGEgcXVpY2sgd2luLlxuXG5Ob3csIGxldCBtZSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoLiBBaCwgeWVzLCBgZGVfdGhyZWFkYCBpcyBpbmRlZWQgcmVhY2hhYmxlLiBJdCBnZXRzIGNhbGxlZCBkdXJpbmcgdGhlIGBleGVjdmVgIHN5c3RlbSBjYWxsLCBzcGVjaWZpY2FsbHkgd2hlbiBhIG11bHRpLXRocmVhZGVkIHByb2Nlc3MgZXhlY3V0ZXMgYGV4ZWN2ZWAuIE1ha2VzIHNlbnNlLiBUaGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBzcGVjaWZpYyBmYWlsdXJlIHNjZW5hcmlvLCBuYW1lbHkgdGhhdCBgdGltZXJfbG9ja19zaWdoYW5kKClgIGZhaWxzIGlmIHBlci10aHJlYWQgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLiBUaGUgZml4IGFwcGVhcnMgdG8gYmUgZGVxdWV1aW5nIHRob3NlIHRpbWVycyAqYmVmb3JlKiBzb21ldGhpbmcgZWxzZSBoYXBwZW5zIOKAkyBzcGVjaWZpY2FsbHksIGJlZm9yZSB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlcidzIFBJRCBpcyBleGNoYW5nZWQuIFRoaXMgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGNsYXNzaWMgcmFjZSBjb25kaXRpb24gZml4LCBhbmQgZGVmaW5pdGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIGZ1enouXG5cbkxldCBtZSBhcnRpY3VsYXRlIHRoYXQgY2xlYXJseSBmb3IgdGhlIHJlY29yZC4gVGhlIHBhdGNoIGFsdGVycyBgZGVfdGhyZWFkKClgIHdpdGhpbiBgZnMvZXhlYy5jYC4gSXQgZGVxdWV1ZXMgcGVyLXRocmVhZCBDUFUgdGltZXJzIGJ5IGludm9raW5nIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgcHJpb3IgdG8gc3dpdGNoaW5nIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyJ3MgUElELCBhdm9pZGluZyB0aGUgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIHdoZW4gdGhlIG9sZCBsZWFkZXIgaXMgcmVhcGVkLiBUaGlzIGltcGFjdHMgdGhlIGtlcm5lbCdzIGNvcmUgYGV4ZWN2ZWAgcGF0aCBhbmQgaXMgcmVhY2hhYmxlIGluIG11bHRpLXRocmVhZGVkIGV4ZWN2ZSBjYWxscy4gV29ydGggZnV6emluZywgYWJzb2x1dGVseS5cblxuVGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCBhbmQgYGJlZ2luX25ld19leGVjYC4gSSBzaG91bGQgcHJvYmFibHkgdmVyaWZ5IGBiZWdpbl9uZXdfZXhlY2AganVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MjgsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MDk6NTAuMjAzNTc3NjQ5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTIyNTc4NzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJlZ2luX25ld19leGVjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdD0xNjU2PWRpc3BsYXktZ3JhcGggb3B0aW9uOjpcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdC0xNjk5LSAgID1cXHUwMDNlIG1tcHV0XFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0OjE3MDA6ICAgPVxcdTAwM2UgYmVnaW5fbmV3X2V4ZWNcXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3QtMTcwMS0gICA9XFx1MDAzZSBsb2FkX2VsZl9iaW5hcnlcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jPTE3NjQ9dm9pZCBmcHNpbWRfcmVzdG9yZV9jdXJyZW50X3N0YXRlKHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYy0xNzcxLVxcdCAqXFxuYXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmM6MTc3MjpcXHQgKiBXaGVuIEZQL1NJTUQgaXMgZGV0ZWN0ZWQsIGJlZ2luX25ld19leGVjKCkgd2lsbCBzZXRcXG5hcmNoL2FybTY0L2tlcm5lbC9mcHNpbWQuYy0xNzczLVxcdCAqIFRJRl9GT1JFSUdOX0ZQU1RBVEUgdmlhIGZsdXNoX3RocmVhZCgpIC1cXHUwMDNlIGZwc2ltZF9mbHVzaF90aHJlYWQoKSxcXG4tLVxcbmZzL2JpbmZtdF9lbGYuYz04Mjk9c3RhdGljIGludCBsb2FkX2VsZl9iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2JpbmZtdF9lbGYuYy0xMDA5LVxcdC8qIEZsdXNoIGFsbCB0cmFjZXMgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIGV4ZWN1dGFibGUgKi9cXG5mcy9iaW5mbXRfZWxmLmM6MTAxMDpcXHRyZXR2YWwgPSBiZWdpbl9uZXdfZXhlYyhicHJtKTtcXG5mcy9iaW5mbXRfZWxmLmMtMTAxMS1cXHRpZiAocmV0dmFsKVxcbi0tXFxuZnMvYmluZm10X2VsZl9mZHBpYy5jPTE4Mj1zdGF0aWMgaW50IGxvYWRfZWxmX2ZkcGljX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvYmluZm10X2VsZl9mZHBpYy5jLTM0OC1cXHQvKiBmbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXFxuZnMvYmluZm10X2VsZl9mZHBpYy5jOjM0OTpcXHRyZXR2YWwgPSBiZWdpbl9uZXdfZXhlYyhicHJtKTtcXG5mcy9iaW5mbXRfZWxmX2ZkcGljLmMtMzUwLVxcdGlmIChyZXR2YWwpXFxuLS1cXG5mcy9iaW5mbXRfZmxhdC5jPTQwNj1zdGF0aWMgaW50IGxvYWRfZmxhdF9maWxlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sXFxuLS1cXG5mcy9iaW5mbXRfZmxhdC5jLTUwOC1cXHQvKiBGbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXFxuZnMvYmluZm10X2ZsYXQuYzo1MDk6XFx0cmV0ID0gYmVnaW5fbmV3X2V4ZWMoYnBybSk7XFxuZnMvYmluZm10X2ZsYXQuYy01MTAtXFx0aWYgKHJldClcXG4tLVxcbmZzL2V4ZWMuYz0yNTg9c3RhdGljIGludCBicHJtX21tX2luaXQoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0yNjctXFxuZnMvZXhlYy5jOjI2ODpcXHQvKiBTdGFnZWQgZm9yIHdvdWxkX2R1bXAoKSBuYXJyb3dpbmc7IGNvbnN1bWVkIGJ5IGJlZ2luX25ld19leGVjKCkuICovXFxuZnMvZXhlYy5jLTI2OS1cXHRicHJtLVxcdTAwM2V1c2VyX25zID0gZ2V0X3VzZXJfbnMoY3VycmVudF91c2VyX25zKCkpO1xcbi0tXFxuZnMvZXhlYy5jPTExMjM9c3RhdGljIHN0cnVjdCBmaWxlICpicHJtX2lkZW50aXR5X2ZpbGUoY29uc3Qgc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0xMTM1LSAqL1xcbmZzL2V4ZWMuYzoxMTM2OmludCBiZWdpbl9uZXdfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSlcXG5mcy9leGVjLmMtMTEzNy17XFxuLS1cXG5mcy9leGVjLmMtMTM0OC19XFxuZnMvZXhlYy5jOjEzNDk6RVhQT1JUX1NZTUJPTChiZWdpbl9uZXdfZXhlYyk7XFxuZnMvZXhlYy5jLTEzNTAtXFxuLS1cXG5mcy9leGVjLmM9MTQ0OD1zdHJ1Y3QgZmlsZSAqYnBybV9vcGVuX2ludGVycHJldGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIGNvbnN0IGNoYXIgKnBhdGgpXFxuLS1cXG5mcy9leGVjLmMtMTQ2MC0gKiBvdmVycmlkZSBhbmQgbGV0IHRoZSBiaW5hcnkgbG9hZCBuYXRpdmVseSByYXRoZXIgdGhhbiBoYXZlXFxuZnMvZXhlYy5jOjE0NjE6ICogYmVnaW5fbmV3X2V4ZWMoKSByZWZ1c2UgaXQuIEEgbm8tb3Agb25jZSBicHJtX29wZW5faW50ZXJwcmV0ZXIoKSB0b29rXFxuZnMvZXhlYy5jLTE0NjItICogdGhlIHN1YnN0aXR1dGUuXFxuLS1cXG5mcy9leGVjLmM9MTc1Mj1zdGF0aWMgaW50IHNlYXJjaF9iaW5hcnlfaGFuZGxlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTE3ODQtXFxuZnMvZXhlYy5jOjE3ODU6LyogYmluZm10IGhhbmRsZXJzIHdpbGwgY2FsbCBiYWNrIGludG8gYmVnaW5fbmV3X2V4ZWMoKSBvbiBzdWNjZXNzLiAqL1xcbmZzL2V4ZWMuYy0xNzg2LXN0YXRpYyBpbnQgZXhlY19iaW5wcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYz0xODM1PXN0YXRpYyBpbnQgYnBybV9leGVjdmUoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0xODQ0LVxcdCAqIENoZWNrIGZvciB1bnNhZmUgZXhlY3V0aW9uIHN0YXRlcyBiZWZvcmUgZXhlY19iaW5wcm0oKSwgd2hpY2hcXG5mcy9leGVjLmM6MTg0NTpcXHQgKiB3aWxsIGNhbGwgYmFjayBpbnRvIGJlZ2luX25ld19leGVjKCksIGludG8gYnBybV9jcmVkc19mcm9tX2ZpbGUoKSxcXG5mcy9leGVjLmMtMTg0Ni1cXHQgKiB3aGVyZSBzZXR1aWQtbmVzcyBpcyBldmFsdWF0ZWQuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaD0xNjE9ZXh0ZXJuIGludCBfX211c3RfY2hlY2sgcmVtb3ZlX2FyZ196ZXJvKHN0cnVjdCBsaW51eF9iaW5wcm0gKik7XFxuaW5jbHVkZS9saW51eC9iaW5mbXRzLmg6MTYyOmV4dGVybiBpbnQgYmVnaW5fbmV3X2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pO1xcbmluY2x1ZGUvbGludXgvYmluZm10cy5oLTE2My1leHRlcm4gdm9pZCBzZXR1cF9uZXdfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODM1PXN0cnVjdCB0YXNrX3N0cnVjdCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTE4NS1cXHQgKlxcbmluY2x1ZGUvbGludXgvc2NoZWQuaDoxMTg2OlxcdCAqIC0gbm9ybWFsbHkgaW5pdGlhbGl6ZWQgYnkgYmVnaW5fbmV3X2V4ZWMoKVxcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xMTg3LVxcdCAqIC0gc2V0IGl0IHdpdGggc2V0X3Rhc2tfY29tbSgpIHRvIGVuc3VyZSBpdCBpcyBhbHdheXNcXG4tLVxcbmtlcm5lbC9leGVjX3N0YXRlLmM9NzE9aW50IHRhc2tfZXhlY19zdGF0ZV9jb3B5KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxua2VybmVsL2V4ZWNfc3RhdGUuYy04NS0gKiBTdG9yZSBUQVNLX0RVTVBBQkxFXyogb24gY3VycmVudC1cXHUwMDNlZXhlY19zdGF0ZS4gIEFsbCBjYWxsZXJzXFxua2VybmVsL2V4ZWNfc3RhdGUuYzo4NjogKiAoY29tbWl0X2NyZWRzLCBiZWdpbl9uZXdfZXhlYywgcHJjdGwoUFJfU0VUX0RVTVBBQkxFKSkgYWN0IG9uIHRoZVxcbmtlcm5lbC9leGVjX3N0YXRlLmMtODctICogcnVubmluZyB0YXNrLCB3aGljaCBndWFyYW50ZWVzIC1cXHUwMDNlZXhlY19zdGF0ZSBpcyBhbGxvY2F0ZWQgYW5kIGNhbm5vdFxcbi0tXFxucnVzdC9rZXJuZWwvdGFzay5ycz0zNT1tYWNyb19ydWxlcyEgY3VycmVudCB7XFxuLS1cXG5ydXN0L2tlcm5lbC90YXNrLnJzLTQxLSAgICAgICAgLy8gKiBUbyByZXR1cm4gdG8gdXNlcnNwYWNlLCB0aGUgY2FsbGVyIG11c3QgbGVhdmUgdGhlIGN1cnJlbnQgc2NvcGUuXFxucnVzdC9rZXJuZWwvdGFzay5yczo0MjogICAgICAgIC8vICogT3BlcmF0aW9ucyBzdWNoIGFzIGBiZWdpbl9uZXdfZXhlYygpYCBhcmUgbmVjZXNzYXJpbHkgdW5zYWZlIGFuZCB0aGUgY2FsbGVyIG9mXFxucnVzdC9rZXJuZWwvdGFzay5yczo0MzogICAgICAgIC8vICAgYGJlZ2luX25ld19leGVjKClgIGlzIHJlc3BvbnNpYmxlIGZvciBzYWZldHkuXFxucnVzdC9rZXJuZWwvdGFzay5ycy00NC0gICAgICAgIC8vICogUnVzdCBhYnN0cmFjdGlvbnMgZm9yIHRoaW5ncyBzdWNoIGFzIGEgYGt0aHJlYWRfdXNlX21tKClgIHNjb3BlIG11c3QgcmVxdWlyZSB0aGVcXG4tLVxcbnJ1c3Qva2VybmVsL3Rhc2sucnM9MTA3PXVuc2FmZSBpbXBsIFN5bmMgZm9yIFRhc2sge31cXG4tLVxcbnJ1c3Qva2VybmVsL3Rhc2sucnMtMTIzLS8vLyAqIENhbGxpbmcgYHJlbGVhc2VfdGFzaygpYC5cXG5ydXN0L2tlcm5lbC90YXNrLnJzOjEyNDovLy8gKiBDYWxsaW5nIGBiZWdpbl9uZXdfZXhlYygpYCBpbiBhIGJpbmFyeSBmb3JtYXQgbG9hZGVyLlxcbnJ1c3Qva2VybmVsL3Rhc2sucnMtMTI1LS8vL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMjowOTo1Mi4xMjYxNjU2MTZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAzNjE0MjU0ODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipFbnRyeSBQb2ludHMgZm9yIEZ1enppbmcgYW5kIFJlc3VsdCBNYW5hZ2VtZW50KipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGlzLCBJJ20gdGhpbmtpbmcgdGhhdCBgYmVnaW5fbmV3X2V4ZWNgIHNlZW1zIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZnV6emluZy4gSXQncyBvZnRlbiB0aGUgY2FzZSB0aGF0IHRoZSBwcm9ncmFtIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIGFyZSBmZXJ0aWxlIGdyb3VuZCBmb3IgZmluZGluZyBpbnRlcmVzdGluZyBlZGdlIGNhc2VzLiBBbmQgeWVhaCwgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAuLi4gdGhhdCdzIGFub3RoZXIgcG90ZW50aWFsbHkganVpY3kgYXJlYSB0byB0YXJnZXQuIFRoZSBpbnRlcmFjdGlvbiB3aXRoIHRpbWVycyBhbHdheXMgaW50cm9kdWNlcyBpbnRlcmVzdGluZyBjb25jdXJyZW5jeSBzY2VuYXJpb3MgYW5kIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9ucyB0aGF0IGZ1enppbmcgZXhjZWxzIGF0IHVuY292ZXJpbmcuXG5cbkxldCdzIG5vdCBmb3JnZXQgdGhlIGltcG9ydGFuY2Ugb2YgY29sbGVjdGluZyBvdXIgcmVzdWx0cyB0aG91Z2guIEknZCBiZXR0ZXIgbWFrZSBhIG5vdGUgdG8gY2FsbCBzZXQtcmVzdWx0cy4gR2V0dGluZyB0aG9zZSByZXN1bHRzIG9yZ2FuaXplZCBlYXJseSBpcyBhIGdvb2QgaWRlYS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE1OCwiT3V0cHV0VG9rZW5zIjoxNTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMjoxMzoxNS43NDA0MjM2NThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzI0NzU5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUE9TSVhfVElNRVJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicG9zaXhfY3B1X3RpbWVyc19leGl0XCIsXG4gICAgXCJiZWdpbl9uZXdfZXhlY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBkZV90aHJlYWQoKWAgaW4gYGZzL2V4ZWMuY2AgdG8gZGVxdWV1ZSBwZXItdGhyZWFkIENQVSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlcidzIFBJRCBpcyBleGNoYW5nZWQuIFRoaXMgcHJldmVudHMgYSBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgd2hlbiB0aGUgb2xkIGxlYWRlciBpcyByZWFwZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwncyBleGVjdmUgcGF0aCBhbmQgaXMgcmVhY2hhYmxlIHdoZW4gYSBtdWx0aS10aHJlYWRlZCBwcm9jZXNzIGNhbGxzIGV4ZWN2ZS4gSXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQT1NJWF9USU1FUlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwb3NpeF9jcHVfdGltZXJzX2V4aXRcIixcbiAgICBcImJlZ2luX25ld19leGVjXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGRlX3RocmVhZCgpYCBpbiBgZnMvZXhlYy5jYCB0byBkZXF1ZXVlIHBlci10aHJlYWQgQ1BVIHRpbWVycyBieSBjYWxsaW5nIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgYmVmb3JlIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyJ3MgUElEIGlzIGV4Y2hhbmdlZC4gVGhpcyBwcmV2ZW50cyBhIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCB3aGVuIHRoZSBvbGQgbGVhZGVyIGlzIHJlYXBlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCdzIGV4ZWN2ZSBwYXRoIGFuZCBpcyByZWFjaGFibGUgd2hlbiBhIG11bHRpLXRocmVhZGVkIHByb2Nlc3MgY2FsbHMgZXhlY3ZlLiBJdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMjoxMzoxNS44MTc2Nzc3MjVaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzQ5NTQ3NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MTM6MTUuODE4MjMzMzg1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE2NzQ4OTg1ODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gaXNzdWUgaW4gYGRlX3RocmVhZCgpYCB3aGVyZSBhIHRocmVhZCdzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIsIHdoaWNoIGlzIHRoZW4gcmVhcGVkLiBUaGlzIGNhdXNlcyBhIFBJRCBsb29rdXAgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIGlmIHBlci10aHJlYWQgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLiBUbyBmaXggdGhpcywgdGhlIHBhdGNoIGRlcXVldWVzIHRoZSB0aW1lcnMgYnkgY2FsbGluZyBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGJlZm9yZSB0aGUgUElEIGV4Y2hhbmdlLiBUaGlzIGlzIGEgbG9naWMvbGlmZWN5Y2xlIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgYW5kIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyBkdXJpbmcgYGV4ZWN2ZWAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vciBkb2VzIGl0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGluIHRoaXMgYXJlYSAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZGY2ODI3ZjAxNDM5NGVlZDUwNmE1YTRmZmRlNmI3MzAzMjViN2Q2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMjYgMTI6MDQ6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmNcbmluZGV4IDc0NWY2ZWI1Mjc5ZTYuLjliMmQxNDBiZDlmMmEgMTAwNjQ0XG4tLS0gYS9mcy9leGVjLmNcbisrKyBiL2ZzL2V4ZWMuY1xuQEAgLTEwMDMsNiArMTAwMywxOCBAQCBzdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbiBcdFx0ICogdGhlIGZvcm1lciB0aHJlYWQgZ3JvdXAgbGVhZGVyOlxuIFx0XHQgKi9cbiBcbisjaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU1xuK1x0XHQvKlxuK1x0XHQgKiBleGNoYW5nZV90aWRzKCkgaGFuZHMgdGhpcyB0aHJlYWQncyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsXG4rXHRcdCAqIHdoaWNoIGlzIHJlYXBlZCByaWdodCBhZnRlci4gVGhlIFBJRCBsb29rdXAgaW5cbitcdFx0ICogdGltZXJfbG9ja19zaWdoYW5kKCkgdGhlbiBmYWlscyB3aGlsZSB0aGUgcGVyIHRocmVhZCBDUFVcbitcdFx0ICogdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgaGVyZSwgc28gZGVxdWV1ZSB0aGVtIGZpcnN0LlxuK1x0XHQgKi9cbitcdFx0c3Bpbl9sb2NrKGxvY2spO1xuK1x0XHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcbitcdFx0c3Bpbl91bmxvY2sobG9jayk7XG4rI2VuZGlmXG4rXG4gXHRcdC8qIEJlY29tZSBhIHByb2Nlc3MgZ3JvdXAgbGVhZGVyIHdpdGggdGhlIG9sZCBsZWFkZXIncyBwaWQuXG4gXHRcdCAqIFRoZSBvbGQgbGVhZGVyIGJlY29tZXMgYSB0aHJlYWQgb2YgdGhlIHRoaXMgdGhyZWFkIGdyb3VwLlxuIFx0XHQgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEyOjEzOjE1LjgxODIzNTcxNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjczMzE1NTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBSZWxhdGVkIHRvIFBPU0lYIENQVSBUaW1lcnMgYW5kIGBleGVjdmVgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZnMvZXhlYy5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRlX3RocmVhZCgpYCBmdW5jdGlvbi4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXNpZGVzIHVuZGVyIGFuIGAjaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU2AgYmxvY2ssIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIHNvbWV0aGluZyBkZWFsaW5nIHdpdGggUE9TSVgtY29tcGxpYW50IENQVSB0aW1lcnMuIFRoZSBrZXkgYWN0aW9uIGhlcmUgaXMgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgd2hpbGUgYSBsb2NrIGlzIGhlbGQsIHN1Z2dlc3Rpbmcgc3luY2hyb25pemF0aW9uIGlzIGNydWNpYWwuIFRoZSBjb21tZW50IHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgY29udGV4dDogdGhpcyBpcyB0cmlnZ2VyZWQgZHVyaW5nIGBleGVjdmVgIGFuZCBkZWFscyB3aXRoIHRocmVhZCBncm91cCBsZWFkZXIgY2hhbmdlcyB2aWEgYGV4Y2hhbmdlX3RpZHMoKWAuIEFwcGFyZW50bHksIHRoZSBvbGQgbGVhZGVyIGlzIHF1aWNrbHkgcmVhcGVkLiBUaGUgcHJvYmxlbSBhcmlzZXMgd2hlbiB0aGUgUElEIGxvb2t1cCB1c2VkIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgZmFpbHMgd2hpbGUgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLCB3aGljaCB3b3VsZCBsZWFkIHRvIGEgbWVtb3J5IGFjY2VzcyB2aW9sYXRpb24uIFRoaXMgaXMgbGlrZWx5IGEgZml4IGZvciBhIHNlcmlvdXMgaXNzdWUsIGxpa2UgYSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbywgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UsIGEgbG9ja2luZyBidWcsIG9yIHBvdGVudGlhbGx5IGEgdGltZXIgZmlyaW5nIG9uIGEgdGFzayB0aGF0IGlzIG5vIGxvbmdlciB2YWxpZC4gSSB0aGluayB0aGUgdGltZXIgaGFzIGEgcG9pbnRlciB0byB0aGUgdGFzaywgYW5kIHRoZSB0YXNrIG1pZ2h0IGJlIGZyZWVkIHByaW9yIHRvIHRoZSB0aW1lci4gSXQgZG9lc24ndCBzZWVtIHRvIGludm9sdmUgYW55IG9idmlvdXMgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzIGJhc2VkIG9uIHdoYXQgSSBjYW4gc2VlLiBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoYXQgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgZnVuY3Rpb24gdG8gY29uZmlybSBteSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgdGhlIGlzc3VlIGFuZCB0aGUgc2FmZXR5IG9mIHRoZSBwcm9wb3NlZCBmaXguIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgbGlmZWN5Y2xlIG9mIHRoZXNlIHRpbWVycyBkdXJpbmcgcHJvY2VzcyBleGVjdXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQxMjoxMzoyMi40OTE1NTM4NDdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDMwODE1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicG9zaXhfY3B1X3RpbWVyc19leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGVjLmM9OTIyPXN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxuZnMvZXhlYy5jLTEwMTMtXFx0XFx0c3Bpbl9sb2NrKGxvY2spO1xcbmZzL2V4ZWMuYzoxMDE0OlxcdFxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xcbmZzL2V4ZWMuYy0xMDE1LVxcdFxcdHNwaW5fdW5sb2NrKGxvY2spO1xcbi0tXFxuZnMvZXhlYy5jPTExMzY9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTEyMDgtXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2bWUtXFx1MDAzZXNpZ2hhbmQtXFx1MDAzZXNpZ2xvY2spO1xcbmZzL2V4ZWMuYzoxMjA5OlxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdChtZSk7XFxuZnMvZXhlYy5jLTEyMTAtXFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZtZS1cXHUwMDNlc2lnaGFuZC1cXHUwMDNlc2lnbG9jayk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oPTIyNj12b2lkIHJ1bl9wb3NpeF9jcHVfdGltZXJzKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmg6MjI3OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XFxuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaDoyMjg6dm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oLTIyOS12b2lkIHNldF9wcm9jZXNzX2NwdV90aW1lcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGludCBjbG9ja19pZHgsXFxuLS1cXG5rZXJuZWwvZXhpdC5jPTE1OD1zdGF0aWMgdm9pZCBfX2V4aXRfc2lnbmFsKHN0cnVjdCByZWxlYXNlX3Rhc2tfcG9zdCAqcG9zdCwgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuLS1cXG5rZXJuZWwvZXhpdC5jLTE3MC0jaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU1xcbmtlcm5lbC9leGl0LmM6MTcxOlxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xcbmtlcm5lbC9leGl0LmMtMTcyLVxcdGlmIChncm91cF9kZWFkKVxcbmtlcm5lbC9leGl0LmM6MTczOlxcdFxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCh0c2spO1xcbmtlcm5lbC9leGl0LmMtMTc0LSNlbmRpZlxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jPTQ1MT1zdGF0aWMgdm9pZCBkaXNhcm1fdGltZXIoc3RydWN0IGtfaXRpbWVyICp0aW1lciwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ4MS0gKlxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo0ODI6ICogX19leGl0X3NpZ25hbCgpIGludm9rZXMgcG9zaXhfY3B1X3RpbWVyc19leGl0KCkgYW5kIGlmIHRoZSB0aHJlYWQgZ3JvdXAgaXNcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDgzLSAqIGRlYWQgaXQgYWxzbyBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZ3JvdXBfZXhpdCgpLiBUaGVzZSBmdW5jdGlvbnMgZGVsZXRlXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDg5LSAqIHRocmVhZCBncm91cCBpcyBub3QgZGVhZCB0aGV5IG9ubHkgY2xlYW4gdXAgdGhlIHBlciB0YXNrIHRpbWVycyB2aWFcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDkwOiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpLlxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy00OTEtICpcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz02MjQ9c3RhdGljIHZvaWQgY2xlYW51cF90aW1lcnMoc3RydWN0IHBvc2l4X2NwdXRpbWVycyAqcGN0KVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzMy0gKiBpcyBiZWluZyByZWFwZWQuICBXaGVuIHRoZSBmaW5hbCAobGVhZGVyKSB0aHJlYWQgaW4gdGhlIGdyb3VwIGlzIHJlYXBlZCxcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM0OiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCB3aWxsIGJlIGNhbGxlZCBhZnRlciBwb3NpeF9jcHVfdGltZXJzX2V4aXQuXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzNS0gKi9cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM2OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02Mzcte1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzOS19XFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjY0MDp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNjQxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMTI6MTM6MjQuMTk0NjQxMjA0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNzI1NDU5MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS01TQU4gTmVjZXNzaXR5KipcblxuT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBkZWFsaW5nIHdpdGggYSBwcmV0dHkgc3BlY2lmaWMgcmFjZSBjb25kaXRpb24gY2VudGVyZWQgYXJvdW5kIHRhc2sgbGlmZWN5Y2xlIGFuZCwgaW1wb3J0YW50bHksIHRoZSBtYW5hZ2VtZW50IG9mIHRpbWVycyDigJMgc3BlY2lmaWNhbGx5LCBQT1NJWCBDUFUgdGltZXJzLiBUaGUgY29yZSBpc3N1ZSBpcyB0aGF0IGEgdGhyZWFkJ3MgUElEIGNhbiBiZSBwYXNzZWQgdG8gYW4gKm9sZCogbGVhZGVyIGR1cmluZyBgZGVfdGhyZWFkKClgLCBhbmQgdGhpcyBsZWFkcyB0byBhIFBJRCBsb29rdXAgZmFpbHVyZSB3aXRoaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCwgZXNwZWNpYWxseSBpZiB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCBmb3IgdGhhdCB0aHJlYWQuIFRoZSBzb2x1dGlvbiB0aGV5J3ZlIGNvbWUgdXAgd2l0aCwgZGVxdWV1ZWluZyB0aGUgdGltZXJzIHdpdGggYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBiZWZvcmUgdGhlIFBJRCBzd2FwLCBtYWtlcyBzZW5zZS4gSXQncyBhIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZpeCwgYmFzaWNhbGx5IGVuc3VyaW5nIHRoZSB0aW1lcnMgYXJlIHByb3Blcmx5IGNsZWFuZWQgdXAgYmVmb3JlIHRoaXMgUElEIHJlYXNzaWdubWVudCBoYXBwZW5zLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIHJlcXVpcmVzIGEgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBjaGVjay4gQW5kIEknbSBzYXlpbmcgKm5vKi4gS01TQU4gaXMgZ2VuZXJhbGx5IGNvbmNlcm5lZCB3aXRoIHRoaW5ncyBsaWtlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGFuZCBpbmZvcm1hdGlvbiBsZWFrcywgdGhpbmdzIHRoYXQgZXhwb3NlIGtlcm5lbCBpbnRlcm5hbHMuIFRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBub3IgaXMgaXQgZGVhbGluZyB3aXRoIG1lbW9yeSB0aGF0J3MgdW5pbml0aWFsaXplZC4gVGhpcyBzb3VuZHMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBsb2dpYyBmbGF3IHdpdGggaG93IHRpbWVycyBhcmUgaGFuZGxlZCB3aGVuIGEgdGhyZWFkIGNoYW5nZXMgaXRzIGdyb3VwIGxlYWRlciBkdXJpbmcgYGV4ZWN2ZWAuXG5cbkFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgZml4LCBsaWtlIGEgdXNlLWFmdGVyLWZyZWUgb3IgYSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UsIHdvdWxkIGJlIGNhdWdodCBwZXJmZWN0bHkgd2VsbCBieSBLQVNBTiwgb3IgZXZlbiBieSBqdXN0IGdvb2QsIG9sZC1mYXNoaW9uZWQga2VybmVsIGRlYnVnZ2luZy4gTm8gbmVlZCB0byBicmluZyBvdXQgdGhlIGhlYXZ5IGFydGlsbGVyeSBvZiBLTVNBTiBoZXJlLiBJdCdzIG5vdCB0YXJnZXRpbmcgdGhlIGtpbmQgb2YgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgdGhhdCBLTVNBTiBpcyBkZXNpZ25lZCB0byBmaW5kLiBBIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIHdvdWxkIGJlIG92ZXJraWxsIGFuZCBhIHdhc3RlIG9mIHJlc291cmNlcyBpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZS4gVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgc2hvdWxkIGRlZmluaXRlbHkgYmUgc2V0IHRvIGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NzIsIk91dHB1dFRva2VucyI6MjA2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDEyOjEzOjMyLjU2NzE5MTIzM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGFuIGlzc3VlIGluIGBkZV90aHJlYWQoKWAgd2hlcmUgYSB0aHJlYWQncyBQSUQgaXMgaGFuZGVkIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBpcyB0aGVuIHJlYXBlZC4gVGhpcyBjYXVzZXMgYSBQSUQgbG9va3VwIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCBpZiBwZXItdGhyZWFkIENQVSB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZC4gVG8gZml4IHRoaXMsIHRoZSBwYXRjaCBkZXF1ZXVlcyB0aGUgdGltZXJzIGJ5IGNhbGxpbmcgYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBiZWZvcmUgdGhlIFBJRCBleGNoYW5nZS4gVGhpcyBpcyBhIGxvZ2ljL2xpZmVjeWNsZSBidWcgcmVsYXRlZCB0byBQT1NJWCBDUFUgdGltZXJzIGFuZCB0aHJlYWQgZ3JvdXAgbGVhZGVyIGNoYW5nZXMgZHVyaW5nIGBleGVjdmVgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIGFyZWEgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGFuIGlzc3VlIGluIGBkZV90aHJlYWQoKWAgd2hlcmUgYSB0aHJlYWQncyBQSUQgaXMgaGFuZGVkIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBpcyB0aGVuIHJlYXBlZC4gVGhpcyBjYXVzZXMgYSBQSUQgbG9va3VwIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCBpZiBwZXItdGhyZWFkIENQVSB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZC4gVG8gZml4IHRoaXMsIHRoZSBwYXRjaCBkZXF1ZXVlcyB0aGUgdGltZXJzIGJ5IGNhbGxpbmcgYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBiZWZvcmUgdGhlIFBJRCBleGNoYW5nZS4gVGhpcyBpcyBhIGxvZ2ljL2xpZmVjeWNsZSBidWcgcmVsYXRlZCB0byBQT1NJWCBDUFUgdGltZXJzIGFuZCB0aHJlYWQgZ3JvdXAgbGVhZGVyIGNoYW5nZXMgZHVyaW5nIGBleGVjdmVgLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBub3IgZG9lcyBpdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIGFyZWEgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcykgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jsg[1] Phase: Succeeded StartedAt: 2026-08-26 12:13:43 +0000 UTC FinishedAt: 2026-08-26 12:13:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-26 12:13:43 +0000 UTC FinishedAt: 2026-08-26 12:13:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2] Phase: Succeeded StartedAt: 2026-08-26 12:13:43 +0000 UTC FinishedAt: 2026-08-26 15:56:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-26 12:13:43 +0000 UTC FinishedAt: 2026-08-26 15:56:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-26 12:13:43 +0000 UTC FinishedAt: 2026-08-26 12:13:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-26 12:13:43 +0000 UTC FinishedAt: 2026-08-26 12:13:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow74jsg/series-workflow74jsg-convert-artifact-3311189998/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-26 12:13:54 +0000 UTC FinishedAt: 2026-08-26 12:31:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-26 12:13:54 +0000 UTC FinishedAt: 2026-08-26 12:31:08 +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:*78d4d324-0e54-4a85-a1c2-4834d0d6b395,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-workflow74jsg/series-workflow74jsg-convert-artifact-3311189998/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": "9764933e-ee15-4e67-8c90-d5b71b34d1fe", "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-workflow74jsg/series-workflow74jsg-build-action-1167918932/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-26 12:13:54 +0000 UTC FinishedAt: 2026-08-26 12:30:58 +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:*78d4d324-0e54-4a85-a1c2-4834d0d6b395,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-workflow74jsg/series-workflow74jsg-convert-artifact-3311189998/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": "9764933e-ee15-4e67-8c90-d5b71b34d1fe", "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-workflow74jsg/series-workflow74jsg-build-action-1167918932/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-26 12:31:08 +0000 UTC FinishedAt: 2026-08-26 12:31:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-26 12:31:08 +0000 UTC FinishedAt: 2026-08-26 12:31:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-26 12:31:08 +0000 UTC FinishedAt: 2026-08-26 12:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-26 12:31:08 +0000 UTC FinishedAt: 2026-08-26 12:31:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflow74jsg/series-workflow74jsg-convert-artifact-3051207137/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-26 12:31:18 +0000 UTC FinishedAt: 2026-08-26 12:33:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-26 12:31:18 +0000 UTC FinishedAt: 2026-08-26 12:33:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9764933e-ee15-4e67-8c90-d5b71b34d1fe,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-workflow74jsg/series-workflow74jsg-build-action-1167918932/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-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-26 12:33:55 +0000 UTC FinishedAt: 2026-08-26 12:33:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-26 12:33:55 +0000 UTC FinishedAt: 2026-08-26 12:33:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-26 12:33:55 +0000 UTC FinishedAt: 2026-08-26 12:50:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-26 12:33:55 +0000 UTC FinishedAt: 2026-08-26 12:50:58 +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:*78d4d324-0e54-4a85-a1c2-4834d0d6b395,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-workflow74jsg/series-workflow74jsg-convert-artifact-3051207137/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": "6b5e4a37-a16f-42c7-bbad-2010eccb2c6c", "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-workflow74jsg/series-workflow74jsg-build-action-3602201325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-26 12:33:55 +0000 UTC FinishedAt: 2026-08-26 12:50:48 +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:*78d4d324-0e54-4a85-a1c2-4834d0d6b395,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-workflow74jsg/series-workflow74jsg-convert-artifact-3051207137/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": "6b5e4a37-a16f-42c7-bbad-2010eccb2c6c", "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-workflow74jsg/series-workflow74jsg-build-action-3602201325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-26 12:50:58 +0000 UTC FinishedAt: 2026-08-26 12:50:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-26 12:50:58 +0000 UTC FinishedAt: 2026-08-26 12:50:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-26 12:50:58 +0000 UTC FinishedAt: 2026-08-26 12:53:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-26 12:50:58 +0000 UTC FinishedAt: 2026-08-26 12:52:53 +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:*6b5e4a37-a16f-42c7-bbad-2010eccb2c6c,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-workflow74jsg/series-workflow74jsg-build-action-3602201325/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-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-26 12:53:03 +0000 UTC FinishedAt: 2026-08-26 15:56:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-26 12:53:03 +0000 UTC FinishedAt: 2026-08-26 15:56:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},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:*9764933e-ee15-4e67-8c90-d5b71b34d1fe,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6b5e4a37-a16f-42c7-bbad-2010eccb2c6c,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-workflow74jsg/series-workflow74jsg-build-action-1167918932/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-workflow74jsg/series-workflow74jsg-build-action-3602201325/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-26 12:53:03 +0000 UTC FinishedAt: 2026-08-26 12:53:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-26 12:53:03 +0000 UTC FinishedAt: 2026-08-26 12:53:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},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-workflow74jsg/series-workflow74jsg-convert-artifact-2652345974/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-26 12:53:03 +0000 UTC FinishedAt: 2026-08-26 12:53:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-26 12:53:03 +0000 UTC FinishedAt: 2026-08-26 12:53:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-26 12:53:03 +0000 UTC FinishedAt: 2026-08-26 12:53:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-26 12:53:13 +0000 UTC FinishedAt: 2026-08-26 15:56:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jsg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":null,"focus_symbols":["posix_cpu_timers_exit","begin_new_exec"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"6dd63e09-9990-4f04-b67d-e35ee3141b4e","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-26 12:53:13 +0000 UTC FinishedAt: 2026-08-26 15:55:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9764933e-ee15-4e67-8c90-d5b71b34d1fe,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6b5e4a37-a16f-42c7-bbad-2010eccb2c6c,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-workflow74jsg/series-workflow74jsg-build-action-1167918932/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-workflow74jsg/series-workflow74jsg-build-action-3602201325/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-workflow74jsg/series-workflow74jsg-convert-artifact-2652345974/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,}