Name: series-workflowp8glt Phase: Succeeded StartedAt: 2026-07-14 10:01:08 +0000 UTC FinishedAt: 2026-07-14 15:09:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[0] Phase: Succeeded StartedAt: 2026-07-14 10:01:08 +0000 UTC FinishedAt: 2026-07-14 10:20:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 10:01:08 +0000 UTC FinishedAt: 2026-07-14 10:20:00 +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": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_IO_URING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_IO_URING" ], "series_id": "bd7f062a-45e6-4f13-86fd-7ea659f73709" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "fuse_uring_task_to_queue", "fuse_uring_queue_fuse_req", "fuse_uring_queue_bq_req", "fuse_uring_find_avail_queue" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfSU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUmIzM0OywKICAgICYjMzQ7ZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcSYjMzQ7LAogICAgJiMzNDtmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcSYjMzQ7LAogICAgJiMzNDtmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZVU0UgaW8tdXJpbmcgY29tbXVuaWNhdGlvbiBsb2dpYyB0byBmaW5kIGFuIGF2YWlsYWJsZSBxdWV1ZSB3aGVuIHRoZSBjdXJyZW50IHRhc2smIzM5O3MgcXVldWUgaGFzIG5vIGF2YWlsYWJsZSBlbnRyaWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEZVU0Ugc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgdXNpbmcgRlVTRSBvdmVyIGlvLXVyaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjY3NWFhYjQ0Mjk2YTBlNDYxZjhiYjhkY2ZmNzQzNWM3ZjY2ODFhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDEwOjE4OjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2X3VyaW5nLmMgYi9mcy9mdXNlL2Rldl91cmluZy5jXG5pbmRleCA3N2M4Y2VjNDNkOWM2NS4uYzM2NDM4ZTc5ZjhkMTYgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2Rldl91cmluZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2Rldl91cmluZy5jXG5AQCAtMTEsNiAmIzQzOzExLDcgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW9fdXJpbmcvY21kLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdG9wb2xvZ3kuaFx1MDAzZVxuIFxuIHN0YXRpYyBib29sIF9fcmVhZF9tb3N0bHkgZW5hYmxlX3VyaW5nO1xuIG1vZHVsZV9wYXJhbShlbmFibGVfdXJpbmcsIGJvb2wsIDA2NDQpO1xuQEAgLTEzMTgsMTAgJiM0MzsxMzE5LDQ2IEBAIHN0YXRpYyB2b2lkIGZ1c2VfdXJpbmdfc2VuZF9pbl90YXNrKHN0cnVjdCBpb190d19yZXEgdHdfcmVxLCBpb190d190b2tlbl90IHR3KVxuIFx0fVxuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBib29sIGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpxdWV1ZSlcbiYjNDM7e1xuJiM0MztcdGJvb2wgaGFzO1xuJiM0MztcbiYjNDM7XHRpZiAoIXF1ZXVlKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRzcGluX2xvY2soXHUwMDI2cXVldWUtXHUwMDNlbG9jayk7XG4mIzQzO1x0aGFzID0gIWxpc3RfZW1wdHkoXHUwMDI2cXVldWUtXHUwMDNlZW50X2F2YWlsX3F1ZXVlKTtcbiYjNDM7XHRzcGluX3VubG9jayhcdTAwMjZxdWV1ZS1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGhhcztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBmdXNlX3JpbmdfcXVldWUgKlxuJiM0MztmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZywgaW50IG5vZGUsIHVuc2lnbmVkIGludCBza2lwKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgaW50IGk7XG4mIzQzO1x0c3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqcXVldWU7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHJpbmctXHUwMDNlbnJfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuJiM0MztcbiYjNDM7XHRcdGlmIChpID09IHNraXApXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0aWYgKG5vZGUgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiBjcHVfdG9fbm9kZShpKSAhPSBub2RlKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRxdWV1ZSA9IHJpbmctXHUwMDNlcXVldWVzW2ldO1xuJiM0MztcdFx0aWYgKGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChxdWV1ZSkpXG4mIzQzO1x0XHRcdHJldHVybiBxdWV1ZTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZylcbiB7XG4gXHR1bnNpZ25lZCBpbnQgcWlkO1xuIFx0c3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqcXVldWU7XG4mIzQzO1x0aW50IG5vZGU7XG4gXG4gXHRxaWQgPSB0YXNrX2NwdShjdXJyZW50KTtcbiBcbkBAIC0xMzMxLDcgJiM0MzsxMzY4LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZylcbiBcdFx0cWlkID0gMDtcbiBcbiBcdHF1ZXVlID0gcmluZy1cdTAwM2VxdWV1ZXNbcWlkXTtcbi1cdFdBUk5fT05DRSghcXVldWUsIFwmIzM0O01pc3NpbmcgcXVldWUgZm9yIHFpZCAlZFxcblwmIzM0OywgcWlkKTtcbiYjNDM7XHRpZiAoZnVzZV91cmluZ19xdWV1ZV9oYXNfYXZhaWxfZW50KHF1ZXVlKSlcbiYjNDM7XHRcdHJldHVybiBxdWV1ZTtcbiYjNDM7XG4mIzQzO1x0bm9kZSA9IGNwdV90b19ub2RlKHFpZCk7XG4mIzQzO1x0cXVldWUgPSBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWUocmluZywgbm9kZSwgcWlkKTtcbiYjNDM7XHRpZiAoIXF1ZXVlKSB7XG4mIzQzO1x0XHRxdWV1ZSA9IHJpbmctXHUwMDNlcXVldWVzW3FpZF07XG4mIzQzO1x0XHRXQVJOX09OQ0UoIXF1ZXVlLCBcJiMzNDtNaXNzaW5nIHF1ZXVlIGZvciBxaWQgJWRcXG5cJiMzNDssIHFpZCk7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIHF1ZXVlO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDoxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlJiMzNDssCiAgICAmIzM0O2Z1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXEmIzM0OywKICAgICYjMzQ7ZnVzZV91cmluZ19xdWV1ZV9icV9yZXEmIzM0OywKICAgICYjMzQ7ZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGVVNFIGlvLXVyaW5nIGNvbW11bmljYXRpb24gbG9naWMgdG8gZmluZCBhbiBhdmFpbGFibGUgcXVldWUgd2hlbiB0aGUgY3VycmVudCB0YXNrJiMzOTtzIHF1ZXVlIGhhcyBubyBhdmFpbGFibGUgZW50cmllcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBGVVNFIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IHVzaW5nIEZVU0Ugb3ZlciBpby11cmluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjY3NWFhYjQ0Mjk2YTBlNDYxZjhiYjhkY2ZmNzQzNWM3ZjY2ODFhNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDEwOjE4OjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9kZXZfdXJpbmcuYyBiL2ZzL2Z1c2UvZGV2X3VyaW5nLmMKaW5kZXggNzdjOGNlYzQzZDljNjUuLmMzNjQzOGU3OWY4ZDE2IDEwMDY0NAotLS0gYS9mcy9mdXNlL2Rldl91cmluZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZGV2X3VyaW5nLmMKQEAgLTExLDYgJiM0MzsxMSw3IEBACiAKICNpbmNsdWRlICZsdDtsaW51eC9mcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2lvX3VyaW5nL2NtZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90b3BvbG9neS5oJmd0OwogCiBzdGF0aWMgYm9vbCBfX3JlYWRfbW9zdGx5IGVuYWJsZV91cmluZzsKIG1vZHVsZV9wYXJhbShlbmFibGVfdXJpbmcsIGJvb2wsIDA2NDQpOwpAQCAtMTMxOCwxMCAmIzQzOzEzMTksNDYgQEAgc3RhdGljIHZvaWQgZnVzZV91cmluZ19zZW5kX2luX3Rhc2soc3RydWN0IGlvX3R3X3JlcSB0d19yZXEsIGlvX3R3X3Rva2VuX3QgdHcpCiAJfQogfQogCiYjNDM7c3RhdGljIGlubGluZSBib29sIGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpxdWV1ZSkKJiM0Mzt7CiYjNDM7CWJvb2wgaGFzOwomIzQzOwomIzQzOwlpZiAoIXF1ZXVlKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlzcGluX2xvY2soJmFtcDtxdWV1ZS0mZ3Q7bG9jayk7CiYjNDM7CWhhcyA9ICFsaXN0X2VtcHR5KCZhbXA7cXVldWUtJmd0O2VudF9hdmFpbF9xdWV1ZSk7CiYjNDM7CXNwaW5fdW5sb2NrKCZhbXA7cXVldWUtJmd0O2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gaGFzOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqCiYjNDM7ZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlKHN0cnVjdCBmdXNlX3JpbmcgKnJpbmcsIGludCBub2RlLCB1bnNpZ25lZCBpbnQgc2tpcCkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBpOwomIzQzOwlzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpxdWV1ZTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IHJpbmctJmd0O25yX3F1ZXVlczsgaSYjNDM7JiM0MzspIHsKJiM0MzsKJiM0MzsJCWlmIChpID09IHNraXApCiYjNDM7CQkJY29udGludWU7CiYjNDM7CQlpZiAobm9kZSAmZ3Q7PSAwICZhbXA7JmFtcDsgY3B1X3RvX25vZGUoaSkgIT0gbm9kZSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCXF1ZXVlID0gcmluZy0mZ3Q7cXVldWVzW2ldOwomIzQzOwkJaWYgKGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChxdWV1ZSkpCiYjNDM7CQkJcmV0dXJuIHF1ZXVlOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBOVUxMOwomIzQzO30KJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZykKIHsKIAl1bnNpZ25lZCBpbnQgcWlkOwogCXN0cnVjdCBmdXNlX3JpbmdfcXVldWUgKnF1ZXVlOwomIzQzOwlpbnQgbm9kZTsKIAogCXFpZCA9IHRhc2tfY3B1KGN1cnJlbnQpOwogCkBAIC0xMzMxLDcgJiM0MzsxMzY4LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZykKIAkJcWlkID0gMDsKIAogCXF1ZXVlID0gcmluZy0mZ3Q7cXVldWVzW3FpZF07Ci0JV0FSTl9PTkNFKCFxdWV1ZSwgJiMzNDtNaXNzaW5nIHF1ZXVlIGZvciBxaWQgJWRcbiYjMzQ7LCBxaWQpOwomIzQzOwlpZiAoZnVzZV91cmluZ19xdWV1ZV9oYXNfYXZhaWxfZW50KHF1ZXVlKSkKJiM0MzsJCXJldHVybiBxdWV1ZTsKJiM0MzsKJiM0MzsJbm9kZSA9IGNwdV90b19ub2RlKHFpZCk7CiYjNDM7CXF1ZXVlID0gZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlKHJpbmcsIG5vZGUsIHFpZCk7CiYjNDM7CWlmICghcXVldWUpIHsKJiM0MzsJCXF1ZXVlID0gcmluZy0mZ3Q7cXVldWVzW3FpZF07CiYjNDM7CQlXQVJOX09OQ0UoIXF1ZXVlLCAmIzM0O01pc3NpbmcgcXVldWUgZm9yIHFpZCAlZFxuJiMzNDssIHFpZCk7CiYjNDM7CX0KIAogCXJldHVybiBxdWV1ZTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZVU0UgZGV2X3VyaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYGZzL2Z1c2UvZGV2X3VyaW5nLmNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBjb250ZXh0LiBJcyB0aGlzIGNvZGUgZXZlbiBlbmFibGVkIGluIGEgc3RhbmRhcmQgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBjb250cm9sIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBmaWxlLiBLbm93aW5nIHRoYXQgd2lsbCBnaXZlIG1lIGEgZmlyc3QgaW5kaWNhdGlvbiBvZiBob3cgYnJvYWRseSBhcHBsaWNhYmxlIHRoaXMgY2hhbmdlIGlzLgoKU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggc2VlbXMgdG8gYWRkIHR3byBuZXcgZnVuY3Rpb25zOiBgZnVzZV91cmluZ19xdWV1ZV9oYXNfYXZhaWxfZW50YCBhbmQgYGZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZWAuIEludGVyZXN0aW5nLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGRldl91cmluZ2AgaXMgYWxsIGFib3V0IGFzeW5jaHJvbm91cyBJL08gYW5kIHVzZXItc3BhY2UgaW50ZXJhY3Rpb24uIFNvLCBteSBndXQgZmVlbGluZyBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBsaWtlbHkgZGVhbCB3aXRoIG1hbmFnaW5nIHRoZSBxdWV1ZXMgaW52b2x2ZWQgaW4gdGhhdCBhc3luY2hyb25vdXMgcHJvY2Vzc2luZy4gSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgKmhvdyogdGhlc2UgbmV3IGZ1bmN0aW9ucyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCBleGlzdGluZyBzdHJ1Y3R1cmVzLgoKVGhlIGtleSBtb2RpZmljYXRpb24gYXBwZWFycyB0byBiZSBpbiBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYC4gVGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB3ZSBsb2NhdGUgYSBxdWV1ZS4gU28sIGlmIHRoZSAmIzM0O2N1cnJlbnQmIzM0OyBxdWV1ZSBkb2VzbiYjMzk7dCBoYXZlIGF2YWlsYWJsZSBlbnRyaWVzLCB0aGVuIHRoaXMgY2hhbmdlIGlzIGludGVuZGVkIHRvIGZpbmQgYSAqZGlmZmVyZW50KiBxdWV1ZSB0aGF0IGRvZXMuIFRoaXMgaXMgcG90ZW50aWFsbHkgYW4gaW1wb3J0YW50IG9wdGltaXphdGlvbi4gSXQgaXMgZGVmaW5pdGVseSB3b3J0aCBleHBsb3Jpbmcgd2h5IHRoZSAmIzM0O2N1cnJlbnQgcXVldWUmIzM0OyBtaWdodCBiZSBmdWxsIGFuZCB3aGVuIHdlIG1pZ2h0IG5lZWQgdG8gZmluZCBhbiBhbHRlcm5hdGl2ZS4gSXMgdGhpcyBzb2x2aW5nIGEgcG90ZW50aWFsIGRlYWRsb2NrLCBsb2FkIGJhbGFuY2luZyBpc3N1ZSwgb3IganVzdCBpbXByb3ZpbmcgdGhyb3VnaHB1dD8gSSBoYXZlIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgc2VtYW50aWNzIG9mIHRoZSBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCBmdW5jdGlvbiBpdHNlbGYgdG8gdHJ1bHkgdW5kZXJzdGFuZCBob3cgdGhpcyBpcyB1c2VkIGFuZCBpbXByb3ZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kZXZfdXJpbmcuYz0xMzM3PWZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZShzdHJ1Y3QgZnVzZV9yaW5nICpyaW5nLCBpbnQgbm9kZSwgdW5zaWduZWQgaW50IHNraXApXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMzU2LVxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxMzU3OnN0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZylcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTM1OC17XG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYz0xMzkzPXZvaWQgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcShzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcSwgc3RydWN0IGZ1c2VfcmVxICpyZXEpXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xNDAwLVx0ZXJyID0gLUVJTlZBTDtcbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTQwMTpcdHF1ZXVlID0gZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlKHJpbmcpO1xuZnMvZnVzZS9kZXZfdXJpbmcuYy0xNDAyLVx0aWYgKCFxdWV1ZSlcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jPTE0MzU9Ym9vbCBmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcShzdHJ1Y3QgZnVzZV9yZXEgKnJlcSlcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jLTE0NDEtXG5mcy9mdXNlL2Rldl91cmluZy5jOjE0NDI6XHRxdWV1ZSA9IGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZShyaW5nKTtcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTQ0My1cdGlmICghcXVldWUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIxNQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKlRyYWNpbmcgdGhlIFBhdGggb2YgVXJpbmcgVGFza3MgaW4gRlVTRSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIEZVU0UgcmVxdWVzdHMgYXJlIGhhbmRsZWQgd2l0aGluIHRoZSB1cmluZyBmcmFtZXdvcmsuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZWAgZnVuY3Rpb25zLiBJIGtub3cgaXQmIzM5O3MgY2FsbGVkIGZyb20gYm90aCBgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcWAgYW5kIGBmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcWAuIFRoYXQgdGVsbHMgbWUgdGhlc2UgYXJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgcXVldWluZyByZXF1ZXN0cyB0byBiZSBwcm9jZXNzZWQgd2l0aCB1cmluZy4gTm93LCBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGNhbiBmaW5kIHRoZSBjb2RlIGZvciBgZGV2X3VyaW5nLmNgLiBNeSBodW5jaCBpcyBpdCYjMzk7cyBlaXRoZXIgZ29pbmcgdG8gYmUgZGVmaW5lZCBpbiBgZnMvZnVzZS9LY29uZmlnYCB3aGljaCB3b3VsZCBhbGxvdyBtZSB0byBrbm93IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBvciBgZnMvZnVzZS9NYWtlZmlsZWAgd2lsbCBwcm9iYWJseSBiZSBteSBiZXN0IGJldCB0byBmaW5kIHRoZSBmaWxlIG9yIHdoZXJlIHRoZSBzeW1ib2wgaXMgZGVmaW5lZC4gSSYjMzk7bGwgc3RhcnQgdGhlcmUuIEtub3dpbmcgdGhpcyBsb2NhdGlvbiB3aWxsIGFsbG93IG1lIHRvIGludmVzdGlnYXRlIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBob3cgdGhlc2UgdGFza3MgYXJlIGludGVncmF0ZWQgaW50byB0aGUgdXJpbmcgcXVldWUsIGxpa2UgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkLCB0aGUgc2NoZWR1bGluZyBtZWNoYW5pc21zIGludm9sdmVkLCBhbmQgcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2X3VyaW5nJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9NYWtlZmlsZT0xOT1mdXNlLSQoQ09ORklHX1NZU0NUTCkgJiM0Mzs9IHN5c2N0bC5vXG5mcy9mdXNlL01ha2VmaWxlOjIwOmZ1c2UtJChDT05GSUdfRlVTRV9JT19VUklORykgJiM0Mzs9IGRldl91cmluZy5vXG5mcy9mdXNlL01ha2VmaWxlLTIxLVxuLS1cbmZzL2Z1c2UvZGV2LmMtOC0jaW5jbHVkZSBcJiMzNDthcmdzLmhcJiMzNDtcbmZzL2Z1c2UvZGV2LmM6OTojaW5jbHVkZSBcJiMzNDtkZXZfdXJpbmdfaS5oXCYjMzQ7XG5mcy9mdXNlL2Rldi5jLTEwLVxuLS1cbmZzL2Z1c2UvZGV2X3VyaW5nLmMtOC0jaW5jbHVkZSBcJiMzNDthcmdzLmhcJiMzNDtcbmZzL2Z1c2UvZGV2X3VyaW5nLmM6OTojaW5jbHVkZSBcJiMzNDtkZXZfdXJpbmdfaS5oXCYjMzQ7XG5mcy9mdXNlL2Rldl91cmluZy5jLTEwLSNpbmNsdWRlIFwmIzM0O2Z1c2VfdHJhY2UuaFwmIzM0O1xuLS1cbmZzL2Z1c2UvcmVxX3RpbWVvdXQuYy01LSNpbmNsdWRlIFwmIzM0O2Z1c2VfZGV2X2kuaFwmIzM0O1xuZnMvZnVzZS9yZXFfdGltZW91dC5jOjY6I2luY2x1ZGUgXCYjMzQ7ZGV2X3VyaW5nX2kuaFwmIzM0O1xuZnMvZnVzZS9yZXFfdGltZW91dC5jLTctXG4tLVxuZnMvZnVzZS90cmFjZS5jLTUtICovXG5mcy9mdXNlL3RyYWNlLmM6NjojaW5jbHVkZSBcJiMzNDtkZXZfdXJpbmdfaS5oXCYjMzQ7XG5mcy9mdXNlL3RyYWNlLmMtNy0jaW5jbHVkZSBcJiMzNDtmdXNlX2kuaFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaGluZ2VzIG9uIHRoZSBgQ09ORklHX0ZVU0VfSU9fVVJJTkdgIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTXkgaW1tZWRpYXRlIHJlZmxleCBpcyB0byB2ZXJpZnkgaXRzIHByZXNlbmNlIGFuZCBhbnkgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMuIEdpdmVuIHRoYXQgaXQmIzM5O3MgcmVsYXRlZCB0byBGVVNFIGFuZCBpb191cmluZywgSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIGl0cyBhdmFpbGFiaWxpdHkuIE15IHN0YXJ0aW5nIHBvaW50IHdpbGwgYmUgYGZzL2Z1c2UvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBGVVNFLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBnZW5lcmFsbHkgaG91c2VkLCBzbyBpdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBsb29rIGZvciBkZXRhaWxzIG9uIGBGVVNFX0lPX1VSSU5HYC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBpdHMgc3ltYm9sIGFuZCBhbnkgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdCBzdGF0ZXMgdG8gZGV0ZXJtaW5lIGlmIGFueSBvZiB0aGVzZSBhcmUgdGhlIGNhdXNlLCBhcyB3ZWxsIGFzIGNvbmZpcm0gaWYgaXQmIzM5O3MgYWxyZWFkeSBlbmFibGVkIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gb3IgbmVlZHMgdG8gYmUgZW5hYmxlZC4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0ZVU0VfSU9fVVJJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWc9NTc9Y29uZmlnIEZVU0VfUEFTU1RIUk9VR0hcbi0tXG5mcy9mdXNlL0tjb25maWctNjctXG5mcy9mdXNlL0tjb25maWc6Njg6Y29uZmlnIEZVU0VfSU9fVVJJTkdcbmZzL2Z1c2UvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7RlVTRSBjb21tdW5pY2F0aW9uIG92ZXIgaW8tdXJpbmdcJiMzNDtcbi0tXG5mcy9mdXNlL01ha2VmaWxlPTE5PWZ1c2UtJChDT05GSUdfU1lTQ1RMKSAmIzQzOz0gc3lzY3RsLm9cbmZzL2Z1c2UvTWFrZWZpbGU6MjA6ZnVzZS0kKENPTkZJR19GVVNFX0lPX1VSSU5HKSAmIzQzOz0gZGV2X3VyaW5nLm9cbmZzL2Z1c2UvTWFrZWZpbGUtMjEtXG4tLVxuZnMvZnVzZS9kZXYuYz04MDk9c3NpemVfdCBmdXNlX2NoYW5fc2VuZChzdHJ1Y3QgZnVzZV9jaGFuICpmY2gsIHN0cnVjdCBmdXNlX2FyZ3MgKmFyZ3MpXG4tLVxuZnMvZnVzZS9kZXYuYy04NDMtXG5mcy9mdXNlL2Rldi5jOjg0NDojaWZkZWYgQ09ORklHX0ZVU0VfSU9fVVJJTkdcbmZzL2Z1c2UvZGV2LmMtODQ1LXN0YXRpYyBib29sIGZ1c2VfcmVxdWVzdF9xdWV1ZV9iYWNrZ3JvdW5kX3VyaW5nKHN0cnVjdCBmdXNlX3JlcSAqcmVxKVxuLS1cbmZzL2Z1c2UvZGV2LmM9ODYxPXN0YXRpYyBpbnQgZnVzZV9yZXF1ZXN0X3F1ZXVlX2JhY2tncm91bmQoc3RydWN0IGZ1c2VfcmVxICpyZXEpXG4tLVxuZnMvZnVzZS9kZXYuYy04NzItXG5mcy9mdXNlL2Rldi5jOjg3MzojaWZkZWYgQ09ORklHX0ZVU0VfSU9fVVJJTkdcbmZzL2Z1c2UvZGV2LmMtODc0LVx0aWYgKGZ1c2VfdXJpbmdfcmVhZHkoZmNoKSlcbi0tXG5mcy9mdXNlL2Rldi5jPTIzNzg9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuLS1cbmZzL2Z1c2UvZGV2LmMtMjM4OS1cdC5jb21wYXRfaW9jdGwgICA9IGNvbXBhdF9wdHJfaW9jdGwsXG5mcy9mdXNlL2Rldi5jOjIzOTA6I2lmZGVmIENPTkZJR19GVVNFX0lPX1VSSU5HXG5mcy9mdXNlL2Rldi5jLTIzOTEtXHQudXJpbmdfY21kXHQ9IGZ1c2VfdXJpbmdfY21kLFxuLS1cbmZzL2Z1c2UvZGV2Lmg9OTQ9dm9pZCBmdXNlX2NvcHlfZmluaXNoKHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgKmNzKTtcbmZzL2Z1c2UvZGV2LmgtOTUtXG5mcy9mdXNlL2Rldi5oOjk2OiNpZmRlZiBDT05GSUdfRlVTRV9JT19VUklOR1xuZnMvZnVzZS9kZXYuaC05Ny1ib29sIGZ1c2VfdXJpbmdfZW5hYmxlZCh2b2lkKTtcbmZzL2Z1c2UvZGV2Lmg9OTg9dm9pZCBmdXNlX3VyaW5nX2Rlc3RydWN0KHN0cnVjdCBmdXNlX2NoYW4gKmZjaCk7XG5mcy9mdXNlL2Rldi5oOjk5OiNlbHNlIC8qIENPTkZJR19GVVNFX0lPX1VSSU5HICovXG5mcy9mdXNlL2Rldi5oLTEwMC1zdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19lbmFibGVkKHZvaWQpXG4tLVxuZnMvZnVzZS9kZXYuaD0xMDU9c3RhdGljIGlubGluZSB2b2lkIGZ1c2VfdXJpbmdfZGVzdHJ1Y3Qoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuLS1cbmZzL2Z1c2UvZGV2LmgtMTA3LX1cbmZzL2Z1c2UvZGV2Lmg6MTA4OiNlbmRpZiAvKiBDT05GSUdfRlVTRV9JT19VUklORyAqL1xuZnMvZnVzZS9kZXYuaC0xMDktXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYz0xMjE4PWludCBmdXNlX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jLTEyNTktXHRzd2l0Y2ggKGNtZF9vcCkge1xuZnMvZnVzZS9kZXZfdXJpbmcuYzoxMjYwOlx0Y2FzZSBGVVNFX0lPX1VSSU5HX0NNRF9SRUdJU1RFUjpcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI2MS1cdFx0ZXJyID0gZnVzZV91cmluZ19yZWdpc3RlcihjbWQsIGlzc3VlX2ZsYWdzLCBmY2gpO1xuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjYyLVx0XHRpZiAoZXJyKSB7XG5mcy9mdXNlL2Rldl91cmluZy5jOjEyNjM6XHRcdFx0cHJfaW5mb19vbmNlKFwmIzM0O0ZVU0VfSU9fVVJJTkdfQ01EX1JFR0lTVEVSIGZhaWxlZCBlcnI9JWRcXG5cJiMzNDssXG5mcy9mdXNlL2Rldl91cmluZy5jLTEyNjQtXHRcdFx0XHQgICAgIGVycik7XG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjY5LVx0XHRicmVhaztcbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTI3MDpcdGNhc2UgRlVTRV9JT19VUklOR19DTURfQ09NTUlUX0FORF9GRVRDSDpcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI3MS1cdFx0ZXJyID0gZnVzZV91cmluZ19jb21taXRfZmV0Y2goY21kLCBpc3N1ZV9mbGFncywgZmNoKTtcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI3Mi1cdFx0aWYgKGVycikge1xuZnMvZnVzZS9kZXZfdXJpbmcuYzoxMjczOlx0XHRcdHByX2luZm9fb25jZShcJiMzNDtGVVNFX0lPX1VSSU5HX0NPTU1JVF9BTkRfRkVUQ0ggZmFpbGVkIGVycj0lZFxcblwmIzM0OyxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI3NC1cdFx0XHRcdCAgICAgZXJyKTtcbi0tXG5mcy9mdXNlL2Rldl91cmluZ19pLmgtMTEtXG5mcy9mdXNlL2Rldl91cmluZ19pLmg6MTI6I2lmZGVmIENPTkZJR19GVVNFX0lPX1VSSU5HXG5mcy9mdXNlL2Rldl91cmluZ19pLmgtMTMtXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oPTE2OD1zdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19yZWFkeShzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oLTE3NC1cbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaDoxNzU6I2Vsc2UgLyogQ09ORklHX0ZVU0VfSU9fVVJJTkcgKi9cbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaC0xNzYtXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oPTE5NT1zdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19yZXF1ZXN0X2V4cGlyZWQoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuLS1cbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaC0xOTktXG5mcy9mdXNlL2Rldl91cmluZ19pLmg6MjAwOiNlbmRpZiAvKiBDT05GSUdfRlVTRV9JT19VUklORyAqL1xuZnMvZnVzZS9kZXZfdXJpbmdfaS5oLTIwMS1cbi0tXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaD02NT1zdHJ1Y3QgZnVzZV9yZXEge1xuLS1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTEwOS1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjExMDojaWZkZWYgQ09ORklHX0ZVU0VfSU9fVVJJTkdcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTExMS1cdHZvaWQgKnJpbmdfZW50cnk7XG4tLVxuZnMvZnVzZS9mdXNlX2Rldl9pLmg9MTkwPXN0cnVjdCBmdXNlX2NoYW4ge1xuLS1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTI2Mi1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjI2MzojaWZkZWYgQ09ORklHX0ZVU0VfSU9fVVJJTkdcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTI2NC1cdC8qKiAgdXJpbmcgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY1MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgRlVTRV9JT19VUklORyBDb25maWd1cmF0aW9uIGFuZCBQYXRjaCoqCgpSaWdodCwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGBGVVNFX0lPX1VSSU5HYCBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBpbXBhY3Qgb2YgdGhpcyBzcGVjaWZpYyBwYXRjaC4gSXQgYXBwZWFycyB0byBiZSB6ZXJvaW5nIGluIG9uIGBmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVgLCB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0IGxpbmtzIHRhc2tzIHRvIHRoZSBJL08gcXVldWUuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBhcmVhLCBhcyBhbnkgY2hhbmdlIHRoZXJlIGlzIHByZXR0eSBmdW5kYW1lbnRhbC4KCk5vdywgbXkgbWluZCYjMzk7cyBpbW1lZGlhdGVseSBnb2luZyB0byB0cmFjZSB3aGVyZSBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCBpcyB1c2VkLiBUaGUgbm90ZXMgY2xlYXJseSBzdGF0ZSBpdCYjMzk7cyBlbXBsb3llZCB3aXRoaW4gYm90aCBgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcWAgYW5kIGBmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcWAuIE9rYXksIG1ha2VzIHNlbnNlLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgcXVldWluZyBkaWZmZXJlbnQgdHlwZXMgb2YgcmVxdWVzdHMuIFRpbWUgdG8gZGlnIGludG8gdGhvc2UgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBtb2RpZmljYXRpb24gdG8gYGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZWAgaXMgY2hhbmdpbmcgdGhlIHF1ZXVlaW5nIGJlaGF2aW9yIGZvciBib3RoIHN0YW5kYXJkIEZVU0UgcmVxdWVzdHMgYW5kIGJsb2NrLWxheWVyIHJlcXVlc3RzLiBUaGlzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgaW1wbGljYXRpb25zIG9mIHRoZSBwYXRjaC4gSSYjMzk7bGwgbmVlZCB0byBhbmFseXplIHRoZSBkYXRhIHN0cnVjdHVyZXMsIHRoZSBsb2NraW5nLCBhbmQgdGhlIHBvdGVudGlhbCBwZXJmb3JtYW5jZSByYW1pZmljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kZXZfdXJpbmcuYz0xMzg0PXN0YXRpYyB2b2lkIGZ1c2VfdXJpbmdfZGlzcGF0Y2hfZW50KHN0cnVjdCBmdXNlX3JpbmdfZW50ICplbnQpXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMzkyLS8qIHF1ZXVlIGEgZnVzZSByZXF1ZXN0IGFuZCBzZW5kIGl0IGlmIGEgcmluZyBlbnRyeSBpcyBhdmFpbGFibGUgKi9cbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTM5Mzp2b2lkIGZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXEoc3RydWN0IGZ1c2VfaXF1ZXVlICpmaXEsIHN0cnVjdCBmdXNlX3JlcSAqcmVxKVxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMzk0LXtcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jPTE0OTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmdXNlX2lxdWV1ZV9vcHMgZnVzZV9pb191cmluZ19vcHMgPSB7XG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xNDk5LVx0LnNlbmRfaW50ZXJydXB0ID0gZnVzZV9kZXZfcXVldWVfaW50ZXJydXB0LFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxNTAwOlx0LnNlbmRfcmVxID0gZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcSxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTUwMS19O1xuLS1cbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaD0xNDA9aW50IGZ1c2VfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaDoxNDE6dm9pZCBmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxKHN0cnVjdCBmdXNlX2lxdWV1ZSAqZmlxLCBzdHJ1Y3QgZnVzZV9yZXEgKnJlcSk7XG5mcy9mdXNlL2Rldl91cmluZ19pLmgtMTQyLWJvb2wgZnVzZV91cmluZ19xdWV1ZV9icV9yZXEoc3RydWN0IGZ1c2VfcmVxICpyZXEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDEzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRlVTRSBpb191cmluZyBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcWAgZnVuY3Rpb24gYW5kIGhvdyBpdCByZWxhdGVzIHRvIGBmdXNlX2lvX3VyaW5nX29wcy5zZW5kX3JlcWAuIFRoZSBjb25uZWN0aW9uIHNlZW1zIGNsZWFyOyBpdCBzaG91bGQgYmUgZGlyZWN0bHkgcmVhY2hhYmxlIGFuZCBvcGVyYXRpbmcgYXMgZXhwZWN0ZWQuIFRoZSBwYXRjaCBhZGRzIHNvbWV0aGluZyBhYm91dCBmaW5kaW5nIGFuIGF2YWlsYWJsZSBxdWV1ZSB3aGVuIHRoZSBjdXJyZW50IG9uZSBpcyBmdWxsLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2UgZnVuY3Rpb25zOiBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCwgYGZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXFgLCBgZnVzZV91cmluZ19xdWV1ZV9icV9yZXFgLCBhbmQgYGZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZWAuIFRoZXNlIHNlZW0gY2VudHJhbCB0byB0aGUgbmV3IGxvZ2ljLgoKTGV0IG1lIHF1aWNrbHkgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIFJpZ2h0LCBgRlVTRV9JT19VUklOR2AgaXMgdGhlIGtleSBjb25maWcgaGVyZS4gTm93LCB3aGVyZSBpcyB0aGF0IGRlZmluZWQ/IEFoLCBpdCYjMzk7cyBpbiBgZnMvZnVzZS9LY29uZmlnYC4gRXhjZWxsZW50LiBJcyB0aGVyZSBhbnl0aGluZyB0aGF0IGRlcGVuZHMgb24gYEZVU0VfSU9fVVJJTkdgPyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0IHNhbWUgYGZzL2Z1c2UvS2NvbmZpZ2AgZmlsZSBmb3IgYW55IGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZVU0VfSU9fVVJJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWc9NTc9Y29uZmlnIEZVU0VfUEFTU1RIUk9VR0hcbi0tXG5mcy9mdXNlL0tjb25maWctNjctXG5mcy9mdXNlL0tjb25maWc6Njg6Y29uZmlnIEZVU0VfSU9fVVJJTkdcbmZzL2Z1c2UvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7RlVTRSBjb21tdW5pY2F0aW9uIG92ZXIgaW8tdXJpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk0OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gRlVTRSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBgZnMvZnVzZS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNjguIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBmb3IgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiByZWxhdGVkIHRvIEZVU0UuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgc29tZXRoaW5nIGZ1bmRhbWVudGFsLCBtYXliZSByZWxhdGVkIHRvIGRldmljZSBzdXBwb3J0LCBzcGVjaWZpYyBmZWF0dXJlcywgb3IgZGVmYXVsdCBiZWhhdmlvci4gS25vd2luZyB0aGUgS2NvbmZpZyBzeW50YXgsIHRoZSBzdHJ1Y3R1cmUgYXJvdW5kIHRoaXMgbGluZSB3aWxsIGxpa2VseSBpbnZvbHZlIGEgYGNvbmZpZ2AgYmxvY2sgZGVmaW5pbmcgYSBib29sZWFuIG9yIHRyaXN0YXRlIHN5bWJvbC4gSeKAmW0gYW50aWNpcGF0aW5nIGEgZGVzY3JpcHRpb24sIHRoZSBgaGVscGAgdGV4dCwgYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdCB2YWx1ZXMuIE15IGJyYWluJiMzOTtzIGFscmVhZHkgcHJlLWxvYWRpbmcgdGhlIHJlbGV2YW50IGtlcm5lbCBidWlsZCBzeXN0ZW0ga25vd2xlZGdlIHRvIGludGVycHJldCB0aGUgY29udGV4dC4gRGVwZW5kaW5nIG9uIHdoYXQmIzM5O3MgdGhlcmUsIG15IG5leHQgc3RlcHMgY291bGQgcmFuZ2UgZnJvbSBhbmFseXppbmcgdGhlIGRlcGVuZGVuY2llcyB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhpcyBvcHRpb24sIHRvIGNoZWNraW5nIHRoZSBjb2RlIHRoYXQgY29uc3VtZXMgdGhpcyBLY29uZmlnIHN5bWJvbCwgb3IgZGV0ZXJtaW5pbmcgdGhlIGltcGxpY2F0aW9ucyBmb3IgZXhpc3RpbmcgRlVTRSBjb25maWd1cmF0aW9ucy4gVGhlIGxpbmUgbnVtYmVyIGlzIG15IGluaXRpYWwgZW50cnkgcG9pbnQsIEnigJltIHJlYWR5IHRvIHF1aWNrbHkgYnJhbmNoIG91dCBhbmQgZXhwbG9yZSBhZGphY2VudCBsaW5lcyBpZiBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0aGUgb3B0aW9uJiMzOTtzIHBsYWNlIGluIHRoZSBsYXJnZXIgRlVTRSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDUwOlx0XHRoZWxwXG4gIDUxOlx0XHQgIFRoaXMgYWxsb3dzIGJ5cGFzc2luZyBndWVzdCBwYWdlIGNhY2hlIGFuZCBhbGxvd3MgbWFwcGluZyBob3N0IHBhZ2VcbiAgNTI6XHRcdCAgY2FjaGUgZGlyZWN0bHkgaW4gZ3Vlc3QgYWRkcmVzcyBzcGFjZS5cbiAgNTM6XHRcbiAgNTQ6XHRcdCAgSWYgeW91IHdhbnQgdG8gYWxsb3cgbW91bnRpbmcgYSBWaXJ0aW8gRmlsZXN5c3RlbSB3aXRoIHRoZSBcJiMzNDtkYXhcJiMzNDtcbiAgNTU6XHRcdCAgb3B0aW9uLCBhbnN3ZXIgWS5cbiAgNTY6XHRcbiAgNTc6XHRjb25maWcgRlVTRV9QQVNTVEhST1VHSFxuICA1ODpcdFx0Ym9vbCBcJiMzNDtGVVNFIHBhc3N0aHJvdWdoIG9wZXJhdGlvbnMgc3VwcG9ydFwmIzM0O1xuICA1OTpcdFx0ZGVmYXVsdCB5XG4gIDYwOlx0XHRkZXBlbmRzIG9uIEZVU0VfRlNcbiAgNjE6XHRcdHNlbGVjdCBGU19TVEFDS1xuICA2MjpcdFx0aGVscFxuICA2MzpcdFx0ICBUaGlzIGFsbG93cyBieXBhc3NpbmcgRlVTRSBzZXJ2ZXIgYnkgbWFwcGluZyBzcGVjaWZpYyBGVVNFIG9wZXJhdGlvbnNcbiAgNjQ6XHRcdCAgdG8gYmUgcGVyZm9ybWVkIGRpcmVjdGx5IG9uIGEgYmFja2luZyBmaWxlLlxuICA2NTpcdFxuICA2NjpcdFx0ICBJZiB5b3Ugd2FudCB0byBhbGxvdyBwYXNzdGhyb3VnaCBvcGVyYXRpb25zLCBhbnN3ZXIgWS5cbiAgNjc6XHRcbiAgNjg6XHRjb25maWcgRlVTRV9JT19VUklOR1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtGVVNFIGNvbW11bmljYXRpb24gb3ZlciBpby11cmluZ1wmIzM0O1xuICA3MDpcdFx0ZGVmYXVsdCB5XG4gIDcxOlx0XHRkZXBlbmRzIG9uIEZVU0VfRlNcbiAgNzI6XHRcdGRlcGVuZHMgb24gSU9fVVJJTkdcbiAgNzM6XHRcdGhlbHBcbiAgNzQ6XHRcdCAgVGhpcyBhbGxvd3Mgc2VuZGluZyBGVVNFIHJlcXVlc3RzIG92ZXIgdGhlIGlvLXVyaW5nIGludGVyZmFjZSBhbmRcbiAgNzU6XHQgICAgICAgICAgYWxzbyBhZGRzIHJlcXVlc3QgY29yZSBhZmZpbml0eS5cbiAgNzY6XHRcbiAgNzc6XHRcdCAgSWYgeW91IHdhbnQgdG8gYWxsb3cgZnVzZSBzZXJ2ZXIvY2xpZW50IGNvbW11bmljYXRpb24gdGhyb3VnaCBpby11cmluZyxcbiAgNzg6XHRcdCAgYW5zd2VyIFlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYxNwoJCQkJCQkJb3V0cHV0OiAxMzcKCQkJCQkJCXRob3VnaHRzOiA5OTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGVVNFIElPX1VSSU5HIFBhdGNoIGZvciBTeXprYWxsZXIgQ292ZXJhZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYEZVU0VfSU9fVVJJTkdgIGNvbmZpZ3VyYXRpb24gYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBtb3N0IGVmZmVjdGl2ZSB3YXkgdG8gbGV2ZXJhZ2UgU3l6a2FsbGVyIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSBrZXkgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzLCBmdW5jdGlvbnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLgoKSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGEgZmV3IGZ1bmN0aW9ucy4gYGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZWAsIGBmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxYCwgYW5kIGBmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcWAgc2VlbSBsaWtlIHNvbGlkIGNhbmRpZGF0ZXMsIGJ1dCBsZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVgLiBJdCYjMzk7cyBgc3RhdGljYCwgd2hpY2ggbWlnaHQgbWFrZSBpdCB0cmlja2llciBmb3IgU3l6a2FsbGVyLCB0aG91Z2ggaXQgKmlzKiBwcmVzZW50IGluIHRoZSBkZWJ1ZyBpbmZvLiBBIHF1aWNrIGNoZWNrIGNvbmZpcm1zIGBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVgIGlzIGluZGVlZCBkZWZpbmVkIGluIGBmcy9mdXNlL2Rldl91cmluZy5jYCwgYXMgaXMgYGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZWAsIHNvIEkmIzM5O2xsIGluY2x1ZGUgaXQgaW4gdGhlIGxpc3Qgb2Ygc3ltYm9scyB0byBmb2N1cyBvbi4gU3l6a2FsbGVyICpjYW4qIHRhcmdldCBzdGF0aWMgZnVuY3Rpb25zIGlmIHRoZSBkZWJ1ZyBpbmZvIGlzIHRoZXJlLCB3aGljaCBpcyBoZWxwZnVsLgoKR2l2ZW4gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgcGF0Y2gsIGl0IHNlZW1zIGBmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxYCBhbmQgYGZ1c2VfdXJpbmdfcXVldWVfYnFfcmVxYCBhcmUgZ29vZCBlbnRyeSBwb2ludHMsIGFuZCBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCBpcyBhIGNyaXRpY2FsIHJvdXRpbmcgZnVuY3Rpb24uIEkmIzM5O2xsIHByb3ZpZGUgdGhvc2UgdG8gc3l6a2FsbGVyLCBhbmQgYWxzbyBpbmNsdWRlIGBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVgLgoKTm93LCByZWdhcmRpbmcgY29uZmlndXJhdGlvbnMsIGl0IHNlZW1zIGBGVVNFX0ZTYCBhbmQgYElPX1VSSU5HYCBhcmUgYWxyZWFkeSBlbmFibGVkIGJ5IGRlZmF1bHQuIFNvLCBgRlVTRV9JT19VUklOR2AgaXMgdGhlIG9ubHkgY29uZmlnIEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZS4KCkxldCYjMzk7cyByZXZpZXcgdGhlIHBhdGNoIGFnYWluIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNhcHR1cmluZyBldmVyeXRoaW5nLiBUaGUgYWRkZWQgY29kZSBpbmNsdWRlcyBhIGZ1bmN0aW9uIGBmdXNlX3VyaW5nX3F1ZXVlX2hhc19hdmFpbF9lbnRgLiBUaGUgbmV3IGNvZGUgbW9kaWZpZXMgYGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZWAgc3VjaCB0aGF0IGl0IHdpbGwgc2VhcmNoIGZvciBhbm90aGVyIGF2YWlsYWJsZSBxdWV1ZSBpZiB0aGUgaW5pdGlhbGx5IHNlbGVjdGVkIHF1ZXVlIGhhcyBubyBhdmFpbGFibGUgZW50cmllcy4gVGhpcyBsb29rcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUuCgpCYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTtsbCBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlJiMzNDssCiAgICAmIzM0O2Z1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXEmIzM0OywKICAgICYjMzQ7ZnVzZV91cmluZ19xdWV1ZV9icV9yZXEmIzM0OywKICAgICYjMzQ7ZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGVVNFIGlvLXVyaW5nIGNvbW11bmljYXRpb24gbG9naWMgdG8gZmluZCBhbiBhdmFpbGFibGUgcXVldWUgd2hlbiB0aGUgY3VycmVudCB0YXNrJiMzOTtzIHF1ZXVlIGhhcyBubyBhdmFpbGFibGUgZW50cmllcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBGVVNFIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IHVzaW5nIEZVU0Ugb3ZlciBpby11cmluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9JT19VUklORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2VfdXJpbmdfdGFza190b19xdWV1ZSYjMzQ7LAogICAgJiMzNDtmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxJiMzNDssCiAgICAmIzM0O2Z1c2VfdXJpbmdfcXVldWVfYnFfcmVxJiMzNDssCiAgICAmIzM0O2Z1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRlVTRSBpby11cmluZyBjb21tdW5pY2F0aW9uIGxvZ2ljIHRvIGZpbmQgYW4gYXZhaWxhYmxlIHF1ZXVlIHdoZW4gdGhlIGN1cnJlbnQgdGFzayYjMzk7cyBxdWV1ZSBoYXMgbm8gYXZhaWxhYmxlIGVudHJpZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgRlVTRSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCBieSB1c2luZyBGVVNFIG92ZXIgaW8tdXJpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDoxODo0NC44NTMzOTcwMjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTMyNzcyMzMxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0lPX1VSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlXCIsXG4gICAgXCJmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxXCIsXG4gICAgXCJmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcVwiLFxuICAgIFwiZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZVU0UgaW8tdXJpbmcgY29tbXVuaWNhdGlvbiBsb2dpYyB0byBmaW5kIGFuIGF2YWlsYWJsZSBxdWV1ZSB3aGVuIHRoZSBjdXJyZW50IHRhc2sncyBxdWV1ZSBoYXMgbm8gYXZhaWxhYmxlIGVudHJpZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgRlVTRSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCBieSB1c2luZyBGVVNFIG92ZXIgaW8tdXJpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE4OjQ0Ljg1MzQwMDkyNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4OTc0ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjY3NWFhYjQ0Mjk2YTBlNDYxZjhiYjhkY2ZmNzQzNWM3ZjY2ODFhNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAxMDoxODo0MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldl91cmluZy5jIGIvZnMvZnVzZS9kZXZfdXJpbmcuY1xcbmluZGV4IDc3YzhjZWM0M2Q5YzY1Li5jMzY0MzhlNzlmOGQxNiAxMDA2NDRcXG4tLS0gYS9mcy9mdXNlL2Rldl91cmluZy5jXFxuKysrIGIvZnMvZnVzZS9kZXZfdXJpbmcuY1xcbkBAIC0xMSw2ICsxMSw3IEBAXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvX3VyaW5nL2NtZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdG9wb2xvZ3kuaFxcdTAwM2VcXG4gXFxuIHN0YXRpYyBib29sIF9fcmVhZF9tb3N0bHkgZW5hYmxlX3VyaW5nO1xcbiBtb2R1bGVfcGFyYW0oZW5hYmxlX3VyaW5nLCBib29sLCAwNjQ0KTtcXG5AQCAtMTMxOCwxMCArMTMxOSw0NiBAQCBzdGF0aWMgdm9pZCBmdXNlX3VyaW5nX3NlbmRfaW5fdGFzayhzdHJ1Y3QgaW9fdHdfcmVxIHR3X3JlcSwgaW9fdHdfdG9rZW5fdCB0dylcXG4gXFx0fVxcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19xdWV1ZV9oYXNfYXZhaWxfZW50KHN0cnVjdCBmdXNlX3JpbmdfcXVldWUgKnF1ZXVlKVxcbit7XFxuK1xcdGJvb2wgaGFzO1xcbitcXG4rXFx0aWYgKCFxdWV1ZSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZxdWV1ZS1cXHUwMDNlbG9jayk7XFxuK1xcdGhhcyA9ICFsaXN0X2VtcHR5KFxcdTAwMjZxdWV1ZS1cXHUwMDNlZW50X2F2YWlsX3F1ZXVlKTtcXG4rXFx0c3Bpbl91bmxvY2soXFx1MDAyNnF1ZXVlLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdHJldHVybiBoYXM7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpcXG4rZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlKHN0cnVjdCBmdXNlX3JpbmcgKnJpbmcsIGludCBub2RlLCB1bnNpZ25lZCBpbnQgc2tpcClcXG4re1xcbitcXHR1bnNpZ25lZCBpbnQgaTtcXG4rXFx0c3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqcXVldWU7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcmluZy1cXHUwMDNlbnJfcXVldWVzOyBpKyspIHtcXG4rXFxuK1xcdFxcdGlmIChpID09IHNraXApXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRpZiAobm9kZSBcXHUwMDNlPSAwIFxcdTAwMjZcXHUwMDI2IGNwdV90b19ub2RlKGkpICE9IG5vZGUpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0cXVldWUgPSByaW5nLVxcdTAwM2VxdWV1ZXNbaV07XFxuK1xcdFxcdGlmIChmdXNlX3VyaW5nX3F1ZXVlX2hhc19hdmFpbF9lbnQocXVldWUpKVxcbitcXHRcXHRcXHRyZXR1cm4gcXVldWU7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBOVUxMO1xcbit9XFxuK1xcbiBzdGF0aWMgc3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlKHN0cnVjdCBmdXNlX3JpbmcgKnJpbmcpXFxuIHtcXG4gXFx0dW5zaWduZWQgaW50IHFpZDtcXG4gXFx0c3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqcXVldWU7XFxuK1xcdGludCBub2RlO1xcbiBcXG4gXFx0cWlkID0gdGFza19jcHUoY3VycmVudCk7XFxuIFxcbkBAIC0xMzMxLDcgKzEzNjgsMTUgQEAgc3RhdGljIHN0cnVjdCBmdXNlX3JpbmdfcXVldWUgKmZ1c2VfdXJpbmdfdGFza190b19xdWV1ZShzdHJ1Y3QgZnVzZV9yaW5nICpyaW5nKVxcbiBcXHRcXHRxaWQgPSAwO1xcbiBcXG4gXFx0cXVldWUgPSByaW5nLVxcdTAwM2VxdWV1ZXNbcWlkXTtcXG4tXFx0V0FSTl9PTkNFKCFxdWV1ZSwgXFxcIk1pc3NpbmcgcXVldWUgZm9yIHFpZCAlZFxcXFxuXFxcIiwgcWlkKTtcXG4rXFx0aWYgKGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChxdWV1ZSkpXFxuK1xcdFxcdHJldHVybiBxdWV1ZTtcXG4rXFxuK1xcdG5vZGUgPSBjcHVfdG9fbm9kZShxaWQpO1xcbitcXHRxdWV1ZSA9IGZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZShyaW5nLCBub2RlLCBxaWQpO1xcbitcXHRpZiAoIXF1ZXVlKSB7XFxuK1xcdFxcdHF1ZXVlID0gcmluZy1cXHUwMDNlcXVldWVzW3FpZF07XFxuK1xcdFxcdFdBUk5fT05DRSghcXVldWUsIFxcXCJNaXNzaW5nIHF1ZXVlIGZvciBxaWQgJWRcXFxcblxcXCIsIHFpZCk7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiBxdWV1ZTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDoxODo0NS4zMjMwMTE3OTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwODU4MDg0OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVcIixcbiAgICBcImZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXFcIixcbiAgICBcImZ1c2VfdXJpbmdfcXVldWVfYnFfcmVxXCIsXG4gICAgXCJmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRlVTRSBpby11cmluZyBjb21tdW5pY2F0aW9uIGxvZ2ljIHRvIGZpbmQgYW4gYXZhaWxhYmxlIHF1ZXVlIHdoZW4gdGhlIGN1cnJlbnQgdGFzaydzIHF1ZXVlIGhhcyBubyBhdmFpbGFibGUgZW50cmllcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBGVVNFIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IHVzaW5nIEZVU0Ugb3ZlciBpby11cmluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmNjc1YWFiNDQyOTZhMGU0NjFmOGJiOGRjZmY3NDM1YzdmNjY4MWE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTA6MTg6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldl91cmluZy5jIGIvZnMvZnVzZS9kZXZfdXJpbmcuY1xuaW5kZXggNzdjOGNlYzQzZDljNjUuLmMzNjQzOGU3OWY4ZDE2IDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9kZXZfdXJpbmcuY1xuKysrIGIvZnMvZnVzZS9kZXZfdXJpbmcuY1xuQEAgLTExLDYgKzExLDcgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW9fdXJpbmcvY21kLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90b3BvbG9neS5oXHUwMDNlXG4gXG4gc3RhdGljIGJvb2wgX19yZWFkX21vc3RseSBlbmFibGVfdXJpbmc7XG4gbW9kdWxlX3BhcmFtKGVuYWJsZV91cmluZywgYm9vbCwgMDY0NCk7XG5AQCAtMTMxOCwxMCArMTMxOSw0NiBAQCBzdGF0aWMgdm9pZCBmdXNlX3VyaW5nX3NlbmRfaW5fdGFzayhzdHJ1Y3QgaW9fdHdfcmVxIHR3X3JlcSwgaW9fdHdfdG9rZW5fdCB0dylcbiBcdH1cbiB9XG4gXG4rc3RhdGljIGlubGluZSBib29sIGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpxdWV1ZSlcbit7XG4rXHRib29sIGhhcztcbitcbitcdGlmICghcXVldWUpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdHNwaW5fbG9jayhcdTAwMjZxdWV1ZS1cdTAwM2Vsb2NrKTtcbitcdGhhcyA9ICFsaXN0X2VtcHR5KFx1MDAyNnF1ZXVlLVx1MDAzZWVudF9hdmFpbF9xdWV1ZSk7XG4rXHRzcGluX3VubG9jayhcdTAwMjZxdWV1ZS1cdTAwM2Vsb2NrKTtcbitcbitcdHJldHVybiBoYXM7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpcbitmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZywgaW50IG5vZGUsIHVuc2lnbmVkIGludCBza2lwKVxuK3tcbitcdHVuc2lnbmVkIGludCBpO1xuK1x0c3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqcXVldWU7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyByaW5nLVx1MDAzZW5yX3F1ZXVlczsgaSsrKSB7XG4rXG4rXHRcdGlmIChpID09IHNraXApXG4rXHRcdFx0Y29udGludWU7XG4rXHRcdGlmIChub2RlIFx1MDAzZT0gMCBcdTAwMjZcdTAwMjYgY3B1X3RvX25vZGUoaSkgIT0gbm9kZSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0cXVldWUgPSByaW5nLVx1MDAzZXF1ZXVlc1tpXTtcbitcdFx0aWYgKGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChxdWV1ZSkpXG4rXHRcdFx0cmV0dXJuIHF1ZXVlO1xuK1x0fVxuK1xuK1x0cmV0dXJuIE5VTEw7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZylcbiB7XG4gXHR1bnNpZ25lZCBpbnQgcWlkO1xuIFx0c3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqcXVldWU7XG4rXHRpbnQgbm9kZTtcbiBcbiBcdHFpZCA9IHRhc2tfY3B1KGN1cnJlbnQpO1xuIFxuQEAgLTEzMzEsNyArMTM2OCwxNSBAQCBzdGF0aWMgc3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlKHN0cnVjdCBmdXNlX3JpbmcgKnJpbmcpXG4gXHRcdHFpZCA9IDA7XG4gXG4gXHRxdWV1ZSA9IHJpbmctXHUwMDNlcXVldWVzW3FpZF07XG4tXHRXQVJOX09OQ0UoIXF1ZXVlLCBcIk1pc3NpbmcgcXVldWUgZm9yIHFpZCAlZFxcblwiLCBxaWQpO1xuK1x0aWYgKGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChxdWV1ZSkpXG4rXHRcdHJldHVybiBxdWV1ZTtcbitcbitcdG5vZGUgPSBjcHVfdG9fbm9kZShxaWQpO1xuK1x0cXVldWUgPSBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWUocmluZywgbm9kZSwgcWlkKTtcbitcdGlmICghcXVldWUpIHtcbitcdFx0cXVldWUgPSByaW5nLVx1MDAzZXF1ZXVlc1txaWRdO1xuK1x0XHRXQVJOX09OQ0UoIXF1ZXVlLCBcIk1pc3NpbmcgcXVldWUgZm9yIHFpZCAlZFxcblwiLCBxaWQpO1xuK1x0fVxuIFxuIFx0cmV0dXJuIHF1ZXVlO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE4OjQ1LjMyMzAxMzQ1MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODIwMTQwNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGVVNFIGRldl91cmluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBzZWVtcyB0byBiZSB0b3VjaGluZyBgZnMvZnVzZS9kZXZfdXJpbmcuY2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGNvbnRleHQuIElzIHRoaXMgY29kZSBldmVuIGVuYWJsZWQgaW4gYSBzdGFuZGFyZCBjb25maWd1cmF0aW9uPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGNvbnRyb2wgdGhlIGluY2x1c2lvbiBvZiB0aGlzIGZpbGUuIEtub3dpbmcgdGhhdCB3aWxsIGdpdmUgbWUgYSBmaXJzdCBpbmRpY2F0aW9uIG9mIGhvdyBicm9hZGx5IGFwcGxpY2FibGUgdGhpcyBjaGFuZ2UgaXMuXG5cblNwZWNpZmljYWxseSwgdGhlIHBhdGNoIHNlZW1zIHRvIGFkZCB0d28gbmV3IGZ1bmN0aW9uczogYGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudGAgYW5kIGBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVgLiBJbnRlcmVzdGluZy4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBkZXZfdXJpbmdgIGlzIGFsbCBhYm91dCBhc3luY2hyb25vdXMgSS9PIGFuZCB1c2VyLXNwYWNlIGludGVyYWN0aW9uLiBTbywgbXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgbGlrZWx5IGRlYWwgd2l0aCBtYW5hZ2luZyB0aGUgcXVldWVzIGludm9sdmVkIGluIHRoYXQgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcuIEkgaW1tZWRpYXRlbHkgd2FudCB0byB1bmRlcnN0YW5kICpob3cqIHRoZXNlIG5ldyBmdW5jdGlvbnMgYXJlIGludGVyYWN0aW5nIHdpdGggZXhpc3Rpbmcgc3RydWN0dXJlcy5cblxuVGhlIGtleSBtb2RpZmljYXRpb24gYXBwZWFycyB0byBiZSBpbiBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYC4gVGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB3ZSBsb2NhdGUgYSBxdWV1ZS4gU28sIGlmIHRoZSBcImN1cnJlbnRcIiBxdWV1ZSBkb2Vzbid0IGhhdmUgYXZhaWxhYmxlIGVudHJpZXMsIHRoZW4gdGhpcyBjaGFuZ2UgaXMgaW50ZW5kZWQgdG8gZmluZCBhICpkaWZmZXJlbnQqIHF1ZXVlIHRoYXQgZG9lcy4gVGhpcyBpcyBwb3RlbnRpYWxseSBhbiBpbXBvcnRhbnQgb3B0aW1pemF0aW9uLiBJdCBpcyBkZWZpbml0ZWx5IHdvcnRoIGV4cGxvcmluZyB3aHkgdGhlIFwiY3VycmVudCBxdWV1ZVwiIG1pZ2h0IGJlIGZ1bGwgYW5kIHdoZW4gd2UgbWlnaHQgbmVlZCB0byBmaW5kIGFuIGFsdGVybmF0aXZlLiBJcyB0aGlzIHNvbHZpbmcgYSBwb3RlbnRpYWwgZGVhZGxvY2ssIGxvYWQgYmFsYW5jaW5nIGlzc3VlLCBvciBqdXN0IGltcHJvdmluZyB0aHJvdWdocHV0PyBJIGhhdmUgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGBmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVgIGZ1bmN0aW9uIGl0c2VsZiB0byB0cnVseSB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIHVzZWQgYW5kIGltcHJvdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDA4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MTg6NDkuNDA1MDI5MTE5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NjE1MTA3NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvZGV2X3VyaW5nLmM9MTMzNz1mdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZywgaW50IG5vZGUsIHVuc2lnbmVkIGludCBza2lwKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMzU2LVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTM1NzpzdGF0aWMgc3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlKHN0cnVjdCBmdXNlX3JpbmcgKnJpbmcpXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMzU4LXtcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmM9MTM5Mz12b2lkIGZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXEoc3RydWN0IGZ1c2VfaXF1ZXVlICpmaXEsIHN0cnVjdCBmdXNlX3JlcSAqcmVxKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xNDAwLVxcdGVyciA9IC1FSU5WQUw7XFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxNDAxOlxcdHF1ZXVlID0gZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlKHJpbmcpO1xcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTQwMi1cXHRpZiAoIXF1ZXVlKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYz0xNDM1PWJvb2wgZnVzZV91cmluZ19xdWV1ZV9icV9yZXEoc3RydWN0IGZ1c2VfcmVxICpyZXEpXFxuLS1cXG5mcy9mdXNlL2Rldl91cmluZy5jLTE0NDEtXFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxNDQyOlxcdHF1ZXVlID0gZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlKHJpbmcpO1xcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTQ0My1cXHRpZiAoIXF1ZXVlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDoxODo1My4xNjY1NDkyN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDgyMjU1MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKlRyYWNpbmcgdGhlIFBhdGggb2YgVXJpbmcgVGFza3MgaW4gRlVTRSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGVzZSBGVVNFIHJlcXVlc3RzIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgdXJpbmcgZnJhbWV3b3JrLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVgIGZ1bmN0aW9ucy4gSSBrbm93IGl0J3MgY2FsbGVkIGZyb20gYm90aCBgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcWAgYW5kIGBmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcWAuIFRoYXQgdGVsbHMgbWUgdGhlc2UgYXJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgcXVldWluZyByZXF1ZXN0cyB0byBiZSBwcm9jZXNzZWQgd2l0aCB1cmluZy4gTm93LCBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGNhbiBmaW5kIHRoZSBjb2RlIGZvciBgZGV2X3VyaW5nLmNgLiBNeSBodW5jaCBpcyBpdCdzIGVpdGhlciBnb2luZyB0byBiZSBkZWZpbmVkIGluIGBmcy9mdXNlL0tjb25maWdgIHdoaWNoIHdvdWxkIGFsbG93IG1lIHRvIGtub3cgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG9yIGBmcy9mdXNlL01ha2VmaWxlYCB3aWxsIHByb2JhYmx5IGJlIG15IGJlc3QgYmV0IHRvIGZpbmQgdGhlIGZpbGUgb3Igd2hlcmUgdGhlIHN5bWJvbCBpcyBkZWZpbmVkLiBJJ2xsIHN0YXJ0IHRoZXJlLiBLbm93aW5nIHRoaXMgbG9jYXRpb24gd2lsbCBhbGxvdyBtZSB0byBpbnZlc3RpZ2F0ZSB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgaG93IHRoZXNlIHRhc2tzIGFyZSBpbnRlZ3JhdGVkIGludG8gdGhlIHVyaW5nIHF1ZXVlLCBsaWtlIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCwgdGhlIHNjaGVkdWxpbmcgbWVjaGFuaXNtcyBpbnZvbHZlZCwgYW5kIHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjE1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MTg6NTYuNzc0Nzc3MTcyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzU5NjI5NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2X3VyaW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvTWFrZWZpbGU9MTk9ZnVzZS0kKENPTkZJR19TWVNDVEwpICs9IHN5c2N0bC5vXFxuZnMvZnVzZS9NYWtlZmlsZToyMDpmdXNlLSQoQ09ORklHX0ZVU0VfSU9fVVJJTkcpICs9IGRldl91cmluZy5vXFxuZnMvZnVzZS9NYWtlZmlsZS0yMS1cXG4tLVxcbmZzL2Z1c2UvZGV2LmMtOC0jaW5jbHVkZSBcXFwiYXJncy5oXFxcIlxcbmZzL2Z1c2UvZGV2LmM6OTojaW5jbHVkZSBcXFwiZGV2X3VyaW5nX2kuaFxcXCJcXG5mcy9mdXNlL2Rldi5jLTEwLVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy04LSNpbmNsdWRlIFxcXCJhcmdzLmhcXFwiXFxuZnMvZnVzZS9kZXZfdXJpbmcuYzo5OiNpbmNsdWRlIFxcXCJkZXZfdXJpbmdfaS5oXFxcIlxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTAtI2luY2x1ZGUgXFxcImZ1c2VfdHJhY2UuaFxcXCJcXG4tLVxcbmZzL2Z1c2UvcmVxX3RpbWVvdXQuYy01LSNpbmNsdWRlIFxcXCJmdXNlX2Rldl9pLmhcXFwiXFxuZnMvZnVzZS9yZXFfdGltZW91dC5jOjY6I2luY2x1ZGUgXFxcImRldl91cmluZ19pLmhcXFwiXFxuZnMvZnVzZS9yZXFfdGltZW91dC5jLTctXFxuLS1cXG5mcy9mdXNlL3RyYWNlLmMtNS0gKi9cXG5mcy9mdXNlL3RyYWNlLmM6NjojaW5jbHVkZSBcXFwiZGV2X3VyaW5nX2kuaFxcXCJcXG5mcy9mdXNlL3RyYWNlLmMtNy0jaW5jbHVkZSBcXFwiZnVzZV9pLmhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE4OjU4LjI1MDc0NTM2M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTA1Njk5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGhpbmdlcyBvbiB0aGUgYENPTkZJR19GVVNFX0lPX1VSSU5HYCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24uIE15IGltbWVkaWF0ZSByZWZsZXggaXMgdG8gdmVyaWZ5IGl0cyBwcmVzZW5jZSBhbmQgYW55IGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzLiBHaXZlbiB0aGF0IGl0J3MgcmVsYXRlZCB0byBGVVNFIGFuZCBpb191cmluZywgSSdsbCBuZWVkIHRvIGNvbmZpcm0gaXRzIGF2YWlsYWJpbGl0eS4gTXkgc3RhcnRpbmcgcG9pbnQgd2lsbCBiZSBgZnMvZnVzZS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgRlVTRS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgZ2VuZXJhbGx5IGhvdXNlZCwgc28gaXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBsb29rIGZvciBkZXRhaWxzIG9uIGBGVVNFX0lPX1VSSU5HYC4gRnJvbSB0aGVyZSwgSSdsbCBxdWlja2x5IGNoZWNrIGl0cyBzeW1ib2wgYW5kIGFueSBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcyBvciBkZWZhdWx0IHN0YXRlcyB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRoZXNlIGFyZSB0aGUgY2F1c2UsIGFzIHdlbGwgYXMgY29uZmlybSBpZiBpdCdzIGFscmVhZHkgZW5hYmxlZCBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIG9yIG5lZWRzIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBJIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1NywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE5OjAxLjMwMTMxNzI4N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcwNzM2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRlVTRV9JT19VUklOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL0tjb25maWc9NTc9Y29uZmlnIEZVU0VfUEFTU1RIUk9VR0hcXG4tLVxcbmZzL2Z1c2UvS2NvbmZpZy02Ny1cXG5mcy9mdXNlL0tjb25maWc6Njg6Y29uZmlnIEZVU0VfSU9fVVJJTkdcXG5mcy9mdXNlL0tjb25maWctNjktXFx0Ym9vbCBcXFwiRlVTRSBjb21tdW5pY2F0aW9uIG92ZXIgaW8tdXJpbmdcXFwiXFxuLS1cXG5mcy9mdXNlL01ha2VmaWxlPTE5PWZ1c2UtJChDT05GSUdfU1lTQ1RMKSArPSBzeXNjdGwub1xcbmZzL2Z1c2UvTWFrZWZpbGU6MjA6ZnVzZS0kKENPTkZJR19GVVNFX0lPX1VSSU5HKSArPSBkZXZfdXJpbmcub1xcbmZzL2Z1c2UvTWFrZWZpbGUtMjEtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTgwOT1zc2l6ZV90IGZ1c2VfY2hhbl9zZW5kKHN0cnVjdCBmdXNlX2NoYW4gKmZjaCwgc3RydWN0IGZ1c2VfYXJncyAqYXJncylcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtODQzLVxcbmZzL2Z1c2UvZGV2LmM6ODQ0OiNpZmRlZiBDT05GSUdfRlVTRV9JT19VUklOR1xcbmZzL2Z1c2UvZGV2LmMtODQ1LXN0YXRpYyBib29sIGZ1c2VfcmVxdWVzdF9xdWV1ZV9iYWNrZ3JvdW5kX3VyaW5nKHN0cnVjdCBmdXNlX3JlcSAqcmVxKVxcbi0tXFxuZnMvZnVzZS9kZXYuYz04NjE9c3RhdGljIGludCBmdXNlX3JlcXVlc3RfcXVldWVfYmFja2dyb3VuZChzdHJ1Y3QgZnVzZV9yZXEgKnJlcSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtODcyLVxcbmZzL2Z1c2UvZGV2LmM6ODczOiNpZmRlZiBDT05GSUdfRlVTRV9JT19VUklOR1xcbmZzL2Z1c2UvZGV2LmMtODc0LVxcdGlmIChmdXNlX3VyaW5nX3JlYWR5KGZjaCkpXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIzNzg9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMzg5LVxcdC5jb21wYXRfaW9jdGwgICA9IGNvbXBhdF9wdHJfaW9jdGwsXFxuZnMvZnVzZS9kZXYuYzoyMzkwOiNpZmRlZiBDT05GSUdfRlVTRV9JT19VUklOR1xcbmZzL2Z1c2UvZGV2LmMtMjM5MS1cXHQudXJpbmdfY21kXFx0PSBmdXNlX3VyaW5nX2NtZCxcXG4tLVxcbmZzL2Z1c2UvZGV2Lmg9OTQ9dm9pZCBmdXNlX2NvcHlfZmluaXNoKHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgKmNzKTtcXG5mcy9mdXNlL2Rldi5oLTk1LVxcbmZzL2Z1c2UvZGV2Lmg6OTY6I2lmZGVmIENPTkZJR19GVVNFX0lPX1VSSU5HXFxuZnMvZnVzZS9kZXYuaC05Ny1ib29sIGZ1c2VfdXJpbmdfZW5hYmxlZCh2b2lkKTtcXG5mcy9mdXNlL2Rldi5oPTk4PXZvaWQgZnVzZV91cmluZ19kZXN0cnVjdChzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpO1xcbmZzL2Z1c2UvZGV2Lmg6OTk6I2Vsc2UgLyogQ09ORklHX0ZVU0VfSU9fVVJJTkcgKi9cXG5mcy9mdXNlL2Rldi5oLTEwMC1zdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19lbmFibGVkKHZvaWQpXFxuLS1cXG5mcy9mdXNlL2Rldi5oPTEwNT1zdGF0aWMgaW5saW5lIHZvaWQgZnVzZV91cmluZ19kZXN0cnVjdChzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXFxuLS1cXG5mcy9mdXNlL2Rldi5oLTEwNy19XFxuZnMvZnVzZS9kZXYuaDoxMDg6I2VuZGlmIC8qIENPTkZJR19GVVNFX0lPX1VSSU5HICovXFxuZnMvZnVzZS9kZXYuaC0xMDktXFxuLS1cXG5mcy9mdXNlL2Rldl91cmluZy5jPTEyMTg9aW50IGZ1c2VfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjU5LVxcdHN3aXRjaCAoY21kX29wKSB7XFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxMjYwOlxcdGNhc2UgRlVTRV9JT19VUklOR19DTURfUkVHSVNURVI6XFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjYxLVxcdFxcdGVyciA9IGZ1c2VfdXJpbmdfcmVnaXN0ZXIoY21kLCBpc3N1ZV9mbGFncywgZmNoKTtcXG5mcy9mdXNlL2Rldl91cmluZy5jLTEyNjItXFx0XFx0aWYgKGVycikge1xcbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTI2MzpcXHRcXHRcXHRwcl9pbmZvX29uY2UoXFxcIkZVU0VfSU9fVVJJTkdfQ01EX1JFR0lTVEVSIGZhaWxlZCBlcnI9JWRcXFxcblxcXCIsXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjY0LVxcdFxcdFxcdFxcdCAgICAgZXJyKTtcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI2OS1cXHRcXHRicmVhaztcXG5mcy9mdXNlL2Rldl91cmluZy5jOjEyNzA6XFx0Y2FzZSBGVVNFX0lPX1VSSU5HX0NNRF9DT01NSVRfQU5EX0ZFVENIOlxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI3MS1cXHRcXHRlcnIgPSBmdXNlX3VyaW5nX2NvbW1pdF9mZXRjaChjbWQsIGlzc3VlX2ZsYWdzLCBmY2gpO1xcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI3Mi1cXHRcXHRpZiAoZXJyKSB7XFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxMjczOlxcdFxcdFxcdHByX2luZm9fb25jZShcXFwiRlVTRV9JT19VUklOR19DT01NSVRfQU5EX0ZFVENIIGZhaWxlZCBlcnI9JWRcXFxcblxcXCIsXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjc0LVxcdFxcdFxcdFxcdCAgICAgZXJyKTtcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaC0xMS1cXG5mcy9mdXNlL2Rldl91cmluZ19pLmg6MTI6I2lmZGVmIENPTkZJR19GVVNFX0lPX1VSSU5HXFxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oLTEzLVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oPTE2OD1zdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19yZWFkeShzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXFxuLS1cXG5mcy9mdXNlL2Rldl91cmluZ19pLmgtMTc0LVxcbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaDoxNzU6I2Vsc2UgLyogQ09ORklHX0ZVU0VfSU9fVVJJTkcgKi9cXG5mcy9mdXNlL2Rldl91cmluZ19pLmgtMTc2LVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oPTE5NT1zdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19yZXF1ZXN0X2V4cGlyZWQoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oLTE5OS1cXG5mcy9mdXNlL2Rldl91cmluZ19pLmg6MjAwOiNlbmRpZiAvKiBDT05GSUdfRlVTRV9JT19VUklORyAqL1xcbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaC0yMDEtXFxuLS1cXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaD02NT1zdHJ1Y3QgZnVzZV9yZXEge1xcbi0tXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMTA5LVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjExMDojaWZkZWYgQ09ORklHX0ZVU0VfSU9fVVJJTkdcXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0xMTEtXFx0dm9pZCAqcmluZ19lbnRyeTtcXG4tLVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oPTE5MD1zdHJ1Y3QgZnVzZV9jaGFuIHtcXG4tLVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTI2Mi1cXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaDoyNjM6I2lmZGVmIENPTkZJR19GVVNFX0lPX1VSSU5HXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMjY0LVxcdC8qKiAgdXJpbmcgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE5OjAxLjQ0ODM5NjAyNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDY0ODA2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgRlVTRV9JT19VUklORyBDb25maWd1cmF0aW9uIGFuZCBQYXRjaCoqXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IHRoZSBgRlVTRV9JT19VUklOR2AgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZS4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgaW1wYWN0IG9mIHRoaXMgc3BlY2lmaWMgcGF0Y2guIEl0IGFwcGVhcnMgdG8gYmUgemVyb2luZyBpbiBvbiBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCwgdGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0IGxpbmtzIHRhc2tzIHRvIHRoZSBJL08gcXVldWUuIFRoYXQncyBhIGNyaXRpY2FsIGFyZWEsIGFzIGFueSBjaGFuZ2UgdGhlcmUgaXMgcHJldHR5IGZ1bmRhbWVudGFsLlxuXG5Ob3csIG15IG1pbmQncyBpbW1lZGlhdGVseSBnb2luZyB0byB0cmFjZSB3aGVyZSBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCBpcyB1c2VkLiBUaGUgbm90ZXMgY2xlYXJseSBzdGF0ZSBpdCdzIGVtcGxveWVkIHdpdGhpbiBib3RoIGBmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxYCBhbmQgYGZ1c2VfdXJpbmdfcXVldWVfYnFfcmVxYC4gT2theSwgbWFrZXMgc2Vuc2UuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBxdWV1aW5nIGRpZmZlcmVudCB0eXBlcyBvZiByZXF1ZXN0cy4gVGltZSB0byBkaWcgaW50byB0aG9zZSBmdW5jdGlvbnMuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgbW9kaWZpY2F0aW9uIHRvIGBmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVgIGlzIGNoYW5naW5nIHRoZSBxdWV1ZWluZyBiZWhhdmlvciBmb3IgYm90aCBzdGFuZGFyZCBGVVNFIHJlcXVlc3RzIGFuZCBibG9jay1sYXllciByZXF1ZXN0cy4gVGhpcyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGltcGxpY2F0aW9ucyBvZiB0aGUgcGF0Y2guIEknbGwgbmVlZCB0byBhbmFseXplIHRoZSBkYXRhIHN0cnVjdHVyZXMsIHRoZSBsb2NraW5nLCBhbmQgdGhlIHBvdGVudGlhbCBwZXJmb3JtYW5jZSByYW1pZmljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjUwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MTk6MDUuNTU0ODc4NjkxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDYwNTEwODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2Rldl91cmluZy5jPTEzODQ9c3RhdGljIHZvaWQgZnVzZV91cmluZ19kaXNwYXRjaF9lbnQoc3RydWN0IGZ1c2VfcmluZ19lbnQgKmVudClcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTM5Mi0vKiBxdWV1ZSBhIGZ1c2UgcmVxdWVzdCBhbmQgc2VuZCBpdCBpZiBhIHJpbmcgZW50cnkgaXMgYXZhaWxhYmxlICovXFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxMzkzOnZvaWQgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcShzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcSwgc3RydWN0IGZ1c2VfcmVxICpyZXEpXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMzk0LXtcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmM9MTQ5MT1zdGF0aWMgY29uc3Qgc3RydWN0IGZ1c2VfaXF1ZXVlX29wcyBmdXNlX2lvX3VyaW5nX29wcyA9IHtcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTQ5OS1cXHQuc2VuZF9pbnRlcnJ1cHQgPSBmdXNlX2Rldl9xdWV1ZV9pbnRlcnJ1cHQsXFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxNTAwOlxcdC5zZW5kX3JlcSA9IGZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXEsXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xNTAxLX07XFxuLS1cXG5mcy9mdXNlL2Rldl91cmluZ19pLmg9MTQwPWludCBmdXNlX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XFxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oOjE0MTp2b2lkIGZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXEoc3RydWN0IGZ1c2VfaXF1ZXVlICpmaXEsIHN0cnVjdCBmdXNlX3JlcSAqcmVxKTtcXG5mcy9mdXNlL2Rldl91cmluZ19pLmgtMTQyLWJvb2wgZnVzZV91cmluZ19xdWV1ZV9icV9yZXEoc3RydWN0IGZ1c2VfcmVxICpyZXEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDoxOTowNS44NjA5MzQ0MDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY1MTc5NDk4NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGVVNFIGlvX3VyaW5nIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcWAgZnVuY3Rpb24gYW5kIGhvdyBpdCByZWxhdGVzIHRvIGBmdXNlX2lvX3VyaW5nX29wcy5zZW5kX3JlcWAuIFRoZSBjb25uZWN0aW9uIHNlZW1zIGNsZWFyOyBpdCBzaG91bGQgYmUgZGlyZWN0bHkgcmVhY2hhYmxlIGFuZCBvcGVyYXRpbmcgYXMgZXhwZWN0ZWQuIFRoZSBwYXRjaCBhZGRzIHNvbWV0aGluZyBhYm91dCBmaW5kaW5nIGFuIGF2YWlsYWJsZSBxdWV1ZSB3aGVuIHRoZSBjdXJyZW50IG9uZSBpcyBmdWxsLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2UgZnVuY3Rpb25zOiBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCwgYGZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXFgLCBgZnVzZV91cmluZ19xdWV1ZV9icV9yZXFgLCBhbmQgYGZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZWAuIFRoZXNlIHNlZW0gY2VudHJhbCB0byB0aGUgbmV3IGxvZ2ljLlxuXG5MZXQgbWUgcXVpY2tseSBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBSaWdodCwgYEZVU0VfSU9fVVJJTkdgIGlzIHRoZSBrZXkgY29uZmlnIGhlcmUuIE5vdywgd2hlcmUgaXMgdGhhdCBkZWZpbmVkPyBBaCwgaXQncyBpbiBgZnMvZnVzZS9LY29uZmlnYC4gRXhjZWxsZW50LiBJcyB0aGVyZSBhbnl0aGluZyB0aGF0IGRlcGVuZHMgb24gYEZVU0VfSU9fVVJJTkdgPyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0IHNhbWUgYGZzL2Z1c2UvS2NvbmZpZ2AgZmlsZSBmb3IgYW55IGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQxMywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDoxOToyMi4zNzg4ODY3NTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4ODk1NDA0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlVTRV9JT19VUklOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL0tjb25maWc9NTc9Y29uZmlnIEZVU0VfUEFTU1RIUk9VR0hcXG4tLVxcbmZzL2Z1c2UvS2NvbmZpZy02Ny1cXG5mcy9mdXNlL0tjb25maWc6Njg6Y29uZmlnIEZVU0VfSU9fVVJJTkdcXG5mcy9mdXNlL0tjb25maWctNjktXFx0Ym9vbCBcXFwiRlVTRSBjb21tdW5pY2F0aW9uIG92ZXIgaW8tdXJpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE5OjIyLjc2Nzg0NTEyNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTIxODE4NTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIEZVU0UgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gdGhlIGBmcy9mdXNlL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA2OC4gSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gcmVsYXRlZCB0byBGVVNFLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgc29tZXRoaW5nIGZ1bmRhbWVudGFsLCBtYXliZSByZWxhdGVkIHRvIGRldmljZSBzdXBwb3J0LCBzcGVjaWZpYyBmZWF0dXJlcywgb3IgZGVmYXVsdCBiZWhhdmlvci4gS25vd2luZyB0aGUgS2NvbmZpZyBzeW50YXgsIHRoZSBzdHJ1Y3R1cmUgYXJvdW5kIHRoaXMgbGluZSB3aWxsIGxpa2VseSBpbnZvbHZlIGEgYGNvbmZpZ2AgYmxvY2sgZGVmaW5pbmcgYSBib29sZWFuIG9yIHRyaXN0YXRlIHN5bWJvbC4gSeKAmW0gYW50aWNpcGF0aW5nIGEgZGVzY3JpcHRpb24sIHRoZSBgaGVscGAgdGV4dCwgYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdCB2YWx1ZXMuIE15IGJyYWluJ3MgYWxyZWFkeSBwcmUtbG9hZGluZyB0aGUgcmVsZXZhbnQga2VybmVsIGJ1aWxkIHN5c3RlbSBrbm93bGVkZ2UgdG8gaW50ZXJwcmV0IHRoZSBjb250ZXh0LiBEZXBlbmRpbmcgb24gd2hhdCdzIHRoZXJlLCBteSBuZXh0IHN0ZXBzIGNvdWxkIHJhbmdlIGZyb20gYW5hbHl6aW5nIHRoZSBkZXBlbmRlbmNpZXMgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMgb3B0aW9uLCB0byBjaGVja2luZyB0aGUgY29kZSB0aGF0IGNvbnN1bWVzIHRoaXMgS2NvbmZpZyBzeW1ib2wsIG9yIGRldGVybWluaW5nIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGV4aXN0aW5nIEZVU0UgY29uZmlndXJhdGlvbnMuIFRoZSBsaW5lIG51bWJlciBpcyBteSBpbml0aWFsIGVudHJ5IHBvaW50LCBJ4oCZbSByZWFkeSB0byBxdWlja2x5IGJyYW5jaCBvdXQgYW5kIGV4cGxvcmUgYWRqYWNlbnQgbGluZXMgaWYgbmVjZXNzYXJ5IHRvIHVuZGVyc3RhbmQgdGhlIG9wdGlvbidzIHBsYWNlIGluIHRoZSBsYXJnZXIgRlVTRSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk0OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE5OjI2LjI4OTY2NjQyNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTMwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZnVzZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUwOlxcdFxcdGhlbHBcXG4gIDUxOlxcdFxcdCAgVGhpcyBhbGxvd3MgYnlwYXNzaW5nIGd1ZXN0IHBhZ2UgY2FjaGUgYW5kIGFsbG93cyBtYXBwaW5nIGhvc3QgcGFnZVxcbiAgNTI6XFx0XFx0ICBjYWNoZSBkaXJlY3RseSBpbiBndWVzdCBhZGRyZXNzIHNwYWNlLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGFsbG93IG1vdW50aW5nIGEgVmlydGlvIEZpbGVzeXN0ZW0gd2l0aCB0aGUgXFxcImRheFxcXCJcXG4gIDU1OlxcdFxcdCAgb3B0aW9uLCBhbnN3ZXIgWS5cXG4gIDU2OlxcdFxcbiAgNTc6XFx0Y29uZmlnIEZVU0VfUEFTU1RIUk9VR0hcXG4gIDU4OlxcdFxcdGJvb2wgXFxcIkZVU0UgcGFzc3Rocm91Z2ggb3BlcmF0aW9ucyBzdXBwb3J0XFxcIlxcbiAgNTk6XFx0XFx0ZGVmYXVsdCB5XFxuICA2MDpcXHRcXHRkZXBlbmRzIG9uIEZVU0VfRlNcXG4gIDYxOlxcdFxcdHNlbGVjdCBGU19TVEFDS1xcbiAgNjI6XFx0XFx0aGVscFxcbiAgNjM6XFx0XFx0ICBUaGlzIGFsbG93cyBieXBhc3NpbmcgRlVTRSBzZXJ2ZXIgYnkgbWFwcGluZyBzcGVjaWZpYyBGVVNFIG9wZXJhdGlvbnNcXG4gIDY0OlxcdFxcdCAgdG8gYmUgcGVyZm9ybWVkIGRpcmVjdGx5IG9uIGEgYmFja2luZyBmaWxlLlxcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGFsbG93IHBhc3N0aHJvdWdoIG9wZXJhdGlvbnMsIGFuc3dlciBZLlxcbiAgNjc6XFx0XFxuICA2ODpcXHRjb25maWcgRlVTRV9JT19VUklOR1xcbiAgNjk6XFx0XFx0Ym9vbCBcXFwiRlVTRSBjb21tdW5pY2F0aW9uIG92ZXIgaW8tdXJpbmdcXFwiXFxuICA3MDpcXHRcXHRkZWZhdWx0IHlcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gRlVTRV9GU1xcbiAgNzI6XFx0XFx0ZGVwZW5kcyBvbiBJT19VUklOR1xcbiAgNzM6XFx0XFx0aGVscFxcbiAgNzQ6XFx0XFx0ICBUaGlzIGFsbG93cyBzZW5kaW5nIEZVU0UgcmVxdWVzdHMgb3ZlciB0aGUgaW8tdXJpbmcgaW50ZXJmYWNlIGFuZFxcbiAgNzU6XFx0ICAgICAgICAgIGFsc28gYWRkcyByZXF1ZXN0IGNvcmUgYWZmaW5pdHkuXFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gYWxsb3cgZnVzZSBzZXJ2ZXIvY2xpZW50IGNvbW11bmljYXRpb24gdGhyb3VnaCBpby11cmluZyxcXG4gIDc4OlxcdFxcdCAgYW5zd2VyIFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MTk6MjYuMjkwMDgyNTY1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5NzQ4NjQwMzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRlVTRSBJT19VUklORyBQYXRjaCBmb3IgU3l6a2FsbGVyIENvdmVyYWdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgRlVTRV9JT19VUklOR2AgY29uZmlndXJhdGlvbiBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIG1vc3QgZWZmZWN0aXZlIHdheSB0byBsZXZlcmFnZSBTeXprYWxsZXIgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IGtleSBmdW5jdGlvbnMgdGhhdCB0aGlzIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMsIGZ1bmN0aW9ucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuXG5cbkknbSB6ZXJvaW5nIGluIG9uIGEgZmV3IGZ1bmN0aW9ucy4gYGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZWAsIGBmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxYCwgYW5kIGBmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcWAgc2VlbSBsaWtlIHNvbGlkIGNhbmRpZGF0ZXMsIGJ1dCBsZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVgLiBJdCdzIGBzdGF0aWNgLCB3aGljaCBtaWdodCBtYWtlIGl0IHRyaWNraWVyIGZvciBTeXprYWxsZXIsIHRob3VnaCBpdCAqaXMqIHByZXNlbnQgaW4gdGhlIGRlYnVnIGluZm8uIEEgcXVpY2sgY2hlY2sgY29uZmlybXMgYGZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZWAgaXMgaW5kZWVkIGRlZmluZWQgaW4gYGZzL2Z1c2UvZGV2X3VyaW5nLmNgLCBhcyBpcyBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCwgc28gSSdsbCBpbmNsdWRlIGl0IGluIHRoZSBsaXN0IG9mIHN5bWJvbHMgdG8gZm9jdXMgb24uIFN5emthbGxlciAqY2FuKiB0YXJnZXQgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGUgZGVidWcgaW5mbyBpcyB0aGVyZSwgd2hpY2ggaXMgaGVscGZ1bC5cblxuR2l2ZW4gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgcGF0Y2gsIGl0IHNlZW1zIGBmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxYCBhbmQgYGZ1c2VfdXJpbmdfcXVldWVfYnFfcmVxYCBhcmUgZ29vZCBlbnRyeSBwb2ludHMsIGFuZCBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCBpcyBhIGNyaXRpY2FsIHJvdXRpbmcgZnVuY3Rpb24uIEknbGwgcHJvdmlkZSB0aG9zZSB0byBzeXprYWxsZXIsIGFuZCBhbHNvIGluY2x1ZGUgYGZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZWAuXG5cbk5vdywgcmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLCBpdCBzZWVtcyBgRlVTRV9GU2AgYW5kIGBJT19VUklOR2AgYXJlIGFscmVhZHkgZW5hYmxlZCBieSBkZWZhdWx0LiBTbywgYEZVU0VfSU9fVVJJTkdgIGlzIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUuXG5cbkxldCdzIHJldmlldyB0aGUgcGF0Y2ggYWdhaW4gdG8gbWFrZSBzdXJlIEknbSBjYXB0dXJpbmcgZXZlcnl0aGluZy4gVGhlIGFkZGVkIGNvZGUgaW5jbHVkZXMgYSBmdW5jdGlvbiBgZnVzZV91cmluZ19xdWV1ZV9oYXNfYXZhaWxfZW50YC4gVGhlIG5ldyBjb2RlIG1vZGlmaWVzIGBmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVgIHN1Y2ggdGhhdCBpdCB3aWxsIHNlYXJjaCBmb3IgYW5vdGhlciBhdmFpbGFibGUgcXVldWUgaWYgdGhlIGluaXRpYWxseSBzZWxlY3RlZCBxdWV1ZSBoYXMgbm8gYXZhaWxhYmxlIGVudHJpZXMuIFRoaXMgbG9va3MgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlLlxuXG5CYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJJ2xsIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYxNywiT3V0cHV0VG9rZW5zIjoxMzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDoxOTo0Ni4wMzg3MjQ5ODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIzNTgzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVcIixcbiAgICBcImZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXFcIixcbiAgICBcImZ1c2VfdXJpbmdfcXVldWVfYnFfcmVxXCIsXG4gICAgXCJmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRlVTRSBpby11cmluZyBjb21tdW5pY2F0aW9uIGxvZ2ljIHRvIGZpbmQgYW4gYXZhaWxhYmxlIHF1ZXVlIHdoZW4gdGhlIGN1cnJlbnQgdGFzaydzIHF1ZXVlIGhhcyBubyBhdmFpbGFibGUgZW50cmllcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBGVVNFIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IHVzaW5nIEZVU0Ugb3ZlciBpby11cmluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0lPX1VSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlXCIsXG4gICAgXCJmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxXCIsXG4gICAgXCJmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcVwiLFxuICAgIFwiZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZVU0UgaW8tdXJpbmcgY29tbXVuaWNhdGlvbiBsb2dpYyB0byBmaW5kIGFuIGF2YWlsYWJsZSBxdWV1ZSB3aGVuIHRoZSBjdXJyZW50IHRhc2sncyBxdWV1ZSBoYXMgbm8gYXZhaWxhYmxlIGVudHJpZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgRlVTRSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCBieSB1c2luZyBGVVNFIG92ZXIgaW8tdXJpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowp8glt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 10:01:08 +0000 UTC FinishedAt: 2026-07-14 10:19:48 +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": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_IO_URING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_IO_URING" ], "series_id": "bd7f062a-45e6-4f13-86fd-7ea659f73709" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "fuse_uring_task_to_queue", "fuse_uring_queue_fuse_req", "fuse_uring_queue_bq_req", "fuse_uring_find_avail_queue" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfSU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUmIzM0OywKICAgICYjMzQ7ZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcSYjMzQ7LAogICAgJiMzNDtmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcSYjMzQ7LAogICAgJiMzNDtmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZVU0UgaW8tdXJpbmcgY29tbXVuaWNhdGlvbiBsb2dpYyB0byBmaW5kIGFuIGF2YWlsYWJsZSBxdWV1ZSB3aGVuIHRoZSBjdXJyZW50IHRhc2smIzM5O3MgcXVldWUgaGFzIG5vIGF2YWlsYWJsZSBlbnRyaWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEZVU0Ugc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgdXNpbmcgRlVTRSBvdmVyIGlvLXVyaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjY3NWFhYjQ0Mjk2YTBlNDYxZjhiYjhkY2ZmNzQzNWM3ZjY2ODFhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDEwOjE4OjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2X3VyaW5nLmMgYi9mcy9mdXNlL2Rldl91cmluZy5jXG5pbmRleCA3N2M4Y2VjNDNkOWM2NS4uYzM2NDM4ZTc5ZjhkMTYgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2Rldl91cmluZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2Rldl91cmluZy5jXG5AQCAtMTEsNiAmIzQzOzExLDcgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW9fdXJpbmcvY21kLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdG9wb2xvZ3kuaFx1MDAzZVxuIFxuIHN0YXRpYyBib29sIF9fcmVhZF9tb3N0bHkgZW5hYmxlX3VyaW5nO1xuIG1vZHVsZV9wYXJhbShlbmFibGVfdXJpbmcsIGJvb2wsIDA2NDQpO1xuQEAgLTEzMTgsMTAgJiM0MzsxMzE5LDQ2IEBAIHN0YXRpYyB2b2lkIGZ1c2VfdXJpbmdfc2VuZF9pbl90YXNrKHN0cnVjdCBpb190d19yZXEgdHdfcmVxLCBpb190d190b2tlbl90IHR3KVxuIFx0fVxuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBib29sIGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpxdWV1ZSlcbiYjNDM7e1xuJiM0MztcdGJvb2wgaGFzO1xuJiM0MztcbiYjNDM7XHRpZiAoIXF1ZXVlKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRzcGluX2xvY2soXHUwMDI2cXVldWUtXHUwMDNlbG9jayk7XG4mIzQzO1x0aGFzID0gIWxpc3RfZW1wdHkoXHUwMDI2cXVldWUtXHUwMDNlZW50X2F2YWlsX3F1ZXVlKTtcbiYjNDM7XHRzcGluX3VubG9jayhcdTAwMjZxdWV1ZS1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGhhcztcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBmdXNlX3JpbmdfcXVldWUgKlxuJiM0MztmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZywgaW50IG5vZGUsIHVuc2lnbmVkIGludCBza2lwKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgaW50IGk7XG4mIzQzO1x0c3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqcXVldWU7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHJpbmctXHUwMDNlbnJfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuJiM0MztcbiYjNDM7XHRcdGlmIChpID09IHNraXApXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0aWYgKG5vZGUgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiBjcHVfdG9fbm9kZShpKSAhPSBub2RlKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHRxdWV1ZSA9IHJpbmctXHUwMDNlcXVldWVzW2ldO1xuJiM0MztcdFx0aWYgKGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChxdWV1ZSkpXG4mIzQzO1x0XHRcdHJldHVybiBxdWV1ZTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZylcbiB7XG4gXHR1bnNpZ25lZCBpbnQgcWlkO1xuIFx0c3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqcXVldWU7XG4mIzQzO1x0aW50IG5vZGU7XG4gXG4gXHRxaWQgPSB0YXNrX2NwdShjdXJyZW50KTtcbiBcbkBAIC0xMzMxLDcgJiM0MzsxMzY4LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZylcbiBcdFx0cWlkID0gMDtcbiBcbiBcdHF1ZXVlID0gcmluZy1cdTAwM2VxdWV1ZXNbcWlkXTtcbi1cdFdBUk5fT05DRSghcXVldWUsIFwmIzM0O01pc3NpbmcgcXVldWUgZm9yIHFpZCAlZFxcblwmIzM0OywgcWlkKTtcbiYjNDM7XHRpZiAoZnVzZV91cmluZ19xdWV1ZV9oYXNfYXZhaWxfZW50KHF1ZXVlKSlcbiYjNDM7XHRcdHJldHVybiBxdWV1ZTtcbiYjNDM7XG4mIzQzO1x0bm9kZSA9IGNwdV90b19ub2RlKHFpZCk7XG4mIzQzO1x0cXVldWUgPSBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWUocmluZywgbm9kZSwgcWlkKTtcbiYjNDM7XHRpZiAoIXF1ZXVlKSB7XG4mIzQzO1x0XHRxdWV1ZSA9IHJpbmctXHUwMDNlcXVldWVzW3FpZF07XG4mIzQzO1x0XHRXQVJOX09OQ0UoIXF1ZXVlLCBcJiMzNDtNaXNzaW5nIHF1ZXVlIGZvciBxaWQgJWRcXG5cJiMzNDssIHFpZCk7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIHF1ZXVlO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDoxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlJiMzNDssCiAgICAmIzM0O2Z1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXEmIzM0OywKICAgICYjMzQ7ZnVzZV91cmluZ19xdWV1ZV9icV9yZXEmIzM0OywKICAgICYjMzQ7ZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGVVNFIGlvLXVyaW5nIGNvbW11bmljYXRpb24gbG9naWMgdG8gZmluZCBhbiBhdmFpbGFibGUgcXVldWUgd2hlbiB0aGUgY3VycmVudCB0YXNrJiMzOTtzIHF1ZXVlIGhhcyBubyBhdmFpbGFibGUgZW50cmllcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBGVVNFIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IHVzaW5nIEZVU0Ugb3ZlciBpby11cmluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjY3NWFhYjQ0Mjk2YTBlNDYxZjhiYjhkY2ZmNzQzNWM3ZjY2ODFhNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDEwOjE4OjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9kZXZfdXJpbmcuYyBiL2ZzL2Z1c2UvZGV2X3VyaW5nLmMKaW5kZXggNzdjOGNlYzQzZDljNjUuLmMzNjQzOGU3OWY4ZDE2IDEwMDY0NAotLS0gYS9mcy9mdXNlL2Rldl91cmluZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZGV2X3VyaW5nLmMKQEAgLTExLDYgJiM0MzsxMSw3IEBACiAKICNpbmNsdWRlICZsdDtsaW51eC9mcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2lvX3VyaW5nL2NtZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90b3BvbG9neS5oJmd0OwogCiBzdGF0aWMgYm9vbCBfX3JlYWRfbW9zdGx5IGVuYWJsZV91cmluZzsKIG1vZHVsZV9wYXJhbShlbmFibGVfdXJpbmcsIGJvb2wsIDA2NDQpOwpAQCAtMTMxOCwxMCAmIzQzOzEzMTksNDYgQEAgc3RhdGljIHZvaWQgZnVzZV91cmluZ19zZW5kX2luX3Rhc2soc3RydWN0IGlvX3R3X3JlcSB0d19yZXEsIGlvX3R3X3Rva2VuX3QgdHcpCiAJfQogfQogCiYjNDM7c3RhdGljIGlubGluZSBib29sIGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpxdWV1ZSkKJiM0Mzt7CiYjNDM7CWJvb2wgaGFzOwomIzQzOwomIzQzOwlpZiAoIXF1ZXVlKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlzcGluX2xvY2soJmFtcDtxdWV1ZS0mZ3Q7bG9jayk7CiYjNDM7CWhhcyA9ICFsaXN0X2VtcHR5KCZhbXA7cXVldWUtJmd0O2VudF9hdmFpbF9xdWV1ZSk7CiYjNDM7CXNwaW5fdW5sb2NrKCZhbXA7cXVldWUtJmd0O2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gaGFzOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqCiYjNDM7ZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlKHN0cnVjdCBmdXNlX3JpbmcgKnJpbmcsIGludCBub2RlLCB1bnNpZ25lZCBpbnQgc2tpcCkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBpOwomIzQzOwlzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpxdWV1ZTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IHJpbmctJmd0O25yX3F1ZXVlczsgaSYjNDM7JiM0MzspIHsKJiM0MzsKJiM0MzsJCWlmIChpID09IHNraXApCiYjNDM7CQkJY29udGludWU7CiYjNDM7CQlpZiAobm9kZSAmZ3Q7PSAwICZhbXA7JmFtcDsgY3B1X3RvX25vZGUoaSkgIT0gbm9kZSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCXF1ZXVlID0gcmluZy0mZ3Q7cXVldWVzW2ldOwomIzQzOwkJaWYgKGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChxdWV1ZSkpCiYjNDM7CQkJcmV0dXJuIHF1ZXVlOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBOVUxMOwomIzQzO30KJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZykKIHsKIAl1bnNpZ25lZCBpbnQgcWlkOwogCXN0cnVjdCBmdXNlX3JpbmdfcXVldWUgKnF1ZXVlOwomIzQzOwlpbnQgbm9kZTsKIAogCXFpZCA9IHRhc2tfY3B1KGN1cnJlbnQpOwogCkBAIC0xMzMxLDcgJiM0MzsxMzY4LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZykKIAkJcWlkID0gMDsKIAogCXF1ZXVlID0gcmluZy0mZ3Q7cXVldWVzW3FpZF07Ci0JV0FSTl9PTkNFKCFxdWV1ZSwgJiMzNDtNaXNzaW5nIHF1ZXVlIGZvciBxaWQgJWRcbiYjMzQ7LCBxaWQpOwomIzQzOwlpZiAoZnVzZV91cmluZ19xdWV1ZV9oYXNfYXZhaWxfZW50KHF1ZXVlKSkKJiM0MzsJCXJldHVybiBxdWV1ZTsKJiM0MzsKJiM0MzsJbm9kZSA9IGNwdV90b19ub2RlKHFpZCk7CiYjNDM7CXF1ZXVlID0gZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlKHJpbmcsIG5vZGUsIHFpZCk7CiYjNDM7CWlmICghcXVldWUpIHsKJiM0MzsJCXF1ZXVlID0gcmluZy0mZ3Q7cXVldWVzW3FpZF07CiYjNDM7CQlXQVJOX09OQ0UoIXF1ZXVlLCAmIzM0O01pc3NpbmcgcXVldWUgZm9yIHFpZCAlZFxuJiMzNDssIHFpZCk7CiYjNDM7CX0KIAogCXJldHVybiBxdWV1ZTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZVU0UgZGV2X3VyaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYGZzL2Z1c2UvZGV2X3VyaW5nLmNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBjb250ZXh0LiBJcyB0aGlzIGNvZGUgZXZlbiBlbmFibGVkIGluIGEgc3RhbmRhcmQgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBjb250cm9sIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBmaWxlLiBLbm93aW5nIHRoYXQgd2lsbCBnaXZlIG1lIGEgZmlyc3QgaW5kaWNhdGlvbiBvZiBob3cgYnJvYWRseSBhcHBsaWNhYmxlIHRoaXMgY2hhbmdlIGlzLgoKU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggc2VlbXMgdG8gYWRkIHR3byBuZXcgZnVuY3Rpb25zOiBgZnVzZV91cmluZ19xdWV1ZV9oYXNfYXZhaWxfZW50YCBhbmQgYGZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZWAuIEludGVyZXN0aW5nLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGRldl91cmluZ2AgaXMgYWxsIGFib3V0IGFzeW5jaHJvbm91cyBJL08gYW5kIHVzZXItc3BhY2UgaW50ZXJhY3Rpb24uIFNvLCBteSBndXQgZmVlbGluZyBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBsaWtlbHkgZGVhbCB3aXRoIG1hbmFnaW5nIHRoZSBxdWV1ZXMgaW52b2x2ZWQgaW4gdGhhdCBhc3luY2hyb25vdXMgcHJvY2Vzc2luZy4gSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgKmhvdyogdGhlc2UgbmV3IGZ1bmN0aW9ucyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCBleGlzdGluZyBzdHJ1Y3R1cmVzLgoKVGhlIGtleSBtb2RpZmljYXRpb24gYXBwZWFycyB0byBiZSBpbiBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYC4gVGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB3ZSBsb2NhdGUgYSBxdWV1ZS4gU28sIGlmIHRoZSAmIzM0O2N1cnJlbnQmIzM0OyBxdWV1ZSBkb2VzbiYjMzk7dCBoYXZlIGF2YWlsYWJsZSBlbnRyaWVzLCB0aGVuIHRoaXMgY2hhbmdlIGlzIGludGVuZGVkIHRvIGZpbmQgYSAqZGlmZmVyZW50KiBxdWV1ZSB0aGF0IGRvZXMuIFRoaXMgaXMgcG90ZW50aWFsbHkgYW4gaW1wb3J0YW50IG9wdGltaXphdGlvbi4gSXQgaXMgZGVmaW5pdGVseSB3b3J0aCBleHBsb3Jpbmcgd2h5IHRoZSAmIzM0O2N1cnJlbnQgcXVldWUmIzM0OyBtaWdodCBiZSBmdWxsIGFuZCB3aGVuIHdlIG1pZ2h0IG5lZWQgdG8gZmluZCBhbiBhbHRlcm5hdGl2ZS4gSXMgdGhpcyBzb2x2aW5nIGEgcG90ZW50aWFsIGRlYWRsb2NrLCBsb2FkIGJhbGFuY2luZyBpc3N1ZSwgb3IganVzdCBpbXByb3ZpbmcgdGhyb3VnaHB1dD8gSSBoYXZlIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgc2VtYW50aWNzIG9mIHRoZSBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCBmdW5jdGlvbiBpdHNlbGYgdG8gdHJ1bHkgdW5kZXJzdGFuZCBob3cgdGhpcyBpcyB1c2VkIGFuZCBpbXByb3ZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kZXZfdXJpbmcuYz0xMzM3PWZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZShzdHJ1Y3QgZnVzZV9yaW5nICpyaW5nLCBpbnQgbm9kZSwgdW5zaWduZWQgaW50IHNraXApXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMzU2LVxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxMzU3OnN0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZylcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTM1OC17XG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYz0xMzkzPXZvaWQgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcShzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcSwgc3RydWN0IGZ1c2VfcmVxICpyZXEpXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xNDAwLVx0ZXJyID0gLUVJTlZBTDtcbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTQwMTpcdHF1ZXVlID0gZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlKHJpbmcpO1xuZnMvZnVzZS9kZXZfdXJpbmcuYy0xNDAyLVx0aWYgKCFxdWV1ZSlcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jPTE0MzU9Ym9vbCBmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcShzdHJ1Y3QgZnVzZV9yZXEgKnJlcSlcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jLTE0NDEtXG5mcy9mdXNlL2Rldl91cmluZy5jOjE0NDI6XHRxdWV1ZSA9IGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZShyaW5nKTtcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTQ0My1cdGlmICghcXVldWUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIxNQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKlRyYWNpbmcgdGhlIFBhdGggb2YgVXJpbmcgVGFza3MgaW4gRlVTRSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIEZVU0UgcmVxdWVzdHMgYXJlIGhhbmRsZWQgd2l0aGluIHRoZSB1cmluZyBmcmFtZXdvcmsuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZWAgZnVuY3Rpb25zLiBJIGtub3cgaXQmIzM5O3MgY2FsbGVkIGZyb20gYm90aCBgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcWAgYW5kIGBmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcWAuIFRoYXQgdGVsbHMgbWUgdGhlc2UgYXJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgcXVldWluZyByZXF1ZXN0cyB0byBiZSBwcm9jZXNzZWQgd2l0aCB1cmluZy4gTm93LCBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGNhbiBmaW5kIHRoZSBjb2RlIGZvciBgZGV2X3VyaW5nLmNgLiBNeSBodW5jaCBpcyBpdCYjMzk7cyBlaXRoZXIgZ29pbmcgdG8gYmUgZGVmaW5lZCBpbiBgZnMvZnVzZS9LY29uZmlnYCB3aGljaCB3b3VsZCBhbGxvdyBtZSB0byBrbm93IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBvciBgZnMvZnVzZS9NYWtlZmlsZWAgd2lsbCBwcm9iYWJseSBiZSBteSBiZXN0IGJldCB0byBmaW5kIHRoZSBmaWxlIG9yIHdoZXJlIHRoZSBzeW1ib2wgaXMgZGVmaW5lZC4gSSYjMzk7bGwgc3RhcnQgdGhlcmUuIEtub3dpbmcgdGhpcyBsb2NhdGlvbiB3aWxsIGFsbG93IG1lIHRvIGludmVzdGlnYXRlIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBob3cgdGhlc2UgdGFza3MgYXJlIGludGVncmF0ZWQgaW50byB0aGUgdXJpbmcgcXVldWUsIGxpa2UgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkLCB0aGUgc2NoZWR1bGluZyBtZWNoYW5pc21zIGludm9sdmVkLCBhbmQgcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2X3VyaW5nJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9NYWtlZmlsZT0xOT1mdXNlLSQoQ09ORklHX1NZU0NUTCkgJiM0Mzs9IHN5c2N0bC5vXG5mcy9mdXNlL01ha2VmaWxlOjIwOmZ1c2UtJChDT05GSUdfRlVTRV9JT19VUklORykgJiM0Mzs9IGRldl91cmluZy5vXG5mcy9mdXNlL01ha2VmaWxlLTIxLVxuLS1cbmZzL2Z1c2UvZGV2LmMtOC0jaW5jbHVkZSBcJiMzNDthcmdzLmhcJiMzNDtcbmZzL2Z1c2UvZGV2LmM6OTojaW5jbHVkZSBcJiMzNDtkZXZfdXJpbmdfaS5oXCYjMzQ7XG5mcy9mdXNlL2Rldi5jLTEwLVxuLS1cbmZzL2Z1c2UvZGV2X3VyaW5nLmMtOC0jaW5jbHVkZSBcJiMzNDthcmdzLmhcJiMzNDtcbmZzL2Z1c2UvZGV2X3VyaW5nLmM6OTojaW5jbHVkZSBcJiMzNDtkZXZfdXJpbmdfaS5oXCYjMzQ7XG5mcy9mdXNlL2Rldl91cmluZy5jLTEwLSNpbmNsdWRlIFwmIzM0O2Z1c2VfdHJhY2UuaFwmIzM0O1xuLS1cbmZzL2Z1c2UvcmVxX3RpbWVvdXQuYy01LSNpbmNsdWRlIFwmIzM0O2Z1c2VfZGV2X2kuaFwmIzM0O1xuZnMvZnVzZS9yZXFfdGltZW91dC5jOjY6I2luY2x1ZGUgXCYjMzQ7ZGV2X3VyaW5nX2kuaFwmIzM0O1xuZnMvZnVzZS9yZXFfdGltZW91dC5jLTctXG4tLVxuZnMvZnVzZS90cmFjZS5jLTUtICovXG5mcy9mdXNlL3RyYWNlLmM6NjojaW5jbHVkZSBcJiMzNDtkZXZfdXJpbmdfaS5oXCYjMzQ7XG5mcy9mdXNlL3RyYWNlLmMtNy0jaW5jbHVkZSBcJiMzNDtmdXNlX2kuaFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSB0YXNrIGF0IGhhbmQgaGluZ2VzIG9uIHRoZSBgQ09ORklHX0ZVU0VfSU9fVVJJTkdgIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTXkgaW1tZWRpYXRlIHJlZmxleCBpcyB0byB2ZXJpZnkgaXRzIHByZXNlbmNlIGFuZCBhbnkgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMuIEdpdmVuIHRoYXQgaXQmIzM5O3MgcmVsYXRlZCB0byBGVVNFIGFuZCBpb191cmluZywgSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIGl0cyBhdmFpbGFiaWxpdHkuIE15IHN0YXJ0aW5nIHBvaW50IHdpbGwgYmUgYGZzL2Z1c2UvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBGVVNFLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBnZW5lcmFsbHkgaG91c2VkLCBzbyBpdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBsb29rIGZvciBkZXRhaWxzIG9uIGBGVVNFX0lPX1VSSU5HYC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBpdHMgc3ltYm9sIGFuZCBhbnkgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdCBzdGF0ZXMgdG8gZGV0ZXJtaW5lIGlmIGFueSBvZiB0aGVzZSBhcmUgdGhlIGNhdXNlLCBhcyB3ZWxsIGFzIGNvbmZpcm0gaWYgaXQmIzM5O3MgYWxyZWFkeSBlbmFibGVkIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gb3IgbmVlZHMgdG8gYmUgZW5hYmxlZC4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0ZVU0VfSU9fVVJJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWc9NTc9Y29uZmlnIEZVU0VfUEFTU1RIUk9VR0hcbi0tXG5mcy9mdXNlL0tjb25maWctNjctXG5mcy9mdXNlL0tjb25maWc6Njg6Y29uZmlnIEZVU0VfSU9fVVJJTkdcbmZzL2Z1c2UvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7RlVTRSBjb21tdW5pY2F0aW9uIG92ZXIgaW8tdXJpbmdcJiMzNDtcbi0tXG5mcy9mdXNlL01ha2VmaWxlPTE5PWZ1c2UtJChDT05GSUdfU1lTQ1RMKSAmIzQzOz0gc3lzY3RsLm9cbmZzL2Z1c2UvTWFrZWZpbGU6MjA6ZnVzZS0kKENPTkZJR19GVVNFX0lPX1VSSU5HKSAmIzQzOz0gZGV2X3VyaW5nLm9cbmZzL2Z1c2UvTWFrZWZpbGUtMjEtXG4tLVxuZnMvZnVzZS9kZXYuYz04MDk9c3NpemVfdCBmdXNlX2NoYW5fc2VuZChzdHJ1Y3QgZnVzZV9jaGFuICpmY2gsIHN0cnVjdCBmdXNlX2FyZ3MgKmFyZ3MpXG4tLVxuZnMvZnVzZS9kZXYuYy04NDMtXG5mcy9mdXNlL2Rldi5jOjg0NDojaWZkZWYgQ09ORklHX0ZVU0VfSU9fVVJJTkdcbmZzL2Z1c2UvZGV2LmMtODQ1LXN0YXRpYyBib29sIGZ1c2VfcmVxdWVzdF9xdWV1ZV9iYWNrZ3JvdW5kX3VyaW5nKHN0cnVjdCBmdXNlX3JlcSAqcmVxKVxuLS1cbmZzL2Z1c2UvZGV2LmM9ODYxPXN0YXRpYyBpbnQgZnVzZV9yZXF1ZXN0X3F1ZXVlX2JhY2tncm91bmQoc3RydWN0IGZ1c2VfcmVxICpyZXEpXG4tLVxuZnMvZnVzZS9kZXYuYy04NzItXG5mcy9mdXNlL2Rldi5jOjg3MzojaWZkZWYgQ09ORklHX0ZVU0VfSU9fVVJJTkdcbmZzL2Z1c2UvZGV2LmMtODc0LVx0aWYgKGZ1c2VfdXJpbmdfcmVhZHkoZmNoKSlcbi0tXG5mcy9mdXNlL2Rldi5jPTIzNzg9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuLS1cbmZzL2Z1c2UvZGV2LmMtMjM4OS1cdC5jb21wYXRfaW9jdGwgICA9IGNvbXBhdF9wdHJfaW9jdGwsXG5mcy9mdXNlL2Rldi5jOjIzOTA6I2lmZGVmIENPTkZJR19GVVNFX0lPX1VSSU5HXG5mcy9mdXNlL2Rldi5jLTIzOTEtXHQudXJpbmdfY21kXHQ9IGZ1c2VfdXJpbmdfY21kLFxuLS1cbmZzL2Z1c2UvZGV2Lmg9OTQ9dm9pZCBmdXNlX2NvcHlfZmluaXNoKHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgKmNzKTtcbmZzL2Z1c2UvZGV2LmgtOTUtXG5mcy9mdXNlL2Rldi5oOjk2OiNpZmRlZiBDT05GSUdfRlVTRV9JT19VUklOR1xuZnMvZnVzZS9kZXYuaC05Ny1ib29sIGZ1c2VfdXJpbmdfZW5hYmxlZCh2b2lkKTtcbmZzL2Z1c2UvZGV2Lmg9OTg9dm9pZCBmdXNlX3VyaW5nX2Rlc3RydWN0KHN0cnVjdCBmdXNlX2NoYW4gKmZjaCk7XG5mcy9mdXNlL2Rldi5oOjk5OiNlbHNlIC8qIENPTkZJR19GVVNFX0lPX1VSSU5HICovXG5mcy9mdXNlL2Rldi5oLTEwMC1zdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19lbmFibGVkKHZvaWQpXG4tLVxuZnMvZnVzZS9kZXYuaD0xMDU9c3RhdGljIGlubGluZSB2b2lkIGZ1c2VfdXJpbmdfZGVzdHJ1Y3Qoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuLS1cbmZzL2Z1c2UvZGV2LmgtMTA3LX1cbmZzL2Z1c2UvZGV2Lmg6MTA4OiNlbmRpZiAvKiBDT05GSUdfRlVTRV9JT19VUklORyAqL1xuZnMvZnVzZS9kZXYuaC0xMDktXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYz0xMjE4PWludCBmdXNlX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jLTEyNTktXHRzd2l0Y2ggKGNtZF9vcCkge1xuZnMvZnVzZS9kZXZfdXJpbmcuYzoxMjYwOlx0Y2FzZSBGVVNFX0lPX1VSSU5HX0NNRF9SRUdJU1RFUjpcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI2MS1cdFx0ZXJyID0gZnVzZV91cmluZ19yZWdpc3RlcihjbWQsIGlzc3VlX2ZsYWdzLCBmY2gpO1xuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjYyLVx0XHRpZiAoZXJyKSB7XG5mcy9mdXNlL2Rldl91cmluZy5jOjEyNjM6XHRcdFx0cHJfaW5mb19vbmNlKFwmIzM0O0ZVU0VfSU9fVVJJTkdfQ01EX1JFR0lTVEVSIGZhaWxlZCBlcnI9JWRcXG5cJiMzNDssXG5mcy9mdXNlL2Rldl91cmluZy5jLTEyNjQtXHRcdFx0XHQgICAgIGVycik7XG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjY5LVx0XHRicmVhaztcbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTI3MDpcdGNhc2UgRlVTRV9JT19VUklOR19DTURfQ09NTUlUX0FORF9GRVRDSDpcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI3MS1cdFx0ZXJyID0gZnVzZV91cmluZ19jb21taXRfZmV0Y2goY21kLCBpc3N1ZV9mbGFncywgZmNoKTtcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI3Mi1cdFx0aWYgKGVycikge1xuZnMvZnVzZS9kZXZfdXJpbmcuYzoxMjczOlx0XHRcdHByX2luZm9fb25jZShcJiMzNDtGVVNFX0lPX1VSSU5HX0NPTU1JVF9BTkRfRkVUQ0ggZmFpbGVkIGVycj0lZFxcblwmIzM0OyxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI3NC1cdFx0XHRcdCAgICAgZXJyKTtcbi0tXG5mcy9mdXNlL2Rldl91cmluZ19pLmgtMTEtXG5mcy9mdXNlL2Rldl91cmluZ19pLmg6MTI6I2lmZGVmIENPTkZJR19GVVNFX0lPX1VSSU5HXG5mcy9mdXNlL2Rldl91cmluZ19pLmgtMTMtXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oPTE2OD1zdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19yZWFkeShzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oLTE3NC1cbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaDoxNzU6I2Vsc2UgLyogQ09ORklHX0ZVU0VfSU9fVVJJTkcgKi9cbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaC0xNzYtXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oPTE5NT1zdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19yZXF1ZXN0X2V4cGlyZWQoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuLS1cbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaC0xOTktXG5mcy9mdXNlL2Rldl91cmluZ19pLmg6MjAwOiNlbmRpZiAvKiBDT05GSUdfRlVTRV9JT19VUklORyAqL1xuZnMvZnVzZS9kZXZfdXJpbmdfaS5oLTIwMS1cbi0tXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaD02NT1zdHJ1Y3QgZnVzZV9yZXEge1xuLS1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTEwOS1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjExMDojaWZkZWYgQ09ORklHX0ZVU0VfSU9fVVJJTkdcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTExMS1cdHZvaWQgKnJpbmdfZW50cnk7XG4tLVxuZnMvZnVzZS9mdXNlX2Rldl9pLmg9MTkwPXN0cnVjdCBmdXNlX2NoYW4ge1xuLS1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTI2Mi1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjI2MzojaWZkZWYgQ09ORklHX0ZVU0VfSU9fVVJJTkdcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTI2NC1cdC8qKiAgdXJpbmcgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY1MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgRlVTRV9JT19VUklORyBDb25maWd1cmF0aW9uIGFuZCBQYXRjaCoqCgpSaWdodCwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGBGVVNFX0lPX1VSSU5HYCBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBpbXBhY3Qgb2YgdGhpcyBzcGVjaWZpYyBwYXRjaC4gSXQgYXBwZWFycyB0byBiZSB6ZXJvaW5nIGluIG9uIGBmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVgLCB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0IGxpbmtzIHRhc2tzIHRvIHRoZSBJL08gcXVldWUuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBhcmVhLCBhcyBhbnkgY2hhbmdlIHRoZXJlIGlzIHByZXR0eSBmdW5kYW1lbnRhbC4KCk5vdywgbXkgbWluZCYjMzk7cyBpbW1lZGlhdGVseSBnb2luZyB0byB0cmFjZSB3aGVyZSBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCBpcyB1c2VkLiBUaGUgbm90ZXMgY2xlYXJseSBzdGF0ZSBpdCYjMzk7cyBlbXBsb3llZCB3aXRoaW4gYm90aCBgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcWAgYW5kIGBmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcWAuIE9rYXksIG1ha2VzIHNlbnNlLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgcXVldWluZyBkaWZmZXJlbnQgdHlwZXMgb2YgcmVxdWVzdHMuIFRpbWUgdG8gZGlnIGludG8gdGhvc2UgZnVuY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBtb2RpZmljYXRpb24gdG8gYGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZWAgaXMgY2hhbmdpbmcgdGhlIHF1ZXVlaW5nIGJlaGF2aW9yIGZvciBib3RoIHN0YW5kYXJkIEZVU0UgcmVxdWVzdHMgYW5kIGJsb2NrLWxheWVyIHJlcXVlc3RzLiBUaGlzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgaW1wbGljYXRpb25zIG9mIHRoZSBwYXRjaC4gSSYjMzk7bGwgbmVlZCB0byBhbmFseXplIHRoZSBkYXRhIHN0cnVjdHVyZXMsIHRoZSBsb2NraW5nLCBhbmQgdGhlIHBvdGVudGlhbCBwZXJmb3JtYW5jZSByYW1pZmljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kZXZfdXJpbmcuYz0xMzg0PXN0YXRpYyB2b2lkIGZ1c2VfdXJpbmdfZGlzcGF0Y2hfZW50KHN0cnVjdCBmdXNlX3JpbmdfZW50ICplbnQpXG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMzkyLS8qIHF1ZXVlIGEgZnVzZSByZXF1ZXN0IGFuZCBzZW5kIGl0IGlmIGEgcmluZyBlbnRyeSBpcyBhdmFpbGFibGUgKi9cbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTM5Mzp2b2lkIGZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXEoc3RydWN0IGZ1c2VfaXF1ZXVlICpmaXEsIHN0cnVjdCBmdXNlX3JlcSAqcmVxKVxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMzk0LXtcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jPTE0OTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmdXNlX2lxdWV1ZV9vcHMgZnVzZV9pb191cmluZ19vcHMgPSB7XG4tLVxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xNDk5LVx0LnNlbmRfaW50ZXJydXB0ID0gZnVzZV9kZXZfcXVldWVfaW50ZXJydXB0LFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxNTAwOlx0LnNlbmRfcmVxID0gZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcSxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTUwMS19O1xuLS1cbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaD0xNDA9aW50IGZ1c2VfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaDoxNDE6dm9pZCBmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxKHN0cnVjdCBmdXNlX2lxdWV1ZSAqZmlxLCBzdHJ1Y3QgZnVzZV9yZXEgKnJlcSk7XG5mcy9mdXNlL2Rldl91cmluZ19pLmgtMTQyLWJvb2wgZnVzZV91cmluZ19xdWV1ZV9icV9yZXEoc3RydWN0IGZ1c2VfcmVxICpyZXEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDEzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRlVTRSBpb191cmluZyBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcWAgZnVuY3Rpb24gYW5kIGhvdyBpdCByZWxhdGVzIHRvIGBmdXNlX2lvX3VyaW5nX29wcy5zZW5kX3JlcWAuIFRoZSBjb25uZWN0aW9uIHNlZW1zIGNsZWFyOyBpdCBzaG91bGQgYmUgZGlyZWN0bHkgcmVhY2hhYmxlIGFuZCBvcGVyYXRpbmcgYXMgZXhwZWN0ZWQuIFRoZSBwYXRjaCBhZGRzIHNvbWV0aGluZyBhYm91dCBmaW5kaW5nIGFuIGF2YWlsYWJsZSBxdWV1ZSB3aGVuIHRoZSBjdXJyZW50IG9uZSBpcyBmdWxsLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2UgZnVuY3Rpb25zOiBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCwgYGZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXFgLCBgZnVzZV91cmluZ19xdWV1ZV9icV9yZXFgLCBhbmQgYGZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZWAuIFRoZXNlIHNlZW0gY2VudHJhbCB0byB0aGUgbmV3IGxvZ2ljLgoKTGV0IG1lIHF1aWNrbHkgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIFJpZ2h0LCBgRlVTRV9JT19VUklOR2AgaXMgdGhlIGtleSBjb25maWcgaGVyZS4gTm93LCB3aGVyZSBpcyB0aGF0IGRlZmluZWQ/IEFoLCBpdCYjMzk7cyBpbiBgZnMvZnVzZS9LY29uZmlnYC4gRXhjZWxsZW50LiBJcyB0aGVyZSBhbnl0aGluZyB0aGF0IGRlcGVuZHMgb24gYEZVU0VfSU9fVVJJTkdgPyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0IHNhbWUgYGZzL2Z1c2UvS2NvbmZpZ2AgZmlsZSBmb3IgYW55IGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZVU0VfSU9fVVJJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWc9NTc9Y29uZmlnIEZVU0VfUEFTU1RIUk9VR0hcbi0tXG5mcy9mdXNlL0tjb25maWctNjctXG5mcy9mdXNlL0tjb25maWc6Njg6Y29uZmlnIEZVU0VfSU9fVVJJTkdcbmZzL2Z1c2UvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7RlVTRSBjb21tdW5pY2F0aW9uIG92ZXIgaW8tdXJpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk0OAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gRlVTRSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBgZnMvZnVzZS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNjguIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBmb3IgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiByZWxhdGVkIHRvIEZVU0UuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgc29tZXRoaW5nIGZ1bmRhbWVudGFsLCBtYXliZSByZWxhdGVkIHRvIGRldmljZSBzdXBwb3J0LCBzcGVjaWZpYyBmZWF0dXJlcywgb3IgZGVmYXVsdCBiZWhhdmlvci4gS25vd2luZyB0aGUgS2NvbmZpZyBzeW50YXgsIHRoZSBzdHJ1Y3R1cmUgYXJvdW5kIHRoaXMgbGluZSB3aWxsIGxpa2VseSBpbnZvbHZlIGEgYGNvbmZpZ2AgYmxvY2sgZGVmaW5pbmcgYSBib29sZWFuIG9yIHRyaXN0YXRlIHN5bWJvbC4gSeKAmW0gYW50aWNpcGF0aW5nIGEgZGVzY3JpcHRpb24sIHRoZSBgaGVscGAgdGV4dCwgYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdCB2YWx1ZXMuIE15IGJyYWluJiMzOTtzIGFscmVhZHkgcHJlLWxvYWRpbmcgdGhlIHJlbGV2YW50IGtlcm5lbCBidWlsZCBzeXN0ZW0ga25vd2xlZGdlIHRvIGludGVycHJldCB0aGUgY29udGV4dC4gRGVwZW5kaW5nIG9uIHdoYXQmIzM5O3MgdGhlcmUsIG15IG5leHQgc3RlcHMgY291bGQgcmFuZ2UgZnJvbSBhbmFseXppbmcgdGhlIGRlcGVuZGVuY2llcyB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhpcyBvcHRpb24sIHRvIGNoZWNraW5nIHRoZSBjb2RlIHRoYXQgY29uc3VtZXMgdGhpcyBLY29uZmlnIHN5bWJvbCwgb3IgZGV0ZXJtaW5pbmcgdGhlIGltcGxpY2F0aW9ucyBmb3IgZXhpc3RpbmcgRlVTRSBjb25maWd1cmF0aW9ucy4gVGhlIGxpbmUgbnVtYmVyIGlzIG15IGluaXRpYWwgZW50cnkgcG9pbnQsIEnigJltIHJlYWR5IHRvIHF1aWNrbHkgYnJhbmNoIG91dCBhbmQgZXhwbG9yZSBhZGphY2VudCBsaW5lcyBpZiBuZWNlc3NhcnkgdG8gdW5kZXJzdGFuZCB0aGUgb3B0aW9uJiMzOTtzIHBsYWNlIGluIHRoZSBsYXJnZXIgRlVTRSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDUwOlx0XHRoZWxwXG4gIDUxOlx0XHQgIFRoaXMgYWxsb3dzIGJ5cGFzc2luZyBndWVzdCBwYWdlIGNhY2hlIGFuZCBhbGxvd3MgbWFwcGluZyBob3N0IHBhZ2VcbiAgNTI6XHRcdCAgY2FjaGUgZGlyZWN0bHkgaW4gZ3Vlc3QgYWRkcmVzcyBzcGFjZS5cbiAgNTM6XHRcbiAgNTQ6XHRcdCAgSWYgeW91IHdhbnQgdG8gYWxsb3cgbW91bnRpbmcgYSBWaXJ0aW8gRmlsZXN5c3RlbSB3aXRoIHRoZSBcJiMzNDtkYXhcJiMzNDtcbiAgNTU6XHRcdCAgb3B0aW9uLCBhbnN3ZXIgWS5cbiAgNTY6XHRcbiAgNTc6XHRjb25maWcgRlVTRV9QQVNTVEhST1VHSFxuICA1ODpcdFx0Ym9vbCBcJiMzNDtGVVNFIHBhc3N0aHJvdWdoIG9wZXJhdGlvbnMgc3VwcG9ydFwmIzM0O1xuICA1OTpcdFx0ZGVmYXVsdCB5XG4gIDYwOlx0XHRkZXBlbmRzIG9uIEZVU0VfRlNcbiAgNjE6XHRcdHNlbGVjdCBGU19TVEFDS1xuICA2MjpcdFx0aGVscFxuICA2MzpcdFx0ICBUaGlzIGFsbG93cyBieXBhc3NpbmcgRlVTRSBzZXJ2ZXIgYnkgbWFwcGluZyBzcGVjaWZpYyBGVVNFIG9wZXJhdGlvbnNcbiAgNjQ6XHRcdCAgdG8gYmUgcGVyZm9ybWVkIGRpcmVjdGx5IG9uIGEgYmFja2luZyBmaWxlLlxuICA2NTpcdFxuICA2NjpcdFx0ICBJZiB5b3Ugd2FudCB0byBhbGxvdyBwYXNzdGhyb3VnaCBvcGVyYXRpb25zLCBhbnN3ZXIgWS5cbiAgNjc6XHRcbiAgNjg6XHRjb25maWcgRlVTRV9JT19VUklOR1xuICA2OTpcdFx0Ym9vbCBcJiMzNDtGVVNFIGNvbW11bmljYXRpb24gb3ZlciBpby11cmluZ1wmIzM0O1xuICA3MDpcdFx0ZGVmYXVsdCB5XG4gIDcxOlx0XHRkZXBlbmRzIG9uIEZVU0VfRlNcbiAgNzI6XHRcdGRlcGVuZHMgb24gSU9fVVJJTkdcbiAgNzM6XHRcdGhlbHBcbiAgNzQ6XHRcdCAgVGhpcyBhbGxvd3Mgc2VuZGluZyBGVVNFIHJlcXVlc3RzIG92ZXIgdGhlIGlvLXVyaW5nIGludGVyZmFjZSBhbmRcbiAgNzU6XHQgICAgICAgICAgYWxzbyBhZGRzIHJlcXVlc3QgY29yZSBhZmZpbml0eS5cbiAgNzY6XHRcbiAgNzc6XHRcdCAgSWYgeW91IHdhbnQgdG8gYWxsb3cgZnVzZSBzZXJ2ZXIvY2xpZW50IGNvbW11bmljYXRpb24gdGhyb3VnaCBpby11cmluZyxcbiAgNzg6XHRcdCAgYW5zd2VyIFlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYxNwoJCQkJCQkJb3V0cHV0OiAxMzcKCQkJCQkJCXRob3VnaHRzOiA5OTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGVVNFIElPX1VSSU5HIFBhdGNoIGZvciBTeXprYWxsZXIgQ292ZXJhZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYEZVU0VfSU9fVVJJTkdgIGNvbmZpZ3VyYXRpb24gYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBtb3N0IGVmZmVjdGl2ZSB3YXkgdG8gbGV2ZXJhZ2UgU3l6a2FsbGVyIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSBrZXkgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzLCBmdW5jdGlvbnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLgoKSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGEgZmV3IGZ1bmN0aW9ucy4gYGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZWAsIGBmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxYCwgYW5kIGBmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcWAgc2VlbSBsaWtlIHNvbGlkIGNhbmRpZGF0ZXMsIGJ1dCBsZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVgLiBJdCYjMzk7cyBgc3RhdGljYCwgd2hpY2ggbWlnaHQgbWFrZSBpdCB0cmlja2llciBmb3IgU3l6a2FsbGVyLCB0aG91Z2ggaXQgKmlzKiBwcmVzZW50IGluIHRoZSBkZWJ1ZyBpbmZvLiBBIHF1aWNrIGNoZWNrIGNvbmZpcm1zIGBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVgIGlzIGluZGVlZCBkZWZpbmVkIGluIGBmcy9mdXNlL2Rldl91cmluZy5jYCwgYXMgaXMgYGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZWAsIHNvIEkmIzM5O2xsIGluY2x1ZGUgaXQgaW4gdGhlIGxpc3Qgb2Ygc3ltYm9scyB0byBmb2N1cyBvbi4gU3l6a2FsbGVyICpjYW4qIHRhcmdldCBzdGF0aWMgZnVuY3Rpb25zIGlmIHRoZSBkZWJ1ZyBpbmZvIGlzIHRoZXJlLCB3aGljaCBpcyBoZWxwZnVsLgoKR2l2ZW4gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgcGF0Y2gsIGl0IHNlZW1zIGBmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxYCBhbmQgYGZ1c2VfdXJpbmdfcXVldWVfYnFfcmVxYCBhcmUgZ29vZCBlbnRyeSBwb2ludHMsIGFuZCBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCBpcyBhIGNyaXRpY2FsIHJvdXRpbmcgZnVuY3Rpb24uIEkmIzM5O2xsIHByb3ZpZGUgdGhvc2UgdG8gc3l6a2FsbGVyLCBhbmQgYWxzbyBpbmNsdWRlIGBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVgLgoKTm93LCByZWdhcmRpbmcgY29uZmlndXJhdGlvbnMsIGl0IHNlZW1zIGBGVVNFX0ZTYCBhbmQgYElPX1VSSU5HYCBhcmUgYWxyZWFkeSBlbmFibGVkIGJ5IGRlZmF1bHQuIFNvLCBgRlVTRV9JT19VUklOR2AgaXMgdGhlIG9ubHkgY29uZmlnIEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZS4KCkxldCYjMzk7cyByZXZpZXcgdGhlIHBhdGNoIGFnYWluIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNhcHR1cmluZyBldmVyeXRoaW5nLiBUaGUgYWRkZWQgY29kZSBpbmNsdWRlcyBhIGZ1bmN0aW9uIGBmdXNlX3VyaW5nX3F1ZXVlX2hhc19hdmFpbF9lbnRgLiBUaGUgbmV3IGNvZGUgbW9kaWZpZXMgYGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZWAgc3VjaCB0aGF0IGl0IHdpbGwgc2VhcmNoIGZvciBhbm90aGVyIGF2YWlsYWJsZSBxdWV1ZSBpZiB0aGUgaW5pdGlhbGx5IHNlbGVjdGVkIHF1ZXVlIGhhcyBubyBhdmFpbGFibGUgZW50cmllcy4gVGhpcyBsb29rcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUuCgpCYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTtsbCBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlJiMzNDssCiAgICAmIzM0O2Z1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXEmIzM0OywKICAgICYjMzQ7ZnVzZV91cmluZ19xdWV1ZV9icV9yZXEmIzM0OywKICAgICYjMzQ7ZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGVVNFIGlvLXVyaW5nIGNvbW11bmljYXRpb24gbG9naWMgdG8gZmluZCBhbiBhdmFpbGFibGUgcXVldWUgd2hlbiB0aGUgY3VycmVudCB0YXNrJiMzOTtzIHF1ZXVlIGhhcyBubyBhdmFpbGFibGUgZW50cmllcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBGVVNFIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IHVzaW5nIEZVU0Ugb3ZlciBpby11cmluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9JT19VUklORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2VfdXJpbmdfdGFza190b19xdWV1ZSYjMzQ7LAogICAgJiMzNDtmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxJiMzNDssCiAgICAmIzM0O2Z1c2VfdXJpbmdfcXVldWVfYnFfcmVxJiMzNDssCiAgICAmIzM0O2Z1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRlVTRSBpby11cmluZyBjb21tdW5pY2F0aW9uIGxvZ2ljIHRvIGZpbmQgYW4gYXZhaWxhYmxlIHF1ZXVlIHdoZW4gdGhlIGN1cnJlbnQgdGFzayYjMzk7cyBxdWV1ZSBoYXMgbm8gYXZhaWxhYmxlIGVudHJpZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgRlVTRSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCBieSB1c2luZyBGVVNFIG92ZXIgaW8tdXJpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDoxODo0NC44NTMzOTcwMjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTMyNzcyMzMxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0lPX1VSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlXCIsXG4gICAgXCJmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxXCIsXG4gICAgXCJmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcVwiLFxuICAgIFwiZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZVU0UgaW8tdXJpbmcgY29tbXVuaWNhdGlvbiBsb2dpYyB0byBmaW5kIGFuIGF2YWlsYWJsZSBxdWV1ZSB3aGVuIHRoZSBjdXJyZW50IHRhc2sncyBxdWV1ZSBoYXMgbm8gYXZhaWxhYmxlIGVudHJpZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgRlVTRSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCBieSB1c2luZyBGVVNFIG92ZXIgaW8tdXJpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE4OjQ0Ljg1MzQwMDkyNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4OTc0ODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjY3NWFhYjQ0Mjk2YTBlNDYxZjhiYjhkY2ZmNzQzNWM3ZjY2ODFhNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAxMDoxODo0MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldl91cmluZy5jIGIvZnMvZnVzZS9kZXZfdXJpbmcuY1xcbmluZGV4IDc3YzhjZWM0M2Q5YzY1Li5jMzY0MzhlNzlmOGQxNiAxMDA2NDRcXG4tLS0gYS9mcy9mdXNlL2Rldl91cmluZy5jXFxuKysrIGIvZnMvZnVzZS9kZXZfdXJpbmcuY1xcbkBAIC0xMSw2ICsxMSw3IEBAXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvX3VyaW5nL2NtZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdG9wb2xvZ3kuaFxcdTAwM2VcXG4gXFxuIHN0YXRpYyBib29sIF9fcmVhZF9tb3N0bHkgZW5hYmxlX3VyaW5nO1xcbiBtb2R1bGVfcGFyYW0oZW5hYmxlX3VyaW5nLCBib29sLCAwNjQ0KTtcXG5AQCAtMTMxOCwxMCArMTMxOSw0NiBAQCBzdGF0aWMgdm9pZCBmdXNlX3VyaW5nX3NlbmRfaW5fdGFzayhzdHJ1Y3QgaW9fdHdfcmVxIHR3X3JlcSwgaW9fdHdfdG9rZW5fdCB0dylcXG4gXFx0fVxcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19xdWV1ZV9oYXNfYXZhaWxfZW50KHN0cnVjdCBmdXNlX3JpbmdfcXVldWUgKnF1ZXVlKVxcbit7XFxuK1xcdGJvb2wgaGFzO1xcbitcXG4rXFx0aWYgKCFxdWV1ZSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZxdWV1ZS1cXHUwMDNlbG9jayk7XFxuK1xcdGhhcyA9ICFsaXN0X2VtcHR5KFxcdTAwMjZxdWV1ZS1cXHUwMDNlZW50X2F2YWlsX3F1ZXVlKTtcXG4rXFx0c3Bpbl91bmxvY2soXFx1MDAyNnF1ZXVlLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdHJldHVybiBoYXM7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpcXG4rZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlKHN0cnVjdCBmdXNlX3JpbmcgKnJpbmcsIGludCBub2RlLCB1bnNpZ25lZCBpbnQgc2tpcClcXG4re1xcbitcXHR1bnNpZ25lZCBpbnQgaTtcXG4rXFx0c3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqcXVldWU7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcmluZy1cXHUwMDNlbnJfcXVldWVzOyBpKyspIHtcXG4rXFxuK1xcdFxcdGlmIChpID09IHNraXApXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRpZiAobm9kZSBcXHUwMDNlPSAwIFxcdTAwMjZcXHUwMDI2IGNwdV90b19ub2RlKGkpICE9IG5vZGUpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0cXVldWUgPSByaW5nLVxcdTAwM2VxdWV1ZXNbaV07XFxuK1xcdFxcdGlmIChmdXNlX3VyaW5nX3F1ZXVlX2hhc19hdmFpbF9lbnQocXVldWUpKVxcbitcXHRcXHRcXHRyZXR1cm4gcXVldWU7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBOVUxMO1xcbit9XFxuK1xcbiBzdGF0aWMgc3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlKHN0cnVjdCBmdXNlX3JpbmcgKnJpbmcpXFxuIHtcXG4gXFx0dW5zaWduZWQgaW50IHFpZDtcXG4gXFx0c3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqcXVldWU7XFxuK1xcdGludCBub2RlO1xcbiBcXG4gXFx0cWlkID0gdGFza19jcHUoY3VycmVudCk7XFxuIFxcbkBAIC0xMzMxLDcgKzEzNjgsMTUgQEAgc3RhdGljIHN0cnVjdCBmdXNlX3JpbmdfcXVldWUgKmZ1c2VfdXJpbmdfdGFza190b19xdWV1ZShzdHJ1Y3QgZnVzZV9yaW5nICpyaW5nKVxcbiBcXHRcXHRxaWQgPSAwO1xcbiBcXG4gXFx0cXVldWUgPSByaW5nLVxcdTAwM2VxdWV1ZXNbcWlkXTtcXG4tXFx0V0FSTl9PTkNFKCFxdWV1ZSwgXFxcIk1pc3NpbmcgcXVldWUgZm9yIHFpZCAlZFxcXFxuXFxcIiwgcWlkKTtcXG4rXFx0aWYgKGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChxdWV1ZSkpXFxuK1xcdFxcdHJldHVybiBxdWV1ZTtcXG4rXFxuK1xcdG5vZGUgPSBjcHVfdG9fbm9kZShxaWQpO1xcbitcXHRxdWV1ZSA9IGZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZShyaW5nLCBub2RlLCBxaWQpO1xcbitcXHRpZiAoIXF1ZXVlKSB7XFxuK1xcdFxcdHF1ZXVlID0gcmluZy1cXHUwMDNlcXVldWVzW3FpZF07XFxuK1xcdFxcdFdBUk5fT05DRSghcXVldWUsIFxcXCJNaXNzaW5nIHF1ZXVlIGZvciBxaWQgJWRcXFxcblxcXCIsIHFpZCk7XFxuK1xcdH1cXG4gXFxuIFxcdHJldHVybiBxdWV1ZTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDoxODo0NS4zMjMwMTE3OTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwODU4MDg0OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVcIixcbiAgICBcImZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXFcIixcbiAgICBcImZ1c2VfdXJpbmdfcXVldWVfYnFfcmVxXCIsXG4gICAgXCJmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRlVTRSBpby11cmluZyBjb21tdW5pY2F0aW9uIGxvZ2ljIHRvIGZpbmQgYW4gYXZhaWxhYmxlIHF1ZXVlIHdoZW4gdGhlIGN1cnJlbnQgdGFzaydzIHF1ZXVlIGhhcyBubyBhdmFpbGFibGUgZW50cmllcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBGVVNFIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IHVzaW5nIEZVU0Ugb3ZlciBpby11cmluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmNjc1YWFiNDQyOTZhMGU0NjFmOGJiOGRjZmY3NDM1YzdmNjY4MWE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTA6MTg6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldl91cmluZy5jIGIvZnMvZnVzZS9kZXZfdXJpbmcuY1xuaW5kZXggNzdjOGNlYzQzZDljNjUuLmMzNjQzOGU3OWY4ZDE2IDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9kZXZfdXJpbmcuY1xuKysrIGIvZnMvZnVzZS9kZXZfdXJpbmcuY1xuQEAgLTExLDYgKzExLDcgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW9fdXJpbmcvY21kLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90b3BvbG9neS5oXHUwMDNlXG4gXG4gc3RhdGljIGJvb2wgX19yZWFkX21vc3RseSBlbmFibGVfdXJpbmc7XG4gbW9kdWxlX3BhcmFtKGVuYWJsZV91cmluZywgYm9vbCwgMDY0NCk7XG5AQCAtMTMxOCwxMCArMTMxOSw0NiBAQCBzdGF0aWMgdm9pZCBmdXNlX3VyaW5nX3NlbmRfaW5fdGFzayhzdHJ1Y3QgaW9fdHdfcmVxIHR3X3JlcSwgaW9fdHdfdG9rZW5fdCB0dylcbiBcdH1cbiB9XG4gXG4rc3RhdGljIGlubGluZSBib29sIGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpxdWV1ZSlcbit7XG4rXHRib29sIGhhcztcbitcbitcdGlmICghcXVldWUpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdHNwaW5fbG9jayhcdTAwMjZxdWV1ZS1cdTAwM2Vsb2NrKTtcbitcdGhhcyA9ICFsaXN0X2VtcHR5KFx1MDAyNnF1ZXVlLVx1MDAzZWVudF9hdmFpbF9xdWV1ZSk7XG4rXHRzcGluX3VubG9jayhcdTAwMjZxdWV1ZS1cdTAwM2Vsb2NrKTtcbitcbitcdHJldHVybiBoYXM7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpcbitmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZywgaW50IG5vZGUsIHVuc2lnbmVkIGludCBza2lwKVxuK3tcbitcdHVuc2lnbmVkIGludCBpO1xuK1x0c3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqcXVldWU7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyByaW5nLVx1MDAzZW5yX3F1ZXVlczsgaSsrKSB7XG4rXG4rXHRcdGlmIChpID09IHNraXApXG4rXHRcdFx0Y29udGludWU7XG4rXHRcdGlmIChub2RlIFx1MDAzZT0gMCBcdTAwMjZcdTAwMjYgY3B1X3RvX25vZGUoaSkgIT0gbm9kZSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0cXVldWUgPSByaW5nLVx1MDAzZXF1ZXVlc1tpXTtcbitcdFx0aWYgKGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChxdWV1ZSkpXG4rXHRcdFx0cmV0dXJuIHF1ZXVlO1xuK1x0fVxuK1xuK1x0cmV0dXJuIE5VTEw7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3QgZnVzZV9yaW5nX3F1ZXVlICpmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZylcbiB7XG4gXHR1bnNpZ25lZCBpbnQgcWlkO1xuIFx0c3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqcXVldWU7XG4rXHRpbnQgbm9kZTtcbiBcbiBcdHFpZCA9IHRhc2tfY3B1KGN1cnJlbnQpO1xuIFxuQEAgLTEzMzEsNyArMTM2OCwxNSBAQCBzdGF0aWMgc3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlKHN0cnVjdCBmdXNlX3JpbmcgKnJpbmcpXG4gXHRcdHFpZCA9IDA7XG4gXG4gXHRxdWV1ZSA9IHJpbmctXHUwMDNlcXVldWVzW3FpZF07XG4tXHRXQVJOX09OQ0UoIXF1ZXVlLCBcIk1pc3NpbmcgcXVldWUgZm9yIHFpZCAlZFxcblwiLCBxaWQpO1xuK1x0aWYgKGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudChxdWV1ZSkpXG4rXHRcdHJldHVybiBxdWV1ZTtcbitcbitcdG5vZGUgPSBjcHVfdG9fbm9kZShxaWQpO1xuK1x0cXVldWUgPSBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWUocmluZywgbm9kZSwgcWlkKTtcbitcdGlmICghcXVldWUpIHtcbitcdFx0cXVldWUgPSByaW5nLVx1MDAzZXF1ZXVlc1txaWRdO1xuK1x0XHRXQVJOX09OQ0UoIXF1ZXVlLCBcIk1pc3NpbmcgcXVldWUgZm9yIHFpZCAlZFxcblwiLCBxaWQpO1xuK1x0fVxuIFxuIFx0cmV0dXJuIHF1ZXVlO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE4OjQ1LjMyMzAxMzQ1MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODIwMTQwNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGVVNFIGRldl91cmluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBzZWVtcyB0byBiZSB0b3VjaGluZyBgZnMvZnVzZS9kZXZfdXJpbmcuY2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGNvbnRleHQuIElzIHRoaXMgY29kZSBldmVuIGVuYWJsZWQgaW4gYSBzdGFuZGFyZCBjb25maWd1cmF0aW9uPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGNvbnRyb2wgdGhlIGluY2x1c2lvbiBvZiB0aGlzIGZpbGUuIEtub3dpbmcgdGhhdCB3aWxsIGdpdmUgbWUgYSBmaXJzdCBpbmRpY2F0aW9uIG9mIGhvdyBicm9hZGx5IGFwcGxpY2FibGUgdGhpcyBjaGFuZ2UgaXMuXG5cblNwZWNpZmljYWxseSwgdGhlIHBhdGNoIHNlZW1zIHRvIGFkZCB0d28gbmV3IGZ1bmN0aW9uczogYGZ1c2VfdXJpbmdfcXVldWVfaGFzX2F2YWlsX2VudGAgYW5kIGBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVgLiBJbnRlcmVzdGluZy4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBkZXZfdXJpbmdgIGlzIGFsbCBhYm91dCBhc3luY2hyb25vdXMgSS9PIGFuZCB1c2VyLXNwYWNlIGludGVyYWN0aW9uLiBTbywgbXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgbGlrZWx5IGRlYWwgd2l0aCBtYW5hZ2luZyB0aGUgcXVldWVzIGludm9sdmVkIGluIHRoYXQgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcuIEkgaW1tZWRpYXRlbHkgd2FudCB0byB1bmRlcnN0YW5kICpob3cqIHRoZXNlIG5ldyBmdW5jdGlvbnMgYXJlIGludGVyYWN0aW5nIHdpdGggZXhpc3Rpbmcgc3RydWN0dXJlcy5cblxuVGhlIGtleSBtb2RpZmljYXRpb24gYXBwZWFycyB0byBiZSBpbiBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYC4gVGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB3ZSBsb2NhdGUgYSBxdWV1ZS4gU28sIGlmIHRoZSBcImN1cnJlbnRcIiBxdWV1ZSBkb2Vzbid0IGhhdmUgYXZhaWxhYmxlIGVudHJpZXMsIHRoZW4gdGhpcyBjaGFuZ2UgaXMgaW50ZW5kZWQgdG8gZmluZCBhICpkaWZmZXJlbnQqIHF1ZXVlIHRoYXQgZG9lcy4gVGhpcyBpcyBwb3RlbnRpYWxseSBhbiBpbXBvcnRhbnQgb3B0aW1pemF0aW9uLiBJdCBpcyBkZWZpbml0ZWx5IHdvcnRoIGV4cGxvcmluZyB3aHkgdGhlIFwiY3VycmVudCBxdWV1ZVwiIG1pZ2h0IGJlIGZ1bGwgYW5kIHdoZW4gd2UgbWlnaHQgbmVlZCB0byBmaW5kIGFuIGFsdGVybmF0aXZlLiBJcyB0aGlzIHNvbHZpbmcgYSBwb3RlbnRpYWwgZGVhZGxvY2ssIGxvYWQgYmFsYW5jaW5nIGlzc3VlLCBvciBqdXN0IGltcHJvdmluZyB0aHJvdWdocHV0PyBJIGhhdmUgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGBmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVgIGZ1bmN0aW9uIGl0c2VsZiB0byB0cnVseSB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIHVzZWQgYW5kIGltcHJvdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDA4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MTg6NDkuNDA1MDI5MTE5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NjE1MTA3NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvZGV2X3VyaW5nLmM9MTMzNz1mdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWUoc3RydWN0IGZ1c2VfcmluZyAqcmluZywgaW50IG5vZGUsIHVuc2lnbmVkIGludCBza2lwKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMzU2LVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTM1NzpzdGF0aWMgc3RydWN0IGZ1c2VfcmluZ19xdWV1ZSAqZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlKHN0cnVjdCBmdXNlX3JpbmcgKnJpbmcpXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMzU4LXtcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmM9MTM5Mz12b2lkIGZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXEoc3RydWN0IGZ1c2VfaXF1ZXVlICpmaXEsIHN0cnVjdCBmdXNlX3JlcSAqcmVxKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xNDAwLVxcdGVyciA9IC1FSU5WQUw7XFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxNDAxOlxcdHF1ZXVlID0gZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlKHJpbmcpO1xcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTQwMi1cXHRpZiAoIXF1ZXVlKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYz0xNDM1PWJvb2wgZnVzZV91cmluZ19xdWV1ZV9icV9yZXEoc3RydWN0IGZ1c2VfcmVxICpyZXEpXFxuLS1cXG5mcy9mdXNlL2Rldl91cmluZy5jLTE0NDEtXFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxNDQyOlxcdHF1ZXVlID0gZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlKHJpbmcpO1xcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTQ0My1cXHRpZiAoIXF1ZXVlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDoxODo1My4xNjY1NDkyN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDgyMjU1MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKlRyYWNpbmcgdGhlIFBhdGggb2YgVXJpbmcgVGFza3MgaW4gRlVTRSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGVzZSBGVVNFIHJlcXVlc3RzIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgdXJpbmcgZnJhbWV3b3JrLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVgIGZ1bmN0aW9ucy4gSSBrbm93IGl0J3MgY2FsbGVkIGZyb20gYm90aCBgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcWAgYW5kIGBmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcWAuIFRoYXQgdGVsbHMgbWUgdGhlc2UgYXJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgcXVldWluZyByZXF1ZXN0cyB0byBiZSBwcm9jZXNzZWQgd2l0aCB1cmluZy4gTm93LCBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGNhbiBmaW5kIHRoZSBjb2RlIGZvciBgZGV2X3VyaW5nLmNgLiBNeSBodW5jaCBpcyBpdCdzIGVpdGhlciBnb2luZyB0byBiZSBkZWZpbmVkIGluIGBmcy9mdXNlL0tjb25maWdgIHdoaWNoIHdvdWxkIGFsbG93IG1lIHRvIGtub3cgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG9yIGBmcy9mdXNlL01ha2VmaWxlYCB3aWxsIHByb2JhYmx5IGJlIG15IGJlc3QgYmV0IHRvIGZpbmQgdGhlIGZpbGUgb3Igd2hlcmUgdGhlIHN5bWJvbCBpcyBkZWZpbmVkLiBJJ2xsIHN0YXJ0IHRoZXJlLiBLbm93aW5nIHRoaXMgbG9jYXRpb24gd2lsbCBhbGxvdyBtZSB0byBpbnZlc3RpZ2F0ZSB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgaG93IHRoZXNlIHRhc2tzIGFyZSBpbnRlZ3JhdGVkIGludG8gdGhlIHVyaW5nIHF1ZXVlLCBsaWtlIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCwgdGhlIHNjaGVkdWxpbmcgbWVjaGFuaXNtcyBpbnZvbHZlZCwgYW5kIHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjE1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MTg6NTYuNzc0Nzc3MTcyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzU5NjI5NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2X3VyaW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvTWFrZWZpbGU9MTk9ZnVzZS0kKENPTkZJR19TWVNDVEwpICs9IHN5c2N0bC5vXFxuZnMvZnVzZS9NYWtlZmlsZToyMDpmdXNlLSQoQ09ORklHX0ZVU0VfSU9fVVJJTkcpICs9IGRldl91cmluZy5vXFxuZnMvZnVzZS9NYWtlZmlsZS0yMS1cXG4tLVxcbmZzL2Z1c2UvZGV2LmMtOC0jaW5jbHVkZSBcXFwiYXJncy5oXFxcIlxcbmZzL2Z1c2UvZGV2LmM6OTojaW5jbHVkZSBcXFwiZGV2X3VyaW5nX2kuaFxcXCJcXG5mcy9mdXNlL2Rldi5jLTEwLVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy04LSNpbmNsdWRlIFxcXCJhcmdzLmhcXFwiXFxuZnMvZnVzZS9kZXZfdXJpbmcuYzo5OiNpbmNsdWRlIFxcXCJkZXZfdXJpbmdfaS5oXFxcIlxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTAtI2luY2x1ZGUgXFxcImZ1c2VfdHJhY2UuaFxcXCJcXG4tLVxcbmZzL2Z1c2UvcmVxX3RpbWVvdXQuYy01LSNpbmNsdWRlIFxcXCJmdXNlX2Rldl9pLmhcXFwiXFxuZnMvZnVzZS9yZXFfdGltZW91dC5jOjY6I2luY2x1ZGUgXFxcImRldl91cmluZ19pLmhcXFwiXFxuZnMvZnVzZS9yZXFfdGltZW91dC5jLTctXFxuLS1cXG5mcy9mdXNlL3RyYWNlLmMtNS0gKi9cXG5mcy9mdXNlL3RyYWNlLmM6NjojaW5jbHVkZSBcXFwiZGV2X3VyaW5nX2kuaFxcXCJcXG5mcy9mdXNlL3RyYWNlLmMtNy0jaW5jbHVkZSBcXFwiZnVzZV9pLmhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE4OjU4LjI1MDc0NTM2M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTA1Njk5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGhpbmdlcyBvbiB0aGUgYENPTkZJR19GVVNFX0lPX1VSSU5HYCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24uIE15IGltbWVkaWF0ZSByZWZsZXggaXMgdG8gdmVyaWZ5IGl0cyBwcmVzZW5jZSBhbmQgYW55IGFzc29jaWF0ZWQgZGVwZW5kZW5jaWVzLiBHaXZlbiB0aGF0IGl0J3MgcmVsYXRlZCB0byBGVVNFIGFuZCBpb191cmluZywgSSdsbCBuZWVkIHRvIGNvbmZpcm0gaXRzIGF2YWlsYWJpbGl0eS4gTXkgc3RhcnRpbmcgcG9pbnQgd2lsbCBiZSBgZnMvZnVzZS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgRlVTRS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgZ2VuZXJhbGx5IGhvdXNlZCwgc28gaXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBsb29rIGZvciBkZXRhaWxzIG9uIGBGVVNFX0lPX1VSSU5HYC4gRnJvbSB0aGVyZSwgSSdsbCBxdWlja2x5IGNoZWNrIGl0cyBzeW1ib2wgYW5kIGFueSBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcyBvciBkZWZhdWx0IHN0YXRlcyB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRoZXNlIGFyZSB0aGUgY2F1c2UsIGFzIHdlbGwgYXMgY29uZmlybSBpZiBpdCdzIGFscmVhZHkgZW5hYmxlZCBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIG9yIG5lZWRzIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBiZSBzdXJlIGJlZm9yZSBJIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1NywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE5OjAxLjMwMTMxNzI4N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcwNzM2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRlVTRV9JT19VUklOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL0tjb25maWc9NTc9Y29uZmlnIEZVU0VfUEFTU1RIUk9VR0hcXG4tLVxcbmZzL2Z1c2UvS2NvbmZpZy02Ny1cXG5mcy9mdXNlL0tjb25maWc6Njg6Y29uZmlnIEZVU0VfSU9fVVJJTkdcXG5mcy9mdXNlL0tjb25maWctNjktXFx0Ym9vbCBcXFwiRlVTRSBjb21tdW5pY2F0aW9uIG92ZXIgaW8tdXJpbmdcXFwiXFxuLS1cXG5mcy9mdXNlL01ha2VmaWxlPTE5PWZ1c2UtJChDT05GSUdfU1lTQ1RMKSArPSBzeXNjdGwub1xcbmZzL2Z1c2UvTWFrZWZpbGU6MjA6ZnVzZS0kKENPTkZJR19GVVNFX0lPX1VSSU5HKSArPSBkZXZfdXJpbmcub1xcbmZzL2Z1c2UvTWFrZWZpbGUtMjEtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTgwOT1zc2l6ZV90IGZ1c2VfY2hhbl9zZW5kKHN0cnVjdCBmdXNlX2NoYW4gKmZjaCwgc3RydWN0IGZ1c2VfYXJncyAqYXJncylcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtODQzLVxcbmZzL2Z1c2UvZGV2LmM6ODQ0OiNpZmRlZiBDT05GSUdfRlVTRV9JT19VUklOR1xcbmZzL2Z1c2UvZGV2LmMtODQ1LXN0YXRpYyBib29sIGZ1c2VfcmVxdWVzdF9xdWV1ZV9iYWNrZ3JvdW5kX3VyaW5nKHN0cnVjdCBmdXNlX3JlcSAqcmVxKVxcbi0tXFxuZnMvZnVzZS9kZXYuYz04NjE9c3RhdGljIGludCBmdXNlX3JlcXVlc3RfcXVldWVfYmFja2dyb3VuZChzdHJ1Y3QgZnVzZV9yZXEgKnJlcSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtODcyLVxcbmZzL2Z1c2UvZGV2LmM6ODczOiNpZmRlZiBDT05GSUdfRlVTRV9JT19VUklOR1xcbmZzL2Z1c2UvZGV2LmMtODc0LVxcdGlmIChmdXNlX3VyaW5nX3JlYWR5KGZjaCkpXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIzNzg9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMzg5LVxcdC5jb21wYXRfaW9jdGwgICA9IGNvbXBhdF9wdHJfaW9jdGwsXFxuZnMvZnVzZS9kZXYuYzoyMzkwOiNpZmRlZiBDT05GSUdfRlVTRV9JT19VUklOR1xcbmZzL2Z1c2UvZGV2LmMtMjM5MS1cXHQudXJpbmdfY21kXFx0PSBmdXNlX3VyaW5nX2NtZCxcXG4tLVxcbmZzL2Z1c2UvZGV2Lmg9OTQ9dm9pZCBmdXNlX2NvcHlfZmluaXNoKHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgKmNzKTtcXG5mcy9mdXNlL2Rldi5oLTk1LVxcbmZzL2Z1c2UvZGV2Lmg6OTY6I2lmZGVmIENPTkZJR19GVVNFX0lPX1VSSU5HXFxuZnMvZnVzZS9kZXYuaC05Ny1ib29sIGZ1c2VfdXJpbmdfZW5hYmxlZCh2b2lkKTtcXG5mcy9mdXNlL2Rldi5oPTk4PXZvaWQgZnVzZV91cmluZ19kZXN0cnVjdChzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpO1xcbmZzL2Z1c2UvZGV2Lmg6OTk6I2Vsc2UgLyogQ09ORklHX0ZVU0VfSU9fVVJJTkcgKi9cXG5mcy9mdXNlL2Rldi5oLTEwMC1zdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19lbmFibGVkKHZvaWQpXFxuLS1cXG5mcy9mdXNlL2Rldi5oPTEwNT1zdGF0aWMgaW5saW5lIHZvaWQgZnVzZV91cmluZ19kZXN0cnVjdChzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXFxuLS1cXG5mcy9mdXNlL2Rldi5oLTEwNy19XFxuZnMvZnVzZS9kZXYuaDoxMDg6I2VuZGlmIC8qIENPTkZJR19GVVNFX0lPX1VSSU5HICovXFxuZnMvZnVzZS9kZXYuaC0xMDktXFxuLS1cXG5mcy9mdXNlL2Rldl91cmluZy5jPTEyMTg9aW50IGZ1c2VfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjU5LVxcdHN3aXRjaCAoY21kX29wKSB7XFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxMjYwOlxcdGNhc2UgRlVTRV9JT19VUklOR19DTURfUkVHSVNURVI6XFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjYxLVxcdFxcdGVyciA9IGZ1c2VfdXJpbmdfcmVnaXN0ZXIoY21kLCBpc3N1ZV9mbGFncywgZmNoKTtcXG5mcy9mdXNlL2Rldl91cmluZy5jLTEyNjItXFx0XFx0aWYgKGVycikge1xcbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTI2MzpcXHRcXHRcXHRwcl9pbmZvX29uY2UoXFxcIkZVU0VfSU9fVVJJTkdfQ01EX1JFR0lTVEVSIGZhaWxlZCBlcnI9JWRcXFxcblxcXCIsXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjY0LVxcdFxcdFxcdFxcdCAgICAgZXJyKTtcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI2OS1cXHRcXHRicmVhaztcXG5mcy9mdXNlL2Rldl91cmluZy5jOjEyNzA6XFx0Y2FzZSBGVVNFX0lPX1VSSU5HX0NNRF9DT01NSVRfQU5EX0ZFVENIOlxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI3MS1cXHRcXHRlcnIgPSBmdXNlX3VyaW5nX2NvbW1pdF9mZXRjaChjbWQsIGlzc3VlX2ZsYWdzLCBmY2gpO1xcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTI3Mi1cXHRcXHRpZiAoZXJyKSB7XFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxMjczOlxcdFxcdFxcdHByX2luZm9fb25jZShcXFwiRlVTRV9JT19VUklOR19DT01NSVRfQU5EX0ZFVENIIGZhaWxlZCBlcnI9JWRcXFxcblxcXCIsXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjc0LVxcdFxcdFxcdFxcdCAgICAgZXJyKTtcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaC0xMS1cXG5mcy9mdXNlL2Rldl91cmluZ19pLmg6MTI6I2lmZGVmIENPTkZJR19GVVNFX0lPX1VSSU5HXFxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oLTEzLVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oPTE2OD1zdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19yZWFkeShzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXFxuLS1cXG5mcy9mdXNlL2Rldl91cmluZ19pLmgtMTc0LVxcbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaDoxNzU6I2Vsc2UgLyogQ09ORklHX0ZVU0VfSU9fVVJJTkcgKi9cXG5mcy9mdXNlL2Rldl91cmluZ19pLmgtMTc2LVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oPTE5NT1zdGF0aWMgaW5saW5lIGJvb2wgZnVzZV91cmluZ19yZXF1ZXN0X2V4cGlyZWQoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oLTE5OS1cXG5mcy9mdXNlL2Rldl91cmluZ19pLmg6MjAwOiNlbmRpZiAvKiBDT05GSUdfRlVTRV9JT19VUklORyAqL1xcbmZzL2Z1c2UvZGV2X3VyaW5nX2kuaC0yMDEtXFxuLS1cXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaD02NT1zdHJ1Y3QgZnVzZV9yZXEge1xcbi0tXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMTA5LVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjExMDojaWZkZWYgQ09ORklHX0ZVU0VfSU9fVVJJTkdcXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0xMTEtXFx0dm9pZCAqcmluZ19lbnRyeTtcXG4tLVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oPTE5MD1zdHJ1Y3QgZnVzZV9jaGFuIHtcXG4tLVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTI2Mi1cXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaDoyNjM6I2lmZGVmIENPTkZJR19GVVNFX0lPX1VSSU5HXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMjY0LVxcdC8qKiAgdXJpbmcgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE5OjAxLjQ0ODM5NjAyNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDY0ODA2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgRlVTRV9JT19VUklORyBDb25maWd1cmF0aW9uIGFuZCBQYXRjaCoqXG5cblJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IHRoZSBgRlVTRV9JT19VUklOR2AgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZS4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgaW1wYWN0IG9mIHRoaXMgc3BlY2lmaWMgcGF0Y2guIEl0IGFwcGVhcnMgdG8gYmUgemVyb2luZyBpbiBvbiBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCwgdGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0IGxpbmtzIHRhc2tzIHRvIHRoZSBJL08gcXVldWUuIFRoYXQncyBhIGNyaXRpY2FsIGFyZWEsIGFzIGFueSBjaGFuZ2UgdGhlcmUgaXMgcHJldHR5IGZ1bmRhbWVudGFsLlxuXG5Ob3csIG15IG1pbmQncyBpbW1lZGlhdGVseSBnb2luZyB0byB0cmFjZSB3aGVyZSBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCBpcyB1c2VkLiBUaGUgbm90ZXMgY2xlYXJseSBzdGF0ZSBpdCdzIGVtcGxveWVkIHdpdGhpbiBib3RoIGBmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxYCBhbmQgYGZ1c2VfdXJpbmdfcXVldWVfYnFfcmVxYC4gT2theSwgbWFrZXMgc2Vuc2UuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBxdWV1aW5nIGRpZmZlcmVudCB0eXBlcyBvZiByZXF1ZXN0cy4gVGltZSB0byBkaWcgaW50byB0aG9zZSBmdW5jdGlvbnMuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgbW9kaWZpY2F0aW9uIHRvIGBmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVgIGlzIGNoYW5naW5nIHRoZSBxdWV1ZWluZyBiZWhhdmlvciBmb3IgYm90aCBzdGFuZGFyZCBGVVNFIHJlcXVlc3RzIGFuZCBibG9jay1sYXllciByZXF1ZXN0cy4gVGhpcyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGltcGxpY2F0aW9ucyBvZiB0aGUgcGF0Y2guIEknbGwgbmVlZCB0byBhbmFseXplIHRoZSBkYXRhIHN0cnVjdHVyZXMsIHRoZSBsb2NraW5nLCBhbmQgdGhlIHBvdGVudGlhbCBwZXJmb3JtYW5jZSByYW1pZmljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjUwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MTk6MDUuNTU0ODc4NjkxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDYwNTEwODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2Rldl91cmluZy5jPTEzODQ9c3RhdGljIHZvaWQgZnVzZV91cmluZ19kaXNwYXRjaF9lbnQoc3RydWN0IGZ1c2VfcmluZ19lbnQgKmVudClcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTM5Mi0vKiBxdWV1ZSBhIGZ1c2UgcmVxdWVzdCBhbmQgc2VuZCBpdCBpZiBhIHJpbmcgZW50cnkgaXMgYXZhaWxhYmxlICovXFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxMzkzOnZvaWQgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcShzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcSwgc3RydWN0IGZ1c2VfcmVxICpyZXEpXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMzk0LXtcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmM9MTQ5MT1zdGF0aWMgY29uc3Qgc3RydWN0IGZ1c2VfaXF1ZXVlX29wcyBmdXNlX2lvX3VyaW5nX29wcyA9IHtcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTQ5OS1cXHQuc2VuZF9pbnRlcnJ1cHQgPSBmdXNlX2Rldl9xdWV1ZV9pbnRlcnJ1cHQsXFxuZnMvZnVzZS9kZXZfdXJpbmcuYzoxNTAwOlxcdC5zZW5kX3JlcSA9IGZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXEsXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xNTAxLX07XFxuLS1cXG5mcy9mdXNlL2Rldl91cmluZ19pLmg9MTQwPWludCBmdXNlX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncyk7XFxuZnMvZnVzZS9kZXZfdXJpbmdfaS5oOjE0MTp2b2lkIGZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXEoc3RydWN0IGZ1c2VfaXF1ZXVlICpmaXEsIHN0cnVjdCBmdXNlX3JlcSAqcmVxKTtcXG5mcy9mdXNlL2Rldl91cmluZ19pLmgtMTQyLWJvb2wgZnVzZV91cmluZ19xdWV1ZV9icV9yZXEoc3RydWN0IGZ1c2VfcmVxICpyZXEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDoxOTowNS44NjA5MzQ0MDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY1MTc5NDk4NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGVVNFIGlvX3VyaW5nIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZnVzZV91cmluZ19xdWV1ZV9mdXNlX3JlcWAgZnVuY3Rpb24gYW5kIGhvdyBpdCByZWxhdGVzIHRvIGBmdXNlX2lvX3VyaW5nX29wcy5zZW5kX3JlcWAuIFRoZSBjb25uZWN0aW9uIHNlZW1zIGNsZWFyOyBpdCBzaG91bGQgYmUgZGlyZWN0bHkgcmVhY2hhYmxlIGFuZCBvcGVyYXRpbmcgYXMgZXhwZWN0ZWQuIFRoZSBwYXRjaCBhZGRzIHNvbWV0aGluZyBhYm91dCBmaW5kaW5nIGFuIGF2YWlsYWJsZSBxdWV1ZSB3aGVuIHRoZSBjdXJyZW50IG9uZSBpcyBmdWxsLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2UgZnVuY3Rpb25zOiBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCwgYGZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXFgLCBgZnVzZV91cmluZ19xdWV1ZV9icV9yZXFgLCBhbmQgYGZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZWAuIFRoZXNlIHNlZW0gY2VudHJhbCB0byB0aGUgbmV3IGxvZ2ljLlxuXG5MZXQgbWUgcXVpY2tseSBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBSaWdodCwgYEZVU0VfSU9fVVJJTkdgIGlzIHRoZSBrZXkgY29uZmlnIGhlcmUuIE5vdywgd2hlcmUgaXMgdGhhdCBkZWZpbmVkPyBBaCwgaXQncyBpbiBgZnMvZnVzZS9LY29uZmlnYC4gRXhjZWxsZW50LiBJcyB0aGVyZSBhbnl0aGluZyB0aGF0IGRlcGVuZHMgb24gYEZVU0VfSU9fVVJJTkdgPyBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0IHNhbWUgYGZzL2Z1c2UvS2NvbmZpZ2AgZmlsZSBmb3IgYW55IGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQxMywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDoxOToyMi4zNzg4ODY3NTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4ODk1NDA0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlVTRV9JT19VUklOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL0tjb25maWc9NTc9Y29uZmlnIEZVU0VfUEFTU1RIUk9VR0hcXG4tLVxcbmZzL2Z1c2UvS2NvbmZpZy02Ny1cXG5mcy9mdXNlL0tjb25maWc6Njg6Y29uZmlnIEZVU0VfSU9fVVJJTkdcXG5mcy9mdXNlL0tjb25maWctNjktXFx0Ym9vbCBcXFwiRlVTRSBjb21tdW5pY2F0aW9uIG92ZXIgaW8tdXJpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE5OjIyLjc2Nzg0NTEyNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTIxODE4NTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIEZVU0UgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gdGhlIGBmcy9mdXNlL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA2OC4gSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gcmVsYXRlZCB0byBGVVNFLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgc29tZXRoaW5nIGZ1bmRhbWVudGFsLCBtYXliZSByZWxhdGVkIHRvIGRldmljZSBzdXBwb3J0LCBzcGVjaWZpYyBmZWF0dXJlcywgb3IgZGVmYXVsdCBiZWhhdmlvci4gS25vd2luZyB0aGUgS2NvbmZpZyBzeW50YXgsIHRoZSBzdHJ1Y3R1cmUgYXJvdW5kIHRoaXMgbGluZSB3aWxsIGxpa2VseSBpbnZvbHZlIGEgYGNvbmZpZ2AgYmxvY2sgZGVmaW5pbmcgYSBib29sZWFuIG9yIHRyaXN0YXRlIHN5bWJvbC4gSeKAmW0gYW50aWNpcGF0aW5nIGEgZGVzY3JpcHRpb24sIHRoZSBgaGVscGAgdGV4dCwgYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdCB2YWx1ZXMuIE15IGJyYWluJ3MgYWxyZWFkeSBwcmUtbG9hZGluZyB0aGUgcmVsZXZhbnQga2VybmVsIGJ1aWxkIHN5c3RlbSBrbm93bGVkZ2UgdG8gaW50ZXJwcmV0IHRoZSBjb250ZXh0LiBEZXBlbmRpbmcgb24gd2hhdCdzIHRoZXJlLCBteSBuZXh0IHN0ZXBzIGNvdWxkIHJhbmdlIGZyb20gYW5hbHl6aW5nIHRoZSBkZXBlbmRlbmNpZXMgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMgb3B0aW9uLCB0byBjaGVja2luZyB0aGUgY29kZSB0aGF0IGNvbnN1bWVzIHRoaXMgS2NvbmZpZyBzeW1ib2wsIG9yIGRldGVybWluaW5nIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGV4aXN0aW5nIEZVU0UgY29uZmlndXJhdGlvbnMuIFRoZSBsaW5lIG51bWJlciBpcyBteSBpbml0aWFsIGVudHJ5IHBvaW50LCBJ4oCZbSByZWFkeSB0byBxdWlja2x5IGJyYW5jaCBvdXQgYW5kIGV4cGxvcmUgYWRqYWNlbnQgbGluZXMgaWYgbmVjZXNzYXJ5IHRvIHVuZGVyc3RhbmQgdGhlIG9wdGlvbidzIHBsYWNlIGluIHRoZSBsYXJnZXIgRlVTRSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk0OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjE5OjI2LjI4OTY2NjQyNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTMwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZnVzZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUwOlxcdFxcdGhlbHBcXG4gIDUxOlxcdFxcdCAgVGhpcyBhbGxvd3MgYnlwYXNzaW5nIGd1ZXN0IHBhZ2UgY2FjaGUgYW5kIGFsbG93cyBtYXBwaW5nIGhvc3QgcGFnZVxcbiAgNTI6XFx0XFx0ICBjYWNoZSBkaXJlY3RseSBpbiBndWVzdCBhZGRyZXNzIHNwYWNlLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGFsbG93IG1vdW50aW5nIGEgVmlydGlvIEZpbGVzeXN0ZW0gd2l0aCB0aGUgXFxcImRheFxcXCJcXG4gIDU1OlxcdFxcdCAgb3B0aW9uLCBhbnN3ZXIgWS5cXG4gIDU2OlxcdFxcbiAgNTc6XFx0Y29uZmlnIEZVU0VfUEFTU1RIUk9VR0hcXG4gIDU4OlxcdFxcdGJvb2wgXFxcIkZVU0UgcGFzc3Rocm91Z2ggb3BlcmF0aW9ucyBzdXBwb3J0XFxcIlxcbiAgNTk6XFx0XFx0ZGVmYXVsdCB5XFxuICA2MDpcXHRcXHRkZXBlbmRzIG9uIEZVU0VfRlNcXG4gIDYxOlxcdFxcdHNlbGVjdCBGU19TVEFDS1xcbiAgNjI6XFx0XFx0aGVscFxcbiAgNjM6XFx0XFx0ICBUaGlzIGFsbG93cyBieXBhc3NpbmcgRlVTRSBzZXJ2ZXIgYnkgbWFwcGluZyBzcGVjaWZpYyBGVVNFIG9wZXJhdGlvbnNcXG4gIDY0OlxcdFxcdCAgdG8gYmUgcGVyZm9ybWVkIGRpcmVjdGx5IG9uIGEgYmFja2luZyBmaWxlLlxcbiAgNjU6XFx0XFxuICA2NjpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGFsbG93IHBhc3N0aHJvdWdoIG9wZXJhdGlvbnMsIGFuc3dlciBZLlxcbiAgNjc6XFx0XFxuICA2ODpcXHRjb25maWcgRlVTRV9JT19VUklOR1xcbiAgNjk6XFx0XFx0Ym9vbCBcXFwiRlVTRSBjb21tdW5pY2F0aW9uIG92ZXIgaW8tdXJpbmdcXFwiXFxuICA3MDpcXHRcXHRkZWZhdWx0IHlcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gRlVTRV9GU1xcbiAgNzI6XFx0XFx0ZGVwZW5kcyBvbiBJT19VUklOR1xcbiAgNzM6XFx0XFx0aGVscFxcbiAgNzQ6XFx0XFx0ICBUaGlzIGFsbG93cyBzZW5kaW5nIEZVU0UgcmVxdWVzdHMgb3ZlciB0aGUgaW8tdXJpbmcgaW50ZXJmYWNlIGFuZFxcbiAgNzU6XFx0ICAgICAgICAgIGFsc28gYWRkcyByZXF1ZXN0IGNvcmUgYWZmaW5pdHkuXFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gYWxsb3cgZnVzZSBzZXJ2ZXIvY2xpZW50IGNvbW11bmljYXRpb24gdGhyb3VnaCBpby11cmluZyxcXG4gIDc4OlxcdFxcdCAgYW5zd2VyIFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MTk6MjYuMjkwMDgyNTY1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5NzQ4NjQwMzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRlVTRSBJT19VUklORyBQYXRjaCBmb3IgU3l6a2FsbGVyIENvdmVyYWdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgRlVTRV9JT19VUklOR2AgY29uZmlndXJhdGlvbiBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIG1vc3QgZWZmZWN0aXZlIHdheSB0byBsZXZlcmFnZSBTeXprYWxsZXIgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IGtleSBmdW5jdGlvbnMgdGhhdCB0aGlzIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMsIGZ1bmN0aW9ucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuXG5cbkknbSB6ZXJvaW5nIGluIG9uIGEgZmV3IGZ1bmN0aW9ucy4gYGZ1c2VfdXJpbmdfdGFza190b19xdWV1ZWAsIGBmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxYCwgYW5kIGBmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcWAgc2VlbSBsaWtlIHNvbGlkIGNhbmRpZGF0ZXMsIGJ1dCBsZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVgLiBJdCdzIGBzdGF0aWNgLCB3aGljaCBtaWdodCBtYWtlIGl0IHRyaWNraWVyIGZvciBTeXprYWxsZXIsIHRob3VnaCBpdCAqaXMqIHByZXNlbnQgaW4gdGhlIGRlYnVnIGluZm8uIEEgcXVpY2sgY2hlY2sgY29uZmlybXMgYGZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZWAgaXMgaW5kZWVkIGRlZmluZWQgaW4gYGZzL2Z1c2UvZGV2X3VyaW5nLmNgLCBhcyBpcyBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCwgc28gSSdsbCBpbmNsdWRlIGl0IGluIHRoZSBsaXN0IG9mIHN5bWJvbHMgdG8gZm9jdXMgb24uIFN5emthbGxlciAqY2FuKiB0YXJnZXQgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGUgZGVidWcgaW5mbyBpcyB0aGVyZSwgd2hpY2ggaXMgaGVscGZ1bC5cblxuR2l2ZW4gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgcGF0Y2gsIGl0IHNlZW1zIGBmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxYCBhbmQgYGZ1c2VfdXJpbmdfcXVldWVfYnFfcmVxYCBhcmUgZ29vZCBlbnRyeSBwb2ludHMsIGFuZCBgZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlYCBpcyBhIGNyaXRpY2FsIHJvdXRpbmcgZnVuY3Rpb24uIEknbGwgcHJvdmlkZSB0aG9zZSB0byBzeXprYWxsZXIsIGFuZCBhbHNvIGluY2x1ZGUgYGZ1c2VfdXJpbmdfZmluZF9hdmFpbF9xdWV1ZWAuXG5cbk5vdywgcmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLCBpdCBzZWVtcyBgRlVTRV9GU2AgYW5kIGBJT19VUklOR2AgYXJlIGFscmVhZHkgZW5hYmxlZCBieSBkZWZhdWx0LiBTbywgYEZVU0VfSU9fVVJJTkdgIGlzIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUuXG5cbkxldCdzIHJldmlldyB0aGUgcGF0Y2ggYWdhaW4gdG8gbWFrZSBzdXJlIEknbSBjYXB0dXJpbmcgZXZlcnl0aGluZy4gVGhlIGFkZGVkIGNvZGUgaW5jbHVkZXMgYSBmdW5jdGlvbiBgZnVzZV91cmluZ19xdWV1ZV9oYXNfYXZhaWxfZW50YC4gVGhlIG5ldyBjb2RlIG1vZGlmaWVzIGBmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVgIHN1Y2ggdGhhdCBpdCB3aWxsIHNlYXJjaCBmb3IgYW5vdGhlciBhdmFpbGFibGUgcXVldWUgaWYgdGhlIGluaXRpYWxseSBzZWxlY3RlZCBxdWV1ZSBoYXMgbm8gYXZhaWxhYmxlIGVudHJpZXMuIFRoaXMgbG9va3MgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlLlxuXG5CYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJJ2xsIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYxNywiT3V0cHV0VG9rZW5zIjoxMzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDoxOTo0Ni4wMzg3MjQ5ODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIzNTgzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX3VyaW5nX3Rhc2tfdG9fcXVldWVcIixcbiAgICBcImZ1c2VfdXJpbmdfcXVldWVfZnVzZV9yZXFcIixcbiAgICBcImZ1c2VfdXJpbmdfcXVldWVfYnFfcmVxXCIsXG4gICAgXCJmdXNlX3VyaW5nX2ZpbmRfYXZhaWxfcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRlVTRSBpby11cmluZyBjb21tdW5pY2F0aW9uIGxvZ2ljIHRvIGZpbmQgYW4gYXZhaWxhYmxlIHF1ZXVlIHdoZW4gdGhlIGN1cnJlbnQgdGFzaydzIHF1ZXVlIGhhcyBubyBhdmFpbGFibGUgZW50cmllcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBGVVNFIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IHVzaW5nIEZVU0Ugb3ZlciBpby11cmluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0lPX1VSSU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV91cmluZ190YXNrX3RvX3F1ZXVlXCIsXG4gICAgXCJmdXNlX3VyaW5nX3F1ZXVlX2Z1c2VfcmVxXCIsXG4gICAgXCJmdXNlX3VyaW5nX3F1ZXVlX2JxX3JlcVwiLFxuICAgIFwiZnVzZV91cmluZ19maW5kX2F2YWlsX3F1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZVU0UgaW8tdXJpbmcgY29tbXVuaWNhdGlvbiBsb2dpYyB0byBmaW5kIGFuIGF2YWlsYWJsZSBxdWV1ZSB3aGVuIHRoZSBjdXJyZW50IHRhc2sncyBxdWV1ZSBoYXMgbm8gYXZhaWxhYmxlIGVudHJpZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgRlVTRSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCBieSB1c2luZyBGVVNFIG92ZXIgaW8tdXJpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowp8glt[1] Phase: Succeeded StartedAt: 2026-07-14 10:20:00 +0000 UTC FinishedAt: 2026-07-14 10:20:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 10:20:00 +0000 UTC FinishedAt: 2026-07-14 10:20:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2] Phase: Succeeded StartedAt: 2026-07-14 10:20:00 +0000 UTC FinishedAt: 2026-07-14 15:09:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 10:20:00 +0000 UTC FinishedAt: 2026-07-14 15:09:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:20:00 +0000 UTC FinishedAt: 2026-07-14 10:20:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:20:00 +0000 UTC FinishedAt: 2026-07-14 10:20:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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-workflowp8glt/series-workflowp8glt-convert-artifact-2673600390/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:20:23 +0000 UTC FinishedAt: 2026-07-14 10:57:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:20:23 +0000 UTC FinishedAt: 2026-07-14 10:57:05 +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:*c9bf9701-4cd3-4ea7-bfb0-9de30e36d184,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-workflowp8glt/series-workflowp8glt-convert-artifact-2673600390/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": "403388ab-5eeb-4e57-955f-b434e8f234e3", "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-workflowp8glt/series-workflowp8glt-build-action-3751619356/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:20:23 +0000 UTC FinishedAt: 2026-07-14 10:54:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c9bf9701-4cd3-4ea7-bfb0-9de30e36d184,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-workflowp8glt/series-workflowp8glt-convert-artifact-2673600390/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": "403388ab-5eeb-4e57-955f-b434e8f234e3", "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-workflowp8glt/series-workflowp8glt-build-action-3751619356/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:57:05 +0000 UTC FinishedAt: 2026-07-14 10:57:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:57:05 +0000 UTC FinishedAt: 2026-07-14 10:57:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:57:05 +0000 UTC FinishedAt: 2026-07-14 10:57:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:57:05 +0000 UTC FinishedAt: 2026-07-14 10:57:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-workflowp8glt/series-workflowp8glt-convert-artifact-3907215577/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:57:27 +0000 UTC FinishedAt: 2026-07-14 10:59:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:57:27 +0000 UTC FinishedAt: 2026-07-14 10:59:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*403388ab-5eeb-4e57-955f-b434e8f234e3,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-workflowp8glt/series-workflowp8glt-build-action-3751619356/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-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:59:30 +0000 UTC FinishedAt: 2026-07-14 10:59:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:59:30 +0000 UTC FinishedAt: 2026-07-14 10:59:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:59:30 +0000 UTC FinishedAt: 2026-07-14 11:57:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:59:30 +0000 UTC FinishedAt: 2026-07-14 11:57:52 +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:*c9bf9701-4cd3-4ea7-bfb0-9de30e36d184,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-workflowp8glt/series-workflowp8glt-convert-artifact-3907215577/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": "bf335ff6-1a8f-426b-9050-b885947ff3fe", "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-workflowp8glt/series-workflowp8glt-build-action-1975158069/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 10:59:30 +0000 UTC FinishedAt: 2026-07-14 11:57:42 +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:*c9bf9701-4cd3-4ea7-bfb0-9de30e36d184,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-workflowp8glt/series-workflowp8glt-convert-artifact-3907215577/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": "bf335ff6-1a8f-426b-9050-b885947ff3fe", "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-workflowp8glt/series-workflowp8glt-build-action-1975158069/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 11:57:52 +0000 UTC FinishedAt: 2026-07-14 11:57:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 11:57:52 +0000 UTC FinishedAt: 2026-07-14 11:57:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 11:57:52 +0000 UTC FinishedAt: 2026-07-14 12:00:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 11:57:52 +0000 UTC FinishedAt: 2026-07-14 12:00:45 +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:*bf335ff6-1a8f-426b-9050-b885947ff3fe,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-workflowp8glt/series-workflowp8glt-build-action-1975158069/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-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 12:00:56 +0000 UTC FinishedAt: 2026-07-14 15:09:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 12:00:56 +0000 UTC FinishedAt: 2026-07-14 15:09:51 +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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"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:*403388ab-5eeb-4e57-955f-b434e8f234e3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bf335ff6-1a8f-426b-9050-b885947ff3fe,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-workflowp8glt/series-workflowp8glt-build-action-3751619356/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-workflowp8glt/series-workflowp8glt-build-action-1975158069/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 12:00:56 +0000 UTC FinishedAt: 2026-07-14 12:01:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 12:00:56 +0000 UTC FinishedAt: 2026-07-14 12:01:01 +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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"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-workflowp8glt/series-workflowp8glt-convert-artifact-2571989966/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 12:00:56 +0000 UTC FinishedAt: 2026-07-14 12:00:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 12:00:56 +0000 UTC FinishedAt: 2026-07-14 12:00:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 12:00:56 +0000 UTC FinishedAt: 2026-07-14 12:00:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 12:01:06 +0000 UTC FinishedAt: 2026-07-14 15:09:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp8glt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"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":["fuse_uring_task_to_queue","fuse_uring_queue_fuse_req","fuse_uring_queue_bq_req","fuse_uring_find_avail_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_IO_URING"],"series_id":"bd7f062a-45e6-4f13-86fd-7ea659f73709","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-07-14 12:01:06 +0000 UTC FinishedAt: 2026-07-14 15:09:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*403388ab-5eeb-4e57-955f-b434e8f234e3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bf335ff6-1a8f-426b-9050-b885947ff3fe,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-workflowp8glt/series-workflowp8glt-build-action-3751619356/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-workflowp8glt/series-workflowp8glt-build-action-1975158069/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-workflowp8glt/series-workflowp8glt-convert-artifact-2571989966/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,}