Name: series-workflows4r6c Phase: Succeeded StartedAt: 2026-08-03 19:34:36 +0000 UTC FinishedAt: 2026-08-04 00:15:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[0] Phase: Succeeded StartedAt: 2026-08-03 19:34:36 +0000 UTC FinishedAt: 2026-08-03 20:17:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 19:34:36 +0000 UTC FinishedAt: 2026-08-03 20:17:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "e072f0a5-9159-4db2-a855-d0a1c3140142" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_orphan_cleanup", "ext4_orphan_file_empty" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDIwOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X29ycGhhbl9jbGVhbnVwJiMzNDssCiAgICAmIzM0O2V4dDRfb3JwaGFuX2ZpbGVfZW1wdHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gZXh0NF9vcnBoYW5fY2xlYW51cCB3aGVyZSBpdCBpbmNvcnJlY3RseSBjaGVja2VkIGlmIHRoZSBvcnBoYW4gZmlsZSB3YXMgZW1wdHkgYnkgY2hlY2tpbmcgaWYgdGhlIG51bWJlciBvZiBibG9ja3MgaW4gdGhlIG9ycGhhbiBmaWxlIHdhcyB6ZXJvLiBJdCBub3cgY29ycmVjdGx5IHVzZXMgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikuIFRoaXMgYWZmZWN0cyBleHQ0IG1vdW50IGJlaGF2aW9yIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDIwOjE2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTczNGU0OWJjZjZhZTMyNzg3YjgwYzA0ZWMwYmVhZTRkYjUyZTRjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMjA6MTY6MTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9vcnBoYW4uYyBiL2ZzL2V4dDQvb3JwaGFuLmNcbmluZGV4IDY0ZWE0NzYyNDIzMzguLjJhNDQ5OThhNmMyZWMgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L29ycGhhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L29ycGhhbi5jXG5AQCAtMzg4LDcgJiM0MzszODgsNyBAQCB2b2lkIGV4dDRfb3JwaGFuX2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKVxuIFx0c3RydWN0IGV4dDRfb3JwaGFuX2luZm8gKm9pID0gXHUwMDI2RVhUNF9TQihzYiktXHUwMDNlc19vcnBoYW5faW5mbztcbiBcdGludCBpbm9kZXNfcGVyX29iID0gZXh0NF9pbm9kZXNfcGVyX29ycGhhbl9ibG9jayhzYik7XG4gXG4tXHRpZiAoIWVzLVx1MDAzZXNfbGFzdF9vcnBoYW4gXHUwMDI2XHUwMDI2ICFvaS1cdTAwM2VvZl9ibG9ja3MpIHtcbiYjNDM7XHRpZiAoIWVzLVx1MDAzZXNfbGFzdF9vcnBoYW4gXHUwMDI2XHUwMDI2IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKSB7XG4gXHRcdGV4dDRfZGVidWcoXCYjMzQ7bm8gb3JwaGFuIGlub2RlcyB0byBjbGVhbiB1cFxcblwmIzM0Oyk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAyMDoxNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfb3JwaGFuX2NsZWFudXAmIzM0OywKICAgICYjMzQ7ZXh0NF9vcnBoYW5fZmlsZV9lbXB0eSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBleHQ0X29ycGhhbl9jbGVhbnVwIHdoZXJlIGl0IGluY29ycmVjdGx5IGNoZWNrZWQgaWYgdGhlIG9ycGhhbiBmaWxlIHdhcyBlbXB0eSBieSBjaGVja2luZyBpZiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGUgb3JwaGFuIGZpbGUgd2FzIHplcm8uIEl0IG5vdyBjb3JyZWN0bHkgdXNlcyBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKS4gVGhpcyBhZmZlY3RzIGV4dDQgbW91bnQgYmVoYXZpb3IgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxNzM0ZTQ5YmNmNmFlMzI3ODdiODBjMDRlYzBiZWFlNGRiNTJlNGNlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAyMDoxNjoxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvb3JwaGFuLmMgYi9mcy9leHQ0L29ycGhhbi5jCmluZGV4IDY0ZWE0NzYyNDIzMzguLjJhNDQ5OThhNmMyZWMgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvb3JwaGFuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9vcnBoYW4uYwpAQCAtMzg4LDcgJiM0MzszODgsNyBAQCB2b2lkIGV4dDRfb3JwaGFuX2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKQogCXN0cnVjdCBleHQ0X29ycGhhbl9pbmZvICpvaSA9ICZhbXA7RVhUNF9TQihzYiktJmd0O3Nfb3JwaGFuX2luZm87CiAJaW50IGlub2Rlc19wZXJfb2IgPSBleHQ0X2lub2Rlc19wZXJfb3JwaGFuX2Jsb2NrKHNiKTsKIAotCWlmICghZXMtJmd0O3NfbGFzdF9vcnBoYW4gJmFtcDsmYW1wOyAhb2ktJmd0O29mX2Jsb2NrcykgewomIzQzOwlpZiAoIWVzLSZndDtzX2xhc3Rfb3JwaGFuICZhbXA7JmFtcDsgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikpIHsKIAkJZXh0NF9kZWJ1ZygmIzM0O25vIG9ycGhhbiBpbm9kZXMgdG8gY2xlYW4gdXBcbiYjMzQ7KTsKIAkJcmV0dXJuOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMjA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYToKCioqQW5hbHl6aW5nIGFuIGV4dDQgT3JwaGFuIENsZWFudXAgUGF0Y2gqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hlZCBgZnMvZXh0NC9vcnBoYW4uY2AuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBpcyBpbiB0aGUgYGV4dDRfb3JwaGFuX2NsZWFudXBgIGZ1bmN0aW9uLiBUaGUgb3JpZ2luYWwgY2hlY2ssIGBpZiAoIWVzLSZndDtzX2xhc3Rfb3JwaGFuICZhbXA7JmFtcDsgIW9pLSZndDtvZl9ibG9ja3MpYCwgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBgaWYgKCFlcy0mZ3Q7c19sYXN0X29ycGhhbiAmYW1wOyZhbXA7IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKWAuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBUaGV5JiMzOTt2ZSBzd2FwcGVkIG91dCBhIGNoZWNrIGZvciB3aGV0aGVyIGFuIG9ycGhhbiBpbm9kZSBoYXMgYXNzb2NpYXRlZCBkYXRhIGJsb2NrcyAoYCFvaS0mZ3Q7b2ZfYmxvY2tzYCkgd2l0aCBhIGNhbGwgdG8gdGhlIGBleHQ0X29ycGhhbl9maWxlX2VtcHR5YCBmdW5jdGlvbi4gV2h5PyYjMzQ7IFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIG9yIGEgbW9yZSBudWFuY2VkIHdheSB0byBkZXRlcm1pbmUgaWYgYW4gb3JwaGFuZWQgaW5vZGUgYWN0dWFsbHkgbmVlZHMgY2xlYW5pbmcgdXAuIFRoZSBvbGQgY29uZGl0aW9uIGxpa2VseSBhc3N1bWVkIHRoYXQgaWYgdGhlcmUgd2VyZSAqbm8qIGJsb2NrcyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUsIHRoZW4gaXQgd2FzIGVmZmVjdGl2ZWx5IGVtcHR5IGFuZCBjb3VsZCBiZSByZW1vdmVkLiBCdXQsIGl0IGlzIHZlcnkgaW1wb3J0YW50IHRvIGNvbnNpZGVyICp3aHkqIHRoaXMgaGFzIGNoYW5nZWQgdG8gYW4gYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlgIGNhbGwuCgpJIG5lZWQgdG8gZGlnIGludG8gdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBvZiBib3RoIGBleHQ0X29ycGhhbl9jbGVhbnVwYCBhbmQsIGNydWNpYWxseSwgYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlgIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgaW1wbGljYXRpb25zLiBJIG5lZWQgdG8ga25vdyB3aGF0IHRoZXkmIzM5O3JlICpyZWFsbHkqIGNoZWNraW5nLiBJcyBpdCBjb25zaWRlcmluZyBmcmFnbWVudGF0aW9uPyBTcGFyc2UgZmlsZXM/IEluZGlyZWN0IGJsb2Nrcz8gTWF5YmUgdGhpcyBuZXcgY2hlY2sgaGFuZGxlcyB6ZXJvLWxlbmd0aCBmaWxlcyBtb3JlIGVsZWdhbnRseSBvciBjb3JyZWN0bHkgYWNjb3VudHMgZm9yIGRlbGF5ZWQgYWxsb2NhdGlvbiBzY2VuYXJpb3MuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIHBhdGNoIGNvbnRleHQgdG8gYmUgY2VydGFpbi4gSXMgdGhpcyBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50PyBBIGJ1ZyBmaXg/IEkgbmVlZCBtb3JlIGRhdGEhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMjA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9vcnBoYW5fY2xlYW51cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvZXh0NC5oPTM5NjQ9ZXh0ZXJuIGludCBleHQ0X29ycGhhbl9kZWwoaGFuZGxlX3QgKiwgc3RydWN0IGlub2RlICopO1xuZnMvZXh0NC9leHQ0Lmg6Mzk2NTpleHRlcm4gdm9pZCBleHQ0X29ycGhhbl9jbGVhbnVwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG5mcy9leHQ0L2V4dDQuaC0zOTY2LVx0XHRcdFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKTtcbi0tXG5mcy9leHQ0L2lub2RlLmM9NDUzNz1pbnQgZXh0NF9pbm9kZV9hdHRhY2hfamlub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTQ1ODctICogVGhlIGNvbW1pdHRlZCBpbm9kZSBoYXMgdGhlIG5ldywgZGVzaXJlZCBpX3NpemUgKHdoaWNoIGlzIHRoZSBzYW1lIGFzXG5mcy9leHQ0L2lub2RlLmM6NDU4ODogKiBpX2Rpc2tzaXplIGluIHRoaXMgY2FzZSkuICBBZnRlciBhIGNyYXNoLCBleHQ0X29ycGhhbl9jbGVhbnVwKCkgd2lsbCBzZWVcbmZzL2V4dDQvaW5vZGUuYy00NTg5LSAqIHRoYXQgdGhpcyBpbm9kZSYjMzk7cyB0cnVuY2F0ZSBkaWQgbm90IGNvbXBsZXRlIGFuZCBpdCB3aWxsIGFnYWluIGNhbGxcbi0tXG5mcy9leHQ0L29ycGhhbi5jPTEzPXN0YXRpYyBpbnQgZXh0NF9vcnBoYW5fZmlsZV9hZGQoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTk1LSAqIEF0IGZpbGVzeXN0ZW0gcmVjb3ZlcnkgdGltZSwgd2Ugd2FsayB0aGlzIGxpc3QgZGVsZXRpbmcgdW5saW5rZWRcbmZzL2V4dDQvb3JwaGFuLmM6OTY6ICogaW5vZGVzIGFuZCB0cnVuY2F0aW5nIGxpbmtlZCBpbm9kZXMgaW4gZXh0NF9vcnBoYW5fY2xlYW51cCgpLlxuZnMvZXh0NC9vcnBoYW4uYy05Ny0gKlxuLS1cbmZzL2V4dDQvb3JwaGFuLmM9MzIxPXN0YXRpYyB2b2lkIGV4dDRfcHJvY2Vzc19vcnBoYW4oc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTM2MC1cbmZzL2V4dDQvb3JwaGFuLmM6MzYxOi8qIGV4dDRfb3JwaGFuX2NsZWFudXAoKSB3YWxrcyBhIHNpbmdseS1saW5rZWQgbGlzdCBvZiBpbm9kZXMgKHN0YXJ0aW5nIGF0XG5mcy9leHQ0L29ycGhhbi5jLTM2Mi0gKiB0aGUgc3VwZXJibG9jaykgd2hpY2ggd2VyZSBkZWxldGVkIGZyb20gYWxsIGRpcmVjdG9yaWVzLCBidXQgaGVsZCBvcGVuIGJ5XG4tLVxuZnMvZXh0NC9vcnBoYW4uYy0zNzctICovXG5mcy9leHQ0L29ycGhhbi5jOjM3ODp2b2lkIGV4dDRfb3JwaGFuX2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKVxuZnMvZXh0NC9vcnBoYW4uYy0zNzkte1xuLS1cbmZzL2V4dDQvc3VwZXIuYz01MzM4PXN0YXRpYyBpbnQgX19leHQ0X2ZpbGxfc3VwZXIoc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy01NzA0LVx0RVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSB8PSBFWFQ0X09SUEhBTl9GUztcbmZzL2V4dDQvc3VwZXIuYzo1NzA1Olx0ZXh0NF9vcnBoYW5fY2xlYW51cChzYiwgZXMpO1xuZnMvZXh0NC9zdXBlci5jLTU3MDYtXHRFWFQ0X1NCKHNiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNj0gfkVYVDRfT1JQSEFOX0ZTO1xuLS1cbmZzL2V4dDQvc3VwZXIuYy01NzA4LVx0ICogVXBkYXRlIHRoZSBjaGVja3N1bSBhZnRlciB1cGRhdGluZyBmcmVlIHNwYWNlL2lub2RlIGNvdW50ZXJzIGFuZFxuZnMvZXh0NC9zdXBlci5jOjU3MDk6XHQgKiBleHQ0X29ycGhhbl9jbGVhbnVwLiBPdGhlcndpc2UgdGhlIHN1cGVyYmxvY2sgY2FuIGhhdmUgYW4gaW5jb3JyZWN0XG5mcy9leHQ0L3N1cGVyLmMtNTcxMC1cdCAqIGNoZWNrc3VtIGluIHRoZSBidWZmZXIgY2FjaGUgdW50aWwgaXQgaXMgd3JpdHRlbiBvdXQgYW5kXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMjA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIGV4dDQgRmlsZXN5c3RlbSBPcnBoYW4gQ2xlYW51cCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgZXh0NCBtb3VudCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgYF9fZXh0NF9maWxsX3N1cGVyYC4gSSBrbm93IHRoYXQmIzM5O3Mgd2hlcmUgYSBsb3Qgb2YgdGhlIGluaXRpYWwgc2V0dXAgaGFwcGVucyB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuIEFuZCwgYXMgSSByZW1lbWJlciBmcm9tIGRlYnVnZ2luZyBvcnBoYW4gaW5vZGVzIGluIHRoZSBwYXN0LCBgZXh0NF9vcnBoYW5fY2xlYW51cGAgaXMgY2FsbGVkICpkdXJpbmcqIHRoYXQgY3JpdGljYWwgaW5pdGlhbGl6YXRpb24gcGhhc2UuIFRoYXTigJlzIGdvdCBteSBhdHRlbnRpb24uIEl0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgY29ycnVwdGVkIG9yIGluY29tcGxldGUgaW5vZGVzIHJpZ2h0IGF0IHRoZSBtb21lbnQgdGhlIHN5c3RlbSBpcyB0cnlpbmcgdG8gZ2V0IGl0c2VsZiB1cCBhbmQgcnVubmluZy4KCkdpdmVuIHRoYXQgY29udGV4dCwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eWAuIFRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBhY3R1YWxseSAqZGV0ZXJtaW5pbmcqIGlmIGFuIG9ycGhhbiBpbm9kZSBhY3R1YWxseSBuZWVkcyBjbGVhbnVwLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNyaXRlcmlhIGl0IHVzZXMuIElzIGl0IGJhc2VkIG9uIHRoZSBpX2xpbmtzX2NvdW50PyBUaGUgc2l6ZT8gRmlsZSB0eXBlPyBXaGF0IGNvbnN0aXR1dGVzIGFuICYjMzk7ZW1wdHkmIzM5OyBvcnBoYW4gZmlsZSBmcm9tIHRoZSBrZXJuZWzigJlzIHBlcnNwZWN0aXZlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNoZWNrIHRob3JvdWdobHkgdG8gdHJ1bHkgZ3Jhc3AgaG93IHdlbGwgdGhpcyBjbGVhbnVwIHByb2Nlc3Mgd29ya3MsIGFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGVyZSBpdCBtaWdodCBoYXZlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIG9wcG9ydHVuaXRpZXMgZm9yIG9wdGltaXphdGlvbi4gSeKAmW0gdGhpbmtpbmcgYWJvdXQgZWRnZSBjYXNlcywgcGVyaGFwcyBzb21ldGhpbmcgdGhhdCBjb3VsZCBjYXVzZSBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgb3IgZXZlbiBhIHNlY3VyaXR5IGlzc3VlLiBJdCYjMzk7cyB0aW1lIHRvIGdvIGRlZXBlciBhbmQgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyByZWFsbHkgZG9pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMjA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9vcnBoYW5fZmlsZV9lbXB0eSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvZXh0NC5oPTM5Njg9ZXh0ZXJuIGludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XG5mcy9leHQ0L2V4dDQuaDozOTY5OmV4dGVybiBpbnQgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTtcbmZzL2V4dDQvZXh0NC5oLTM5NzAtZXh0ZXJuIHZvaWQgZXh0NF9vcnBoYW5fZmlsZV9ibG9ja190cmlnZ2VyKFxuLS1cbmZzL2V4dDQvb3JwaGFuLmM9Mzc4PXZvaWQgZXh0NF9vcnBoYW5fY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMpXG4tLVxuZnMvZXh0NC9vcnBoYW4uYy0zOTAtXG5mcy9leHQ0L29ycGhhbi5jOjM5MTpcdGlmICghZXMtXHUwMDNlc19sYXN0X29ycGhhbiBcdTAwMjZcdTAwMjYgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikpIHtcbmZzL2V4dDQvb3JwaGFuLmMtMzkyLVx0XHRleHQ0X2RlYnVnKFwmIzM0O25vIG9ycGhhbiBpbm9kZXMgdG8gY2xlYW4gdXBcXG5cJiMzNDspO1xuLS1cbmZzL2V4dDQvb3JwaGFuLmM9NTY4PWludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTY0NS1cbmZzL2V4dDQvb3JwaGFuLmM6NjQ2OmludCBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L29ycGhhbi5jLTY0Ny17XG4tLVxuZnMvZXh0NC9zdXBlci5jPTYzNDg9c3RhdGljIGludCBleHQ0X21hcmtfcmVjb3ZlcnlfY29tcGxldGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNjM2OC1cdCAgICBleHQ0X2hhc19mZWF0dXJlX29ycGhhbl9wcmVzZW50KHNiKSkpIHtcbmZzL2V4dDQvc3VwZXIuYzo2MzY5Olx0XHRpZiAoIWV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKSB7XG5mcy9leHQ0L3N1cGVyLmMtNjM3MC1cdFx0XHRleHQ0X2Vycm9yKHNiLCBcJiMzNDtPcnBoYW4gZmlsZSBub3QgZW1wdHkgb24gcmVhZC1vbmx5IGZzLlwmIzM0Oyk7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTY0OTE9c3RhdGljIGludCBleHQ0X2ZyZWV6ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy02NTA5LVx0XHRleHQ0X2NsZWFyX2ZlYXR1cmVfam91cm5hbF9uZWVkc19yZWNvdmVyeShzYik7XG5mcy9leHQ0L3N1cGVyLmM6NjUxMDpcdFx0aWYgKGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKVxuZnMvZXh0NC9zdXBlci5jLTY1MTEtXHRcdFx0ZXh0NF9jbGVhcl9mZWF0dXJlX29ycGhhbl9wcmVzZW50KHNiKTtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NjU1OD1zdGF0aWMgaW50IF9fZXh0NF9yZW1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNjc0OC1cdFx0XHQgKi9cbmZzL2V4dDQvc3VwZXIuYzo2NzQ5Olx0XHRcdGlmIChlcy1cdTAwM2VzX2xhc3Rfb3JwaGFuIHx8ICFleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKSkge1xuZnMvZXh0NC9zdXBlci5jLTY3NTAtXHRcdFx0XHRleHQ0X21zZyhzYiwgS0VSTl9XQVJOSU5HLCBcJiMzNDtDb3VsZG4mIzM5O3QgXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMjA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQyOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgY29kZSBjaGFuZ2UsIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIHRoZSBPcnBoYW4gRmlsZSBIYW5kbGluZyBpbiBleHQ0KioKClJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIHN1Z2dlc3RpbmcgYSBmYWlybHkgZm9jdXNlZCBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgcmVwbGFjaW5nIGEgY2hlY2ssIHNwZWNpZmljYWxseSBgIW9pLSZndDtvZl9ibG9ja3NgLCB3aXRoIGEgY2FsbCB0byBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYilgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB3aHkgdGhpcyBzdWJzdGl0dXRpb24/JiMzNDsgYCFvaS0mZ3Q7b2ZfYmxvY2tzYCBwcm9iYWJseSByZXByZXNlbnRlZCBhIHNpbXBsZSBjaGVjayBmb3IgYW4gb3JwaGFuIGZpbGUgaGF2aW5nIG5vIGRhdGEgYmxvY2tzIGFsbG9jYXRlZC4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBpbnRlbnRpb24gaXMgdG8gdXNlIGEgbW9yZSByb2J1c3Qgb3IgbnVhbmNlZCBhcHByb2FjaCB3aXRoIGBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKWAuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBuZXcgZnVuY3Rpb24gbm93IHRvIHRydWx5IHVuZGVyc3RhbmQgdGhlIGNoYW5nZSBhbmQgaXRzIGltcGxpY2F0aW9ucy4gSSYjMzk7bSBndWVzc2luZyB0aGF0IGBleHQ0X29ycGhhbl9maWxlX2VtcHR5KClgIGRvZXMgYSBtb3JlIHRob3JvdWdoIGNoZWNrIHRvIGRldGVybWluZSBpZiBhbiBvcnBoYW4gZmlsZSBpcyB0cnVseSAmIzM0O2VtcHR5JiMzNDsgYWNjb3JkaW5nIHRvIGV4dDQmIzM5O3MgaW50ZXJuYWwgZGVmaW5pdGlvbnMsIHBlcmhhcHMgdGFraW5nIGludG8gYWNjb3VudCBtZXRhZGF0YSwgaW5kaXJlY3QgYmxvY2tzLCBvciBvdGhlciBpbnRlcm5hbCBib29ra2VlcGluZy4gSXQmIzM5O3MgYWxzbyBwb3NzaWJsZSB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgc29tZSBhZGRpdGlvbmFsIGNvbnNpZGVyYXRpb25zIHRoYXQgd2VyZW4mIzM5O3QgY2FwdHVyZWQgYnkgdGhlIHNpbXBsZSBjaGVjayBvZiBhbGxvY2F0ZWQgYmxvY2tzLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRvIHNlZSB3aGF0IGBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKWAgYWN0dWFsbHkgZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAyMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4dDQvb3JwaGFuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY0MDpcdFx0a3ZmcmVlKG9pLVx1MDAzZW9mX2JpbmZvKTtcbiA2NDE6XHRvdXRfcHV0OlxuIDY0MjpcdFx0aXB1dChpbm9kZSk7XG4gNjQzOlx0XHRyZXR1cm4gcmV0O1xuIDY0NDpcdH1cbiA2NDU6XHRcbiA2NDY6XHRpbnQgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuIDY0NzpcdHtcbiA2NDg6XHRcdHN0cnVjdCBleHQ0X29ycGhhbl9pbmZvICpvaSA9IFx1MDAyNkVYVDRfU0Ioc2IpLVx1MDAzZXNfb3JwaGFuX2luZm87XG4gNjQ5Olx0XHRpbnQgaTtcbiA2NTA6XHRcdGludCBpbm9kZXNfcGVyX29iID0gZXh0NF9pbm9kZXNfcGVyX29ycGhhbl9ibG9jayhzYik7XG4gNjUxOlx0XG4gNjUyOlx0XHRpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfb3JwaGFuX2ZpbGUoc2IpKVxuIDY1MzpcdFx0XHRyZXR1cm4gMTtcbiA2NTQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG9pLVx1MDAzZW9mX2Jsb2NrczsgaSYjNDM7JiM0MzspXG4gNjU1Olx0XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9mcmVlX2VudHJpZXMpICE9XG4gNjU2Olx0XHRcdCAgICBpbm9kZXNfcGVyX29iKVxuIDY1NzpcdFx0XHRcdHJldHVybiAwO1xuIDY1ODpcdFx0cmV0dXJuIDE7XG4gNjU5Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDIwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwOTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgQnVnIEZpeCBpbiBleHQ0IE9ycGhhbiBGaWxlIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgZnJhbmtseSwgaXQmIzM5O3MgcHJldHR5IHNpZ25pZmljYW50LiBUaGUgY29yZSBpc3N1ZSBpcyB0aGF0IHRoZSBvbGQgY29kZSB3YXMgdXNpbmcgYCFvaS0mZ3Q7b2ZfYmxvY2tzYCB0byBkZXRlcm1pbmUgaWYgYW4gb3JwaGFuIGZpbGUgd2FzICplbXB0eSosIGJ1dCB0aGF0IGZpZWxkIGFjdHVhbGx5IHJlcHJlc2VudHMgdGhlICpudW1iZXIgb2YgYmxvY2tzKiBhbGxvY2F0ZWQgdG8gdGhlIG9ycGhhbiBmaWxlLCBub3QgdGhlICpudW1iZXIgb2Ygb3JwaGFuIGlub2RlcyogaXQgY29udGFpbnMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIG1pc3Rha2UsIGVhc2lseSBvdmVybG9va2VkLiBJZiB0aGUgb3JwaGFuIGZpbGUgZmVhdHVyZSBpcyBlbmFibGVkIGFuZCBhbiBvcnBoYW4gZmlsZSBleGlzdHMsIGV2ZW4gaWYgaXQmIzM5O3MgY29tcGxldGVseSBlbXB0eSBvZiBhY3R1YWwgb3JwaGFuIGlub2RlcywgYG9pLSZndDtvZl9ibG9ja3NgIHdpbGwgYmUgbm9uLXplcm8sIGFuZCBgZXh0NF9vcnBoYW5fY2xlYW51cGAgd291bGQgaW5jb3JyZWN0bHkgYXR0ZW1wdCBjbGVhbnVwLCB3YXN0aW5nIHRpbWUgYXQgYmVzdCwgYW5kIHBvc3NpYmx5IGxlYWRpbmcgdG8gb3RoZXIgaXNzdWVzLgoKVGhlIGZpeCwgdGhhbmsgZ29vZG5lc3MsIGlzIHN0cmFpZ2h0Zm9yd2FyZDogcmVwbGFjZSB0aGF0IGZsYXdlZCBjaGVjayB3aXRoIGBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKWAuIFRoYXQgZnVuY3Rpb24gKnNob3VsZCogYWNjdXJhdGVseSBkZXRlcm1pbmUgaWYgdGhlIG9ycGhhbiBmaWxlIHRydWx5IGhvbGRzIGFueSBvcnBoYW4gaW5vZGVzLiBTaW1wbGUgZml4LCBidXQgY3JpdGljYWwuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGBleHQ0X29ycGhhbl9jbGVhbnVwYCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyB0aGUgKm1vdW50KiBwcm9jZXNzLCB3aGljaCBtYWtlcyB0aGlzIGV2ZW4gbW9yZSBpbXBvcnRhbnQuIEl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLCBnaXZlbiB0aGF0IGl0JiMzOTtzIGhhbmRsaW5nIHBvdGVudGlhbGx5IGluY29uc2lzdGVudCBtZXRhZGF0YSwgYW5kIGNhbGxlZCBhdCBzdWNoIGEgcGl2b3RhbCB0aW1lLiBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiBgZXh0NF9vcnBoYW5fY2xlYW51cGAgYW5kLCBvYnZpb3VzbHksIGBleHQ0X29ycGhhbl9maWxlX2VtcHR5YC4KClRpbWUgdG8gY2hlY2sgaWYgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBtaWdodCBiZSBpbXBhY3RlZC4uLiBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIGBFWFQ0X0ZTYCBpcyBkZWZpbml0ZWx5IGludm9sdmVkLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nIHRoYXQgbWlnaHQgaW5kaXJlY3RseSBpbmZsdWVuY2UgdGhpcyBidWcgb3IgaXRzIGZpeC4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDIwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFWFQ0X0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9leHQ0L0tjb25maWc6Mjpjb25maWcgRVhUNF9GU1xuZnMvZXh0NC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVwmIzM0O1xuLS1cbmZzL2V4dDQvS2NvbmZpZz0zNT1jb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcbi0tXG5mcy9leHQ0L0tjb25maWctNDUtXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXG5mcy9leHQ0L0tjb25maWctNDctXHRib29sIFwmIzM0O0V4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbi0tXG5mcy9leHQ0L0tjb25maWctNTUtXG5mcy9leHQ0L0tjb25maWc6NTY6Y29uZmlnIEVYVDRfRlNfU0VDVVJJVFlcbmZzL2V4dDQvS2NvbmZpZy01Ny1cdGJvb2wgXCYjMzQ7RXh0NCBTZWN1cml0eSBMYWJlbHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMjA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkxNQoJCQkJCQkJb3V0cHV0OiAxMTkKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFWFQ0IEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiBpcyBgRVhUNF9GU2AsIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSBmb2N1c2luZyBvbiB0aGUgRVhUNCBmaWxlc3lzdGVtLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBoaXR0aW5nIHRoZSByaWdodCBzcG90cyBmb3IgZnV6emluZywgc28gSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGV4dDRfb3JwaGFuX2NsZWFudXBgIGFuZCBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eWAuCgpPa2F5LCBnb29kLiBCb3RoIGBleHQ0X29ycGhhbl9jbGVhbnVwYCBhbmQgYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlgIGFyZSBub24tc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggbWFrZXMgdGhlbSBwcmltZSBjYW5kaWRhdGVzIGZvciBleHRlcm5hbCBjYWxscyBhbmQgdGh1cywgZnV6emluZy4gVGhpcyBnaXZlcyB1cyBtb3JlIGNvbnRyb2wuCgpXaXRoIHRoaXMgaW4gbWluZCwgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgIGFzIHRoaXMgbG9va3MgdG8gYmUgYSBnb29kIHRhcmdldC4gSSYjMzk7bGwgZm9jdXMgdGhlIGZ1enplciBzcGVjaWZpY2FsbHkgb24gdGhlc2UgdHdvIGZ1bmN0aW9ucyB1c2luZyBgRm9jdXNTeW1ib2xzPVsmIzM0O2V4dDRfb3JwaGFuX2NsZWFudXAmIzM0OywgJiMzNDtleHQ0X29ycGhhbl9maWxlX2VtcHR5JiMzNDtdYC4gQW5kIG9mIGNvdXJzZSwgSSYjMzk7bGwgZW5hYmxlIHRoZSBgRVhUNF9GU2AgY29uZmlndXJhdGlvbiB3aXRoIGBFbmFibGVDb25maWdzPVsmIzM0O0VYVDRfRlMmIzM0O11gIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgY29kZSBpcyBjb21waWxlZCBhbmQgaW4gc2NvcGUuIFRoaXMgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBleHBsb3JlIHRoZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHdpdGhpbiB0aGUgRVhUNCBmaWxlc3lzdGVtJiMzOTtzIG9ycGhhbiBmaWxlIGhhbmRsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAyMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfb3JwaGFuX2NsZWFudXAmIzM0OywKICAgICYjMzQ7ZXh0NF9vcnBoYW5fZmlsZV9lbXB0eSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBleHQ0X29ycGhhbl9jbGVhbnVwIHdoZXJlIGl0IGluY29ycmVjdGx5IGNoZWNrZWQgaWYgdGhlIG9ycGhhbiBmaWxlIHdhcyBlbXB0eSBieSBjaGVja2luZyBpZiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGUgb3JwaGFuIGZpbGUgd2FzIHplcm8uIEl0IG5vdyBjb3JyZWN0bHkgdXNlcyBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKS4gVGhpcyBhZmZlY3RzIGV4dDQgbW91bnQgYmVoYXZpb3IgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X29ycGhhbl9jbGVhbnVwJiMzNDssCiAgICAmIzM0O2V4dDRfb3JwaGFuX2ZpbGVfZW1wdHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gZXh0NF9vcnBoYW5fY2xlYW51cCB3aGVyZSBpdCBpbmNvcnJlY3RseSBjaGVja2VkIGlmIHRoZSBvcnBoYW4gZmlsZSB3YXMgZW1wdHkgYnkgY2hlY2tpbmcgaWYgdGhlIG51bWJlciBvZiBibG9ja3MgaW4gdGhlIG9ycGhhbiBmaWxlIHdhcyB6ZXJvLiBJdCBub3cgY29ycmVjdGx5IHVzZXMgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikuIFRoaXMgYWZmZWN0cyBleHQ0IG1vdW50IGJlaGF2aW9yIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMjA6MTY6MjEuNjczNjgwMTE1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkwMzg1MzM3NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfb3JwaGFuX2NsZWFudXBcIixcbiAgICBcImV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBleHQ0X29ycGhhbl9jbGVhbnVwIHdoZXJlIGl0IGluY29ycmVjdGx5IGNoZWNrZWQgaWYgdGhlIG9ycGhhbiBmaWxlIHdhcyBlbXB0eSBieSBjaGVja2luZyBpZiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGUgb3JwaGFuIGZpbGUgd2FzIHplcm8uIEl0IG5vdyBjb3JyZWN0bHkgdXNlcyBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKS4gVGhpcyBhZmZlY3RzIGV4dDQgbW91bnQgYmVoYXZpb3IgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDIwOjE2OjIxLjY3MzY4OTE4NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4NzcwNzY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE3MzRlNDliY2Y2YWUzMjc4N2I4MGMwNGVjMGJlYWU0ZGI1MmU0Y2VcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAyMDoxNjoxOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L29ycGhhbi5jIGIvZnMvZXh0NC9vcnBoYW4uY1xcbmluZGV4IDY0ZWE0NzYyNDIzMzguLjJhNDQ5OThhNmMyZWMgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9vcnBoYW4uY1xcbisrKyBiL2ZzL2V4dDQvb3JwaGFuLmNcXG5AQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgZXh0NF9vcnBoYW5fY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMpXFxuIFxcdHN0cnVjdCBleHQ0X29ycGhhbl9pbmZvICpvaSA9IFxcdTAwMjZFWFQ0X1NCKHNiKS1cXHUwMDNlc19vcnBoYW5faW5mbztcXG4gXFx0aW50IGlub2Rlc19wZXJfb2IgPSBleHQ0X2lub2Rlc19wZXJfb3JwaGFuX2Jsb2NrKHNiKTtcXG4gXFxuLVxcdGlmICghZXMtXFx1MDAzZXNfbGFzdF9vcnBoYW4gXFx1MDAyNlxcdTAwMjYgIW9pLVxcdTAwM2VvZl9ibG9ja3MpIHtcXG4rXFx0aWYgKCFlcy1cXHUwMDNlc19sYXN0X29ycGhhbiBcXHUwMDI2XFx1MDAyNiBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKSkge1xcbiBcXHRcXHRleHQ0X2RlYnVnKFxcXCJubyBvcnBoYW4gaW5vZGVzIHRvIGNsZWFuIHVwXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDIwOjE2OjIzLjA2MjM2Mzc4NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI3NjQ5ODMzNDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X29ycGhhbl9jbGVhbnVwXCIsXG4gICAgXCJleHQ0X29ycGhhbl9maWxlX2VtcHR5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gZXh0NF9vcnBoYW5fY2xlYW51cCB3aGVyZSBpdCBpbmNvcnJlY3RseSBjaGVja2VkIGlmIHRoZSBvcnBoYW4gZmlsZSB3YXMgZW1wdHkgYnkgY2hlY2tpbmcgaWYgdGhlIG51bWJlciBvZiBibG9ja3MgaW4gdGhlIG9ycGhhbiBmaWxlIHdhcyB6ZXJvLiBJdCBub3cgY29ycmVjdGx5IHVzZXMgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikuIFRoaXMgYWZmZWN0cyBleHQ0IG1vdW50IGJlaGF2aW9yIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNzM0ZTQ5YmNmNmFlMzI3ODdiODBjMDRlYzBiZWFlNGRiNTJlNGNlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAyMDoxNjoxOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvb3JwaGFuLmMgYi9mcy9leHQ0L29ycGhhbi5jXG5pbmRleCA2NGVhNDc2MjQyMzM4Li4yYTQ0OTk4YTZjMmVjIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9vcnBoYW4uY1xuKysrIGIvZnMvZXh0NC9vcnBoYW4uY1xuQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIGV4dDRfb3JwaGFuX2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKVxuIFx0c3RydWN0IGV4dDRfb3JwaGFuX2luZm8gKm9pID0gXHUwMDI2RVhUNF9TQihzYiktXHUwMDNlc19vcnBoYW5faW5mbztcbiBcdGludCBpbm9kZXNfcGVyX29iID0gZXh0NF9pbm9kZXNfcGVyX29ycGhhbl9ibG9jayhzYik7XG4gXG4tXHRpZiAoIWVzLVx1MDAzZXNfbGFzdF9vcnBoYW4gXHUwMDI2XHUwMDI2ICFvaS1cdTAwM2VvZl9ibG9ja3MpIHtcbitcdGlmICghZXMtXHUwMDNlc19sYXN0X29ycGhhbiBcdTAwMjZcdTAwMjYgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikpIHtcbiBcdFx0ZXh0NF9kZWJ1ZyhcIm5vIG9ycGhhbiBpbm9kZXMgdG8gY2xlYW4gdXBcXG5cIik7XG4gXHRcdHJldHVybjtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDIwOjE2OjIzLjA2MjM2NTc3NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxNzE5MDA1NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYTpcblxuKipBbmFseXppbmcgYW4gZXh0NCBPcnBoYW4gQ2xlYW51cCBQYXRjaCoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGVkIGBmcy9leHQ0L29ycGhhbi5jYC4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlIGlzIGluIHRoZSBgZXh0NF9vcnBoYW5fY2xlYW51cGAgZnVuY3Rpb24uIFRoZSBvcmlnaW5hbCBjaGVjaywgYGlmICghZXMtXHUwMDNlc19sYXN0X29ycGhhbiBcdTAwMjZcdTAwMjYgIW9pLVx1MDAzZW9mX2Jsb2NrcylgLCBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGBpZiAoIWVzLVx1MDAzZXNfbGFzdF9vcnBoYW4gXHUwMDI2XHUwMDI2IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKWAuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHRoYXQncyBpbnRlcmVzdGluZy4gVGhleSd2ZSBzd2FwcGVkIG91dCBhIGNoZWNrIGZvciB3aGV0aGVyIGFuIG9ycGhhbiBpbm9kZSBoYXMgYXNzb2NpYXRlZCBkYXRhIGJsb2NrcyAoYCFvaS1cdTAwM2VvZl9ibG9ja3NgKSB3aXRoIGEgY2FsbCB0byB0aGUgYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlgIGZ1bmN0aW9uLiBXaHk/XCIgVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3IgYSBtb3JlIG51YW5jZWQgd2F5IHRvIGRldGVybWluZSBpZiBhbiBvcnBoYW5lZCBpbm9kZSBhY3R1YWxseSBuZWVkcyBjbGVhbmluZyB1cC4gVGhlIG9sZCBjb25kaXRpb24gbGlrZWx5IGFzc3VtZWQgdGhhdCBpZiB0aGVyZSB3ZXJlICpubyogYmxvY2tzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSwgdGhlbiBpdCB3YXMgZWZmZWN0aXZlbHkgZW1wdHkgYW5kIGNvdWxkIGJlIHJlbW92ZWQuIEJ1dCwgaXQgaXMgdmVyeSBpbXBvcnRhbnQgdG8gY29uc2lkZXIgKndoeSogdGhpcyBoYXMgY2hhbmdlZCB0byBhbiBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eWAgY2FsbC5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgYm90aCBgZXh0NF9vcnBoYW5fY2xlYW51cGAgYW5kLCBjcnVjaWFsbHksIGBleHQ0X29ycGhhbl9maWxlX2VtcHR5YCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGtub3cgd2hhdCB0aGV5J3JlICpyZWFsbHkqIGNoZWNraW5nLiBJcyBpdCBjb25zaWRlcmluZyBmcmFnbWVudGF0aW9uPyBTcGFyc2UgZmlsZXM/IEluZGlyZWN0IGJsb2Nrcz8gTWF5YmUgdGhpcyBuZXcgY2hlY2sgaGFuZGxlcyB6ZXJvLWxlbmd0aCBmaWxlcyBtb3JlIGVsZWdhbnRseSBvciBjb3JyZWN0bHkgYWNjb3VudHMgZm9yIGRlbGF5ZWQgYWxsb2NhdGlvbiBzY2VuYXJpb3MuIEknbGwgbmVlZCB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCB0aGUgcGF0Y2ggY29udGV4dCB0byBiZSBjZXJ0YWluLiBJcyB0aGlzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQ/IEEgYnVnIGZpeD8gSSBuZWVkIG1vcmUgZGF0YSFcblxuXG4iLCJJbnB1dFRva2VucyI6MjA4OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMjA6MTY6MzAuMjM0MjcwOTExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjE4MTc2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQ0X29ycGhhbl9jbGVhbnVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvZXh0NC5oPTM5NjQ9ZXh0ZXJuIGludCBleHQ0X29ycGhhbl9kZWwoaGFuZGxlX3QgKiwgc3RydWN0IGlub2RlICopO1xcbmZzL2V4dDQvZXh0NC5oOjM5NjU6ZXh0ZXJuIHZvaWQgZXh0NF9vcnBoYW5fY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbmZzL2V4dDQvZXh0NC5oLTM5NjYtXFx0XFx0XFx0XFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKTtcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYz00NTM3PWludCBleHQ0X2lub2RlX2F0dGFjaF9qaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy00NTg3LSAqIFRoZSBjb21taXR0ZWQgaW5vZGUgaGFzIHRoZSBuZXcsIGRlc2lyZWQgaV9zaXplICh3aGljaCBpcyB0aGUgc2FtZSBhc1xcbmZzL2V4dDQvaW5vZGUuYzo0NTg4OiAqIGlfZGlza3NpemUgaW4gdGhpcyBjYXNlKS4gIEFmdGVyIGEgY3Jhc2gsIGV4dDRfb3JwaGFuX2NsZWFudXAoKSB3aWxsIHNlZVxcbmZzL2V4dDQvaW5vZGUuYy00NTg5LSAqIHRoYXQgdGhpcyBpbm9kZSdzIHRydW5jYXRlIGRpZCBub3QgY29tcGxldGUgYW5kIGl0IHdpbGwgYWdhaW4gY2FsbFxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYz0xMz1zdGF0aWMgaW50IGV4dDRfb3JwaGFuX2ZpbGVfYWRkKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jLTk1LSAqIEF0IGZpbGVzeXN0ZW0gcmVjb3ZlcnkgdGltZSwgd2Ugd2FsayB0aGlzIGxpc3QgZGVsZXRpbmcgdW5saW5rZWRcXG5mcy9leHQ0L29ycGhhbi5jOjk2OiAqIGlub2RlcyBhbmQgdHJ1bmNhdGluZyBsaW5rZWQgaW5vZGVzIGluIGV4dDRfb3JwaGFuX2NsZWFudXAoKS5cXG5mcy9leHQ0L29ycGhhbi5jLTk3LSAqXFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jPTMyMT1zdGF0aWMgdm9pZCBleHQ0X3Byb2Nlc3Nfb3JwaGFuKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jLTM2MC1cXG5mcy9leHQ0L29ycGhhbi5jOjM2MTovKiBleHQ0X29ycGhhbl9jbGVhbnVwKCkgd2Fsa3MgYSBzaW5nbHktbGlua2VkIGxpc3Qgb2YgaW5vZGVzIChzdGFydGluZyBhdFxcbmZzL2V4dDQvb3JwaGFuLmMtMzYyLSAqIHRoZSBzdXBlcmJsb2NrKSB3aGljaCB3ZXJlIGRlbGV0ZWQgZnJvbSBhbGwgZGlyZWN0b3JpZXMsIGJ1dCBoZWxkIG9wZW4gYnlcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMzc3LSAqL1xcbmZzL2V4dDQvb3JwaGFuLmM6Mzc4OnZvaWQgZXh0NF9vcnBoYW5fY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMpXFxuZnMvZXh0NC9vcnBoYW4uYy0zNzkte1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTUzMzg9c3RhdGljIGludCBfX2V4dDRfZmlsbF9zdXBlcihzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTcwNC1cXHRFWFQ0X1NCKHNiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSB8PSBFWFQ0X09SUEhBTl9GUztcXG5mcy9leHQ0L3N1cGVyLmM6NTcwNTpcXHRleHQ0X29ycGhhbl9jbGVhbnVwKHNiLCBlcyk7XFxuZnMvZXh0NC9zdXBlci5jLTU3MDYtXFx0RVhUNF9TQihzYiktXFx1MDAzZXNfbW91bnRfc3RhdGUgXFx1MDAyNj0gfkVYVDRfT1JQSEFOX0ZTO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTU3MDgtXFx0ICogVXBkYXRlIHRoZSBjaGVja3N1bSBhZnRlciB1cGRhdGluZyBmcmVlIHNwYWNlL2lub2RlIGNvdW50ZXJzIGFuZFxcbmZzL2V4dDQvc3VwZXIuYzo1NzA5OlxcdCAqIGV4dDRfb3JwaGFuX2NsZWFudXAuIE90aGVyd2lzZSB0aGUgc3VwZXJibG9jayBjYW4gaGF2ZSBhbiBpbmNvcnJlY3RcXG5mcy9leHQ0L3N1cGVyLmMtNTcxMC1cXHQgKiBjaGVja3N1bSBpbiB0aGUgYnVmZmVyIGNhY2hlIHVudGlsIGl0IGlzIHdyaXR0ZW4gb3V0IGFuZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QyMDoxNjozMC4zNTY0Nzg5MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzg0MjM2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgZXh0NCBGaWxlc3lzdGVtIE9ycGhhbiBDbGVhbnVwKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgZXh0NCBtb3VudCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgYF9fZXh0NF9maWxsX3N1cGVyYC4gSSBrbm93IHRoYXQncyB3aGVyZSBhIGxvdCBvZiB0aGUgaW5pdGlhbCBzZXR1cCBoYXBwZW5zIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gQW5kLCBhcyBJIHJlbWVtYmVyIGZyb20gZGVidWdnaW5nIG9ycGhhbiBpbm9kZXMgaW4gdGhlIHBhc3QsIGBleHQ0X29ycGhhbl9jbGVhbnVwYCBpcyBjYWxsZWQgKmR1cmluZyogdGhhdCBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBwaGFzZS4gVGhhdOKAmXMgZ290IG15IGF0dGVudGlvbi4gSXQgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IGNvcnJ1cHRlZCBvciBpbmNvbXBsZXRlIGlub2RlcyByaWdodCBhdCB0aGUgbW9tZW50IHRoZSBzeXN0ZW0gaXMgdHJ5aW5nIHRvIGdldCBpdHNlbGYgdXAgYW5kIHJ1bm5pbmcuXG5cbkdpdmVuIHRoYXQgY29udGV4dCwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eWAuIFRoYXQncyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5ICpkZXRlcm1pbmluZyogaWYgYW4gb3JwaGFuIGlub2RlIGFjdHVhbGx5IG5lZWRzIGNsZWFudXAuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY3JpdGVyaWEgaXQgdXNlcy4gSXMgaXQgYmFzZWQgb24gdGhlIGlfbGlua3NfY291bnQ/IFRoZSBzaXplPyBGaWxlIHR5cGU/IFdoYXQgY29uc3RpdHV0ZXMgYW4gJ2VtcHR5JyBvcnBoYW4gZmlsZSBmcm9tIHRoZSBrZXJuZWzigJlzIHBlcnNwZWN0aXZlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNoZWNrIHRob3JvdWdobHkgdG8gdHJ1bHkgZ3Jhc3AgaG93IHdlbGwgdGhpcyBjbGVhbnVwIHByb2Nlc3Mgd29ya3MsIGFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGVyZSBpdCBtaWdodCBoYXZlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIG9wcG9ydHVuaXRpZXMgZm9yIG9wdGltaXphdGlvbi4gSeKAmW0gdGhpbmtpbmcgYWJvdXQgZWRnZSBjYXNlcywgcGVyaGFwcyBzb21ldGhpbmcgdGhhdCBjb3VsZCBjYXVzZSBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgb3IgZXZlbiBhIHNlY3VyaXR5IGlzc3VlLiBJdCdzIHRpbWUgdG8gZ28gZGVlcGVyIGFuZCBzZWUgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIHJlYWxseSBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM0MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDIwOjE2OjM0LjU5NDkwNzkxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjAxNjQ4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0NF9vcnBoYW5fZmlsZV9lbXB0eVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L2V4dDQuaD0zOTY4PWV4dGVybiBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpO1xcbmZzL2V4dDQvZXh0NC5oOjM5Njk6ZXh0ZXJuIGludCBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpO1xcbmZzL2V4dDQvZXh0NC5oLTM5NzAtZXh0ZXJuIHZvaWQgZXh0NF9vcnBoYW5fZmlsZV9ibG9ja190cmlnZ2VyKFxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYz0zNzg9dm9pZCBleHQ0X29ycGhhbl9jbGVhbnVwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcylcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMzkwLVxcbmZzL2V4dDQvb3JwaGFuLmM6MzkxOlxcdGlmICghZXMtXFx1MDAzZXNfbGFzdF9vcnBoYW4gXFx1MDAyNlxcdTAwMjYgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikpIHtcXG5mcy9leHQ0L29ycGhhbi5jLTM5Mi1cXHRcXHRleHQ0X2RlYnVnKFxcXCJubyBvcnBoYW4gaW5vZGVzIHRvIGNsZWFuIHVwXFxcXG5cXFwiKTtcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmM9NTY4PWludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtNjQ1LVxcbmZzL2V4dDQvb3JwaGFuLmM6NjQ2OmludCBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9vcnBoYW4uYy02NDcte1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTYzNDg9c3RhdGljIGludCBleHQ0X21hcmtfcmVjb3ZlcnlfY29tcGxldGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy02MzY4LVxcdCAgICBleHQ0X2hhc19mZWF0dXJlX29ycGhhbl9wcmVzZW50KHNiKSkpIHtcXG5mcy9leHQ0L3N1cGVyLmM6NjM2OTpcXHRcXHRpZiAoIWV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKSB7XFxuZnMvZXh0NC9zdXBlci5jLTYzNzAtXFx0XFx0XFx0ZXh0NF9lcnJvcihzYiwgXFxcIk9ycGhhbiBmaWxlIG5vdCBlbXB0eSBvbiByZWFkLW9ubHkgZnMuXFxcIik7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NjQ5MT1zdGF0aWMgaW50IGV4dDRfZnJlZXplKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNjUwOS1cXHRcXHRleHQ0X2NsZWFyX2ZlYXR1cmVfam91cm5hbF9uZWVkc19yZWNvdmVyeShzYik7XFxuZnMvZXh0NC9zdXBlci5jOjY1MTA6XFx0XFx0aWYgKGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKVxcbmZzL2V4dDQvc3VwZXIuYy02NTExLVxcdFxcdFxcdGV4dDRfY2xlYXJfZmVhdHVyZV9vcnBoYW5fcHJlc2VudChzYik7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NjU1OD1zdGF0aWMgaW50IF9fZXh0NF9yZW1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy02NzQ4LVxcdFxcdFxcdCAqL1xcbmZzL2V4dDQvc3VwZXIuYzo2NzQ5OlxcdFxcdFxcdGlmIChlcy1cXHUwMDNlc19sYXN0X29ycGhhbiB8fCAhZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikpIHtcXG5mcy9leHQ0L3N1cGVyLmMtNjc1MC1cXHRcXHRcXHRcXHRleHQ0X21zZyhzYiwgS0VSTl9XQVJOSU5HLCBcXFwiQ291bGRuJ3QgXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QyMDoxNjozNC43MTUwNzkwOTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTgyNjIwMjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCBjb2RlIGNoYW5nZSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyB0aGUgT3JwaGFuIEZpbGUgSGFuZGxpbmcgaW4gZXh0NCoqXG5cblJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIHN1Z2dlc3RpbmcgYSBmYWlybHkgZm9jdXNlZCBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSByZXBsYWNpbmcgYSBjaGVjaywgc3BlY2lmaWNhbGx5IGAhb2ktXHUwMDNlb2ZfYmxvY2tzYCwgd2l0aCBhIGNhbGwgdG8gYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgd2h5IHRoaXMgc3Vic3RpdHV0aW9uP1wiIGAhb2ktXHUwMDNlb2ZfYmxvY2tzYCBwcm9iYWJseSByZXByZXNlbnRlZCBhIHNpbXBsZSBjaGVjayBmb3IgYW4gb3JwaGFuIGZpbGUgaGF2aW5nIG5vIGRhdGEgYmxvY2tzIGFsbG9jYXRlZC4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBpbnRlbnRpb24gaXMgdG8gdXNlIGEgbW9yZSByb2J1c3Qgb3IgbnVhbmNlZCBhcHByb2FjaCB3aXRoIGBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKWAuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBuZXcgZnVuY3Rpb24gbm93IHRvIHRydWx5IHVuZGVyc3RhbmQgdGhlIGNoYW5nZSBhbmQgaXRzIGltcGxpY2F0aW9ucy4gSSdtIGd1ZXNzaW5nIHRoYXQgYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoKWAgZG9lcyBhIG1vcmUgdGhvcm91Z2ggY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIGFuIG9ycGhhbiBmaWxlIGlzIHRydWx5IFwiZW1wdHlcIiBhY2NvcmRpbmcgdG8gZXh0NCdzIGludGVybmFsIGRlZmluaXRpb25zLCBwZXJoYXBzIHRha2luZyBpbnRvIGFjY291bnQgbWV0YWRhdGEsIGluZGlyZWN0IGJsb2Nrcywgb3Igb3RoZXIgaW50ZXJuYWwgYm9va2tlZXBpbmcuIEl0J3MgYWxzbyBwb3NzaWJsZSB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgc29tZSBhZGRpdGlvbmFsIGNvbnNpZGVyYXRpb25zIHRoYXQgd2VyZW4ndCBjYXB0dXJlZCBieSB0aGUgc2ltcGxlIGNoZWNrIG9mIGFsbG9jYXRlZCBibG9ja3MuIEknbSBnb2luZyB0byBoYXZlIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSB0byBzZWUgd2hhdCBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYilgIGFjdHVhbGx5IGRvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MjgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QyMDoxNjozOC4yOTc3MDI4MjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzEwNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZXh0NC9vcnBoYW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2NDA6XFx0XFx0a3ZmcmVlKG9pLVxcdTAwM2VvZl9iaW5mbyk7XFxuIDY0MTpcXHRvdXRfcHV0OlxcbiA2NDI6XFx0XFx0aXB1dChpbm9kZSk7XFxuIDY0MzpcXHRcXHRyZXR1cm4gcmV0O1xcbiA2NDQ6XFx0fVxcbiA2NDU6XFx0XFxuIDY0NjpcXHRpbnQgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbiA2NDc6XFx0e1xcbiA2NDg6XFx0XFx0c3RydWN0IGV4dDRfb3JwaGFuX2luZm8gKm9pID0gXFx1MDAyNkVYVDRfU0Ioc2IpLVxcdTAwM2VzX29ycGhhbl9pbmZvO1xcbiA2NDk6XFx0XFx0aW50IGk7XFxuIDY1MDpcXHRcXHRpbnQgaW5vZGVzX3Blcl9vYiA9IGV4dDRfaW5vZGVzX3Blcl9vcnBoYW5fYmxvY2soc2IpO1xcbiA2NTE6XFx0XFxuIDY1MjpcXHRcXHRpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfb3JwaGFuX2ZpbGUoc2IpKVxcbiA2NTM6XFx0XFx0XFx0cmV0dXJuIDE7XFxuIDY1NDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgb2ktXFx1MDAzZW9mX2Jsb2NrczsgaSsrKVxcbiA2NTU6XFx0XFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZvaS1cXHUwMDNlb2ZfYmluZm9baV0ub2JfZnJlZV9lbnRyaWVzKSAhPVxcbiA2NTY6XFx0XFx0XFx0ICAgIGlub2Rlc19wZXJfb2IpXFxuIDY1NzpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNjU4OlxcdFxcdHJldHVybiAxO1xcbiA2NTk6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QyMDoxNjozOC4yOTc4MzYxNTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDkxNzI2MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENyaXRpY2FsIEJ1ZyBGaXggaW4gZXh0NCBPcnBoYW4gRmlsZSBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBmcmFua2x5LCBpdCdzIHByZXR0eSBzaWduaWZpY2FudC4gVGhlIGNvcmUgaXNzdWUgaXMgdGhhdCB0aGUgb2xkIGNvZGUgd2FzIHVzaW5nIGAhb2ktXHUwMDNlb2ZfYmxvY2tzYCB0byBkZXRlcm1pbmUgaWYgYW4gb3JwaGFuIGZpbGUgd2FzICplbXB0eSosIGJ1dCB0aGF0IGZpZWxkIGFjdHVhbGx5IHJlcHJlc2VudHMgdGhlICpudW1iZXIgb2YgYmxvY2tzKiBhbGxvY2F0ZWQgdG8gdGhlIG9ycGhhbiBmaWxlLCBub3QgdGhlICpudW1iZXIgb2Ygb3JwaGFuIGlub2RlcyogaXQgY29udGFpbnMuIFRoYXQncyBhIGNsYXNzaWMgbWlzdGFrZSwgZWFzaWx5IG92ZXJsb29rZWQuIElmIHRoZSBvcnBoYW4gZmlsZSBmZWF0dXJlIGlzIGVuYWJsZWQgYW5kIGFuIG9ycGhhbiBmaWxlIGV4aXN0cywgZXZlbiBpZiBpdCdzIGNvbXBsZXRlbHkgZW1wdHkgb2YgYWN0dWFsIG9ycGhhbiBpbm9kZXMsIGBvaS1cdTAwM2VvZl9ibG9ja3NgIHdpbGwgYmUgbm9uLXplcm8sIGFuZCBgZXh0NF9vcnBoYW5fY2xlYW51cGAgd291bGQgaW5jb3JyZWN0bHkgYXR0ZW1wdCBjbGVhbnVwLCB3YXN0aW5nIHRpbWUgYXQgYmVzdCwgYW5kIHBvc3NpYmx5IGxlYWRpbmcgdG8gb3RoZXIgaXNzdWVzLlxuXG5UaGUgZml4LCB0aGFuayBnb29kbmVzcywgaXMgc3RyYWlnaHRmb3J3YXJkOiByZXBsYWNlIHRoYXQgZmxhd2VkIGNoZWNrIHdpdGggYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpYC4gVGhhdCBmdW5jdGlvbiAqc2hvdWxkKiBhY2N1cmF0ZWx5IGRldGVybWluZSBpZiB0aGUgb3JwaGFuIGZpbGUgdHJ1bHkgaG9sZHMgYW55IG9ycGhhbiBpbm9kZXMuIFNpbXBsZSBmaXgsIGJ1dCBjcml0aWNhbC5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBgZXh0NF9vcnBoYW5fY2xlYW51cGAsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcgdGhlICptb3VudCogcHJvY2Vzcywgd2hpY2ggbWFrZXMgdGhpcyBldmVuIG1vcmUgaW1wb3J0YW50LiBJdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLCBnaXZlbiB0aGF0IGl0J3MgaGFuZGxpbmcgcG90ZW50aWFsbHkgaW5jb25zaXN0ZW50IG1ldGFkYXRhLCBhbmQgY2FsbGVkIGF0IHN1Y2ggYSBwaXZvdGFsIHRpbWUuIEknbGwgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gYGV4dDRfb3JwaGFuX2NsZWFudXBgIGFuZCwgb2J2aW91c2x5LCBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eWAuXG5cblRpbWUgdG8gY2hlY2sgaWYgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBtaWdodCBiZSBpbXBhY3RlZC4uLiBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIGBFWFQ0X0ZTYCBpcyBkZWZpbml0ZWx5IGludm9sdmVkLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcgdGhhdCBtaWdodCBpbmRpcmVjdGx5IGluZmx1ZW5jZSB0aGlzIGJ1ZyBvciBpdHMgZml4LiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA5NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDIwOjE2OjQ0LjM4OTU2NjM3OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcwMzg1OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEVYVDRfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvZXh0NC9LY29uZmlnOjI6Y29uZmlnIEVYVDRfRlNcXG5mcy9leHQ0L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cXFwiXFxuLS1cXG5mcy9leHQ0L0tjb25maWc9MzU9Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXFxuLS1cXG5mcy9leHQ0L0tjb25maWctNDUtXFxuZnMvZXh0NC9LY29uZmlnOjQ2OmNvbmZpZyBFWFQ0X0ZTX1BPU0lYX0FDTFxcbmZzL2V4dDQvS2NvbmZpZy00Ny1cXHRib29sIFxcXCJFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnLTU1LVxcbmZzL2V4dDQvS2NvbmZpZzo1Njpjb25maWcgRVhUNF9GU19TRUNVUklUWVxcbmZzL2V4dDQvS2NvbmZpZy01Ny1cXHRib29sIFxcXCJFeHQ0IFNlY3VyaXR5IExhYmVsc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMjA6MTY6NDQuNDY2NjEzMDUyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDA2MTM0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFWFQ0IEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gaXMgYEVYVDRfRlNgLCB3aGljaCBtZWFucyB3ZSdyZSBmb2N1c2luZyBvbiB0aGUgRVhUNCBmaWxlc3lzdGVtLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlJ3JlIGhpdHRpbmcgdGhlIHJpZ2h0IHNwb3RzIGZvciBmdXp6aW5nLCBzbyBJJ20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBleHQ0X29ycGhhbl9jbGVhbnVwYCBhbmQgYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlgLlxuXG5Pa2F5LCBnb29kLiBCb3RoIGBleHQ0X29ycGhhbl9jbGVhbnVwYCBhbmQgYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlgIGFyZSBub24tc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggbWFrZXMgdGhlbSBwcmltZSBjYW5kaWRhdGVzIGZvciBleHRlcm5hbCBjYWxscyBhbmQgdGh1cywgZnV6emluZy4gVGhpcyBnaXZlcyB1cyBtb3JlIGNvbnRyb2wuXG5cbldpdGggdGhpcyBpbiBtaW5kLCBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAgYXMgdGhpcyBsb29rcyB0byBiZSBhIGdvb2QgdGFyZ2V0LiBJJ2xsIGZvY3VzIHRoZSBmdXp6ZXIgc3BlY2lmaWNhbGx5IG9uIHRoZXNlIHR3byBmdW5jdGlvbnMgdXNpbmcgYEZvY3VzU3ltYm9scz1bXCJleHQ0X29ycGhhbl9jbGVhbnVwXCIsIFwiZXh0NF9vcnBoYW5fZmlsZV9lbXB0eVwiXWAuIEFuZCBvZiBjb3Vyc2UsIEknbGwgZW5hYmxlIHRoZSBgRVhUNF9GU2AgY29uZmlndXJhdGlvbiB3aXRoIGBFbmFibGVDb25maWdzPVtcIkVYVDRfRlNcIl1gIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgY29kZSBpcyBjb21waWxlZCBhbmQgaW4gc2NvcGUuIFRoaXMgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBleHBsb3JlIHRoZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHdpdGhpbiB0aGUgRVhUNCBmaWxlc3lzdGVtJ3Mgb3JwaGFuIGZpbGUgaGFuZGxpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MTUsIk91dHB1dFRva2VucyI6MTE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDIwOjE2OjUwLjUwNzIyOTI2MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDk2MjcxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfb3JwaGFuX2NsZWFudXBcIixcbiAgICBcImV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBleHQ0X29ycGhhbl9jbGVhbnVwIHdoZXJlIGl0IGluY29ycmVjdGx5IGNoZWNrZWQgaWYgdGhlIG9ycGhhbiBmaWxlIHdhcyBlbXB0eSBieSBjaGVja2luZyBpZiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGUgb3JwaGFuIGZpbGUgd2FzIHplcm8uIEl0IG5vdyBjb3JyZWN0bHkgdXNlcyBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKS4gVGhpcyBhZmZlY3RzIGV4dDQgbW91bnQgYmVoYXZpb3IgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfb3JwaGFuX2NsZWFudXBcIixcbiAgICBcImV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBleHQ0X29ycGhhbl9jbGVhbnVwIHdoZXJlIGl0IGluY29ycmVjdGx5IGNoZWNrZWQgaWYgdGhlIG9ycGhhbiBmaWxlIHdhcyBlbXB0eSBieSBjaGVja2luZyBpZiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGUgb3JwaGFuIGZpbGUgd2FzIHplcm8uIEl0IG5vdyBjb3JyZWN0bHkgdXNlcyBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKS4gVGhpcyBhZmZlY3RzIGV4dDQgbW91bnQgYmVoYXZpb3IgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflows4r6c[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 19:34:36 +0000 UTC FinishedAt: 2026-08-03 20:16:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "e072f0a5-9159-4db2-a855-d0a1c3140142" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_orphan_cleanup", "ext4_orphan_file_empty" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDIwOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X29ycGhhbl9jbGVhbnVwJiMzNDssCiAgICAmIzM0O2V4dDRfb3JwaGFuX2ZpbGVfZW1wdHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gZXh0NF9vcnBoYW5fY2xlYW51cCB3aGVyZSBpdCBpbmNvcnJlY3RseSBjaGVja2VkIGlmIHRoZSBvcnBoYW4gZmlsZSB3YXMgZW1wdHkgYnkgY2hlY2tpbmcgaWYgdGhlIG51bWJlciBvZiBibG9ja3MgaW4gdGhlIG9ycGhhbiBmaWxlIHdhcyB6ZXJvLiBJdCBub3cgY29ycmVjdGx5IHVzZXMgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikuIFRoaXMgYWZmZWN0cyBleHQ0IG1vdW50IGJlaGF2aW9yIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDIwOjE2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTczNGU0OWJjZjZhZTMyNzg3YjgwYzA0ZWMwYmVhZTRkYjUyZTRjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMjA6MTY6MTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9vcnBoYW4uYyBiL2ZzL2V4dDQvb3JwaGFuLmNcbmluZGV4IDY0ZWE0NzYyNDIzMzguLjJhNDQ5OThhNmMyZWMgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L29ycGhhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L29ycGhhbi5jXG5AQCAtMzg4LDcgJiM0MzszODgsNyBAQCB2b2lkIGV4dDRfb3JwaGFuX2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKVxuIFx0c3RydWN0IGV4dDRfb3JwaGFuX2luZm8gKm9pID0gXHUwMDI2RVhUNF9TQihzYiktXHUwMDNlc19vcnBoYW5faW5mbztcbiBcdGludCBpbm9kZXNfcGVyX29iID0gZXh0NF9pbm9kZXNfcGVyX29ycGhhbl9ibG9jayhzYik7XG4gXG4tXHRpZiAoIWVzLVx1MDAzZXNfbGFzdF9vcnBoYW4gXHUwMDI2XHUwMDI2ICFvaS1cdTAwM2VvZl9ibG9ja3MpIHtcbiYjNDM7XHRpZiAoIWVzLVx1MDAzZXNfbGFzdF9vcnBoYW4gXHUwMDI2XHUwMDI2IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKSB7XG4gXHRcdGV4dDRfZGVidWcoXCYjMzQ7bm8gb3JwaGFuIGlub2RlcyB0byBjbGVhbiB1cFxcblwmIzM0Oyk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAyMDoxNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfb3JwaGFuX2NsZWFudXAmIzM0OywKICAgICYjMzQ7ZXh0NF9vcnBoYW5fZmlsZV9lbXB0eSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBleHQ0X29ycGhhbl9jbGVhbnVwIHdoZXJlIGl0IGluY29ycmVjdGx5IGNoZWNrZWQgaWYgdGhlIG9ycGhhbiBmaWxlIHdhcyBlbXB0eSBieSBjaGVja2luZyBpZiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGUgb3JwaGFuIGZpbGUgd2FzIHplcm8uIEl0IG5vdyBjb3JyZWN0bHkgdXNlcyBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKS4gVGhpcyBhZmZlY3RzIGV4dDQgbW91bnQgYmVoYXZpb3IgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxNzM0ZTQ5YmNmNmFlMzI3ODdiODBjMDRlYzBiZWFlNGRiNTJlNGNlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAyMDoxNjoxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvb3JwaGFuLmMgYi9mcy9leHQ0L29ycGhhbi5jCmluZGV4IDY0ZWE0NzYyNDIzMzguLjJhNDQ5OThhNmMyZWMgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvb3JwaGFuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9vcnBoYW4uYwpAQCAtMzg4LDcgJiM0MzszODgsNyBAQCB2b2lkIGV4dDRfb3JwaGFuX2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKQogCXN0cnVjdCBleHQ0X29ycGhhbl9pbmZvICpvaSA9ICZhbXA7RVhUNF9TQihzYiktJmd0O3Nfb3JwaGFuX2luZm87CiAJaW50IGlub2Rlc19wZXJfb2IgPSBleHQ0X2lub2Rlc19wZXJfb3JwaGFuX2Jsb2NrKHNiKTsKIAotCWlmICghZXMtJmd0O3NfbGFzdF9vcnBoYW4gJmFtcDsmYW1wOyAhb2ktJmd0O29mX2Jsb2NrcykgewomIzQzOwlpZiAoIWVzLSZndDtzX2xhc3Rfb3JwaGFuICZhbXA7JmFtcDsgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikpIHsKIAkJZXh0NF9kZWJ1ZygmIzM0O25vIG9ycGhhbiBpbm9kZXMgdG8gY2xlYW4gdXBcbiYjMzQ7KTsKIAkJcmV0dXJuOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMjA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYToKCioqQW5hbHl6aW5nIGFuIGV4dDQgT3JwaGFuIENsZWFudXAgUGF0Y2gqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hlZCBgZnMvZXh0NC9vcnBoYW4uY2AuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBpcyBpbiB0aGUgYGV4dDRfb3JwaGFuX2NsZWFudXBgIGZ1bmN0aW9uLiBUaGUgb3JpZ2luYWwgY2hlY2ssIGBpZiAoIWVzLSZndDtzX2xhc3Rfb3JwaGFuICZhbXA7JmFtcDsgIW9pLSZndDtvZl9ibG9ja3MpYCwgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBgaWYgKCFlcy0mZ3Q7c19sYXN0X29ycGhhbiAmYW1wOyZhbXA7IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKWAuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBUaGV5JiMzOTt2ZSBzd2FwcGVkIG91dCBhIGNoZWNrIGZvciB3aGV0aGVyIGFuIG9ycGhhbiBpbm9kZSBoYXMgYXNzb2NpYXRlZCBkYXRhIGJsb2NrcyAoYCFvaS0mZ3Q7b2ZfYmxvY2tzYCkgd2l0aCBhIGNhbGwgdG8gdGhlIGBleHQ0X29ycGhhbl9maWxlX2VtcHR5YCBmdW5jdGlvbi4gV2h5PyYjMzQ7IFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIG9yIGEgbW9yZSBudWFuY2VkIHdheSB0byBkZXRlcm1pbmUgaWYgYW4gb3JwaGFuZWQgaW5vZGUgYWN0dWFsbHkgbmVlZHMgY2xlYW5pbmcgdXAuIFRoZSBvbGQgY29uZGl0aW9uIGxpa2VseSBhc3N1bWVkIHRoYXQgaWYgdGhlcmUgd2VyZSAqbm8qIGJsb2NrcyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUsIHRoZW4gaXQgd2FzIGVmZmVjdGl2ZWx5IGVtcHR5IGFuZCBjb3VsZCBiZSByZW1vdmVkLiBCdXQsIGl0IGlzIHZlcnkgaW1wb3J0YW50IHRvIGNvbnNpZGVyICp3aHkqIHRoaXMgaGFzIGNoYW5nZWQgdG8gYW4gYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlgIGNhbGwuCgpJIG5lZWQgdG8gZGlnIGludG8gdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBvZiBib3RoIGBleHQ0X29ycGhhbl9jbGVhbnVwYCBhbmQsIGNydWNpYWxseSwgYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlgIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgaW1wbGljYXRpb25zLiBJIG5lZWQgdG8ga25vdyB3aGF0IHRoZXkmIzM5O3JlICpyZWFsbHkqIGNoZWNraW5nLiBJcyBpdCBjb25zaWRlcmluZyBmcmFnbWVudGF0aW9uPyBTcGFyc2UgZmlsZXM/IEluZGlyZWN0IGJsb2Nrcz8gTWF5YmUgdGhpcyBuZXcgY2hlY2sgaGFuZGxlcyB6ZXJvLWxlbmd0aCBmaWxlcyBtb3JlIGVsZWdhbnRseSBvciBjb3JyZWN0bHkgYWNjb3VudHMgZm9yIGRlbGF5ZWQgYWxsb2NhdGlvbiBzY2VuYXJpb3MuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIHBhdGNoIGNvbnRleHQgdG8gYmUgY2VydGFpbi4gSXMgdGhpcyBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50PyBBIGJ1ZyBmaXg/IEkgbmVlZCBtb3JlIGRhdGEhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMjA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9vcnBoYW5fY2xlYW51cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvZXh0NC5oPTM5NjQ9ZXh0ZXJuIGludCBleHQ0X29ycGhhbl9kZWwoaGFuZGxlX3QgKiwgc3RydWN0IGlub2RlICopO1xuZnMvZXh0NC9leHQ0Lmg6Mzk2NTpleHRlcm4gdm9pZCBleHQ0X29ycGhhbl9jbGVhbnVwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG5mcy9leHQ0L2V4dDQuaC0zOTY2LVx0XHRcdFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKTtcbi0tXG5mcy9leHQ0L2lub2RlLmM9NDUzNz1pbnQgZXh0NF9pbm9kZV9hdHRhY2hfamlub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTQ1ODctICogVGhlIGNvbW1pdHRlZCBpbm9kZSBoYXMgdGhlIG5ldywgZGVzaXJlZCBpX3NpemUgKHdoaWNoIGlzIHRoZSBzYW1lIGFzXG5mcy9leHQ0L2lub2RlLmM6NDU4ODogKiBpX2Rpc2tzaXplIGluIHRoaXMgY2FzZSkuICBBZnRlciBhIGNyYXNoLCBleHQ0X29ycGhhbl9jbGVhbnVwKCkgd2lsbCBzZWVcbmZzL2V4dDQvaW5vZGUuYy00NTg5LSAqIHRoYXQgdGhpcyBpbm9kZSYjMzk7cyB0cnVuY2F0ZSBkaWQgbm90IGNvbXBsZXRlIGFuZCBpdCB3aWxsIGFnYWluIGNhbGxcbi0tXG5mcy9leHQ0L29ycGhhbi5jPTEzPXN0YXRpYyBpbnQgZXh0NF9vcnBoYW5fZmlsZV9hZGQoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTk1LSAqIEF0IGZpbGVzeXN0ZW0gcmVjb3ZlcnkgdGltZSwgd2Ugd2FsayB0aGlzIGxpc3QgZGVsZXRpbmcgdW5saW5rZWRcbmZzL2V4dDQvb3JwaGFuLmM6OTY6ICogaW5vZGVzIGFuZCB0cnVuY2F0aW5nIGxpbmtlZCBpbm9kZXMgaW4gZXh0NF9vcnBoYW5fY2xlYW51cCgpLlxuZnMvZXh0NC9vcnBoYW4uYy05Ny0gKlxuLS1cbmZzL2V4dDQvb3JwaGFuLmM9MzIxPXN0YXRpYyB2b2lkIGV4dDRfcHJvY2Vzc19vcnBoYW4oc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTM2MC1cbmZzL2V4dDQvb3JwaGFuLmM6MzYxOi8qIGV4dDRfb3JwaGFuX2NsZWFudXAoKSB3YWxrcyBhIHNpbmdseS1saW5rZWQgbGlzdCBvZiBpbm9kZXMgKHN0YXJ0aW5nIGF0XG5mcy9leHQ0L29ycGhhbi5jLTM2Mi0gKiB0aGUgc3VwZXJibG9jaykgd2hpY2ggd2VyZSBkZWxldGVkIGZyb20gYWxsIGRpcmVjdG9yaWVzLCBidXQgaGVsZCBvcGVuIGJ5XG4tLVxuZnMvZXh0NC9vcnBoYW4uYy0zNzctICovXG5mcy9leHQ0L29ycGhhbi5jOjM3ODp2b2lkIGV4dDRfb3JwaGFuX2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKVxuZnMvZXh0NC9vcnBoYW4uYy0zNzkte1xuLS1cbmZzL2V4dDQvc3VwZXIuYz01MzM4PXN0YXRpYyBpbnQgX19leHQ0X2ZpbGxfc3VwZXIoc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy01NzA0LVx0RVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSB8PSBFWFQ0X09SUEhBTl9GUztcbmZzL2V4dDQvc3VwZXIuYzo1NzA1Olx0ZXh0NF9vcnBoYW5fY2xlYW51cChzYiwgZXMpO1xuZnMvZXh0NC9zdXBlci5jLTU3MDYtXHRFWFQ0X1NCKHNiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNj0gfkVYVDRfT1JQSEFOX0ZTO1xuLS1cbmZzL2V4dDQvc3VwZXIuYy01NzA4LVx0ICogVXBkYXRlIHRoZSBjaGVja3N1bSBhZnRlciB1cGRhdGluZyBmcmVlIHNwYWNlL2lub2RlIGNvdW50ZXJzIGFuZFxuZnMvZXh0NC9zdXBlci5jOjU3MDk6XHQgKiBleHQ0X29ycGhhbl9jbGVhbnVwLiBPdGhlcndpc2UgdGhlIHN1cGVyYmxvY2sgY2FuIGhhdmUgYW4gaW5jb3JyZWN0XG5mcy9leHQ0L3N1cGVyLmMtNTcxMC1cdCAqIGNoZWNrc3VtIGluIHRoZSBidWZmZXIgY2FjaGUgdW50aWwgaXQgaXMgd3JpdHRlbiBvdXQgYW5kXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMjA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIGV4dDQgRmlsZXN5c3RlbSBPcnBoYW4gQ2xlYW51cCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgZXh0NCBtb3VudCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgYF9fZXh0NF9maWxsX3N1cGVyYC4gSSBrbm93IHRoYXQmIzM5O3Mgd2hlcmUgYSBsb3Qgb2YgdGhlIGluaXRpYWwgc2V0dXAgaGFwcGVucyB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuIEFuZCwgYXMgSSByZW1lbWJlciBmcm9tIGRlYnVnZ2luZyBvcnBoYW4gaW5vZGVzIGluIHRoZSBwYXN0LCBgZXh0NF9vcnBoYW5fY2xlYW51cGAgaXMgY2FsbGVkICpkdXJpbmcqIHRoYXQgY3JpdGljYWwgaW5pdGlhbGl6YXRpb24gcGhhc2UuIFRoYXTigJlzIGdvdCBteSBhdHRlbnRpb24uIEl0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgY29ycnVwdGVkIG9yIGluY29tcGxldGUgaW5vZGVzIHJpZ2h0IGF0IHRoZSBtb21lbnQgdGhlIHN5c3RlbSBpcyB0cnlpbmcgdG8gZ2V0IGl0c2VsZiB1cCBhbmQgcnVubmluZy4KCkdpdmVuIHRoYXQgY29udGV4dCwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eWAuIFRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBhY3R1YWxseSAqZGV0ZXJtaW5pbmcqIGlmIGFuIG9ycGhhbiBpbm9kZSBhY3R1YWxseSBuZWVkcyBjbGVhbnVwLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNyaXRlcmlhIGl0IHVzZXMuIElzIGl0IGJhc2VkIG9uIHRoZSBpX2xpbmtzX2NvdW50PyBUaGUgc2l6ZT8gRmlsZSB0eXBlPyBXaGF0IGNvbnN0aXR1dGVzIGFuICYjMzk7ZW1wdHkmIzM5OyBvcnBoYW4gZmlsZSBmcm9tIHRoZSBrZXJuZWzigJlzIHBlcnNwZWN0aXZlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNoZWNrIHRob3JvdWdobHkgdG8gdHJ1bHkgZ3Jhc3AgaG93IHdlbGwgdGhpcyBjbGVhbnVwIHByb2Nlc3Mgd29ya3MsIGFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGVyZSBpdCBtaWdodCBoYXZlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIG9wcG9ydHVuaXRpZXMgZm9yIG9wdGltaXphdGlvbi4gSeKAmW0gdGhpbmtpbmcgYWJvdXQgZWRnZSBjYXNlcywgcGVyaGFwcyBzb21ldGhpbmcgdGhhdCBjb3VsZCBjYXVzZSBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgb3IgZXZlbiBhIHNlY3VyaXR5IGlzc3VlLiBJdCYjMzk7cyB0aW1lIHRvIGdvIGRlZXBlciBhbmQgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyByZWFsbHkgZG9pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMjA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9vcnBoYW5fZmlsZV9lbXB0eSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvZXh0NC5oPTM5Njg9ZXh0ZXJuIGludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7XG5mcy9leHQ0L2V4dDQuaDozOTY5OmV4dGVybiBpbnQgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTtcbmZzL2V4dDQvZXh0NC5oLTM5NzAtZXh0ZXJuIHZvaWQgZXh0NF9vcnBoYW5fZmlsZV9ibG9ja190cmlnZ2VyKFxuLS1cbmZzL2V4dDQvb3JwaGFuLmM9Mzc4PXZvaWQgZXh0NF9vcnBoYW5fY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMpXG4tLVxuZnMvZXh0NC9vcnBoYW4uYy0zOTAtXG5mcy9leHQ0L29ycGhhbi5jOjM5MTpcdGlmICghZXMtXHUwMDNlc19sYXN0X29ycGhhbiBcdTAwMjZcdTAwMjYgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikpIHtcbmZzL2V4dDQvb3JwaGFuLmMtMzkyLVx0XHRleHQ0X2RlYnVnKFwmIzM0O25vIG9ycGhhbiBpbm9kZXMgdG8gY2xlYW4gdXBcXG5cJiMzNDspO1xuLS1cbmZzL2V4dDQvb3JwaGFuLmM9NTY4PWludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTY0NS1cbmZzL2V4dDQvb3JwaGFuLmM6NjQ2OmludCBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L29ycGhhbi5jLTY0Ny17XG4tLVxuZnMvZXh0NC9zdXBlci5jPTYzNDg9c3RhdGljIGludCBleHQ0X21hcmtfcmVjb3ZlcnlfY29tcGxldGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNjM2OC1cdCAgICBleHQ0X2hhc19mZWF0dXJlX29ycGhhbl9wcmVzZW50KHNiKSkpIHtcbmZzL2V4dDQvc3VwZXIuYzo2MzY5Olx0XHRpZiAoIWV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKSB7XG5mcy9leHQ0L3N1cGVyLmMtNjM3MC1cdFx0XHRleHQ0X2Vycm9yKHNiLCBcJiMzNDtPcnBoYW4gZmlsZSBub3QgZW1wdHkgb24gcmVhZC1vbmx5IGZzLlwmIzM0Oyk7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTY0OTE9c3RhdGljIGludCBleHQ0X2ZyZWV6ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy02NTA5LVx0XHRleHQ0X2NsZWFyX2ZlYXR1cmVfam91cm5hbF9uZWVkc19yZWNvdmVyeShzYik7XG5mcy9leHQ0L3N1cGVyLmM6NjUxMDpcdFx0aWYgKGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKVxuZnMvZXh0NC9zdXBlci5jLTY1MTEtXHRcdFx0ZXh0NF9jbGVhcl9mZWF0dXJlX29ycGhhbl9wcmVzZW50KHNiKTtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NjU1OD1zdGF0aWMgaW50IF9fZXh0NF9yZW1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNjc0OC1cdFx0XHQgKi9cbmZzL2V4dDQvc3VwZXIuYzo2NzQ5Olx0XHRcdGlmIChlcy1cdTAwM2VzX2xhc3Rfb3JwaGFuIHx8ICFleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKSkge1xuZnMvZXh0NC9zdXBlci5jLTY3NTAtXHRcdFx0XHRleHQ0X21zZyhzYiwgS0VSTl9XQVJOSU5HLCBcJiMzNDtDb3VsZG4mIzM5O3QgXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMjA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQyOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgY29kZSBjaGFuZ2UsIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIHRoZSBPcnBoYW4gRmlsZSBIYW5kbGluZyBpbiBleHQ0KioKClJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIHN1Z2dlc3RpbmcgYSBmYWlybHkgZm9jdXNlZCBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgcmVwbGFjaW5nIGEgY2hlY2ssIHNwZWNpZmljYWxseSBgIW9pLSZndDtvZl9ibG9ja3NgLCB3aXRoIGEgY2FsbCB0byBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYilgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB3aHkgdGhpcyBzdWJzdGl0dXRpb24/JiMzNDsgYCFvaS0mZ3Q7b2ZfYmxvY2tzYCBwcm9iYWJseSByZXByZXNlbnRlZCBhIHNpbXBsZSBjaGVjayBmb3IgYW4gb3JwaGFuIGZpbGUgaGF2aW5nIG5vIGRhdGEgYmxvY2tzIGFsbG9jYXRlZC4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBpbnRlbnRpb24gaXMgdG8gdXNlIGEgbW9yZSByb2J1c3Qgb3IgbnVhbmNlZCBhcHByb2FjaCB3aXRoIGBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKWAuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBuZXcgZnVuY3Rpb24gbm93IHRvIHRydWx5IHVuZGVyc3RhbmQgdGhlIGNoYW5nZSBhbmQgaXRzIGltcGxpY2F0aW9ucy4gSSYjMzk7bSBndWVzc2luZyB0aGF0IGBleHQ0X29ycGhhbl9maWxlX2VtcHR5KClgIGRvZXMgYSBtb3JlIHRob3JvdWdoIGNoZWNrIHRvIGRldGVybWluZSBpZiBhbiBvcnBoYW4gZmlsZSBpcyB0cnVseSAmIzM0O2VtcHR5JiMzNDsgYWNjb3JkaW5nIHRvIGV4dDQmIzM5O3MgaW50ZXJuYWwgZGVmaW5pdGlvbnMsIHBlcmhhcHMgdGFraW5nIGludG8gYWNjb3VudCBtZXRhZGF0YSwgaW5kaXJlY3QgYmxvY2tzLCBvciBvdGhlciBpbnRlcm5hbCBib29ra2VlcGluZy4gSXQmIzM5O3MgYWxzbyBwb3NzaWJsZSB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgc29tZSBhZGRpdGlvbmFsIGNvbnNpZGVyYXRpb25zIHRoYXQgd2VyZW4mIzM5O3QgY2FwdHVyZWQgYnkgdGhlIHNpbXBsZSBjaGVjayBvZiBhbGxvY2F0ZWQgYmxvY2tzLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRvIHNlZSB3aGF0IGBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKWAgYWN0dWFsbHkgZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAyMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4dDQvb3JwaGFuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY0MDpcdFx0a3ZmcmVlKG9pLVx1MDAzZW9mX2JpbmZvKTtcbiA2NDE6XHRvdXRfcHV0OlxuIDY0MjpcdFx0aXB1dChpbm9kZSk7XG4gNjQzOlx0XHRyZXR1cm4gcmV0O1xuIDY0NDpcdH1cbiA2NDU6XHRcbiA2NDY6XHRpbnQgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuIDY0NzpcdHtcbiA2NDg6XHRcdHN0cnVjdCBleHQ0X29ycGhhbl9pbmZvICpvaSA9IFx1MDAyNkVYVDRfU0Ioc2IpLVx1MDAzZXNfb3JwaGFuX2luZm87XG4gNjQ5Olx0XHRpbnQgaTtcbiA2NTA6XHRcdGludCBpbm9kZXNfcGVyX29iID0gZXh0NF9pbm9kZXNfcGVyX29ycGhhbl9ibG9jayhzYik7XG4gNjUxOlx0XG4gNjUyOlx0XHRpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfb3JwaGFuX2ZpbGUoc2IpKVxuIDY1MzpcdFx0XHRyZXR1cm4gMTtcbiA2NTQ6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG9pLVx1MDAzZW9mX2Jsb2NrczsgaSYjNDM7JiM0MzspXG4gNjU1Olx0XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZvaS1cdTAwM2VvZl9iaW5mb1tpXS5vYl9mcmVlX2VudHJpZXMpICE9XG4gNjU2Olx0XHRcdCAgICBpbm9kZXNfcGVyX29iKVxuIDY1NzpcdFx0XHRcdHJldHVybiAwO1xuIDY1ODpcdFx0cmV0dXJuIDE7XG4gNjU5Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDIwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwOTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgQnVnIEZpeCBpbiBleHQ0IE9ycGhhbiBGaWxlIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgZnJhbmtseSwgaXQmIzM5O3MgcHJldHR5IHNpZ25pZmljYW50LiBUaGUgY29yZSBpc3N1ZSBpcyB0aGF0IHRoZSBvbGQgY29kZSB3YXMgdXNpbmcgYCFvaS0mZ3Q7b2ZfYmxvY2tzYCB0byBkZXRlcm1pbmUgaWYgYW4gb3JwaGFuIGZpbGUgd2FzICplbXB0eSosIGJ1dCB0aGF0IGZpZWxkIGFjdHVhbGx5IHJlcHJlc2VudHMgdGhlICpudW1iZXIgb2YgYmxvY2tzKiBhbGxvY2F0ZWQgdG8gdGhlIG9ycGhhbiBmaWxlLCBub3QgdGhlICpudW1iZXIgb2Ygb3JwaGFuIGlub2RlcyogaXQgY29udGFpbnMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIG1pc3Rha2UsIGVhc2lseSBvdmVybG9va2VkLiBJZiB0aGUgb3JwaGFuIGZpbGUgZmVhdHVyZSBpcyBlbmFibGVkIGFuZCBhbiBvcnBoYW4gZmlsZSBleGlzdHMsIGV2ZW4gaWYgaXQmIzM5O3MgY29tcGxldGVseSBlbXB0eSBvZiBhY3R1YWwgb3JwaGFuIGlub2RlcywgYG9pLSZndDtvZl9ibG9ja3NgIHdpbGwgYmUgbm9uLXplcm8sIGFuZCBgZXh0NF9vcnBoYW5fY2xlYW51cGAgd291bGQgaW5jb3JyZWN0bHkgYXR0ZW1wdCBjbGVhbnVwLCB3YXN0aW5nIHRpbWUgYXQgYmVzdCwgYW5kIHBvc3NpYmx5IGxlYWRpbmcgdG8gb3RoZXIgaXNzdWVzLgoKVGhlIGZpeCwgdGhhbmsgZ29vZG5lc3MsIGlzIHN0cmFpZ2h0Zm9yd2FyZDogcmVwbGFjZSB0aGF0IGZsYXdlZCBjaGVjayB3aXRoIGBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKWAuIFRoYXQgZnVuY3Rpb24gKnNob3VsZCogYWNjdXJhdGVseSBkZXRlcm1pbmUgaWYgdGhlIG9ycGhhbiBmaWxlIHRydWx5IGhvbGRzIGFueSBvcnBoYW4gaW5vZGVzLiBTaW1wbGUgZml4LCBidXQgY3JpdGljYWwuCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGBleHQ0X29ycGhhbl9jbGVhbnVwYCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyB0aGUgKm1vdW50KiBwcm9jZXNzLCB3aGljaCBtYWtlcyB0aGlzIGV2ZW4gbW9yZSBpbXBvcnRhbnQuIEl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLCBnaXZlbiB0aGF0IGl0JiMzOTtzIGhhbmRsaW5nIHBvdGVudGlhbGx5IGluY29uc2lzdGVudCBtZXRhZGF0YSwgYW5kIGNhbGxlZCBhdCBzdWNoIGEgcGl2b3RhbCB0aW1lLiBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiBgZXh0NF9vcnBoYW5fY2xlYW51cGAgYW5kLCBvYnZpb3VzbHksIGBleHQ0X29ycGhhbl9maWxlX2VtcHR5YC4KClRpbWUgdG8gY2hlY2sgaWYgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBtaWdodCBiZSBpbXBhY3RlZC4uLiBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIGBFWFQ0X0ZTYCBpcyBkZWZpbml0ZWx5IGludm9sdmVkLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nIHRoYXQgbWlnaHQgaW5kaXJlY3RseSBpbmZsdWVuY2UgdGhpcyBidWcgb3IgaXRzIGZpeC4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDIwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFWFQ0X0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9leHQ0L0tjb25maWc6Mjpjb25maWcgRVhUNF9GU1xuZnMvZXh0NC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVwmIzM0O1xuLS1cbmZzL2V4dDQvS2NvbmZpZz0zNT1jb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcbi0tXG5mcy9leHQ0L0tjb25maWctNDUtXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXG5mcy9leHQ0L0tjb25maWctNDctXHRib29sIFwmIzM0O0V4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbi0tXG5mcy9leHQ0L0tjb25maWctNTUtXG5mcy9leHQ0L0tjb25maWc6NTY6Y29uZmlnIEVYVDRfRlNfU0VDVVJJVFlcbmZzL2V4dDQvS2NvbmZpZy01Ny1cdGJvb2wgXCYjMzQ7RXh0NCBTZWN1cml0eSBMYWJlbHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMjA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkxNQoJCQkJCQkJb3V0cHV0OiAxMTkKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFWFQ0IEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRoZSB0YXJnZXQgY29uZmlndXJhdGlvbiBpcyBgRVhUNF9GU2AsIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSBmb2N1c2luZyBvbiB0aGUgRVhUNCBmaWxlc3lzdGVtLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBoaXR0aW5nIHRoZSByaWdodCBzcG90cyBmb3IgZnV6emluZywgc28gSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGV4dDRfb3JwaGFuX2NsZWFudXBgIGFuZCBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eWAuCgpPa2F5LCBnb29kLiBCb3RoIGBleHQ0X29ycGhhbl9jbGVhbnVwYCBhbmQgYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlgIGFyZSBub24tc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggbWFrZXMgdGhlbSBwcmltZSBjYW5kaWRhdGVzIGZvciBleHRlcm5hbCBjYWxscyBhbmQgdGh1cywgZnV6emluZy4gVGhpcyBnaXZlcyB1cyBtb3JlIGNvbnRyb2wuCgpXaXRoIHRoaXMgaW4gbWluZCwgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgIGFzIHRoaXMgbG9va3MgdG8gYmUgYSBnb29kIHRhcmdldC4gSSYjMzk7bGwgZm9jdXMgdGhlIGZ1enplciBzcGVjaWZpY2FsbHkgb24gdGhlc2UgdHdvIGZ1bmN0aW9ucyB1c2luZyBgRm9jdXNTeW1ib2xzPVsmIzM0O2V4dDRfb3JwaGFuX2NsZWFudXAmIzM0OywgJiMzNDtleHQ0X29ycGhhbl9maWxlX2VtcHR5JiMzNDtdYC4gQW5kIG9mIGNvdXJzZSwgSSYjMzk7bGwgZW5hYmxlIHRoZSBgRVhUNF9GU2AgY29uZmlndXJhdGlvbiB3aXRoIGBFbmFibGVDb25maWdzPVsmIzM0O0VYVDRfRlMmIzM0O11gIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgY29kZSBpcyBjb21waWxlZCBhbmQgaW4gc2NvcGUuIFRoaXMgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBleHBsb3JlIHRoZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHdpdGhpbiB0aGUgRVhUNCBmaWxlc3lzdGVtJiMzOTtzIG9ycGhhbiBmaWxlIGhhbmRsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAyMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfb3JwaGFuX2NsZWFudXAmIzM0OywKICAgICYjMzQ7ZXh0NF9vcnBoYW5fZmlsZV9lbXB0eSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBleHQ0X29ycGhhbl9jbGVhbnVwIHdoZXJlIGl0IGluY29ycmVjdGx5IGNoZWNrZWQgaWYgdGhlIG9ycGhhbiBmaWxlIHdhcyBlbXB0eSBieSBjaGVja2luZyBpZiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGUgb3JwaGFuIGZpbGUgd2FzIHplcm8uIEl0IG5vdyBjb3JyZWN0bHkgdXNlcyBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKS4gVGhpcyBhZmZlY3RzIGV4dDQgbW91bnQgYmVoYXZpb3IgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X29ycGhhbl9jbGVhbnVwJiMzNDssCiAgICAmIzM0O2V4dDRfb3JwaGFuX2ZpbGVfZW1wdHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gZXh0NF9vcnBoYW5fY2xlYW51cCB3aGVyZSBpdCBpbmNvcnJlY3RseSBjaGVja2VkIGlmIHRoZSBvcnBoYW4gZmlsZSB3YXMgZW1wdHkgYnkgY2hlY2tpbmcgaWYgdGhlIG51bWJlciBvZiBibG9ja3MgaW4gdGhlIG9ycGhhbiBmaWxlIHdhcyB6ZXJvLiBJdCBub3cgY29ycmVjdGx5IHVzZXMgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikuIFRoaXMgYWZmZWN0cyBleHQ0IG1vdW50IGJlaGF2aW9yIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMjA6MTY6MjEuNjczNjgwMTE1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkwMzg1MzM3NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfb3JwaGFuX2NsZWFudXBcIixcbiAgICBcImV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBleHQ0X29ycGhhbl9jbGVhbnVwIHdoZXJlIGl0IGluY29ycmVjdGx5IGNoZWNrZWQgaWYgdGhlIG9ycGhhbiBmaWxlIHdhcyBlbXB0eSBieSBjaGVja2luZyBpZiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGUgb3JwaGFuIGZpbGUgd2FzIHplcm8uIEl0IG5vdyBjb3JyZWN0bHkgdXNlcyBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKS4gVGhpcyBhZmZlY3RzIGV4dDQgbW91bnQgYmVoYXZpb3IgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDIwOjE2OjIxLjY3MzY4OTE4NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4NzcwNzY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE3MzRlNDliY2Y2YWUzMjc4N2I4MGMwNGVjMGJlYWU0ZGI1MmU0Y2VcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAyMDoxNjoxOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L29ycGhhbi5jIGIvZnMvZXh0NC9vcnBoYW4uY1xcbmluZGV4IDY0ZWE0NzYyNDIzMzguLjJhNDQ5OThhNmMyZWMgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9vcnBoYW4uY1xcbisrKyBiL2ZzL2V4dDQvb3JwaGFuLmNcXG5AQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgZXh0NF9vcnBoYW5fY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMpXFxuIFxcdHN0cnVjdCBleHQ0X29ycGhhbl9pbmZvICpvaSA9IFxcdTAwMjZFWFQ0X1NCKHNiKS1cXHUwMDNlc19vcnBoYW5faW5mbztcXG4gXFx0aW50IGlub2Rlc19wZXJfb2IgPSBleHQ0X2lub2Rlc19wZXJfb3JwaGFuX2Jsb2NrKHNiKTtcXG4gXFxuLVxcdGlmICghZXMtXFx1MDAzZXNfbGFzdF9vcnBoYW4gXFx1MDAyNlxcdTAwMjYgIW9pLVxcdTAwM2VvZl9ibG9ja3MpIHtcXG4rXFx0aWYgKCFlcy1cXHUwMDNlc19sYXN0X29ycGhhbiBcXHUwMDI2XFx1MDAyNiBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKSkge1xcbiBcXHRcXHRleHQ0X2RlYnVnKFxcXCJubyBvcnBoYW4gaW5vZGVzIHRvIGNsZWFuIHVwXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDIwOjE2OjIzLjA2MjM2Mzc4NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI3NjQ5ODMzNDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X29ycGhhbl9jbGVhbnVwXCIsXG4gICAgXCJleHQ0X29ycGhhbl9maWxlX2VtcHR5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gZXh0NF9vcnBoYW5fY2xlYW51cCB3aGVyZSBpdCBpbmNvcnJlY3RseSBjaGVja2VkIGlmIHRoZSBvcnBoYW4gZmlsZSB3YXMgZW1wdHkgYnkgY2hlY2tpbmcgaWYgdGhlIG51bWJlciBvZiBibG9ja3MgaW4gdGhlIG9ycGhhbiBmaWxlIHdhcyB6ZXJvLiBJdCBub3cgY29ycmVjdGx5IHVzZXMgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikuIFRoaXMgYWZmZWN0cyBleHQ0IG1vdW50IGJlaGF2aW9yIGFuZCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNzM0ZTQ5YmNmNmFlMzI3ODdiODBjMDRlYzBiZWFlNGRiNTJlNGNlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAyMDoxNjoxOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvb3JwaGFuLmMgYi9mcy9leHQ0L29ycGhhbi5jXG5pbmRleCA2NGVhNDc2MjQyMzM4Li4yYTQ0OTk4YTZjMmVjIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9vcnBoYW4uY1xuKysrIGIvZnMvZXh0NC9vcnBoYW4uY1xuQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIGV4dDRfb3JwaGFuX2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKVxuIFx0c3RydWN0IGV4dDRfb3JwaGFuX2luZm8gKm9pID0gXHUwMDI2RVhUNF9TQihzYiktXHUwMDNlc19vcnBoYW5faW5mbztcbiBcdGludCBpbm9kZXNfcGVyX29iID0gZXh0NF9pbm9kZXNfcGVyX29ycGhhbl9ibG9jayhzYik7XG4gXG4tXHRpZiAoIWVzLVx1MDAzZXNfbGFzdF9vcnBoYW4gXHUwMDI2XHUwMDI2ICFvaS1cdTAwM2VvZl9ibG9ja3MpIHtcbitcdGlmICghZXMtXHUwMDNlc19sYXN0X29ycGhhbiBcdTAwMjZcdTAwMjYgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikpIHtcbiBcdFx0ZXh0NF9kZWJ1ZyhcIm5vIG9ycGhhbiBpbm9kZXMgdG8gY2xlYW4gdXBcXG5cIik7XG4gXHRcdHJldHVybjtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDIwOjE2OjIzLjA2MjM2NTc3NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxNzE5MDA1NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYTpcblxuKipBbmFseXppbmcgYW4gZXh0NCBPcnBoYW4gQ2xlYW51cCBQYXRjaCoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGVkIGBmcy9leHQ0L29ycGhhbi5jYC4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlIGlzIGluIHRoZSBgZXh0NF9vcnBoYW5fY2xlYW51cGAgZnVuY3Rpb24uIFRoZSBvcmlnaW5hbCBjaGVjaywgYGlmICghZXMtXHUwMDNlc19sYXN0X29ycGhhbiBcdTAwMjZcdTAwMjYgIW9pLVx1MDAzZW9mX2Jsb2NrcylgLCBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGBpZiAoIWVzLVx1MDAzZXNfbGFzdF9vcnBoYW4gXHUwMDI2XHUwMDI2IGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKWAuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHRoYXQncyBpbnRlcmVzdGluZy4gVGhleSd2ZSBzd2FwcGVkIG91dCBhIGNoZWNrIGZvciB3aGV0aGVyIGFuIG9ycGhhbiBpbm9kZSBoYXMgYXNzb2NpYXRlZCBkYXRhIGJsb2NrcyAoYCFvaS1cdTAwM2VvZl9ibG9ja3NgKSB3aXRoIGEgY2FsbCB0byB0aGUgYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlgIGZ1bmN0aW9uLiBXaHk/XCIgVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3IgYSBtb3JlIG51YW5jZWQgd2F5IHRvIGRldGVybWluZSBpZiBhbiBvcnBoYW5lZCBpbm9kZSBhY3R1YWxseSBuZWVkcyBjbGVhbmluZyB1cC4gVGhlIG9sZCBjb25kaXRpb24gbGlrZWx5IGFzc3VtZWQgdGhhdCBpZiB0aGVyZSB3ZXJlICpubyogYmxvY2tzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSwgdGhlbiBpdCB3YXMgZWZmZWN0aXZlbHkgZW1wdHkgYW5kIGNvdWxkIGJlIHJlbW92ZWQuIEJ1dCwgaXQgaXMgdmVyeSBpbXBvcnRhbnQgdG8gY29uc2lkZXIgKndoeSogdGhpcyBoYXMgY2hhbmdlZCB0byBhbiBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eWAgY2FsbC5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgYm90aCBgZXh0NF9vcnBoYW5fY2xlYW51cGAgYW5kLCBjcnVjaWFsbHksIGBleHQ0X29ycGhhbl9maWxlX2VtcHR5YCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGtub3cgd2hhdCB0aGV5J3JlICpyZWFsbHkqIGNoZWNraW5nLiBJcyBpdCBjb25zaWRlcmluZyBmcmFnbWVudGF0aW9uPyBTcGFyc2UgZmlsZXM/IEluZGlyZWN0IGJsb2Nrcz8gTWF5YmUgdGhpcyBuZXcgY2hlY2sgaGFuZGxlcyB6ZXJvLWxlbmd0aCBmaWxlcyBtb3JlIGVsZWdhbnRseSBvciBjb3JyZWN0bHkgYWNjb3VudHMgZm9yIGRlbGF5ZWQgYWxsb2NhdGlvbiBzY2VuYXJpb3MuIEknbGwgbmVlZCB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCB0aGUgcGF0Y2ggY29udGV4dCB0byBiZSBjZXJ0YWluLiBJcyB0aGlzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQ/IEEgYnVnIGZpeD8gSSBuZWVkIG1vcmUgZGF0YSFcblxuXG4iLCJJbnB1dFRva2VucyI6MjA4OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMjA6MTY6MzAuMjM0MjcwOTExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjE4MTc2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQ0X29ycGhhbl9jbGVhbnVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvZXh0NC5oPTM5NjQ9ZXh0ZXJuIGludCBleHQ0X29ycGhhbl9kZWwoaGFuZGxlX3QgKiwgc3RydWN0IGlub2RlICopO1xcbmZzL2V4dDQvZXh0NC5oOjM5NjU6ZXh0ZXJuIHZvaWQgZXh0NF9vcnBoYW5fY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbmZzL2V4dDQvZXh0NC5oLTM5NjYtXFx0XFx0XFx0XFx0c3RydWN0IGV4dDRfc3VwZXJfYmxvY2sgKmVzKTtcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYz00NTM3PWludCBleHQ0X2lub2RlX2F0dGFjaF9qaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy00NTg3LSAqIFRoZSBjb21taXR0ZWQgaW5vZGUgaGFzIHRoZSBuZXcsIGRlc2lyZWQgaV9zaXplICh3aGljaCBpcyB0aGUgc2FtZSBhc1xcbmZzL2V4dDQvaW5vZGUuYzo0NTg4OiAqIGlfZGlza3NpemUgaW4gdGhpcyBjYXNlKS4gIEFmdGVyIGEgY3Jhc2gsIGV4dDRfb3JwaGFuX2NsZWFudXAoKSB3aWxsIHNlZVxcbmZzL2V4dDQvaW5vZGUuYy00NTg5LSAqIHRoYXQgdGhpcyBpbm9kZSdzIHRydW5jYXRlIGRpZCBub3QgY29tcGxldGUgYW5kIGl0IHdpbGwgYWdhaW4gY2FsbFxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYz0xMz1zdGF0aWMgaW50IGV4dDRfb3JwaGFuX2ZpbGVfYWRkKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jLTk1LSAqIEF0IGZpbGVzeXN0ZW0gcmVjb3ZlcnkgdGltZSwgd2Ugd2FsayB0aGlzIGxpc3QgZGVsZXRpbmcgdW5saW5rZWRcXG5mcy9leHQ0L29ycGhhbi5jOjk2OiAqIGlub2RlcyBhbmQgdHJ1bmNhdGluZyBsaW5rZWQgaW5vZGVzIGluIGV4dDRfb3JwaGFuX2NsZWFudXAoKS5cXG5mcy9leHQ0L29ycGhhbi5jLTk3LSAqXFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jPTMyMT1zdGF0aWMgdm9pZCBleHQ0X3Byb2Nlc3Nfb3JwaGFuKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jLTM2MC1cXG5mcy9leHQ0L29ycGhhbi5jOjM2MTovKiBleHQ0X29ycGhhbl9jbGVhbnVwKCkgd2Fsa3MgYSBzaW5nbHktbGlua2VkIGxpc3Qgb2YgaW5vZGVzIChzdGFydGluZyBhdFxcbmZzL2V4dDQvb3JwaGFuLmMtMzYyLSAqIHRoZSBzdXBlcmJsb2NrKSB3aGljaCB3ZXJlIGRlbGV0ZWQgZnJvbSBhbGwgZGlyZWN0b3JpZXMsIGJ1dCBoZWxkIG9wZW4gYnlcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMzc3LSAqL1xcbmZzL2V4dDQvb3JwaGFuLmM6Mzc4OnZvaWQgZXh0NF9vcnBoYW5fY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZXh0NF9zdXBlcl9ibG9jayAqZXMpXFxuZnMvZXh0NC9vcnBoYW4uYy0zNzkte1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTUzMzg9c3RhdGljIGludCBfX2V4dDRfZmlsbF9zdXBlcihzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTcwNC1cXHRFWFQ0X1NCKHNiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSB8PSBFWFQ0X09SUEhBTl9GUztcXG5mcy9leHQ0L3N1cGVyLmM6NTcwNTpcXHRleHQ0X29ycGhhbl9jbGVhbnVwKHNiLCBlcyk7XFxuZnMvZXh0NC9zdXBlci5jLTU3MDYtXFx0RVhUNF9TQihzYiktXFx1MDAzZXNfbW91bnRfc3RhdGUgXFx1MDAyNj0gfkVYVDRfT1JQSEFOX0ZTO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTU3MDgtXFx0ICogVXBkYXRlIHRoZSBjaGVja3N1bSBhZnRlciB1cGRhdGluZyBmcmVlIHNwYWNlL2lub2RlIGNvdW50ZXJzIGFuZFxcbmZzL2V4dDQvc3VwZXIuYzo1NzA5OlxcdCAqIGV4dDRfb3JwaGFuX2NsZWFudXAuIE90aGVyd2lzZSB0aGUgc3VwZXJibG9jayBjYW4gaGF2ZSBhbiBpbmNvcnJlY3RcXG5mcy9leHQ0L3N1cGVyLmMtNTcxMC1cXHQgKiBjaGVja3N1bSBpbiB0aGUgYnVmZmVyIGNhY2hlIHVudGlsIGl0IGlzIHdyaXR0ZW4gb3V0IGFuZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QyMDoxNjozMC4zNTY0Nzg5MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzg0MjM2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgZXh0NCBGaWxlc3lzdGVtIE9ycGhhbiBDbGVhbnVwKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgZXh0NCBtb3VudCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgYF9fZXh0NF9maWxsX3N1cGVyYC4gSSBrbm93IHRoYXQncyB3aGVyZSBhIGxvdCBvZiB0aGUgaW5pdGlhbCBzZXR1cCBoYXBwZW5zIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gQW5kLCBhcyBJIHJlbWVtYmVyIGZyb20gZGVidWdnaW5nIG9ycGhhbiBpbm9kZXMgaW4gdGhlIHBhc3QsIGBleHQ0X29ycGhhbl9jbGVhbnVwYCBpcyBjYWxsZWQgKmR1cmluZyogdGhhdCBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBwaGFzZS4gVGhhdOKAmXMgZ290IG15IGF0dGVudGlvbi4gSXQgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IGNvcnJ1cHRlZCBvciBpbmNvbXBsZXRlIGlub2RlcyByaWdodCBhdCB0aGUgbW9tZW50IHRoZSBzeXN0ZW0gaXMgdHJ5aW5nIHRvIGdldCBpdHNlbGYgdXAgYW5kIHJ1bm5pbmcuXG5cbkdpdmVuIHRoYXQgY29udGV4dCwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eWAuIFRoYXQncyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5ICpkZXRlcm1pbmluZyogaWYgYW4gb3JwaGFuIGlub2RlIGFjdHVhbGx5IG5lZWRzIGNsZWFudXAuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY3JpdGVyaWEgaXQgdXNlcy4gSXMgaXQgYmFzZWQgb24gdGhlIGlfbGlua3NfY291bnQ/IFRoZSBzaXplPyBGaWxlIHR5cGU/IFdoYXQgY29uc3RpdHV0ZXMgYW4gJ2VtcHR5JyBvcnBoYW4gZmlsZSBmcm9tIHRoZSBrZXJuZWzigJlzIHBlcnNwZWN0aXZlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGNoZWNrIHRob3JvdWdobHkgdG8gdHJ1bHkgZ3Jhc3AgaG93IHdlbGwgdGhpcyBjbGVhbnVwIHByb2Nlc3Mgd29ya3MsIGFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGVyZSBpdCBtaWdodCBoYXZlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIG9wcG9ydHVuaXRpZXMgZm9yIG9wdGltaXphdGlvbi4gSeKAmW0gdGhpbmtpbmcgYWJvdXQgZWRnZSBjYXNlcywgcGVyaGFwcyBzb21ldGhpbmcgdGhhdCBjb3VsZCBjYXVzZSBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgb3IgZXZlbiBhIHNlY3VyaXR5IGlzc3VlLiBJdCdzIHRpbWUgdG8gZ28gZGVlcGVyIGFuZCBzZWUgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIHJlYWxseSBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM0MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDIwOjE2OjM0LjU5NDkwNzkxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjAxNjQ4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0NF9vcnBoYW5fZmlsZV9lbXB0eVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L2V4dDQuaD0zOTY4PWV4dGVybiBpbnQgZXh0NF9pbml0X29ycGhhbl9pbmZvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpO1xcbmZzL2V4dDQvZXh0NC5oOjM5Njk6ZXh0ZXJuIGludCBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpO1xcbmZzL2V4dDQvZXh0NC5oLTM5NzAtZXh0ZXJuIHZvaWQgZXh0NF9vcnBoYW5fZmlsZV9ibG9ja190cmlnZ2VyKFxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYz0zNzg9dm9pZCBleHQ0X29ycGhhbl9jbGVhbnVwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBleHQ0X3N1cGVyX2Jsb2NrICplcylcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMzkwLVxcbmZzL2V4dDQvb3JwaGFuLmM6MzkxOlxcdGlmICghZXMtXFx1MDAzZXNfbGFzdF9vcnBoYW4gXFx1MDAyNlxcdTAwMjYgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikpIHtcXG5mcy9leHQ0L29ycGhhbi5jLTM5Mi1cXHRcXHRleHQ0X2RlYnVnKFxcXCJubyBvcnBoYW4gaW5vZGVzIHRvIGNsZWFuIHVwXFxcXG5cXFwiKTtcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmM9NTY4PWludCBleHQ0X2luaXRfb3JwaGFuX2luZm8oc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtNjQ1LVxcbmZzL2V4dDQvb3JwaGFuLmM6NjQ2OmludCBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9vcnBoYW4uYy02NDcte1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTYzNDg9c3RhdGljIGludCBleHQ0X21hcmtfcmVjb3ZlcnlfY29tcGxldGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy02MzY4LVxcdCAgICBleHQ0X2hhc19mZWF0dXJlX29ycGhhbl9wcmVzZW50KHNiKSkpIHtcXG5mcy9leHQ0L3N1cGVyLmM6NjM2OTpcXHRcXHRpZiAoIWV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKSB7XFxuZnMvZXh0NC9zdXBlci5jLTYzNzAtXFx0XFx0XFx0ZXh0NF9lcnJvcihzYiwgXFxcIk9ycGhhbiBmaWxlIG5vdCBlbXB0eSBvbiByZWFkLW9ubHkgZnMuXFxcIik7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NjQ5MT1zdGF0aWMgaW50IGV4dDRfZnJlZXplKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNjUwOS1cXHRcXHRleHQ0X2NsZWFyX2ZlYXR1cmVfam91cm5hbF9uZWVkc19yZWNvdmVyeShzYik7XFxuZnMvZXh0NC9zdXBlci5jOjY1MTA6XFx0XFx0aWYgKGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpKVxcbmZzL2V4dDQvc3VwZXIuYy02NTExLVxcdFxcdFxcdGV4dDRfY2xlYXJfZmVhdHVyZV9vcnBoYW5fcHJlc2VudChzYik7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NjU1OD1zdGF0aWMgaW50IF9fZXh0NF9yZW1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy02NzQ4LVxcdFxcdFxcdCAqL1xcbmZzL2V4dDQvc3VwZXIuYzo2NzQ5OlxcdFxcdFxcdGlmIChlcy1cXHUwMDNlc19sYXN0X29ycGhhbiB8fCAhZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYikpIHtcXG5mcy9leHQ0L3N1cGVyLmMtNjc1MC1cXHRcXHRcXHRcXHRleHQ0X21zZyhzYiwgS0VSTl9XQVJOSU5HLCBcXFwiQ291bGRuJ3QgXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QyMDoxNjozNC43MTUwNzkwOTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTgyNjIwMjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCBjb2RlIGNoYW5nZSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyB0aGUgT3JwaGFuIEZpbGUgSGFuZGxpbmcgaW4gZXh0NCoqXG5cblJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIHN1Z2dlc3RpbmcgYSBmYWlybHkgZm9jdXNlZCBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSByZXBsYWNpbmcgYSBjaGVjaywgc3BlY2lmaWNhbGx5IGAhb2ktXHUwMDNlb2ZfYmxvY2tzYCwgd2l0aCBhIGNhbGwgdG8gYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgd2h5IHRoaXMgc3Vic3RpdHV0aW9uP1wiIGAhb2ktXHUwMDNlb2ZfYmxvY2tzYCBwcm9iYWJseSByZXByZXNlbnRlZCBhIHNpbXBsZSBjaGVjayBmb3IgYW4gb3JwaGFuIGZpbGUgaGF2aW5nIG5vIGRhdGEgYmxvY2tzIGFsbG9jYXRlZC4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBpbnRlbnRpb24gaXMgdG8gdXNlIGEgbW9yZSByb2J1c3Qgb3IgbnVhbmNlZCBhcHByb2FjaCB3aXRoIGBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKWAuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBuZXcgZnVuY3Rpb24gbm93IHRvIHRydWx5IHVuZGVyc3RhbmQgdGhlIGNoYW5nZSBhbmQgaXRzIGltcGxpY2F0aW9ucy4gSSdtIGd1ZXNzaW5nIHRoYXQgYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoKWAgZG9lcyBhIG1vcmUgdGhvcm91Z2ggY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIGFuIG9ycGhhbiBmaWxlIGlzIHRydWx5IFwiZW1wdHlcIiBhY2NvcmRpbmcgdG8gZXh0NCdzIGludGVybmFsIGRlZmluaXRpb25zLCBwZXJoYXBzIHRha2luZyBpbnRvIGFjY291bnQgbWV0YWRhdGEsIGluZGlyZWN0IGJsb2Nrcywgb3Igb3RoZXIgaW50ZXJuYWwgYm9va2tlZXBpbmcuIEl0J3MgYWxzbyBwb3NzaWJsZSB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgc29tZSBhZGRpdGlvbmFsIGNvbnNpZGVyYXRpb25zIHRoYXQgd2VyZW4ndCBjYXB0dXJlZCBieSB0aGUgc2ltcGxlIGNoZWNrIG9mIGFsbG9jYXRlZCBibG9ja3MuIEknbSBnb2luZyB0byBoYXZlIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSB0byBzZWUgd2hhdCBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzYilgIGFjdHVhbGx5IGRvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MjgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QyMDoxNjozOC4yOTc3MDI4MjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzEwNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZXh0NC9vcnBoYW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2NDA6XFx0XFx0a3ZmcmVlKG9pLVxcdTAwM2VvZl9iaW5mbyk7XFxuIDY0MTpcXHRvdXRfcHV0OlxcbiA2NDI6XFx0XFx0aXB1dChpbm9kZSk7XFxuIDY0MzpcXHRcXHRyZXR1cm4gcmV0O1xcbiA2NDQ6XFx0fVxcbiA2NDU6XFx0XFxuIDY0NjpcXHRpbnQgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbiA2NDc6XFx0e1xcbiA2NDg6XFx0XFx0c3RydWN0IGV4dDRfb3JwaGFuX2luZm8gKm9pID0gXFx1MDAyNkVYVDRfU0Ioc2IpLVxcdTAwM2VzX29ycGhhbl9pbmZvO1xcbiA2NDk6XFx0XFx0aW50IGk7XFxuIDY1MDpcXHRcXHRpbnQgaW5vZGVzX3Blcl9vYiA9IGV4dDRfaW5vZGVzX3Blcl9vcnBoYW5fYmxvY2soc2IpO1xcbiA2NTE6XFx0XFxuIDY1MjpcXHRcXHRpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfb3JwaGFuX2ZpbGUoc2IpKVxcbiA2NTM6XFx0XFx0XFx0cmV0dXJuIDE7XFxuIDY1NDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgb2ktXFx1MDAzZW9mX2Jsb2NrczsgaSsrKVxcbiA2NTU6XFx0XFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZvaS1cXHUwMDNlb2ZfYmluZm9baV0ub2JfZnJlZV9lbnRyaWVzKSAhPVxcbiA2NTY6XFx0XFx0XFx0ICAgIGlub2Rlc19wZXJfb2IpXFxuIDY1NzpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNjU4OlxcdFxcdHJldHVybiAxO1xcbiA2NTk6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QyMDoxNjozOC4yOTc4MzYxNTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDkxNzI2MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENyaXRpY2FsIEJ1ZyBGaXggaW4gZXh0NCBPcnBoYW4gRmlsZSBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBmcmFua2x5LCBpdCdzIHByZXR0eSBzaWduaWZpY2FudC4gVGhlIGNvcmUgaXNzdWUgaXMgdGhhdCB0aGUgb2xkIGNvZGUgd2FzIHVzaW5nIGAhb2ktXHUwMDNlb2ZfYmxvY2tzYCB0byBkZXRlcm1pbmUgaWYgYW4gb3JwaGFuIGZpbGUgd2FzICplbXB0eSosIGJ1dCB0aGF0IGZpZWxkIGFjdHVhbGx5IHJlcHJlc2VudHMgdGhlICpudW1iZXIgb2YgYmxvY2tzKiBhbGxvY2F0ZWQgdG8gdGhlIG9ycGhhbiBmaWxlLCBub3QgdGhlICpudW1iZXIgb2Ygb3JwaGFuIGlub2RlcyogaXQgY29udGFpbnMuIFRoYXQncyBhIGNsYXNzaWMgbWlzdGFrZSwgZWFzaWx5IG92ZXJsb29rZWQuIElmIHRoZSBvcnBoYW4gZmlsZSBmZWF0dXJlIGlzIGVuYWJsZWQgYW5kIGFuIG9ycGhhbiBmaWxlIGV4aXN0cywgZXZlbiBpZiBpdCdzIGNvbXBsZXRlbHkgZW1wdHkgb2YgYWN0dWFsIG9ycGhhbiBpbm9kZXMsIGBvaS1cdTAwM2VvZl9ibG9ja3NgIHdpbGwgYmUgbm9uLXplcm8sIGFuZCBgZXh0NF9vcnBoYW5fY2xlYW51cGAgd291bGQgaW5jb3JyZWN0bHkgYXR0ZW1wdCBjbGVhbnVwLCB3YXN0aW5nIHRpbWUgYXQgYmVzdCwgYW5kIHBvc3NpYmx5IGxlYWRpbmcgdG8gb3RoZXIgaXNzdWVzLlxuXG5UaGUgZml4LCB0aGFuayBnb29kbmVzcywgaXMgc3RyYWlnaHRmb3J3YXJkOiByZXBsYWNlIHRoYXQgZmxhd2VkIGNoZWNrIHdpdGggYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHkoc2IpYC4gVGhhdCBmdW5jdGlvbiAqc2hvdWxkKiBhY2N1cmF0ZWx5IGRldGVybWluZSBpZiB0aGUgb3JwaGFuIGZpbGUgdHJ1bHkgaG9sZHMgYW55IG9ycGhhbiBpbm9kZXMuIFNpbXBsZSBmaXgsIGJ1dCBjcml0aWNhbC5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBgZXh0NF9vcnBoYW5fY2xlYW51cGAsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcgdGhlICptb3VudCogcHJvY2Vzcywgd2hpY2ggbWFrZXMgdGhpcyBldmVuIG1vcmUgaW1wb3J0YW50LiBJdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLCBnaXZlbiB0aGF0IGl0J3MgaGFuZGxpbmcgcG90ZW50aWFsbHkgaW5jb25zaXN0ZW50IG1ldGFkYXRhLCBhbmQgY2FsbGVkIGF0IHN1Y2ggYSBwaXZvdGFsIHRpbWUuIEknbGwgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gYGV4dDRfb3JwaGFuX2NsZWFudXBgIGFuZCwgb2J2aW91c2x5LCBgZXh0NF9vcnBoYW5fZmlsZV9lbXB0eWAuXG5cblRpbWUgdG8gY2hlY2sgaWYgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBtaWdodCBiZSBpbXBhY3RlZC4uLiBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIGBFWFQ0X0ZTYCBpcyBkZWZpbml0ZWx5IGludm9sdmVkLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcgdGhhdCBtaWdodCBpbmRpcmVjdGx5IGluZmx1ZW5jZSB0aGlzIGJ1ZyBvciBpdHMgZml4LiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA5NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDIwOjE2OjQ0LjM4OTU2NjM3OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcwMzg1OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEVYVDRfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvZXh0NC9LY29uZmlnOjI6Y29uZmlnIEVYVDRfRlNcXG5mcy9leHQ0L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cXFwiXFxuLS1cXG5mcy9leHQ0L0tjb25maWc9MzU9Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXFxuLS1cXG5mcy9leHQ0L0tjb25maWctNDUtXFxuZnMvZXh0NC9LY29uZmlnOjQ2OmNvbmZpZyBFWFQ0X0ZTX1BPU0lYX0FDTFxcbmZzL2V4dDQvS2NvbmZpZy00Ny1cXHRib29sIFxcXCJFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnLTU1LVxcbmZzL2V4dDQvS2NvbmZpZzo1Njpjb25maWcgRVhUNF9GU19TRUNVUklUWVxcbmZzL2V4dDQvS2NvbmZpZy01Ny1cXHRib29sIFxcXCJFeHQ0IFNlY3VyaXR5IExhYmVsc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMjA6MTY6NDQuNDY2NjEzMDUyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDA2MTM0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFWFQ0IEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gaXMgYEVYVDRfRlNgLCB3aGljaCBtZWFucyB3ZSdyZSBmb2N1c2luZyBvbiB0aGUgRVhUNCBmaWxlc3lzdGVtLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlJ3JlIGhpdHRpbmcgdGhlIHJpZ2h0IHNwb3RzIGZvciBmdXp6aW5nLCBzbyBJJ20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBleHQ0X29ycGhhbl9jbGVhbnVwYCBhbmQgYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlgLlxuXG5Pa2F5LCBnb29kLiBCb3RoIGBleHQ0X29ycGhhbl9jbGVhbnVwYCBhbmQgYGV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlgIGFyZSBub24tc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggbWFrZXMgdGhlbSBwcmltZSBjYW5kaWRhdGVzIGZvciBleHRlcm5hbCBjYWxscyBhbmQgdGh1cywgZnV6emluZy4gVGhpcyBnaXZlcyB1cyBtb3JlIGNvbnRyb2wuXG5cbldpdGggdGhpcyBpbiBtaW5kLCBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAgYXMgdGhpcyBsb29rcyB0byBiZSBhIGdvb2QgdGFyZ2V0LiBJJ2xsIGZvY3VzIHRoZSBmdXp6ZXIgc3BlY2lmaWNhbGx5IG9uIHRoZXNlIHR3byBmdW5jdGlvbnMgdXNpbmcgYEZvY3VzU3ltYm9scz1bXCJleHQ0X29ycGhhbl9jbGVhbnVwXCIsIFwiZXh0NF9vcnBoYW5fZmlsZV9lbXB0eVwiXWAuIEFuZCBvZiBjb3Vyc2UsIEknbGwgZW5hYmxlIHRoZSBgRVhUNF9GU2AgY29uZmlndXJhdGlvbiB3aXRoIGBFbmFibGVDb25maWdzPVtcIkVYVDRfRlNcIl1gIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgY29kZSBpcyBjb21waWxlZCBhbmQgaW4gc2NvcGUuIFRoaXMgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBleHBsb3JlIHRoZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHdpdGhpbiB0aGUgRVhUNCBmaWxlc3lzdGVtJ3Mgb3JwaGFuIGZpbGUgaGFuZGxpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MTUsIk91dHB1dFRva2VucyI6MTE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDIwOjE2OjUwLjUwNzIyOTI2MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDk2MjcxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfb3JwaGFuX2NsZWFudXBcIixcbiAgICBcImV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBleHQ0X29ycGhhbl9jbGVhbnVwIHdoZXJlIGl0IGluY29ycmVjdGx5IGNoZWNrZWQgaWYgdGhlIG9ycGhhbiBmaWxlIHdhcyBlbXB0eSBieSBjaGVja2luZyBpZiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGUgb3JwaGFuIGZpbGUgd2FzIHplcm8uIEl0IG5vdyBjb3JyZWN0bHkgdXNlcyBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKS4gVGhpcyBhZmZlY3RzIGV4dDQgbW91bnQgYmVoYXZpb3IgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfb3JwaGFuX2NsZWFudXBcIixcbiAgICBcImV4dDRfb3JwaGFuX2ZpbGVfZW1wdHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBleHQ0X29ycGhhbl9jbGVhbnVwIHdoZXJlIGl0IGluY29ycmVjdGx5IGNoZWNrZWQgaWYgdGhlIG9ycGhhbiBmaWxlIHdhcyBlbXB0eSBieSBjaGVja2luZyBpZiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGUgb3JwaGFuIGZpbGUgd2FzIHplcm8uIEl0IG5vdyBjb3JyZWN0bHkgdXNlcyBleHQ0X29ycGhhbl9maWxlX2VtcHR5KHNiKS4gVGhpcyBhZmZlY3RzIGV4dDQgbW91bnQgYmVoYXZpb3IgYW5kIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflows4r6c[1] Phase: Succeeded StartedAt: 2026-08-03 20:17:03 +0000 UTC FinishedAt: 2026-08-03 20:17:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 20:17:03 +0000 UTC FinishedAt: 2026-08-03 20:17:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2] Phase: Succeeded StartedAt: 2026-08-03 20:17:03 +0000 UTC FinishedAt: 2026-08-04 00:15:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 20:17:03 +0000 UTC FinishedAt: 2026-08-04 00:15:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 20:17:03 +0000 UTC FinishedAt: 2026-08-03 20:17:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 20:17:03 +0000 UTC FinishedAt: 2026-08-03 20:17:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflows4r6c/series-workflows4r6c-convert-artifact-2751513465/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 20:17:26 +0000 UTC FinishedAt: 2026-08-03 20:43:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 20:17:26 +0000 UTC FinishedAt: 2026-08-03 20:43:24 +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:*43af99f8-bf21-4daf-8a1c-26646a69c688,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-workflows4r6c/series-workflows4r6c-convert-artifact-2751513465/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": "fc1be9d4-891b-425f-a617-1af101ae3b69", "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-workflows4r6c/series-workflows4r6c-build-action-1108958359/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 20:17:26 +0000 UTC FinishedAt: 2026-08-03 20:43:14 +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:*43af99f8-bf21-4daf-8a1c-26646a69c688,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-workflows4r6c/series-workflows4r6c-convert-artifact-2751513465/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": "fc1be9d4-891b-425f-a617-1af101ae3b69", "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-workflows4r6c/series-workflows4r6c-build-action-1108958359/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 20:43:24 +0000 UTC FinishedAt: 2026-08-03 20:43:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 20:43:24 +0000 UTC FinishedAt: 2026-08-03 20:43:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 20:43:24 +0000 UTC FinishedAt: 2026-08-03 20:43:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 20:43:24 +0000 UTC FinishedAt: 2026-08-03 20:43:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflows4r6c/series-workflows4r6c-convert-artifact-2084945484/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 20:43:46 +0000 UTC FinishedAt: 2026-08-03 20:45:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 20:43:46 +0000 UTC FinishedAt: 2026-08-03 20:45:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fc1be9d4-891b-425f-a617-1af101ae3b69,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-workflows4r6c/series-workflows4r6c-build-action-1108958359/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-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 20:45:38 +0000 UTC FinishedAt: 2026-08-03 20:45:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 20:45:38 +0000 UTC FinishedAt: 2026-08-03 20:45:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 20:45:38 +0000 UTC FinishedAt: 2026-08-03 21:08:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 20:45:38 +0000 UTC FinishedAt: 2026-08-03 21:08:50 +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:*43af99f8-bf21-4daf-8a1c-26646a69c688,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-workflows4r6c/series-workflows4r6c-convert-artifact-2084945484/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": "83e3ee82-bd39-4442-b3f6-9efbac5e84b0", "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-workflows4r6c/series-workflows4r6c-build-action-1587547240/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 20:45:38 +0000 UTC FinishedAt: 2026-08-03 21:08:40 +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:*43af99f8-bf21-4daf-8a1c-26646a69c688,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-workflows4r6c/series-workflows4r6c-convert-artifact-2084945484/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": "83e3ee82-bd39-4442-b3f6-9efbac5e84b0", "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-workflows4r6c/series-workflows4r6c-build-action-1587547240/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 21:08:50 +0000 UTC FinishedAt: 2026-08-03 21:08:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 21:08:50 +0000 UTC FinishedAt: 2026-08-03 21:08:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 21:08:50 +0000 UTC FinishedAt: 2026-08-03 21:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 21:08:50 +0000 UTC FinishedAt: 2026-08-03 21:10:35 +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:*83e3ee82-bd39-4442-b3f6-9efbac5e84b0,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-workflows4r6c/series-workflows4r6c-build-action-1587547240/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-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 21:10:44 +0000 UTC FinishedAt: 2026-08-04 00:15:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 21:10:44 +0000 UTC FinishedAt: 2026-08-04 00:15:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*fc1be9d4-891b-425f-a617-1af101ae3b69,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*83e3ee82-bd39-4442-b3f6-9efbac5e84b0,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-workflows4r6c/series-workflows4r6c-build-action-1108958359/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-workflows4r6c/series-workflows4r6c-build-action-1587547240/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 21:10:44 +0000 UTC FinishedAt: 2026-08-03 21:10:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 21:10:44 +0000 UTC FinishedAt: 2026-08-03 21:10:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflows4r6c/series-workflows4r6c-convert-artifact-1266082229/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 21:10:44 +0000 UTC FinishedAt: 2026-08-03 21:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 21:10:44 +0000 UTC FinishedAt: 2026-08-03 21:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 21:10:45 +0000 UTC FinishedAt: 2026-08-03 21:10:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 21:10:55 +0000 UTC FinishedAt: 2026-08-04 00:15:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflows4r6c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_orphan_cleanup","ext4_orphan_file_empty"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"e072f0a5-9159-4db2-a855-d0a1c3140142","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 21:10:55 +0000 UTC FinishedAt: 2026-08-04 00:15:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fc1be9d4-891b-425f-a617-1af101ae3b69,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*83e3ee82-bd39-4442-b3f6-9efbac5e84b0,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-workflows4r6c/series-workflows4r6c-build-action-1108958359/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-workflows4r6c/series-workflows4r6c-build-action-1587547240/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-workflows4r6c/series-workflows4r6c-convert-artifact-1266082229/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,}