Name: series-workflow4mmbh Phase: Succeeded StartedAt: 2026-07-24 21:17:31 +0000 UTC FinishedAt: 2026-07-24 22:29:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4mmbh[0] Phase: Succeeded StartedAt: 2026-07-24 21:17:31 +0000 UTC FinishedAt: 2026-07-24 21:52:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4mmbh[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 21:17:31 +0000 UTC FinishedAt: 2026-07-24 21:52:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "615d300648869c774bd1fe54b4627bb0c20faed4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LLC2" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "615d300648869c774bd1fe54b4627bb0c20faed4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LLC2" ], "series_id": "655c6b2e-8241-4bc6-b786-4cd13578631a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "llc_conn_handler", "llc_conn_ev_rx_sabme_cmd_pbit_set_x" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xMQzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsbGNfY29ubl9oYW5kbGVyJiMzNDssCiAgICAmIzM0O2xsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMTEMgY29ubmVjdGlvbiBoYW5kbGVyIGBsbGNfY29ubl9oYW5kbGVyYCB0byBjaGVjayBpZiB0aGUgcmVjZWl2ZWQgcGFja2V0IGlzIGEgU0FCTUUgY29tbWFuZCBiZWZvcmUgY3JlYXRpbmcgYSBuZXcgaW5jb21pbmcgc29ja2V0IGZvciBhIGxpc3RlbmluZyBzb2NrZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBMTEMgbmV0d29ya2luZyBjb2RlLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEFGX0xMQyBzb2NrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTNiZDY1ZWI5YmQyMmQ0M2Y3Zjk2ZmMyNmFmNWMzNjI3NWEzMmQ0MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDIxOjUxOjU1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xuaW5kZXggMGEzZjVlMGJlYzAwY2UuLmEyMzU3NDhlMzZkY2UwIDEwMDY0NFxuLS0tIGEvbmV0L2xsYy9sbGNfY29ubi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbGxjL2xsY19jb25uLmNcbkBAIC04MDEsNyAmIzQzOzgwMSw4IEBAIHZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0ICogdGhlIG9yaWdpbmF0b3Igb2YgdGhlIG5ldyBjb25uZWN0aW9uLCBhbmQgdGhpcyBzdGF0ZSBoYXMgdG8gYmVcbiBcdCAqIGluIHRoZSBuZXdseSBjcmVhdGVkIHN0cnVjdCBzb2NrIHByaXZhdGUgYXJlYS4gLWFjbWVcbiBcdCAqL1xuLVx0aWYgKHVubGlrZWx5KHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pKSB7XG4mIzQzO1x0aWYgKHVubGlrZWx5KHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcbiBcdFx0c3RydWN0IHNvY2sgKm5ld3NrID0gbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHNrLCBza2ItXHUwMDNlZGV2LFxuIFx0XHRcdFx0XHRcdFx0ICAgICAgXHUwMDI2c2FkZHIsIFx1MDAyNmRhZGRyKTtcbiBcdFx0aWYgKCFuZXdzaylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TExDMiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2xsY19jb25uX2hhbmRsZXImIzM0OywKICAgICYjMzQ7bGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIExMQyBjb25uZWN0aW9uIGhhbmRsZXIgYGxsY19jb25uX2hhbmRsZXJgIHRvIGNoZWNrIGlmIHRoZSByZWNlaXZlZCBwYWNrZXQgaXMgYSBTQUJNRSBjb21tYW5kIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBpbmNvbWluZyBzb2NrZXQgZm9yIGEgbGlzdGVuaW5nIHNvY2tldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIExMQyBuZXR3b3JraW5nIGNvZGUsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfTExDIHNvY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1M2JkNjVlYjliZDIyZDQzZjdmOTZmYzI2YWY1YzM2Mjc1YTMyZDQxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMjQgMjE6NTE6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19jb25uLmMgYi9uZXQvbGxjL2xsY19jb25uLmMKaW5kZXggMGEzZjVlMGJlYzAwY2UuLmEyMzU3NDhlMzZkY2UwIDEwMDY0NAotLS0gYS9uZXQvbGxjL2xsY19jb25uLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2xsYy9sbGNfY29ubi5jCkBAIC04MDEsNyAmIzQzOzgwMSw4IEBAIHZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCSAqIHRoZSBvcmlnaW5hdG9yIG9mIHRoZSBuZXcgY29ubmVjdGlvbiwgYW5kIHRoaXMgc3RhdGUgaGFzIHRvIGJlCiAJICogaW4gdGhlIG5ld2x5IGNyZWF0ZWQgc3RydWN0IHNvY2sgcHJpdmF0ZSBhcmVhLiAtYWNtZQogCSAqLwotCWlmICh1bmxpa2VseShzay0mZ3Q7c2tfc3RhdGUgPT0gVENQX0xJU1RFTikpIHsKJiM0MzsJaWYgKHVubGlrZWx5KHNrLSZndDtza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSAmYW1wOyZhbXA7CiYjNDM7CSAgICAhbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHsKIAkJc3RydWN0IHNvY2sgKm5ld3NrID0gbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHNrLCBza2ItJmd0O2RldiwKIAkJCQkJCQkgICAgICAmYW1wO3NhZGRyLCAmYW1wO2RhZGRyKTsKIAkJaWYgKCFuZXdzaykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyMgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDExMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIENvbm5lY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvbGxjL2xsY19jb25uLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBgbGxjX2Nvbm5faGFuZGxlcmAgZnVuY3Rpb24uIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcyBhIG5ldyBjb25kaXRpb24sIGAhbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYilgLCB0byBhbiBleGlzdGluZyBgaWZgIHN0YXRlbWVudC4gVGhpcyBgaWZgIHN0YXRlbWVudCBpcyBhbHJlYWR5IGNoZWNraW5nIGlmIHRoZSBzb2NrZXQmIzM5O3Mgc3RhdGUgaXMgYFRDUF9MSVNURU5gLiBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2h5KiB0aGlzIGNvbmRpdGlvbiBpcyBiZWluZyBhZGRlZC4gV2hhdCBpcyBgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hgIGRvaW5nPyBBbmQgd2h5IGlzIGl0IHJlbGV2YW50IGluIHRoZSBjb250ZXh0IG9mIGEgc29ja2V0IGluIHRoZSBsaXN0ZW5pbmcgc3RhdGU/IE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgcmVsYXRlZCB0byBhIHNwZWNpZmljIHZ1bG5lcmFiaWxpdHkgb3Igb3B0aW1pemF0aW9uLiBJcyBpdCBhIGJ1ZyBmaXg/IE9yIHNvbWUgbmV3IGZlYXR1cmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgY29uZGl0aW9uYWwuIExldCYjMzk7cyBzZWUgaWYgdGhlIGNvZGUgaXRzZWxmIHByb3ZpZGVzIGFueSBpbW1lZGlhdGUgY2x1ZXMgYW5kIHdoYXQgdGhpcyBuZXcgZnVuY3Rpb24mIzM5O3Mgcm9sZSBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsbGNfY29ubl9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2xsYy9sbGNfY29ubi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9sbGMvbGxjX2Nvbm4uYz02Mj1pbnQgbGxjX2Nvbm5fc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jLTk0LVx0XHQgKiBza2ItXHUwMDNlc2sgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgc3RydWN0IHNvY2sgaW5cbm5ldC9sbGMvbGxjX2Nvbm4uYzo5NTpcdFx0ICogbGxjX2Nvbm5faGFuZGxlci4gLWFjbWVcbm5ldC9sbGMvbGxjX2Nvbm4uYy05Ni1cdFx0ICovXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jPTc1OT1zdGF0aWMgc3RydWN0IHNvY2sgKmxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jLTc4MC1cbm5ldC9sbGMvbGxjX2Nvbm4uYzo3ODE6dm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbGxjL2xsY19jb25uLmMtNzgyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzM5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB1bnBhY2sgd2hhdCBpdCYjMzk7cyBkb2luZyB3aXRoIHRoZSBTQUJNRSBjb21tYW5kIGFuZCB0aGUgUC1iaXQuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gbGlrZWx5IGhhbmRsZXMgdGhlIHNldHRpbmcgb2YgdGhlIFBvbGwgYml0IChQLWJpdCkgd2l0aGluIHRoZSBjb250ZXh0IG9mIGFuIExMQyBjb25uZWN0aW9uLCBsaWtlbHkgZHVyaW5nIHRoZSByZWNlcHRpb24gb2YgYW4gU0FCTUUgKFNldCBBc3luY2hyb25vdXMgQmFsYW5jZWQgTW9kZSBFeHRlbmRlZCkgY29tbWFuZC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIHN1c3BlY3QgdGhpcyBoYXMgdG8gZG8gd2l0aCBsaW5rIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSBob3cgd2UgbWFuYWdlIGFuZCByZXNwb25kIHRvIGluY29taW5nIHJlcXVlc3RzIG9yIGNvbW1hbmRzLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGZ1bmN0aW9uJiMzOTtzIGludGVybmFsIGxvZ2ljOyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBQLWJpdCYjMzk7cyByb2xlIGluIHRoZSBsaW5rIGxheWVyJiMzOTtzIGNvbm5lY3Rpb24gc2V0dXAgb3IgY29udHJvbCBwcm9jZXNzLiBXaGF0IHNwZWNpZmljYWxseSB0cmlnZ2VycyB0aGUgaGFuZGxpbmcgb2YgdGhpcyBmdW5jdGlvbj8gSG93IGRvZXMgaXQgZGlmZmVyIGZyb20gb3RoZXIgU0FCTUUgY29tbWFuZCBoYW5kbGluZyBmdW5jdGlvbnM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBzdWNoIGFzIGBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfeGAuIEkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0IGNvcnJlY3RseSBoYW5kbGVzIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zIG9yIGVkZ2UgY2FzZXMuIEZyb20gdGhlcmUsIEkgbmVlZCB0byBzZWUgaG93IGl0IG1pZ2h0IGJlIGludGVyYWN0aW5nIHdpdGggdGhlIGludGVybmFsIGNvbm5lY3Rpb24gc3RhdGUsIHBvc3NpYmx5IGJ5IHRyYW5zaXRpb25pbmcgc3RhdGVzIG9yIHNldHRpbmcgZmxhZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbGxjX2NfZXYuaD0xNDg9aW50IGxsY19jb25uX2V2X3J4X3Jlal9yc3BfZmJpdF9zZXRfeChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xuaW5jbHVkZS9uZXQvbGxjX2NfZXYuaDoxNDk6aW50IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL25ldC9sbGNfY19ldi5oLTE1MC1pbnQgbGxjX2Nvbm5fZXZfcnhfdWFfcnNwX2ZiaXRfc2V0X3goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5uZXQvbGxjL2xsY19jX2V2LmM9NDIxPWludCBsbGNfY29ubl9ldl9yeF9ycl9yc3BfZmJpdF9zZXRfMShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2xsYy9sbGNfY19ldi5jLTQzMC1cbm5ldC9sbGMvbGxjX2NfZXYuYzo0MzE6aW50IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9sbGMvbGxjX2NfZXYuYy00MzIte1xuLS1cbm5ldC9sbGMvbGxjX2Nfc3QuYz04Mj1zdGF0aWMgc3RydWN0IGxsY19jb25uX3N0YXRlX3RyYW5zIGxsY19jb21tb25fc3RhdGVfdHJhbnNfMyA9IHtcbm5ldC9sbGMvbGxjX2Nfc3QuYzo4MzpcdC5ldlx0ICAgICAgID0gbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gsXG5uZXQvbGxjL2xsY19jX3N0LmMtODQtXHQubmV4dF9zdGF0ZSAgICA9IExMQ19DT05OX1NUQVRFX05PUk1BTCxcbi0tXG5uZXQvbGxjL2xsY19jX3N0LmM9MzgxPXN0YXRpYyBzdHJ1Y3QgbGxjX2Nvbm5fc3RhdGVfdHJhbnMgbGxjX2FkbV9zdGF0ZV90cmFuc18yID0ge1xubmV0L2xsYy9sbGNfY19zdC5jOjM4MjpcdC5ldlx0ICAgICAgID0gbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gsXG5uZXQvbGxjL2xsY19jX3N0LmMtMzgzLVx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9OT1JNQUwsXG4tLVxubmV0L2xsYy9sbGNfY19zdC5jPTQ1Nj1zdGF0aWMgc3RydWN0IGxsY19jb25uX3N0YXRlX3RyYW5zIGxsY19zZXR1cF9zdGF0ZV90cmFuc18xID0ge1xubmV0L2xsYy9sbGNfY19zdC5jOjQ1NzpcdC5ldlx0ICAgICAgID0gbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gsXG5uZXQvbGxjL2xsY19jX3N0LmMtNDU4LVx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9TRVRVUCxcbi0tXG5uZXQvbGxjL2xsY19jX3N0LmM9NDE3ND1zdGF0aWMgc3RydWN0IGxsY19jb25uX3N0YXRlX3RyYW5zIGxsY19kX2Nvbm5fc3RhdGVfdHJhbnNfMSA9IHtcbm5ldC9sbGMvbGxjX2Nfc3QuYzo0MTc1Olx0LmV2XHQgICAgICAgPSBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeCxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00MTc2LVx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9BRE0sXG4tLVxubmV0L2xsYy9sbGNfY19zdC5jPTQxOTc9c3RhdGljIHN0cnVjdCBsbGNfY29ubl9zdGF0ZV90cmFucyBsbGNfZF9jb25uX3N0YXRlX3RyYW5zXzFfMSA9IHtcbm5ldC9sbGMvbGxjX2Nfc3QuYzo0MTk4Olx0LmV2XHQgICAgICAgPSBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeCxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00MTk5LVx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9BRE0sXG4tLVxubmV0L2xsYy9sbGNfY19zdC5jPTQ0MjI9c3RhdGljIHN0cnVjdCBsbGNfY29ubl9zdGF0ZV90cmFucyBsbGNfcnN0X3N0YXRlX3RyYW5zXzEgPSB7XG5uZXQvbGxjL2xsY19jX3N0LmM6NDQyMzpcdC5ldlx0ICAgICAgID0gbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gsXG5uZXQvbGxjL2xsY19jX3N0LmMtNDQyNC1cdC5uZXh0X3N0YXRlICAgID0gTExDX0NPTk5fU1RBVEVfUkVTRVQsXG4tLVxubmV0L2xsYy9sbGNfY19zdC5jPTQ3MTM9c3RhdGljIHN0cnVjdCBsbGNfY29ubl9zdGF0ZV90cmFucyBsbGNfZXJyb3Jfc3RhdGVfdHJhbnNfMSA9IHtcbm5ldC9sbGMvbGxjX2Nfc3QuYzo0NzE0Olx0LmV2XHQgICAgICAgPSBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeCxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00NzE1LVx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9OT1JNQUwsXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jPTc4MT12b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbGxjL2xsY19jb25uLmMtODA0LVx0aWYgKHVubGlrZWx5KHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pIFx1MDAyNlx1MDAyNlxubmV0L2xsYy9sbGNfY29ubi5jOjgwNTpcdCAgICAhbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcbm5ldC9sbGMvbGxjX2Nvbm4uYy04MDYtXHRcdHN0cnVjdCBzb2NrICpuZXdzayA9IGxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzaywgc2tiLVx1MDAzZWRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDA1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGEgQ2hhbmdlIGluIGBsbGNfY29ubl9oYW5kbGVyYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYG5ldC9sbGMvbGxjX2Nvbm4uY2AuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgdGhpcyBhbHRlcnMgdGhlIGBsbGNfY29ubl9oYW5kbGVyYCBmdW5jdGlvbi4gTXkgaW5zdGluY3Qgbm93IGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSByZWxhdGVkIGBuZXQvbGxjL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIG1pZ2h0IGJlIGFmZmVjdGVkIG9yIG1pZ2h0IG5vdyBiZSBuZWNlc3NhcnkgdG8gZW5hYmxlIHRoaXMgbmV3IGZ1bmN0aW9uYWxpdHksIG9yIGV2ZW4gdG8gc2VlIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbnZvbHZlZC4gVGhlIEtjb25maWcgaXMga2V5IHRvIGRldGVybWluaW5nIHRoZSBwcmFjdGljYWwgaW1wbGljYXRpb25zIG9mIHRoaXMgY29kZSBjaGFuZ2UgYW5kIGhvdyBpdCBpbXBhY3RzIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MgYW5kIHN5c3RlbSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBMTEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbGxjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2xsYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbGxjL0tjb25maWc6Mjpjb25maWcgTExDXG5uZXQvbGxjL0tjb25maWctMy1cdHRyaXN0YXRlXG5uZXQvbGxjL0tjb25maWctNC1cbm5ldC9sbGMvS2NvbmZpZzo1OmNvbmZpZyBMTEMyXG5uZXQvbGxjL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0FOU0kvSUVFRSA4MDIuMiBMTEMgdHlwZSAyIFN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzU5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkxMQzIgUHJvbXB0IEludmVzdGlnYXRpb24qKgoKT2theSwgc28gTExDMiBpcyB0aGUgb25lIHdlIHRoaW5rIGlzIGRyaXZpbmcgdGhlIHByb21wdCBiZWhhdmlvci4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBidWlsZCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgdGhlIE1ha2VmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgTExDMiBpcyBjb25zdHJ1Y3RlZCBhbmQgaWYgdGhlcmUgYXJlIGFueSBoaW50cyByZWxhdGVkIHRvIHByb21wdCBoYW5kbGluZyBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIExldCYjMzk7cyBkaXZlIGludG8gYG5ldC9sbGMvTWFrZWZpbGVgLiBJJiMzOTttIGhvcGluZyB0byBmaW5kIHNvbWUgY2x1ZXMgdGhlcmUgYWJvdXQgaG93IHRoZSBwcm9tcHQgaXMgaW50ZWdyYXRlZCBvciBtYW5hZ2VkIHdpdGhpbiB0aGF0IG1vZHVsZS4gVGhpcyBpcyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBsaW5rYWdlcywgaWYgYW55d2hlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xsY19jb25uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2xsYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbGxjL01ha2VmaWxlPTE5PW9iai0kKENPTkZJR19MTEMyKSAmIzQzOz0gbGxjMi5vXG5uZXQvbGxjL01ha2VmaWxlLTIwLVxubmV0L2xsYy9NYWtlZmlsZToyMTpsbGMyLXkgOj0gbGxjX2lmLm8gbGxjX2NfZXYubyBsbGNfY19hYy5vIGxsY19jb25uLm8gbGxjX2Nfc3QubyBsbGNfcGR1Lm8gXFxcbm5ldC9sbGMvTWFrZWZpbGUtMjItXHQgIGxsY19zYXAubyBsbGNfc19hYy5vIGxsY19zX2V2Lm8gbGxjX3Nfc3QubyBhZl9sbGMubyBsbGNfc3RhdGlvbi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwOTgKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqRGVidWdnaW5nIHRoZSBMTEMyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19MTEMyYCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZW1lbnQgaGVyZS4gTmVlZCB0byB2ZXJpZnkgdGhhdCYjMzk7cyBlbmFibGVkIGFuZCBmdW5jdGlvbmluZyBjb3JyZWN0bHkuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25maXJtIHRoYXQgYGxsY19jb25uX2hhbmRsZXJgIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBpbiB0aGlzIGN1cnJlbnQgc2NlbmFyaW8uIExldCBtZSBwdWxsIHVwIHRoZSBjb2RlOyBJIHJlY2FsbCB0aGF0JiMzOTtzIGluIGBsbGNfY29ubi5jYC4gT2theSwgaGVyZSB3ZSBhcmUuIE5vdywgdGhlIGtleSBpcyAqaG93KiBpcyB0aGF0IGhhbmRsZXIgaW52b2tlZD8gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGZsb3cuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgcHJvYmFibHkgY2FsbGVkIGZyb20gYSByZWNlaXZlIHBhdGgsIHNvbWV0aGluZyBsaWtlIGBsbGNfcmN2YCBvciBhIHNpbWlsYXIgcmVjZWl2ZSBmdW5jdGlvbi4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSwgdG8gdHJhY2UgdGhlIHBhdGggYW5kIG1ha2Ugc3VyZSBpdCBpcyBhY3R1YWxseSBnZXR0aW5nIGNhbGxlZCBhcyBleHBlY3RlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGxjX2Nvbm5faGFuZGxlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9sbGMuaD0xNDA9dm9pZCBsbGNfc2FwX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL25ldC9sbGMuaDoxNDE6dm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IpO1xuaW5jbHVkZS9uZXQvbGxjLmgtMTQyLVxuLS1cbm5ldC9sbGMvYWZfbGxjLmM9MTI0ND1zdGF0aWMgaW50IF9faW5pdCBsbGMyX2luaXQodm9pZClcbi0tXG5uZXQvbGxjL2FmX2xsYy5jLTEyNjktXHRsbGNfYWRkX3BhY2soTExDX0RFU1RfU0FQLCBsbGNfc2FwX2hhbmRsZXIpO1xubmV0L2xsYy9hZl9sbGMuYzoxMjcwOlx0bGxjX2FkZF9wYWNrKExMQ19ERVNUX0NPTk4sIGxsY19jb25uX2hhbmRsZXIpO1xubmV0L2xsYy9hZl9sbGMuYy0xMjcxLW91dDpcbi0tXG5uZXQvbGxjL2xsY19jb25uLmM9NjI9aW50IGxsY19jb25uX3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9sbGMvbGxjX2Nvbm4uYy05NC1cdFx0ICogc2tiLVx1MDAzZXNrIHBvaW50aW5nIHRvIHRoZSBuZXdseSBjcmVhdGVkIHN0cnVjdCBzb2NrIGluXG5uZXQvbGxjL2xsY19jb25uLmM6OTU6XHRcdCAqIGxsY19jb25uX2hhbmRsZXIuIC1hY21lXG5uZXQvbGxjL2xsY19jb25uLmMtOTYtXHRcdCAqL1xuLS1cbm5ldC9sbGMvbGxjX2Nvbm4uYz03NTk9c3RhdGljIHN0cnVjdCBzb2NrICpsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9sbGMvbGxjX2Nvbm4uYy03ODAtXG5uZXQvbGxjL2xsY19jb25uLmM6NzgxOnZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2xsYy9sbGNfY29ubi5jLTc4Mi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MzgKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMTEMgQ29ubmVjdGlvbiBIYW5kbGVyKioKCk9rYXksIHNvIGBsbGNfY29ubl9oYW5kbGVyYCBpcyB0aGUgcGFja2V0IGhhbmRsZXIgZm9yIGBMTENfREVTVF9DT05OYC4gSSYjMzk7bSBjb25maWRlbnQgaXQmIzM5O3MgcmVhY2hhYmxlIGFuZCB3b3JraW5nIGFzIGV4cGVjdGVkLiBUaGlzIHBhdGNoLCBzcGVjaWZpY2FsbHksIGlzIG1vZGlmeWluZyBgbGxjX2Nvbm5faGFuZGxlcmAuIFRoZXJlZm9yZSwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IHRoZSBmb2N1cyBzeW1ib2wgSSBuZWVkIHRvIGNvbmNlbnRyYXRlIG9uIGR1cmluZyB0aGlzIHJldmlldy4gVGhlIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBpcyBgTExDMmAuCgpOb3csIGxldCBtZSBtYWtlIHN1cmUgdGhpcyBgTExDMmAgY29uZmlnIGlzbiYjMzk7dCBkZXBlbmRlbnQgb24gYW55dGhpbmcgdW51c3VhbCBvciBwb3RlbnRpYWxseSBvdmVybG9va2VkLiBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC9sbGMvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEp1c3QgY292ZXJpbmcgYWxsIG15IGJhc2VzIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBMTEMyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2xsYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9sbGMvS2NvbmZpZz0yPWNvbmZpZyBMTENcbi0tXG5uZXQvbGxjL0tjb25maWctNC1cbm5ldC9sbGMvS2NvbmZpZzo1OmNvbmZpZyBMTEMyXG5uZXQvbGxjL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0FOU0kvSUVFRSA4MDIuMiBMTEMgdHlwZSAyIFN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIxMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBpbnN0cnVjdGlvbnMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IHRyYWluIG9mIHRob3VnaHQ6CgoqKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIG9mIG5ldC9sbGMqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgYSBnb29kIGxvb2sgYXQgYG5ldC9sbGMvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgTG9naWNhbCBMaW5rIENvbnRyb2wgbGF5ZXIuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIExMQyBpcyBidWlsdCBhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZHVyaW5nIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIG1lbnUgc3RydWN0dXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBkZWNpc2lvbnMgZ2V0IG1hZGUsIHRoZSBsZXZlcnMgYXJlIHB1bGxlZCwgYW5kIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGVpdGhlciBicm91Z2h0IGluLCBvciBleGNsdWRlZC4gSXQmIzM5O3MgdGltZSB0byBzZWUgd2hhdCYjMzk7cyB3aGF0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgY29udGFpbmVkIGhlcmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbGxjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTExDXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBMTEMyXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtBTlNJL0lFRUUgODAyLjIgTExDIHR5cGUgMiBTdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRzZWxlY3QgTExDXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFRoaXMgaXMgYSBMb2dpY2FsIExpbmsgTGF5ZXIgdHlwZSAyLCBjb25uZWN0aW9uIG9yaWVudGVkIHN1cHBvcnQuXG4gIDEwOlx0XHQgIFNlbGVjdCB0aGlzIGlmIHlvdSB3YW50IHRvIGhhdmUgc3VwcG9ydCBmb3IgUEZfTExDIHNvY2tldHMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NjIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIHRoZSBleHBlY3RhdGlvbiB0aGF0IEkmIzM5O20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OgoKKipMTEMyIFN1ZmZpY2llbmN5IGFuZCBDb25uZWN0aW9uIEhhbmRsZXIgRGVlcCBEaXZlKioKClJpZ2h0LCBzbyBJJiMzOTt2ZSBkZWNpZGVkIHRoYXQgYExMQzJgIGlzIHRoZSBwbGFjZSB0byBzdGFydC4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBsZXZlbCBvZiBhYnN0cmFjdGlvbiB0byBhZGRyZXNzIHRoaXMuCgpOb3csIHRvIHNvbGlkaWZ5IHRoYXQsIEkgbmVlZCB0byBjaGVjayBgbGxjX2Nvbm5faGFuZGxlcmAgaW4gYG5ldC9sbGMvbGxjX2Nvbm4uY2AuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNvbm5lY3Rpb24gaGFuZGxpbmcgZnVuY3Rpb25zLiBJdCYjMzk7cyBlYXN5IHRvIGdldCB0dW5uZWwgdmlzaW9uLCBhbmQgYSBjdXJzb3J5IGdsYW5jZSBhdCB0aGF0IGFyZWEgd2lsbCBob3BlZnVsbHkgdGVsbCBtZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGtleSBmdW5jdGlvbnMgb3IgZGF0YSBzdHJ1Y3R1cmVzIEkgc2hvdWxkIGJlIGNvbnNpZGVyaW5nLiBOZWVkIHRvIGF2b2lkIG92ZXJsb29raW5nIGFueSBzdWJ0bGUgZWRnZSBjYXNlcy4gSSYjMzk7bGwgZm9jdXMgb24gdGhhdCBmaWxlIGZvciBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2xsYy9sbGNfY29ubi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3ODA6XHRcbiA3ODE6XHR2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiA3ODI6XHR7XG4gNzgzOlx0XHRzdHJ1Y3QgbGxjX2FkZHIgc2FkZHIsIGRhZGRyO1xuIDc4NDpcdFx0c3RydWN0IHNvY2sgKnNrO1xuIDc4NTpcdFxuIDc4NjpcdFx0bGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBzYWRkci5tYWMpO1xuIDc4NzpcdFx0bGxjX3BkdV9kZWNvZGVfc3NhcChza2IsIFx1MDAyNnNhZGRyLmxzYXApO1xuIDc4ODpcdFx0bGxjX3BkdV9kZWNvZGVfZGEoc2tiLCBkYWRkci5tYWMpO1xuIDc4OTpcdFx0bGxjX3BkdV9kZWNvZGVfZHNhcChza2IsIFx1MDAyNmRhZGRyLmxzYXApO1xuIDc5MDpcdFxuIDc5MTpcdFx0c2sgPSBfX2xsY19sb29rdXAoc2FwLCBcdTAwMjZzYWRkciwgXHUwMDI2ZGFkZHIsIGRldl9uZXQoc2tiLVx1MDAzZWRldikpO1xuIDc5MjpcdFx0aWYgKCFzaylcbiA3OTM6XHRcdFx0Z290byBkcm9wO1xuIDc5NDpcdFxuIDc5NTpcdFx0YmhfbG9ja19zb2NrKHNrKTtcbiA3OTY6XHRcdC8qXG4gNzk3Olx0XHQgKiBUaGlzIGhhcyB0byBiZSBkb25lIGhlcmUgYW5kIG5vdCBhdCB0aGUgdXBwZXIgbGF5ZXIgLVx1MDAzZWFjY2VwdFxuIDc5ODpcdFx0ICogbWV0aG9kIGJlY2F1c2Ugb2YgdGhlIHdheSB0aGUgUFJPQ09NIHN0YXRlIG1hY2hpbmUgd29ya3M6XG4gNzk5Olx0XHQgKiBpdCBuZWVkcyB0byBzZXQgc2V2ZXJhbCBzdGF0ZSB2YXJpYWJsZXMgKHNlZSwgZm9yIGluc3RhbmNlLFxuIDgwMDpcdFx0ICogbGxjX2FkbV9hY3Rpb25zXzIgaW4gbmV0L2xsYy9sbGNfY19zdC5jKSBhbmQgc2VuZCBhIHBhY2tldCB0b1xuIDgwMTpcdFx0ICogdGhlIG9yaWdpbmF0b3Igb2YgdGhlIG5ldyBjb25uZWN0aW9uLCBhbmQgdGhpcyBzdGF0ZSBoYXMgdG8gYmVcbiA4MDI6XHRcdCAqIGluIHRoZSBuZXdseSBjcmVhdGVkIHN0cnVjdCBzb2NrIHByaXZhdGUgYXJlYS4gLWFjbWVcbiA4MDM6XHRcdCAqL1xuIDgwNDpcdFx0aWYgKHVubGlrZWx5KHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pIFx1MDAyNlx1MDAyNlxuIDgwNTpcdFx0ICAgICFsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzaywgc2tiKSkge1xuIDgwNjpcdFx0XHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cdTAwM2VkZXYsXG4gODA3Olx0XHRcdFx0XHRcdFx0XHQgICAgICBcdTAwMjZzYWRkciwgXHUwMDI2ZGFkZHIpO1xuIDgwODpcdFx0XHRpZiAoIW5ld3NrKVxuIDgwOTpcdFx0XHRcdGdvdG8gZHJvcF91bmxvY2s7XG4gODEwOlx0XHRcdHNrYl9zZXRfb3duZXJfcihza2IsIG5ld3NrKTtcbiA4MTE6XHRcdH0gZWxzZSB7XG4gODEyOlx0XHRcdC8qXG4gODEzOlx0XHRcdCAqIENhbiYjMzk7dCBiZSBza2Jfc2V0X293bmVyX3IsIHRoaXMgd2lsbCBiZSBkb25lIGF0IHRoZVxuIDgxNDpcdFx0XHQgKiBsbGNfY29ubl9zdGF0ZV9wcm9jZXNzIGZ1bmN0aW9uLCBsYXRlciBvbiwgd2hlbiB3ZSB3aWxsIHVzZVxuIDgxNTpcdFx0XHQgKiBza2JfcXVldWVfcmN2X3NrYiB0byBzZW5kIGl0IHRvIHVwcGVyIGxheWVycywgdGhpcyBpc1xuIDgxNjpcdFx0XHQgKiBhbm90aGVyIHRyaWNrIHJlcXVpcmVkIHRvIGNvcGUgd2l0aCBob3cgdGhlIFBST0NPTSBzdGF0ZVxuIDgxNzpcdFx0XHQgKiBtYWNoaW5lIHdvcmtzLiAtYWNtZVxuIDgxODpcdFx0XHQgKi9cbiA4MTk6XHRcdFx0c2tiX29ycGhhbihza2IpO1xuIDgyMDpcdFx0XHRzb2NrX2hvbGQoc2spO1xuIDgyMTpcdFx0XHRza2ItXHUwMDNlc2sgPSBzaztcbiA4MjI6XHRcdFx0c2tiLVx1MDAzZWRlc3RydWN0b3IgPSBzb2NrX2VmcmVlO1xuIDgyMzpcdFx0fVxuIDgyNDpcdFx0aWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKVxuIDgyNTpcdFx0XHRsbGNfY29ubl9yY3Yoc2ssIHNrYik7XG4gODI2Olx0XHRlbHNlIHtcbiA4Mjc6XHRcdFx0ZHByaW50ayhcJiMzNDslczogYWRkaW5nIHRvIGJhY2tsb2cuLi5cXG5cJiMzNDssIF9fZnVuY19fKTtcbiA4Mjg6XHRcdFx0bGxjX3NldF9iYWNrbG9nX3R5cGUoc2tiLCBMTENfUEFDS0VUKTtcbiA4Mjk6XHRcdFx0aWYgKHNrX2FkZF9iYWNrbG9nKHNrLCBza2IsIFJFQURfT05DRShzay1cdTAwM2Vza19yY3ZidWYpKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc0MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb25kaXRpb24gd2l0aCBgIWxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHNrLCBza2IpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB3aGF0IHRoYXQgZnVuY3Rpb24gYWN0dWFsbHkgKmRvZXMqLiBJIGtub3cgYGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94YCBpcyBkZWZpbmVkIGluIGBuZXQvbGxjL2xsY19jX2V2LmNgLiBGaXJzdCB0aGluZywgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiBvciBpZiBpdCYjMzk7cyBleHBvcnRlZC4gTGV0JiMzOTtzIHNlZS4uLiBBaCwgaXQmIzM5O3Mgbm90IHN0YXRpYy4gR29vZCwgdGhhdCBtYWtlcyBpdCBtb3JlIGludGVyZXN0aW5nLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGluIGBpbmNsdWRlL25ldC9sbGNfY19ldi5oYCBtZWFucyBpdCAqY291bGQqIGJlIGEgY3JpdGljYWwgc3ltYm9sLCBwb3NzaWJseSBhIGZvY3VzIG9mIGFub3RoZXIgYW5hbHlzaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGJldHRlciwgc28gbmV4dCwgSSYjMzk7bGwgZ28gdGhyb3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbGxjX2NfZXYuaD0xNDg9aW50IGxsY19jb25uX2V2X3J4X3Jlal9yc3BfZmJpdF9zZXRfeChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xuaW5jbHVkZS9uZXQvbGxjX2NfZXYuaDoxNDk6aW50IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL25ldC9sbGNfY19ldi5oLTE1MC1pbnQgbGxjX2Nvbm5fZXZfcnhfdWFfcnNwX2ZiaXRfc2V0X3goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5uZXQvbGxjL2xsY19jX2V2LmM9NDIxPWludCBsbGNfY29ubl9ldl9yeF9ycl9yc3BfZmJpdF9zZXRfMShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2xsYy9sbGNfY19ldi5jLTQzMC1cbm5ldC9sbGMvbGxjX2NfZXYuYzo0MzE6aW50IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9sbGMvbGxjX2NfZXYuYy00MzIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDg2CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBkcmF3aW5nIG9uIG15IGV4cGVyaWVuY2UgaW4gbmV0d29yayBwcm90b2NvbHM6CgoqKkFuYWx5emluZyB0aGUgTExDIENvbm5lY3Rpb24gSGFuZGxlciBQYXRjaCoqCgpBbHJpZ2h0LCBteSBmb2N1cyBoZXJlIGlzIGhvbmVkIGluIG9uIGEgY291cGxlIG9mIGtleSBzeW1ib2xzOiBgbGxjX2Nvbm5faGFuZGxlcmAgYW5kIGBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeGAuIFRoZXNlIGFyZSB0aGUgY3J1Y2lhbCBlbGVtZW50cy4gVGhlIGNvbmZpZ3VyYXRpb24gYmVpbmcgY29uc2lkZXJlZCBpcyB0aGUgYExMQzJgIHNldHVwLgoKVGhlIGVzc2VuY2Ugb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBpbnZvbHZlIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIGBsbGNfY29ubl9oYW5kbGVyYC4gSXQgYXBwZWFycyB0aGF0IHRoZSBjb2RlIG5vdyBleHBsaWNpdGx5IGNoZWNrcyBpZiBhIHJlY2VpdmVkIHBhY2tldCBpcyBhIFNBQk1FIChTZXQgQXN5bmNocm9ub3VzIEJhbGFuY2VkIE1vZGUgRXh0ZW5kZWQpIGNvbW1hbmQgKmJlZm9yZSogc3Bpbm5pbmcgdXAgYSBuZXcgaW5jb21pbmcgc29ja2V0IGZvciBhIGxpc3RlbmluZyBzb2NrZXQuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlLiBJdCBzdHJpa2VzIG1lIGFzIGEgY29yZSBtb2RpZmljYXRpb24gdG8gdGhlIExMQyBuZXR3b3JraW5nIGNvZGUsIGFuZCBmcm9tIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSwgdGhpcyBjb2RlIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgdmlhIGBBRl9MTENgIHNvY2tldHMuIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWsuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgcnVubmluZyBzZXQtcmVzdWx0cyB0byBzZWUgd2hlcmUgdGhpcyBpcyBhbGwgZ29pbmcsIGFuZCBleGFjdGx5IGhvdyB0aGUgbmV3IGNoZWNraW5nIG1ldGhvZG9sb2d5IHdpbGwgbW9kaWZ5IHRoZSBmbG93IG9mIGluY29taW5nIGNvbm5lY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TExDMiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2xsY19jb25uX2hhbmRsZXImIzM0OywKICAgICYjMzQ7bGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIExMQyBjb25uZWN0aW9uIGhhbmRsZXIgYGxsY19jb25uX2hhbmRsZXJgIHRvIGNoZWNrIGlmIHRoZSByZWNlaXZlZCBwYWNrZXQgaXMgYSBTQUJNRSBjb21tYW5kIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBpbmNvbWluZyBzb2NrZXQgZm9yIGEgbGlzdGVuaW5nIHNvY2tldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIExMQyBuZXR3b3JraW5nIGNvZGUsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfTExDIHNvY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xMQzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsbGNfY29ubl9oYW5kbGVyJiMzNDssCiAgICAmIzM0O2xsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMTEMgY29ubmVjdGlvbiBoYW5kbGVyIGBsbGNfY29ubl9oYW5kbGVyYCB0byBjaGVjayBpZiB0aGUgcmVjZWl2ZWQgcGFja2V0IGlzIGEgU0FCTUUgY29tbWFuZCBiZWZvcmUgY3JlYXRpbmcgYSBuZXcgaW5jb21pbmcgc29ja2V0IGZvciBhIGxpc3RlbmluZyBzb2NrZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBMTEMgbmV0d29ya2luZyBjb2RlLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEFGX0xMQyBzb2NrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTE6NTcuNTE2MzA3NDYyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA0NDExNjM4MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTExDMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY19jb25uX2hhbmRsZXJcIixcbiAgICBcImxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIExMQyBjb25uZWN0aW9uIGhhbmRsZXIgYGxsY19jb25uX2hhbmRsZXJgIHRvIGNoZWNrIGlmIHRoZSByZWNlaXZlZCBwYWNrZXQgaXMgYSBTQUJNRSBjb21tYW5kIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBpbmNvbWluZyBzb2NrZXQgZm9yIGEgbGlzdGVuaW5nIHNvY2tldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIExMQyBuZXR3b3JraW5nIGNvZGUsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfTExDIHNvY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUxOjU3LjUxNjMxMjY5MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MTA0MzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTNiZDY1ZWI5YmQyMmQ0M2Y3Zjk2ZmMyNmFmNWMzNjI3NWEzMmQ0MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAyNCAyMTo1MTo1NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19jb25uLmMgYi9uZXQvbGxjL2xsY19jb25uLmNcXG5pbmRleCAwYTNmNWUwYmVjMDBjZS4uYTIzNTc0OGUzNmRjZTAgMTAwNjQ0XFxuLS0tIGEvbmV0L2xsYy9sbGNfY29ubi5jXFxuKysrIGIvbmV0L2xsYy9sbGNfY29ubi5jXFxuQEAgLTgwMSw3ICs4MDEsOCBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0ICogdGhlIG9yaWdpbmF0b3Igb2YgdGhlIG5ldyBjb25uZWN0aW9uLCBhbmQgdGhpcyBzdGF0ZSBoYXMgdG8gYmVcXG4gXFx0ICogaW4gdGhlIG5ld2x5IGNyZWF0ZWQgc3RydWN0IHNvY2sgcHJpdmF0ZSBhcmVhLiAtYWNtZVxcbiBcXHQgKi9cXG4tXFx0aWYgKHVubGlrZWx5KHNrLVxcdTAwM2Vza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSkge1xcbitcXHRpZiAodW5saWtlbHkoc2stXFx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcXG4gXFx0XFx0c3RydWN0IHNvY2sgKm5ld3NrID0gbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHNrLCBza2ItXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNhZGRyLCBcXHUwMDI2ZGFkZHIpO1xcbiBcXHRcXHRpZiAoIW5ld3NrKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MTo1OC4wNDYwOTI3OTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozOTkxMTM0NjMzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMTEMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibGxjX2Nvbm5faGFuZGxlclwiLFxuICAgIFwibGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTExDIGNvbm5lY3Rpb24gaGFuZGxlciBgbGxjX2Nvbm5faGFuZGxlcmAgdG8gY2hlY2sgaWYgdGhlIHJlY2VpdmVkIHBhY2tldCBpcyBhIFNBQk1FIGNvbW1hbmQgYmVmb3JlIGNyZWF0aW5nIGEgbmV3IGluY29taW5nIHNvY2tldCBmb3IgYSBsaXN0ZW5pbmcgc29ja2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgTExDIG5ldHdvcmtpbmcgY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBBRl9MTEMgc29ja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTNiZDY1ZWI5YmQyMmQ0M2Y3Zjk2ZmMyNmFmNWMzNjI3NWEzMmQ0MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDIxOjUxOjU1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2xsYy9sbGNfY29ubi5jIGIvbmV0L2xsYy9sbGNfY29ubi5jXG5pbmRleCAwYTNmNWUwYmVjMDBjZS4uYTIzNTc0OGUzNmRjZTAgMTAwNjQ0XG4tLS0gYS9uZXQvbGxjL2xsY19jb25uLmNcbisrKyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xuQEAgLTgwMSw3ICs4MDEsOCBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdCAqIHRoZSBvcmlnaW5hdG9yIG9mIHRoZSBuZXcgY29ubmVjdGlvbiwgYW5kIHRoaXMgc3RhdGUgaGFzIHRvIGJlXG4gXHQgKiBpbiB0aGUgbmV3bHkgY3JlYXRlZCBzdHJ1Y3Qgc29jayBwcml2YXRlIGFyZWEuIC1hY21lXG4gXHQgKi9cbi1cdGlmICh1bmxpa2VseShzay1cdTAwM2Vza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSkge1xuK1x0aWYgKHVubGlrZWx5KHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzaywgc2tiKSkge1xuIFx0XHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cdTAwM2VkZXYsXG4gXHRcdFx0XHRcdFx0XHQgICAgICBcdTAwMjZzYWRkciwgXHUwMDI2ZGFkZHIpO1xuIFx0XHRpZiAoIW5ld3NrKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTE6NTguMDQ2MDk0Mzc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc1NTEzNzgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIENvbm5lY3Rpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L2xsYy9sbGNfY29ubi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYGxsY19jb25uX2hhbmRsZXJgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHMgYSBuZXcgY29uZGl0aW9uLCBgIWxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHNrLCBza2IpYCwgdG8gYW4gZXhpc3RpbmcgYGlmYCBzdGF0ZW1lbnQuIFRoaXMgYGlmYCBzdGF0ZW1lbnQgaXMgYWxyZWFkeSBjaGVja2luZyBpZiB0aGUgc29ja2V0J3Mgc3RhdGUgaXMgYFRDUF9MSVNURU5gLiBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2h5KiB0aGlzIGNvbmRpdGlvbiBpcyBiZWluZyBhZGRlZC4gV2hhdCBpcyBgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hgIGRvaW5nPyBBbmQgd2h5IGlzIGl0IHJlbGV2YW50IGluIHRoZSBjb250ZXh0IG9mIGEgc29ja2V0IGluIHRoZSBsaXN0ZW5pbmcgc3RhdGU/IE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgcmVsYXRlZCB0byBhIHNwZWNpZmljIHZ1bG5lcmFiaWxpdHkgb3Igb3B0aW1pemF0aW9uLiBJcyBpdCBhIGJ1ZyBmaXg/IE9yIHNvbWUgbmV3IGZlYXR1cmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgY29uZGl0aW9uYWwuIExldCdzIHNlZSBpZiB0aGUgY29kZSBpdHNlbGYgcHJvdmlkZXMgYW55IGltbWVkaWF0ZSBjbHVlcyBhbmQgd2hhdCB0aGlzIG5ldyBmdW5jdGlvbidzIHJvbGUgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MjowMS44MDEyMzQ1MDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1MDEyNDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxsY19jb25uX2hhbmRsZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2xsYy9sbGNfY29ubi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sbGMvbGxjX2Nvbm4uYz02Mj1pbnQgbGxjX2Nvbm5fc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbGxjL2xsY19jb25uLmMtOTQtXFx0XFx0ICogc2tiLVxcdTAwM2VzayBwb2ludGluZyB0byB0aGUgbmV3bHkgY3JlYXRlZCBzdHJ1Y3Qgc29jayBpblxcbm5ldC9sbGMvbGxjX2Nvbm4uYzo5NTpcXHRcXHQgKiBsbGNfY29ubl9oYW5kbGVyLiAtYWNtZVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy05Ni1cXHRcXHQgKi9cXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYz03NTk9c3RhdGljIHN0cnVjdCBzb2NrICpsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2xsYy9sbGNfY29ubi5jLTc4MC1cXG5uZXQvbGxjL2xsY19jb25uLmM6NzgxOnZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy03ODIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MjowMi4yNDYyNTE2MDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM3ODg2MzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB1bnBhY2sgd2hhdCBpdCdzIGRvaW5nIHdpdGggdGhlIFNBQk1FIGNvbW1hbmQgYW5kIHRoZSBQLWJpdC4gTXkgaW5pdGlhbCBoeXBvdGhlc2lzIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyB0aGUgc2V0dGluZyBvZiB0aGUgUG9sbCBiaXQgKFAtYml0KSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYW4gTExDIGNvbm5lY3Rpb24sIGxpa2VseSBkdXJpbmcgdGhlIHJlY2VwdGlvbiBvZiBhbiBTQUJNRSAoU2V0IEFzeW5jaHJvbm91cyBCYWxhbmNlZCBNb2RlIEV4dGVuZGVkKSBjb21tYW5kLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgc3VzcGVjdCB0aGlzIGhhcyB0byBkbyB3aXRoIGxpbmsgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGhvdyB3ZSBtYW5hZ2UgYW5kIHJlc3BvbmQgdG8gaW5jb21pbmcgcmVxdWVzdHMgb3IgY29tbWFuZHMuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgZnVuY3Rpb24ncyBpbnRlcm5hbCBsb2dpYzsgdGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgUC1iaXQncyByb2xlIGluIHRoZSBsaW5rIGxheWVyJ3MgY29ubmVjdGlvbiBzZXR1cCBvciBjb250cm9sIHByb2Nlc3MuIFdoYXQgc3BlY2lmaWNhbGx5IHRyaWdnZXJzIHRoZSBoYW5kbGluZyBvZiB0aGlzIGZ1bmN0aW9uPyBIb3cgZG9lcyBpdCBkaWZmZXIgZnJvbSBvdGhlciBTQUJNRSBjb21tYW5kIGhhbmRsaW5nIGZ1bmN0aW9ucz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHN1Y2ggYXMgYGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF94YC4gSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQgY29ycmVjdGx5IGhhbmRsZXMgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMgb3IgZWRnZSBjYXNlcy4gRnJvbSB0aGVyZSwgSSBuZWVkIHRvIHNlZSBob3cgaXQgbWlnaHQgYmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaW50ZXJuYWwgY29ubmVjdGlvbiBzdGF0ZSwgcG9zc2libHkgYnkgdHJhbnNpdGlvbmluZyBzdGF0ZXMgb3Igc2V0dGluZyBmbGFncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjczOSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjA1LjM4NDEzOTQ3MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEwOTUyMzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2xsY19jX2V2Lmg9MTQ4PWludCBsbGNfY29ubl9ldl9yeF9yZWpfcnNwX2ZiaXRfc2V0X3goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5pbmNsdWRlL25ldC9sbGNfY19ldi5oOjE0OTppbnQgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5pbmNsdWRlL25ldC9sbGNfY19ldi5oLTE1MC1pbnQgbGxjX2Nvbm5fZXZfcnhfdWFfcnNwX2ZiaXRfc2V0X3goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4tLVxcbm5ldC9sbGMvbGxjX2NfZXYuYz00MjE9aW50IGxsY19jb25uX2V2X3J4X3JyX3JzcF9mYml0X3NldF8xKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9sbGMvbGxjX2NfZXYuYy00MzAtXFxubmV0L2xsYy9sbGNfY19ldi5jOjQzMTppbnQgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9sbGMvbGxjX2NfZXYuYy00MzIte1xcbi0tXFxubmV0L2xsYy9sbGNfY19zdC5jPTgyPXN0YXRpYyBzdHJ1Y3QgbGxjX2Nvbm5fc3RhdGVfdHJhbnMgbGxjX2NvbW1vbl9zdGF0ZV90cmFuc18zID0ge1xcbm5ldC9sbGMvbGxjX2Nfc3QuYzo4MzpcXHQuZXZcXHQgICAgICAgPSBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeCxcXG5uZXQvbGxjL2xsY19jX3N0LmMtODQtXFx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9OT1JNQUwsXFxuLS1cXG5uZXQvbGxjL2xsY19jX3N0LmM9MzgxPXN0YXRpYyBzdHJ1Y3QgbGxjX2Nvbm5fc3RhdGVfdHJhbnMgbGxjX2FkbV9zdGF0ZV90cmFuc18yID0ge1xcbm5ldC9sbGMvbGxjX2Nfc3QuYzozODI6XFx0LmV2XFx0ICAgICAgID0gbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gsXFxubmV0L2xsYy9sbGNfY19zdC5jLTM4My1cXHQubmV4dF9zdGF0ZSAgICA9IExMQ19DT05OX1NUQVRFX05PUk1BTCxcXG4tLVxcbm5ldC9sbGMvbGxjX2Nfc3QuYz00NTY9c3RhdGljIHN0cnVjdCBsbGNfY29ubl9zdGF0ZV90cmFucyBsbGNfc2V0dXBfc3RhdGVfdHJhbnNfMSA9IHtcXG5uZXQvbGxjL2xsY19jX3N0LmM6NDU3OlxcdC5ldlxcdCAgICAgICA9IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94LFxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00NTgtXFx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9TRVRVUCxcXG4tLVxcbm5ldC9sbGMvbGxjX2Nfc3QuYz00MTc0PXN0YXRpYyBzdHJ1Y3QgbGxjX2Nvbm5fc3RhdGVfdHJhbnMgbGxjX2RfY29ubl9zdGF0ZV90cmFuc18xID0ge1xcbm5ldC9sbGMvbGxjX2Nfc3QuYzo0MTc1OlxcdC5ldlxcdCAgICAgICA9IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94LFxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00MTc2LVxcdC5uZXh0X3N0YXRlICAgID0gTExDX0NPTk5fU1RBVEVfQURNLFxcbi0tXFxubmV0L2xsYy9sbGNfY19zdC5jPTQxOTc9c3RhdGljIHN0cnVjdCBsbGNfY29ubl9zdGF0ZV90cmFucyBsbGNfZF9jb25uX3N0YXRlX3RyYW5zXzFfMSA9IHtcXG5uZXQvbGxjL2xsY19jX3N0LmM6NDE5ODpcXHQuZXZcXHQgICAgICAgPSBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeCxcXG5uZXQvbGxjL2xsY19jX3N0LmMtNDE5OS1cXHQubmV4dF9zdGF0ZSAgICA9IExMQ19DT05OX1NUQVRFX0FETSxcXG4tLVxcbm5ldC9sbGMvbGxjX2Nfc3QuYz00NDIyPXN0YXRpYyBzdHJ1Y3QgbGxjX2Nvbm5fc3RhdGVfdHJhbnMgbGxjX3JzdF9zdGF0ZV90cmFuc18xID0ge1xcbm5ldC9sbGMvbGxjX2Nfc3QuYzo0NDIzOlxcdC5ldlxcdCAgICAgICA9IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94LFxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00NDI0LVxcdC5uZXh0X3N0YXRlICAgID0gTExDX0NPTk5fU1RBVEVfUkVTRVQsXFxuLS1cXG5uZXQvbGxjL2xsY19jX3N0LmM9NDcxMz1zdGF0aWMgc3RydWN0IGxsY19jb25uX3N0YXRlX3RyYW5zIGxsY19lcnJvcl9zdGF0ZV90cmFuc18xID0ge1xcbm5ldC9sbGMvbGxjX2Nfc3QuYzo0NzE0OlxcdC5ldlxcdCAgICAgICA9IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94LFxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00NzE1LVxcdC5uZXh0X3N0YXRlICAgID0gTExDX0NPTk5fU1RBVEVfTk9STUFMLFxcbi0tXFxubmV0L2xsYy9sbGNfY29ubi5jPTc4MT12b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy04MDQtXFx0aWYgKHVubGlrZWx5KHNrLVxcdTAwM2Vza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9sbGMvbGxjX2Nvbm4uYzo4MDU6XFx0ICAgICFsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzaywgc2tiKSkge1xcbm5ldC9sbGMvbGxjX2Nvbm4uYy04MDYtXFx0XFx0c3RydWN0IHNvY2sgKm5ld3NrID0gbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHNrLCBza2ItXFx1MDAzZWRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTI6MDYuODk1MDk2MzU5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY0NzE1MzU3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGEgQ2hhbmdlIGluIGBsbGNfY29ubl9oYW5kbGVyYCoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGBuZXQvbGxjL2xsY19jb25uLmNgLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IHRoaXMgYWx0ZXJzIHRoZSBgbGxjX2Nvbm5faGFuZGxlcmAgZnVuY3Rpb24uIE15IGluc3RpbmN0IG5vdyBpcyB0byBpbW1lZGlhdGVseSBjaGVjayB0aGUgcmVsYXRlZCBgbmV0L2xsYy9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBtaWdodCBiZSBhZmZlY3RlZCBvciBtaWdodCBub3cgYmUgbmVjZXNzYXJ5IHRvIGVuYWJsZSB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5LCBvciBldmVuIHRvIHNlZSB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW52b2x2ZWQuIFRoZSBLY29uZmlnIGlzIGtleSB0byBkZXRlcm1pbmluZyB0aGUgcHJhY3RpY2FsIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNvZGUgY2hhbmdlIGFuZCBob3cgaXQgaW1wYWN0cyB0aGUgb3ZlcmFsbCBidWlsZCBwcm9jZXNzIGFuZCBzeXN0ZW0gY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQwNSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjA5LjU0MjI1MTc4NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTAxNzMyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTExDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9sbGMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbGxjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbGxjL0tjb25maWc6Mjpjb25maWcgTExDXFxubmV0L2xsYy9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5uZXQvbGxjL0tjb25maWctNC1cXG5uZXQvbGxjL0tjb25maWc6NTpjb25maWcgTExDMlxcbm5ldC9sbGMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJBTlNJL0lFRUUgODAyLjIgTExDIHR5cGUgMiBTdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MjowOS42MDMyNzI0ODNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODM4OTE0NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqTExDMiBQcm9tcHQgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIExMQzIgaXMgdGhlIG9uZSB3ZSB0aGluayBpcyBkcml2aW5nIHRoZSBwcm9tcHQgYmVoYXZpb3IuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYnVpbGQgcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHRoZSBNYWtlZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IExMQzIgaXMgY29uc3RydWN0ZWQgYW5kIGlmIHRoZXJlIGFyZSBhbnkgaGludHMgcmVsYXRlZCB0byBwcm9tcHQgaGFuZGxpbmcgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBMZXQncyBkaXZlIGludG8gYG5ldC9sbGMvTWFrZWZpbGVgLiBJJ20gaG9waW5nIHRvIGZpbmQgc29tZSBjbHVlcyB0aGVyZSBhYm91dCBob3cgdGhlIHByb21wdCBpcyBpbnRlZ3JhdGVkIG9yIG1hbmFnZWQgd2l0aGluIHRoYXQgbW9kdWxlLiBUaGlzIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgbGlua2FnZXMsIGlmIGFueXdoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzU5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTI6MTIuNDQyMTg5NjUzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjAzMTUyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsbGNfY29ublwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbGxjL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sbGMvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX0xMQzIpICs9IGxsYzIub1xcbm5ldC9sbGMvTWFrZWZpbGUtMjAtXFxubmV0L2xsYy9NYWtlZmlsZToyMTpsbGMyLXkgOj0gbGxjX2lmLm8gbGxjX2NfZXYubyBsbGNfY19hYy5vIGxsY19jb25uLm8gbGxjX2Nfc3QubyBsbGNfcGR1Lm8gXFxcXFxcbm5ldC9sbGMvTWFrZWZpbGUtMjItXFx0ICBsbGNfc2FwLm8gbGxjX3NfYWMubyBsbGNfc19ldi5vIGxsY19zX3N0Lm8gYWZfbGxjLm8gbGxjX3N0YXRpb24ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MjoxMi40OTgyMjQ4MzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0MDgxODg3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkRlYnVnZ2luZyB0aGUgTExDMiBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19MTEMyYCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZW1lbnQgaGVyZS4gTmVlZCB0byB2ZXJpZnkgdGhhdCdzIGVuYWJsZWQgYW5kIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhhdCBgbGxjX2Nvbm5faGFuZGxlcmAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGluIHRoaXMgY3VycmVudCBzY2VuYXJpby4gTGV0IG1lIHB1bGwgdXAgdGhlIGNvZGU7IEkgcmVjYWxsIHRoYXQncyBpbiBgbGxjX2Nvbm4uY2AuIE9rYXksIGhlcmUgd2UgYXJlLiBOb3csIHRoZSBrZXkgaXMgKmhvdyogaXMgdGhhdCBoYW5kbGVyIGludm9rZWQ/IEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBmbG93LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGl0J3MgcHJvYmFibHkgY2FsbGVkIGZyb20gYSByZWNlaXZlIHBhdGgsIHNvbWV0aGluZyBsaWtlIGBsbGNfcmN2YCBvciBhIHNpbWlsYXIgcmVjZWl2ZSBmdW5jdGlvbi4gTGV0J3MgZGlnIGludG8gdGhhdCBhbmQgc2VlIHdoZXJlIGl0J3MgY2FsbGVkIGZyb20sIHRvIHRyYWNlIHRoZSBwYXRoIGFuZCBtYWtlIHN1cmUgaXQgaXMgYWN0dWFsbHkgZ2V0dGluZyBjYWxsZWQgYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwOTgsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MjoxNS44MzkwNDU4NTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDg3NjE1ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGxjX2Nvbm5faGFuZGxlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9sbGMuaD0xNDA9dm9pZCBsbGNfc2FwX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuaW5jbHVkZS9uZXQvbGxjLmg6MTQxOnZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5pbmNsdWRlL25ldC9sbGMuaC0xNDItXFxuLS1cXG5uZXQvbGxjL2FmX2xsYy5jPTEyNDQ9c3RhdGljIGludCBfX2luaXQgbGxjMl9pbml0KHZvaWQpXFxuLS1cXG5uZXQvbGxjL2FmX2xsYy5jLTEyNjktXFx0bGxjX2FkZF9wYWNrKExMQ19ERVNUX1NBUCwgbGxjX3NhcF9oYW5kbGVyKTtcXG5uZXQvbGxjL2FmX2xsYy5jOjEyNzA6XFx0bGxjX2FkZF9wYWNrKExMQ19ERVNUX0NPTk4sIGxsY19jb25uX2hhbmRsZXIpO1xcbm5ldC9sbGMvYWZfbGxjLmMtMTI3MS1vdXQ6XFxuLS1cXG5uZXQvbGxjL2xsY19jb25uLmM9NjI9aW50IGxsY19jb25uX3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2xsYy9sbGNfY29ubi5jLTk0LVxcdFxcdCAqIHNrYi1cXHUwMDNlc2sgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgc3RydWN0IHNvY2sgaW5cXG5uZXQvbGxjL2xsY19jb25uLmM6OTU6XFx0XFx0ICogbGxjX2Nvbm5faGFuZGxlci4gLWFjbWVcXG5uZXQvbGxjL2xsY19jb25uLmMtOTYtXFx0XFx0ICovXFxuLS1cXG5uZXQvbGxjL2xsY19jb25uLmM9NzU5PXN0YXRpYyBzdHJ1Y3Qgc29jayAqbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy03ODAtXFxubmV0L2xsYy9sbGNfY29ubi5jOjc4MTp2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbGxjL2xsY19jb25uLmMtNzgyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTI6MTcuODg3ODEzNThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwNjEzMTg0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExMQyBDb25uZWN0aW9uIEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyBgbGxjX2Nvbm5faGFuZGxlcmAgaXMgdGhlIHBhY2tldCBoYW5kbGVyIGZvciBgTExDX0RFU1RfQ09OTmAuIEknbSBjb25maWRlbnQgaXQncyByZWFjaGFibGUgYW5kIHdvcmtpbmcgYXMgZXhwZWN0ZWQuIFRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSwgaXMgbW9kaWZ5aW5nIGBsbGNfY29ubl9oYW5kbGVyYC4gVGhlcmVmb3JlLCB0aGF0J3MgZGVmaW5pdGVseSB0aGUgZm9jdXMgc3ltYm9sIEkgbmVlZCB0byBjb25jZW50cmF0ZSBvbiBkdXJpbmcgdGhpcyByZXZpZXcuIFRoZSByZWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgYExMQzJgLlxuXG5Ob3csIGxldCBtZSBtYWtlIHN1cmUgdGhpcyBgTExDMmAgY29uZmlnIGlzbid0IGRlcGVuZGVudCBvbiBhbnl0aGluZyB1bnVzdWFsIG9yIHBvdGVudGlhbGx5IG92ZXJsb29rZWQuIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvbGxjL0tjb25maWdgIGZpbGUgdG8gY29uZmlybSB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEp1c3QgY292ZXJpbmcgYWxsIG15IGJhc2VzIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MzgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTI6MjEuNDkzOTQ4Mzc5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDA0NzM2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTExDMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbGxjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2xsYy9LY29uZmlnPTI9Y29uZmlnIExMQ1xcbi0tXFxubmV0L2xsYy9LY29uZmlnLTQtXFxubmV0L2xsYy9LY29uZmlnOjU6Y29uZmlnIExMQzJcXG5uZXQvbGxjL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiQU5TSS9JRUVFIDgwMi4yIExMQyB0eXBlIDIgU3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTI6MjEuNTU4MDAwOTQ3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5Njk4NTI5MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBpbnN0cnVjdGlvbnMsIGFzIGlmIHRoZXkncmUgbXkgdHJhaW4gb2YgdGhvdWdodDpcblxuKipEaXZpbmcgaW50byB0aGUgS2NvbmZpZyBvZiBuZXQvbGxjKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgYSBnb29kIGxvb2sgYXQgYG5ldC9sbGMvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgTG9naWNhbCBMaW5rIENvbnRyb2wgbGF5ZXIuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIExMQyBpcyBidWlsdCBhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZHVyaW5nIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgbWVudSBzdHJ1Y3R1cmUuIFRoaXMgaXMgd2hlcmUgdGhlIGRlY2lzaW9ucyBnZXQgbWFkZSwgdGhlIGxldmVycyBhcmUgcHVsbGVkLCBhbmQgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgZWl0aGVyIGJyb3VnaHQgaW4sIG9yIGV4Y2x1ZGVkLiBJdCdzIHRpbWUgdG8gc2VlIHdoYXQncyB3aGF0LiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBjb250YWluZWQgaGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjExLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTI6MjQuNTI3ODU1NzUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9sbGMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIExMQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIExMQzJcXG4gICA2OlxcdFxcdHRyaXN0YXRlIFxcXCJBTlNJL0lFRUUgODAyLjIgTExDIHR5cGUgMiBTdXBwb3J0XFxcIlxcbiAgIDc6XFx0XFx0c2VsZWN0IExMQ1xcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBUaGlzIGlzIGEgTG9naWNhbCBMaW5rIExheWVyIHR5cGUgMiwgY29ubmVjdGlvbiBvcmllbnRlZCBzdXBwb3J0LlxcbiAgMTA6XFx0XFx0ICBTZWxlY3QgdGhpcyBpZiB5b3Ugd2FudCB0byBoYXZlIHN1cHBvcnQgZm9yIFBGX0xMQyBzb2NrZXRzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MjoyNC41Mjc5MDk1NjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3OTUyODAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIGV4cGVjdGF0aW9uIHRoYXQgSSdtIGRpc2N1c3NpbmcgdGhpcyB3aXRoIGEgZmVsbG93IGV4cGVydDpcblxuKipMTEMyIFN1ZmZpY2llbmN5IGFuZCBDb25uZWN0aW9uIEhhbmRsZXIgRGVlcCBEaXZlKipcblxuUmlnaHQsIHNvIEkndmUgZGVjaWRlZCB0aGF0IGBMTEMyYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQuIFRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gdG8gYWRkcmVzcyB0aGlzLlxuXG5Ob3csIHRvIHNvbGlkaWZ5IHRoYXQsIEkgbmVlZCB0byBjaGVjayBgbGxjX2Nvbm5faGFuZGxlcmAgaW4gYG5ldC9sbGMvbGxjX2Nvbm4uY2AuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY29ubmVjdGlvbiBoYW5kbGluZyBmdW5jdGlvbnMuIEl0J3MgZWFzeSB0byBnZXQgdHVubmVsIHZpc2lvbiwgYW5kIGEgY3Vyc29yeSBnbGFuY2UgYXQgdGhhdCBhcmVhIHdpbGwgaG9wZWZ1bGx5IHRlbGwgbWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBrZXkgZnVuY3Rpb25zIG9yIGRhdGEgc3RydWN0dXJlcyBJIHNob3VsZCBiZSBjb25zaWRlcmluZy4gTmVlZCB0byBhdm9pZCBvdmVybG9va2luZyBhbnkgc3VidGxlIGVkZ2UgY2FzZXMuIEknbGwgZm9jdXMgb24gdGhhdCBmaWxlIGZvciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NjIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjI3LjYwNzQzOTUwN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2xsYy9sbGNfY29ubi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc4MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc4MDpcXHRcXG4gNzgxOlxcdHZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiA3ODI6XFx0e1xcbiA3ODM6XFx0XFx0c3RydWN0IGxsY19hZGRyIHNhZGRyLCBkYWRkcjtcXG4gNzg0OlxcdFxcdHN0cnVjdCBzb2NrICpzaztcXG4gNzg1OlxcdFxcbiA3ODY6XFx0XFx0bGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBzYWRkci5tYWMpO1xcbiA3ODc6XFx0XFx0bGxjX3BkdV9kZWNvZGVfc3NhcChza2IsIFxcdTAwMjZzYWRkci5sc2FwKTtcXG4gNzg4OlxcdFxcdGxsY19wZHVfZGVjb2RlX2RhKHNrYiwgZGFkZHIubWFjKTtcXG4gNzg5OlxcdFxcdGxsY19wZHVfZGVjb2RlX2RzYXAoc2tiLCBcXHUwMDI2ZGFkZHIubHNhcCk7XFxuIDc5MDpcXHRcXG4gNzkxOlxcdFxcdHNrID0gX19sbGNfbG9va3VwKHNhcCwgXFx1MDAyNnNhZGRyLCBcXHUwMDI2ZGFkZHIsIGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpKTtcXG4gNzkyOlxcdFxcdGlmICghc2spXFxuIDc5MzpcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIDc5NDpcXHRcXG4gNzk1OlxcdFxcdGJoX2xvY2tfc29jayhzayk7XFxuIDc5NjpcXHRcXHQvKlxcbiA3OTc6XFx0XFx0ICogVGhpcyBoYXMgdG8gYmUgZG9uZSBoZXJlIGFuZCBub3QgYXQgdGhlIHVwcGVyIGxheWVyIC1cXHUwMDNlYWNjZXB0XFxuIDc5ODpcXHRcXHQgKiBtZXRob2QgYmVjYXVzZSBvZiB0aGUgd2F5IHRoZSBQUk9DT00gc3RhdGUgbWFjaGluZSB3b3JrczpcXG4gNzk5OlxcdFxcdCAqIGl0IG5lZWRzIHRvIHNldCBzZXZlcmFsIHN0YXRlIHZhcmlhYmxlcyAoc2VlLCBmb3IgaW5zdGFuY2UsXFxuIDgwMDpcXHRcXHQgKiBsbGNfYWRtX2FjdGlvbnNfMiBpbiBuZXQvbGxjL2xsY19jX3N0LmMpIGFuZCBzZW5kIGEgcGFja2V0IHRvXFxuIDgwMTpcXHRcXHQgKiB0aGUgb3JpZ2luYXRvciBvZiB0aGUgbmV3IGNvbm5lY3Rpb24sIGFuZCB0aGlzIHN0YXRlIGhhcyB0byBiZVxcbiA4MDI6XFx0XFx0ICogaW4gdGhlIG5ld2x5IGNyZWF0ZWQgc3RydWN0IHNvY2sgcHJpdmF0ZSBhcmVhLiAtYWNtZVxcbiA4MDM6XFx0XFx0ICovXFxuIDgwNDpcXHRcXHRpZiAodW5saWtlbHkoc2stXFx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pIFxcdTAwMjZcXHUwMDI2XFxuIDgwNTpcXHRcXHQgICAgIWxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHNrLCBza2IpKSB7XFxuIDgwNjpcXHRcXHRcXHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cXHUwMDNlZGV2LFxcbiA4MDc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNhZGRyLCBcXHUwMDI2ZGFkZHIpO1xcbiA4MDg6XFx0XFx0XFx0aWYgKCFuZXdzaylcXG4gODA5OlxcdFxcdFxcdFxcdGdvdG8gZHJvcF91bmxvY2s7XFxuIDgxMDpcXHRcXHRcXHRza2Jfc2V0X293bmVyX3Ioc2tiLCBuZXdzayk7XFxuIDgxMTpcXHRcXHR9IGVsc2Uge1xcbiA4MTI6XFx0XFx0XFx0LypcXG4gODEzOlxcdFxcdFxcdCAqIENhbid0IGJlIHNrYl9zZXRfb3duZXJfciwgdGhpcyB3aWxsIGJlIGRvbmUgYXQgdGhlXFxuIDgxNDpcXHRcXHRcXHQgKiBsbGNfY29ubl9zdGF0ZV9wcm9jZXNzIGZ1bmN0aW9uLCBsYXRlciBvbiwgd2hlbiB3ZSB3aWxsIHVzZVxcbiA4MTU6XFx0XFx0XFx0ICogc2tiX3F1ZXVlX3Jjdl9za2IgdG8gc2VuZCBpdCB0byB1cHBlciBsYXllcnMsIHRoaXMgaXNcXG4gODE2OlxcdFxcdFxcdCAqIGFub3RoZXIgdHJpY2sgcmVxdWlyZWQgdG8gY29wZSB3aXRoIGhvdyB0aGUgUFJPQ09NIHN0YXRlXFxuIDgxNzpcXHRcXHRcXHQgKiBtYWNoaW5lIHdvcmtzLiAtYWNtZVxcbiA4MTg6XFx0XFx0XFx0ICovXFxuIDgxOTpcXHRcXHRcXHRza2Jfb3JwaGFuKHNrYik7XFxuIDgyMDpcXHRcXHRcXHRzb2NrX2hvbGQoc2spO1xcbiA4MjE6XFx0XFx0XFx0c2tiLVxcdTAwM2VzayA9IHNrO1xcbiA4MjI6XFx0XFx0XFx0c2tiLVxcdTAwM2VkZXN0cnVjdG9yID0gc29ja19lZnJlZTtcXG4gODIzOlxcdFxcdH1cXG4gODI0OlxcdFxcdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSlcXG4gODI1OlxcdFxcdFxcdGxsY19jb25uX3Jjdihzaywgc2tiKTtcXG4gODI2OlxcdFxcdGVsc2Uge1xcbiA4Mjc6XFx0XFx0XFx0ZHByaW50ayhcXFwiJXM6IGFkZGluZyB0byBiYWNrbG9nLi4uXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuIDgyODpcXHRcXHRcXHRsbGNfc2V0X2JhY2tsb2dfdHlwZShza2IsIExMQ19QQUNLRVQpO1xcbiA4Mjk6XFx0XFx0XFx0aWYgKHNrX2FkZF9iYWNrbG9nKHNrLCBza2IsIFJFQURfT05DRShzay1cXHUwMDNlc2tfcmN2YnVmKSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjI3LjYwNzU1MDEzN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDg4NTA0OTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUHJvcG9zZWQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgY29uZGl0aW9uIHdpdGggYCFsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzaywgc2tiKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIGludG8gd2hhdCB0aGF0IGZ1bmN0aW9uIGFjdHVhbGx5ICpkb2VzKi4gSSBrbm93IGBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeGAgaXMgZGVmaW5lZCBpbiBgbmV0L2xsYy9sbGNfY19ldi5jYC4gRmlyc3QgdGhpbmcsIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgaXQncyBhIHN0YXRpYyBmdW5jdGlvbiBvciBpZiBpdCdzIGV4cG9ydGVkLiBMZXQncyBzZWUuLi4gQWgsIGl0J3Mgbm90IHN0YXRpYy4gR29vZCwgdGhhdCBtYWtlcyBpdCBtb3JlIGludGVyZXN0aW5nLiBUaGUgZmFjdCB0aGF0IGl0J3MgaW4gYGluY2x1ZGUvbmV0L2xsY19jX2V2LmhgIG1lYW5zIGl0ICpjb3VsZCogYmUgYSBjcml0aWNhbCBzeW1ib2wsIHBvc3NpYmx5IGEgZm9jdXMgb2YgYW5vdGhlciBhbmFseXNpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgYmV0dGVyLCBzbyBuZXh0LCBJJ2xsIGdvIHRocm91Z2ggdGhlIGRlZmluaXRpb24gb2YgYGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94YC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc0MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjMxLjY5NjA1NzY1MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3OTIzMzc2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbGxjX2NfZXYuaD0xNDg9aW50IGxsY19jb25uX2V2X3J4X3Jlal9yc3BfZmJpdF9zZXRfeChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xcbmluY2x1ZGUvbmV0L2xsY19jX2V2Lmg6MTQ5OmludCBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xcbmluY2x1ZGUvbmV0L2xsY19jX2V2LmgtMTUwLWludCBsbGNfY29ubl9ldl9yeF91YV9yc3BfZmJpdF9zZXRfeChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxubmV0L2xsYy9sbGNfY19ldi5jPTQyMT1pbnQgbGxjX2Nvbm5fZXZfcnhfcnJfcnNwX2ZiaXRfc2V0XzEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2xsYy9sbGNfY19ldi5jLTQzMC1cXG5uZXQvbGxjL2xsY19jX2V2LmM6NDMxOmludCBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2xsYy9sbGNfY19ldi5jLTQzMi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjMzLjE3NTI5NjM5MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzA2NzE1NDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZHJhd2luZyBvbiBteSBleHBlcmllbmNlIGluIG5ldHdvcmsgcHJvdG9jb2xzOlxuXG4qKkFuYWx5emluZyB0aGUgTExDIENvbm5lY3Rpb24gSGFuZGxlciBQYXRjaCoqXG5cbkFscmlnaHQsIG15IGZvY3VzIGhlcmUgaXMgaG9uZWQgaW4gb24gYSBjb3VwbGUgb2Yga2V5IHN5bWJvbHM6IGBsbGNfY29ubl9oYW5kbGVyYCBhbmQgYGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94YC4gVGhlc2UgYXJlIHRoZSBjcnVjaWFsIGVsZW1lbnRzLiBUaGUgY29uZmlndXJhdGlvbiBiZWluZyBjb25zaWRlcmVkIGlzIHRoZSBgTExDMmAgc2V0dXAuXG5cblRoZSBlc3NlbmNlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gaW52b2x2ZSBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBgbGxjX2Nvbm5faGFuZGxlcmAuIEl0IGFwcGVhcnMgdGhhdCB0aGUgY29kZSBub3cgZXhwbGljaXRseSBjaGVja3MgaWYgYSByZWNlaXZlZCBwYWNrZXQgaXMgYSBTQUJNRSAoU2V0IEFzeW5jaHJvbm91cyBCYWxhbmNlZCBNb2RlIEV4dGVuZGVkKSBjb21tYW5kICpiZWZvcmUqIHNwaW5uaW5nIHVwIGEgbmV3IGluY29taW5nIHNvY2tldCBmb3IgYSBsaXN0ZW5pbmcgc29ja2V0LiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZS4gSXQgc3RyaWtlcyBtZSBhcyBhIGNvcmUgbW9kaWZpY2F0aW9uIHRvIHRoZSBMTEMgbmV0d29ya2luZyBjb2RlLCBhbmQgZnJvbSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0sIHRoaXMgY29kZSBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlIHZpYSBgQUZfTExDYCBzb2NrZXRzLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLlxuXG5Ob3csIEknbSBnb2luZyB0byBzdGFydCBydW5uaW5nIHNldC1yZXN1bHRzIHRvIHNlZSB3aGVyZSB0aGlzIGlzIGFsbCBnb2luZywgYW5kIGV4YWN0bHkgaG93IHRoZSBuZXcgY2hlY2tpbmcgbWV0aG9kb2xvZ3kgd2lsbCBtb2RpZnkgdGhlIGZsb3cgb2YgaW5jb21pbmcgY29ubmVjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0ODYsIk91dHB1dFRva2VucyI6MTI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjM3Ljg4MjAxMzk0OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDIxNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMTEMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibGxjX2Nvbm5faGFuZGxlclwiLFxuICAgIFwibGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTExDIGNvbm5lY3Rpb24gaGFuZGxlciBgbGxjX2Nvbm5faGFuZGxlcmAgdG8gY2hlY2sgaWYgdGhlIHJlY2VpdmVkIHBhY2tldCBpcyBhIFNBQk1FIGNvbW1hbmQgYmVmb3JlIGNyZWF0aW5nIGEgbmV3IGluY29taW5nIHNvY2tldCBmb3IgYSBsaXN0ZW5pbmcgc29ja2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgTExDIG5ldHdvcmtpbmcgY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBBRl9MTEMgc29ja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMTEMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibGxjX2Nvbm5faGFuZGxlclwiLFxuICAgIFwibGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTExDIGNvbm5lY3Rpb24gaGFuZGxlciBgbGxjX2Nvbm5faGFuZGxlcmAgdG8gY2hlY2sgaWYgdGhlIHJlY2VpdmVkIHBhY2tldCBpcyBhIFNBQk1FIGNvbW1hbmQgYmVmb3JlIGNyZWF0aW5nIGEgbmV3IGluY29taW5nIHNvY2tldCBmb3IgYSBsaXN0ZW5pbmcgc29ja2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgTExDIG5ldHdvcmtpbmcgY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBBRl9MTEMgc29ja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4mmbh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 21:17:31 +0000 UTC FinishedAt: 2026-07-24 21:52:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "615d300648869c774bd1fe54b4627bb0c20faed4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LLC2" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "615d300648869c774bd1fe54b4627bb0c20faed4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LLC2" ], "series_id": "655c6b2e-8241-4bc6-b786-4cd13578631a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "llc_conn_handler", "llc_conn_ev_rx_sabme_cmd_pbit_set_x" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xMQzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsbGNfY29ubl9oYW5kbGVyJiMzNDssCiAgICAmIzM0O2xsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMTEMgY29ubmVjdGlvbiBoYW5kbGVyIGBsbGNfY29ubl9oYW5kbGVyYCB0byBjaGVjayBpZiB0aGUgcmVjZWl2ZWQgcGFja2V0IGlzIGEgU0FCTUUgY29tbWFuZCBiZWZvcmUgY3JlYXRpbmcgYSBuZXcgaW5jb21pbmcgc29ja2V0IGZvciBhIGxpc3RlbmluZyBzb2NrZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBMTEMgbmV0d29ya2luZyBjb2RlLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEFGX0xMQyBzb2NrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTNiZDY1ZWI5YmQyMmQ0M2Y3Zjk2ZmMyNmFmNWMzNjI3NWEzMmQ0MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDIxOjUxOjU1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xuaW5kZXggMGEzZjVlMGJlYzAwY2UuLmEyMzU3NDhlMzZkY2UwIDEwMDY0NFxuLS0tIGEvbmV0L2xsYy9sbGNfY29ubi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbGxjL2xsY19jb25uLmNcbkBAIC04MDEsNyAmIzQzOzgwMSw4IEBAIHZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0ICogdGhlIG9yaWdpbmF0b3Igb2YgdGhlIG5ldyBjb25uZWN0aW9uLCBhbmQgdGhpcyBzdGF0ZSBoYXMgdG8gYmVcbiBcdCAqIGluIHRoZSBuZXdseSBjcmVhdGVkIHN0cnVjdCBzb2NrIHByaXZhdGUgYXJlYS4gLWFjbWVcbiBcdCAqL1xuLVx0aWYgKHVubGlrZWx5KHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pKSB7XG4mIzQzO1x0aWYgKHVubGlrZWx5KHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcbiBcdFx0c3RydWN0IHNvY2sgKm5ld3NrID0gbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHNrLCBza2ItXHUwMDNlZGV2LFxuIFx0XHRcdFx0XHRcdFx0ICAgICAgXHUwMDI2c2FkZHIsIFx1MDAyNmRhZGRyKTtcbiBcdFx0aWYgKCFuZXdzaylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TExDMiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2xsY19jb25uX2hhbmRsZXImIzM0OywKICAgICYjMzQ7bGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIExMQyBjb25uZWN0aW9uIGhhbmRsZXIgYGxsY19jb25uX2hhbmRsZXJgIHRvIGNoZWNrIGlmIHRoZSByZWNlaXZlZCBwYWNrZXQgaXMgYSBTQUJNRSBjb21tYW5kIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBpbmNvbWluZyBzb2NrZXQgZm9yIGEgbGlzdGVuaW5nIHNvY2tldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIExMQyBuZXR3b3JraW5nIGNvZGUsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfTExDIHNvY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1M2JkNjVlYjliZDIyZDQzZjdmOTZmYzI2YWY1YzM2Mjc1YTMyZDQxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMjQgMjE6NTE6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19jb25uLmMgYi9uZXQvbGxjL2xsY19jb25uLmMKaW5kZXggMGEzZjVlMGJlYzAwY2UuLmEyMzU3NDhlMzZkY2UwIDEwMDY0NAotLS0gYS9uZXQvbGxjL2xsY19jb25uLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2xsYy9sbGNfY29ubi5jCkBAIC04MDEsNyAmIzQzOzgwMSw4IEBAIHZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCSAqIHRoZSBvcmlnaW5hdG9yIG9mIHRoZSBuZXcgY29ubmVjdGlvbiwgYW5kIHRoaXMgc3RhdGUgaGFzIHRvIGJlCiAJICogaW4gdGhlIG5ld2x5IGNyZWF0ZWQgc3RydWN0IHNvY2sgcHJpdmF0ZSBhcmVhLiAtYWNtZQogCSAqLwotCWlmICh1bmxpa2VseShzay0mZ3Q7c2tfc3RhdGUgPT0gVENQX0xJU1RFTikpIHsKJiM0MzsJaWYgKHVubGlrZWx5KHNrLSZndDtza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSAmYW1wOyZhbXA7CiYjNDM7CSAgICAhbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHsKIAkJc3RydWN0IHNvY2sgKm5ld3NrID0gbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHNrLCBza2ItJmd0O2RldiwKIAkJCQkJCQkgICAgICAmYW1wO3NhZGRyLCAmYW1wO2RhZGRyKTsKIAkJaWYgKCFuZXdzaykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyMgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDExMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIENvbm5lY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvbGxjL2xsY19jb25uLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBgbGxjX2Nvbm5faGFuZGxlcmAgZnVuY3Rpb24uIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcyBhIG5ldyBjb25kaXRpb24sIGAhbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYilgLCB0byBhbiBleGlzdGluZyBgaWZgIHN0YXRlbWVudC4gVGhpcyBgaWZgIHN0YXRlbWVudCBpcyBhbHJlYWR5IGNoZWNraW5nIGlmIHRoZSBzb2NrZXQmIzM5O3Mgc3RhdGUgaXMgYFRDUF9MSVNURU5gLiBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2h5KiB0aGlzIGNvbmRpdGlvbiBpcyBiZWluZyBhZGRlZC4gV2hhdCBpcyBgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hgIGRvaW5nPyBBbmQgd2h5IGlzIGl0IHJlbGV2YW50IGluIHRoZSBjb250ZXh0IG9mIGEgc29ja2V0IGluIHRoZSBsaXN0ZW5pbmcgc3RhdGU/IE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgcmVsYXRlZCB0byBhIHNwZWNpZmljIHZ1bG5lcmFiaWxpdHkgb3Igb3B0aW1pemF0aW9uLiBJcyBpdCBhIGJ1ZyBmaXg/IE9yIHNvbWUgbmV3IGZlYXR1cmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgY29uZGl0aW9uYWwuIExldCYjMzk7cyBzZWUgaWYgdGhlIGNvZGUgaXRzZWxmIHByb3ZpZGVzIGFueSBpbW1lZGlhdGUgY2x1ZXMgYW5kIHdoYXQgdGhpcyBuZXcgZnVuY3Rpb24mIzM5O3Mgcm9sZSBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsbGNfY29ubl9oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2xsYy9sbGNfY29ubi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9sbGMvbGxjX2Nvbm4uYz02Mj1pbnQgbGxjX2Nvbm5fc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jLTk0LVx0XHQgKiBza2ItXHUwMDNlc2sgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgc3RydWN0IHNvY2sgaW5cbm5ldC9sbGMvbGxjX2Nvbm4uYzo5NTpcdFx0ICogbGxjX2Nvbm5faGFuZGxlci4gLWFjbWVcbm5ldC9sbGMvbGxjX2Nvbm4uYy05Ni1cdFx0ICovXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jPTc1OT1zdGF0aWMgc3RydWN0IHNvY2sgKmxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jLTc4MC1cbm5ldC9sbGMvbGxjX2Nvbm4uYzo3ODE6dm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbGxjL2xsY19jb25uLmMtNzgyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzM5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB1bnBhY2sgd2hhdCBpdCYjMzk7cyBkb2luZyB3aXRoIHRoZSBTQUJNRSBjb21tYW5kIGFuZCB0aGUgUC1iaXQuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gbGlrZWx5IGhhbmRsZXMgdGhlIHNldHRpbmcgb2YgdGhlIFBvbGwgYml0IChQLWJpdCkgd2l0aGluIHRoZSBjb250ZXh0IG9mIGFuIExMQyBjb25uZWN0aW9uLCBsaWtlbHkgZHVyaW5nIHRoZSByZWNlcHRpb24gb2YgYW4gU0FCTUUgKFNldCBBc3luY2hyb25vdXMgQmFsYW5jZWQgTW9kZSBFeHRlbmRlZCkgY29tbWFuZC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIHN1c3BlY3QgdGhpcyBoYXMgdG8gZG8gd2l0aCBsaW5rIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSBob3cgd2UgbWFuYWdlIGFuZCByZXNwb25kIHRvIGluY29taW5nIHJlcXVlc3RzIG9yIGNvbW1hbmRzLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGZ1bmN0aW9uJiMzOTtzIGludGVybmFsIGxvZ2ljOyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBQLWJpdCYjMzk7cyByb2xlIGluIHRoZSBsaW5rIGxheWVyJiMzOTtzIGNvbm5lY3Rpb24gc2V0dXAgb3IgY29udHJvbCBwcm9jZXNzLiBXaGF0IHNwZWNpZmljYWxseSB0cmlnZ2VycyB0aGUgaGFuZGxpbmcgb2YgdGhpcyBmdW5jdGlvbj8gSG93IGRvZXMgaXQgZGlmZmVyIGZyb20gb3RoZXIgU0FCTUUgY29tbWFuZCBoYW5kbGluZyBmdW5jdGlvbnM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBzdWNoIGFzIGBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfeGAuIEkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0IGNvcnJlY3RseSBoYW5kbGVzIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zIG9yIGVkZ2UgY2FzZXMuIEZyb20gdGhlcmUsIEkgbmVlZCB0byBzZWUgaG93IGl0IG1pZ2h0IGJlIGludGVyYWN0aW5nIHdpdGggdGhlIGludGVybmFsIGNvbm5lY3Rpb24gc3RhdGUsIHBvc3NpYmx5IGJ5IHRyYW5zaXRpb25pbmcgc3RhdGVzIG9yIHNldHRpbmcgZmxhZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbGxjX2NfZXYuaD0xNDg9aW50IGxsY19jb25uX2V2X3J4X3Jlal9yc3BfZmJpdF9zZXRfeChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xuaW5jbHVkZS9uZXQvbGxjX2NfZXYuaDoxNDk6aW50IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL25ldC9sbGNfY19ldi5oLTE1MC1pbnQgbGxjX2Nvbm5fZXZfcnhfdWFfcnNwX2ZiaXRfc2V0X3goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5uZXQvbGxjL2xsY19jX2V2LmM9NDIxPWludCBsbGNfY29ubl9ldl9yeF9ycl9yc3BfZmJpdF9zZXRfMShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2xsYy9sbGNfY19ldi5jLTQzMC1cbm5ldC9sbGMvbGxjX2NfZXYuYzo0MzE6aW50IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9sbGMvbGxjX2NfZXYuYy00MzIte1xuLS1cbm5ldC9sbGMvbGxjX2Nfc3QuYz04Mj1zdGF0aWMgc3RydWN0IGxsY19jb25uX3N0YXRlX3RyYW5zIGxsY19jb21tb25fc3RhdGVfdHJhbnNfMyA9IHtcbm5ldC9sbGMvbGxjX2Nfc3QuYzo4MzpcdC5ldlx0ICAgICAgID0gbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gsXG5uZXQvbGxjL2xsY19jX3N0LmMtODQtXHQubmV4dF9zdGF0ZSAgICA9IExMQ19DT05OX1NUQVRFX05PUk1BTCxcbi0tXG5uZXQvbGxjL2xsY19jX3N0LmM9MzgxPXN0YXRpYyBzdHJ1Y3QgbGxjX2Nvbm5fc3RhdGVfdHJhbnMgbGxjX2FkbV9zdGF0ZV90cmFuc18yID0ge1xubmV0L2xsYy9sbGNfY19zdC5jOjM4MjpcdC5ldlx0ICAgICAgID0gbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gsXG5uZXQvbGxjL2xsY19jX3N0LmMtMzgzLVx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9OT1JNQUwsXG4tLVxubmV0L2xsYy9sbGNfY19zdC5jPTQ1Nj1zdGF0aWMgc3RydWN0IGxsY19jb25uX3N0YXRlX3RyYW5zIGxsY19zZXR1cF9zdGF0ZV90cmFuc18xID0ge1xubmV0L2xsYy9sbGNfY19zdC5jOjQ1NzpcdC5ldlx0ICAgICAgID0gbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gsXG5uZXQvbGxjL2xsY19jX3N0LmMtNDU4LVx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9TRVRVUCxcbi0tXG5uZXQvbGxjL2xsY19jX3N0LmM9NDE3ND1zdGF0aWMgc3RydWN0IGxsY19jb25uX3N0YXRlX3RyYW5zIGxsY19kX2Nvbm5fc3RhdGVfdHJhbnNfMSA9IHtcbm5ldC9sbGMvbGxjX2Nfc3QuYzo0MTc1Olx0LmV2XHQgICAgICAgPSBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeCxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00MTc2LVx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9BRE0sXG4tLVxubmV0L2xsYy9sbGNfY19zdC5jPTQxOTc9c3RhdGljIHN0cnVjdCBsbGNfY29ubl9zdGF0ZV90cmFucyBsbGNfZF9jb25uX3N0YXRlX3RyYW5zXzFfMSA9IHtcbm5ldC9sbGMvbGxjX2Nfc3QuYzo0MTk4Olx0LmV2XHQgICAgICAgPSBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeCxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00MTk5LVx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9BRE0sXG4tLVxubmV0L2xsYy9sbGNfY19zdC5jPTQ0MjI9c3RhdGljIHN0cnVjdCBsbGNfY29ubl9zdGF0ZV90cmFucyBsbGNfcnN0X3N0YXRlX3RyYW5zXzEgPSB7XG5uZXQvbGxjL2xsY19jX3N0LmM6NDQyMzpcdC5ldlx0ICAgICAgID0gbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gsXG5uZXQvbGxjL2xsY19jX3N0LmMtNDQyNC1cdC5uZXh0X3N0YXRlICAgID0gTExDX0NPTk5fU1RBVEVfUkVTRVQsXG4tLVxubmV0L2xsYy9sbGNfY19zdC5jPTQ3MTM9c3RhdGljIHN0cnVjdCBsbGNfY29ubl9zdGF0ZV90cmFucyBsbGNfZXJyb3Jfc3RhdGVfdHJhbnNfMSA9IHtcbm5ldC9sbGMvbGxjX2Nfc3QuYzo0NzE0Olx0LmV2XHQgICAgICAgPSBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeCxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00NzE1LVx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9OT1JNQUwsXG4tLVxubmV0L2xsYy9sbGNfY29ubi5jPTc4MT12b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbGxjL2xsY19jb25uLmMtODA0LVx0aWYgKHVubGlrZWx5KHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pIFx1MDAyNlx1MDAyNlxubmV0L2xsYy9sbGNfY29ubi5jOjgwNTpcdCAgICAhbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcbm5ldC9sbGMvbGxjX2Nvbm4uYy04MDYtXHRcdHN0cnVjdCBzb2NrICpuZXdzayA9IGxsY19jcmVhdGVfaW5jb21pbmdfc29jayhzaywgc2tiLVx1MDAzZWRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDA1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGEgQ2hhbmdlIGluIGBsbGNfY29ubl9oYW5kbGVyYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYG5ldC9sbGMvbGxjX2Nvbm4uY2AuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgdGhpcyBhbHRlcnMgdGhlIGBsbGNfY29ubl9oYW5kbGVyYCBmdW5jdGlvbi4gTXkgaW5zdGluY3Qgbm93IGlzIHRvIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSByZWxhdGVkIGBuZXQvbGxjL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIG1pZ2h0IGJlIGFmZmVjdGVkIG9yIG1pZ2h0IG5vdyBiZSBuZWNlc3NhcnkgdG8gZW5hYmxlIHRoaXMgbmV3IGZ1bmN0aW9uYWxpdHksIG9yIGV2ZW4gdG8gc2VlIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbnZvbHZlZC4gVGhlIEtjb25maWcgaXMga2V5IHRvIGRldGVybWluaW5nIHRoZSBwcmFjdGljYWwgaW1wbGljYXRpb25zIG9mIHRoaXMgY29kZSBjaGFuZ2UgYW5kIGhvdyBpdCBpbXBhY3RzIHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MgYW5kIHN5c3RlbSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBMTEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbGxjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2xsYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbGxjL0tjb25maWc6Mjpjb25maWcgTExDXG5uZXQvbGxjL0tjb25maWctMy1cdHRyaXN0YXRlXG5uZXQvbGxjL0tjb25maWctNC1cbm5ldC9sbGMvS2NvbmZpZzo1OmNvbmZpZyBMTEMyXG5uZXQvbGxjL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0FOU0kvSUVFRSA4MDIuMiBMTEMgdHlwZSAyIFN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzU5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkxMQzIgUHJvbXB0IEludmVzdGlnYXRpb24qKgoKT2theSwgc28gTExDMiBpcyB0aGUgb25lIHdlIHRoaW5rIGlzIGRyaXZpbmcgdGhlIHByb21wdCBiZWhhdmlvci4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBidWlsZCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgdGhlIE1ha2VmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgTExDMiBpcyBjb25zdHJ1Y3RlZCBhbmQgaWYgdGhlcmUgYXJlIGFueSBoaW50cyByZWxhdGVkIHRvIHByb21wdCBoYW5kbGluZyBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIExldCYjMzk7cyBkaXZlIGludG8gYG5ldC9sbGMvTWFrZWZpbGVgLiBJJiMzOTttIGhvcGluZyB0byBmaW5kIHNvbWUgY2x1ZXMgdGhlcmUgYWJvdXQgaG93IHRoZSBwcm9tcHQgaXMgaW50ZWdyYXRlZCBvciBtYW5hZ2VkIHdpdGhpbiB0aGF0IG1vZHVsZS4gVGhpcyBpcyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBsaW5rYWdlcywgaWYgYW55d2hlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xsY19jb25uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2xsYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbGxjL01ha2VmaWxlPTE5PW9iai0kKENPTkZJR19MTEMyKSAmIzQzOz0gbGxjMi5vXG5uZXQvbGxjL01ha2VmaWxlLTIwLVxubmV0L2xsYy9NYWtlZmlsZToyMTpsbGMyLXkgOj0gbGxjX2lmLm8gbGxjX2NfZXYubyBsbGNfY19hYy5vIGxsY19jb25uLm8gbGxjX2Nfc3QubyBsbGNfcGR1Lm8gXFxcbm5ldC9sbGMvTWFrZWZpbGUtMjItXHQgIGxsY19zYXAubyBsbGNfc19hYy5vIGxsY19zX2V2Lm8gbGxjX3Nfc3QubyBhZl9sbGMubyBsbGNfc3RhdGlvbi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwOTgKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqRGVidWdnaW5nIHRoZSBMTEMyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19MTEMyYCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZW1lbnQgaGVyZS4gTmVlZCB0byB2ZXJpZnkgdGhhdCYjMzk7cyBlbmFibGVkIGFuZCBmdW5jdGlvbmluZyBjb3JyZWN0bHkuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25maXJtIHRoYXQgYGxsY19jb25uX2hhbmRsZXJgIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBpbiB0aGlzIGN1cnJlbnQgc2NlbmFyaW8uIExldCBtZSBwdWxsIHVwIHRoZSBjb2RlOyBJIHJlY2FsbCB0aGF0JiMzOTtzIGluIGBsbGNfY29ubi5jYC4gT2theSwgaGVyZSB3ZSBhcmUuIE5vdywgdGhlIGtleSBpcyAqaG93KiBpcyB0aGF0IGhhbmRsZXIgaW52b2tlZD8gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGZsb3cuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgcHJvYmFibHkgY2FsbGVkIGZyb20gYSByZWNlaXZlIHBhdGgsIHNvbWV0aGluZyBsaWtlIGBsbGNfcmN2YCBvciBhIHNpbWlsYXIgcmVjZWl2ZSBmdW5jdGlvbi4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgYW5kIHNlZSB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSwgdG8gdHJhY2UgdGhlIHBhdGggYW5kIG1ha2Ugc3VyZSBpdCBpcyBhY3R1YWxseSBnZXR0aW5nIGNhbGxlZCBhcyBleHBlY3RlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGxjX2Nvbm5faGFuZGxlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9sbGMuaD0xNDA9dm9pZCBsbGNfc2FwX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL25ldC9sbGMuaDoxNDE6dm9pZCBsbGNfY29ubl9oYW5kbGVyKHN0cnVjdCBsbGNfc2FwICpzYXAsIHN0cnVjdCBza19idWZmICpza2IpO1xuaW5jbHVkZS9uZXQvbGxjLmgtMTQyLVxuLS1cbm5ldC9sbGMvYWZfbGxjLmM9MTI0ND1zdGF0aWMgaW50IF9faW5pdCBsbGMyX2luaXQodm9pZClcbi0tXG5uZXQvbGxjL2FmX2xsYy5jLTEyNjktXHRsbGNfYWRkX3BhY2soTExDX0RFU1RfU0FQLCBsbGNfc2FwX2hhbmRsZXIpO1xubmV0L2xsYy9hZl9sbGMuYzoxMjcwOlx0bGxjX2FkZF9wYWNrKExMQ19ERVNUX0NPTk4sIGxsY19jb25uX2hhbmRsZXIpO1xubmV0L2xsYy9hZl9sbGMuYy0xMjcxLW91dDpcbi0tXG5uZXQvbGxjL2xsY19jb25uLmM9NjI9aW50IGxsY19jb25uX3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9sbGMvbGxjX2Nvbm4uYy05NC1cdFx0ICogc2tiLVx1MDAzZXNrIHBvaW50aW5nIHRvIHRoZSBuZXdseSBjcmVhdGVkIHN0cnVjdCBzb2NrIGluXG5uZXQvbGxjL2xsY19jb25uLmM6OTU6XHRcdCAqIGxsY19jb25uX2hhbmRsZXIuIC1hY21lXG5uZXQvbGxjL2xsY19jb25uLmMtOTYtXHRcdCAqL1xuLS1cbm5ldC9sbGMvbGxjX2Nvbm4uYz03NTk9c3RhdGljIHN0cnVjdCBzb2NrICpsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9sbGMvbGxjX2Nvbm4uYy03ODAtXG5uZXQvbGxjL2xsY19jb25uLmM6NzgxOnZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2xsYy9sbGNfY29ubi5jLTc4Mi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MzgKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMTEMgQ29ubmVjdGlvbiBIYW5kbGVyKioKCk9rYXksIHNvIGBsbGNfY29ubl9oYW5kbGVyYCBpcyB0aGUgcGFja2V0IGhhbmRsZXIgZm9yIGBMTENfREVTVF9DT05OYC4gSSYjMzk7bSBjb25maWRlbnQgaXQmIzM5O3MgcmVhY2hhYmxlIGFuZCB3b3JraW5nIGFzIGV4cGVjdGVkLiBUaGlzIHBhdGNoLCBzcGVjaWZpY2FsbHksIGlzIG1vZGlmeWluZyBgbGxjX2Nvbm5faGFuZGxlcmAuIFRoZXJlZm9yZSwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IHRoZSBmb2N1cyBzeW1ib2wgSSBuZWVkIHRvIGNvbmNlbnRyYXRlIG9uIGR1cmluZyB0aGlzIHJldmlldy4gVGhlIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBpcyBgTExDMmAuCgpOb3csIGxldCBtZSBtYWtlIHN1cmUgdGhpcyBgTExDMmAgY29uZmlnIGlzbiYjMzk7dCBkZXBlbmRlbnQgb24gYW55dGhpbmcgdW51c3VhbCBvciBwb3RlbnRpYWxseSBvdmVybG9va2VkLiBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC9sbGMvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIHRoYXQgdGhlcmUgYXJlbiYjMzk7dCBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEp1c3QgY292ZXJpbmcgYWxsIG15IGJhc2VzIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBMTEMyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2xsYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9sbGMvS2NvbmZpZz0yPWNvbmZpZyBMTENcbi0tXG5uZXQvbGxjL0tjb25maWctNC1cbm5ldC9sbGMvS2NvbmZpZzo1OmNvbmZpZyBMTEMyXG5uZXQvbGxjL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0FOU0kvSUVFRSA4MDIuMiBMTEMgdHlwZSAyIFN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIxMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBpbnN0cnVjdGlvbnMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IHRyYWluIG9mIHRob3VnaHQ6CgoqKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIG9mIG5ldC9sbGMqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgYSBnb29kIGxvb2sgYXQgYG5ldC9sbGMvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgTG9naWNhbCBMaW5rIENvbnRyb2wgbGF5ZXIuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIExMQyBpcyBidWlsdCBhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZHVyaW5nIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIG1lbnUgc3RydWN0dXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBkZWNpc2lvbnMgZ2V0IG1hZGUsIHRoZSBsZXZlcnMgYXJlIHB1bGxlZCwgYW5kIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGVpdGhlciBicm91Z2h0IGluLCBvciBleGNsdWRlZC4gSXQmIzM5O3MgdGltZSB0byBzZWUgd2hhdCYjMzk7cyB3aGF0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgY29udGFpbmVkIGhlcmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbGxjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTExDXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFxuICAgNTpcdGNvbmZpZyBMTEMyXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtBTlNJL0lFRUUgODAyLjIgTExDIHR5cGUgMiBTdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRzZWxlY3QgTExDXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFRoaXMgaXMgYSBMb2dpY2FsIExpbmsgTGF5ZXIgdHlwZSAyLCBjb25uZWN0aW9uIG9yaWVudGVkIHN1cHBvcnQuXG4gIDEwOlx0XHQgIFNlbGVjdCB0aGlzIGlmIHlvdSB3YW50IHRvIGhhdmUgc3VwcG9ydCBmb3IgUEZfTExDIHNvY2tldHMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NjIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIHRoZSBleHBlY3RhdGlvbiB0aGF0IEkmIzM5O20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OgoKKipMTEMyIFN1ZmZpY2llbmN5IGFuZCBDb25uZWN0aW9uIEhhbmRsZXIgRGVlcCBEaXZlKioKClJpZ2h0LCBzbyBJJiMzOTt2ZSBkZWNpZGVkIHRoYXQgYExMQzJgIGlzIHRoZSBwbGFjZSB0byBzdGFydC4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBsZXZlbCBvZiBhYnN0cmFjdGlvbiB0byBhZGRyZXNzIHRoaXMuCgpOb3csIHRvIHNvbGlkaWZ5IHRoYXQsIEkgbmVlZCB0byBjaGVjayBgbGxjX2Nvbm5faGFuZGxlcmAgaW4gYG5ldC9sbGMvbGxjX2Nvbm4uY2AuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNvbm5lY3Rpb24gaGFuZGxpbmcgZnVuY3Rpb25zLiBJdCYjMzk7cyBlYXN5IHRvIGdldCB0dW5uZWwgdmlzaW9uLCBhbmQgYSBjdXJzb3J5IGdsYW5jZSBhdCB0aGF0IGFyZWEgd2lsbCBob3BlZnVsbHkgdGVsbCBtZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGtleSBmdW5jdGlvbnMgb3IgZGF0YSBzdHJ1Y3R1cmVzIEkgc2hvdWxkIGJlIGNvbnNpZGVyaW5nLiBOZWVkIHRvIGF2b2lkIG92ZXJsb29raW5nIGFueSBzdWJ0bGUgZWRnZSBjYXNlcy4gSSYjMzk7bGwgZm9jdXMgb24gdGhhdCBmaWxlIGZvciBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2xsYy9sbGNfY29ubi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3ODA6XHRcbiA3ODE6XHR2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiA3ODI6XHR7XG4gNzgzOlx0XHRzdHJ1Y3QgbGxjX2FkZHIgc2FkZHIsIGRhZGRyO1xuIDc4NDpcdFx0c3RydWN0IHNvY2sgKnNrO1xuIDc4NTpcdFxuIDc4NjpcdFx0bGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBzYWRkci5tYWMpO1xuIDc4NzpcdFx0bGxjX3BkdV9kZWNvZGVfc3NhcChza2IsIFx1MDAyNnNhZGRyLmxzYXApO1xuIDc4ODpcdFx0bGxjX3BkdV9kZWNvZGVfZGEoc2tiLCBkYWRkci5tYWMpO1xuIDc4OTpcdFx0bGxjX3BkdV9kZWNvZGVfZHNhcChza2IsIFx1MDAyNmRhZGRyLmxzYXApO1xuIDc5MDpcdFxuIDc5MTpcdFx0c2sgPSBfX2xsY19sb29rdXAoc2FwLCBcdTAwMjZzYWRkciwgXHUwMDI2ZGFkZHIsIGRldl9uZXQoc2tiLVx1MDAzZWRldikpO1xuIDc5MjpcdFx0aWYgKCFzaylcbiA3OTM6XHRcdFx0Z290byBkcm9wO1xuIDc5NDpcdFxuIDc5NTpcdFx0YmhfbG9ja19zb2NrKHNrKTtcbiA3OTY6XHRcdC8qXG4gNzk3Olx0XHQgKiBUaGlzIGhhcyB0byBiZSBkb25lIGhlcmUgYW5kIG5vdCBhdCB0aGUgdXBwZXIgbGF5ZXIgLVx1MDAzZWFjY2VwdFxuIDc5ODpcdFx0ICogbWV0aG9kIGJlY2F1c2Ugb2YgdGhlIHdheSB0aGUgUFJPQ09NIHN0YXRlIG1hY2hpbmUgd29ya3M6XG4gNzk5Olx0XHQgKiBpdCBuZWVkcyB0byBzZXQgc2V2ZXJhbCBzdGF0ZSB2YXJpYWJsZXMgKHNlZSwgZm9yIGluc3RhbmNlLFxuIDgwMDpcdFx0ICogbGxjX2FkbV9hY3Rpb25zXzIgaW4gbmV0L2xsYy9sbGNfY19zdC5jKSBhbmQgc2VuZCBhIHBhY2tldCB0b1xuIDgwMTpcdFx0ICogdGhlIG9yaWdpbmF0b3Igb2YgdGhlIG5ldyBjb25uZWN0aW9uLCBhbmQgdGhpcyBzdGF0ZSBoYXMgdG8gYmVcbiA4MDI6XHRcdCAqIGluIHRoZSBuZXdseSBjcmVhdGVkIHN0cnVjdCBzb2NrIHByaXZhdGUgYXJlYS4gLWFjbWVcbiA4MDM6XHRcdCAqL1xuIDgwNDpcdFx0aWYgKHVubGlrZWx5KHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pIFx1MDAyNlx1MDAyNlxuIDgwNTpcdFx0ICAgICFsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzaywgc2tiKSkge1xuIDgwNjpcdFx0XHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cdTAwM2VkZXYsXG4gODA3Olx0XHRcdFx0XHRcdFx0XHQgICAgICBcdTAwMjZzYWRkciwgXHUwMDI2ZGFkZHIpO1xuIDgwODpcdFx0XHRpZiAoIW5ld3NrKVxuIDgwOTpcdFx0XHRcdGdvdG8gZHJvcF91bmxvY2s7XG4gODEwOlx0XHRcdHNrYl9zZXRfb3duZXJfcihza2IsIG5ld3NrKTtcbiA4MTE6XHRcdH0gZWxzZSB7XG4gODEyOlx0XHRcdC8qXG4gODEzOlx0XHRcdCAqIENhbiYjMzk7dCBiZSBza2Jfc2V0X293bmVyX3IsIHRoaXMgd2lsbCBiZSBkb25lIGF0IHRoZVxuIDgxNDpcdFx0XHQgKiBsbGNfY29ubl9zdGF0ZV9wcm9jZXNzIGZ1bmN0aW9uLCBsYXRlciBvbiwgd2hlbiB3ZSB3aWxsIHVzZVxuIDgxNTpcdFx0XHQgKiBza2JfcXVldWVfcmN2X3NrYiB0byBzZW5kIGl0IHRvIHVwcGVyIGxheWVycywgdGhpcyBpc1xuIDgxNjpcdFx0XHQgKiBhbm90aGVyIHRyaWNrIHJlcXVpcmVkIHRvIGNvcGUgd2l0aCBob3cgdGhlIFBST0NPTSBzdGF0ZVxuIDgxNzpcdFx0XHQgKiBtYWNoaW5lIHdvcmtzLiAtYWNtZVxuIDgxODpcdFx0XHQgKi9cbiA4MTk6XHRcdFx0c2tiX29ycGhhbihza2IpO1xuIDgyMDpcdFx0XHRzb2NrX2hvbGQoc2spO1xuIDgyMTpcdFx0XHRza2ItXHUwMDNlc2sgPSBzaztcbiA4MjI6XHRcdFx0c2tiLVx1MDAzZWRlc3RydWN0b3IgPSBzb2NrX2VmcmVlO1xuIDgyMzpcdFx0fVxuIDgyNDpcdFx0aWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKVxuIDgyNTpcdFx0XHRsbGNfY29ubl9yY3Yoc2ssIHNrYik7XG4gODI2Olx0XHRlbHNlIHtcbiA4Mjc6XHRcdFx0ZHByaW50ayhcJiMzNDslczogYWRkaW5nIHRvIGJhY2tsb2cuLi5cXG5cJiMzNDssIF9fZnVuY19fKTtcbiA4Mjg6XHRcdFx0bGxjX3NldF9iYWNrbG9nX3R5cGUoc2tiLCBMTENfUEFDS0VUKTtcbiA4Mjk6XHRcdFx0aWYgKHNrX2FkZF9iYWNrbG9nKHNrLCBza2IsIFJFQURfT05DRShzay1cdTAwM2Vza19yY3ZidWYpKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc0MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb25kaXRpb24gd2l0aCBgIWxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHNrLCBza2IpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgaW50byB3aGF0IHRoYXQgZnVuY3Rpb24gYWN0dWFsbHkgKmRvZXMqLiBJIGtub3cgYGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94YCBpcyBkZWZpbmVkIGluIGBuZXQvbGxjL2xsY19jX2V2LmNgLiBGaXJzdCB0aGluZywgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiBvciBpZiBpdCYjMzk7cyBleHBvcnRlZC4gTGV0JiMzOTtzIHNlZS4uLiBBaCwgaXQmIzM5O3Mgbm90IHN0YXRpYy4gR29vZCwgdGhhdCBtYWtlcyBpdCBtb3JlIGludGVyZXN0aW5nLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGluIGBpbmNsdWRlL25ldC9sbGNfY19ldi5oYCBtZWFucyBpdCAqY291bGQqIGJlIGEgY3JpdGljYWwgc3ltYm9sLCBwb3NzaWJseSBhIGZvY3VzIG9mIGFub3RoZXIgYW5hbHlzaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGJldHRlciwgc28gbmV4dCwgSSYjMzk7bGwgZ28gdGhyb3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbGxjX2NfZXYuaD0xNDg9aW50IGxsY19jb25uX2V2X3J4X3Jlal9yc3BfZmJpdF9zZXRfeChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xuaW5jbHVkZS9uZXQvbGxjX2NfZXYuaDoxNDk6aW50IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL25ldC9sbGNfY19ldi5oLTE1MC1pbnQgbGxjX2Nvbm5fZXZfcnhfdWFfcnNwX2ZiaXRfc2V0X3goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5uZXQvbGxjL2xsY19jX2V2LmM9NDIxPWludCBsbGNfY29ubl9ldl9yeF9ycl9yc3BfZmJpdF9zZXRfMShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2xsYy9sbGNfY19ldi5jLTQzMC1cbm5ldC9sbGMvbGxjX2NfZXYuYzo0MzE6aW50IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9sbGMvbGxjX2NfZXYuYy00MzIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDg2CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBkcmF3aW5nIG9uIG15IGV4cGVyaWVuY2UgaW4gbmV0d29yayBwcm90b2NvbHM6CgoqKkFuYWx5emluZyB0aGUgTExDIENvbm5lY3Rpb24gSGFuZGxlciBQYXRjaCoqCgpBbHJpZ2h0LCBteSBmb2N1cyBoZXJlIGlzIGhvbmVkIGluIG9uIGEgY291cGxlIG9mIGtleSBzeW1ib2xzOiBgbGxjX2Nvbm5faGFuZGxlcmAgYW5kIGBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeGAuIFRoZXNlIGFyZSB0aGUgY3J1Y2lhbCBlbGVtZW50cy4gVGhlIGNvbmZpZ3VyYXRpb24gYmVpbmcgY29uc2lkZXJlZCBpcyB0aGUgYExMQzJgIHNldHVwLgoKVGhlIGVzc2VuY2Ugb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBpbnZvbHZlIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIGBsbGNfY29ubl9oYW5kbGVyYC4gSXQgYXBwZWFycyB0aGF0IHRoZSBjb2RlIG5vdyBleHBsaWNpdGx5IGNoZWNrcyBpZiBhIHJlY2VpdmVkIHBhY2tldCBpcyBhIFNBQk1FIChTZXQgQXN5bmNocm9ub3VzIEJhbGFuY2VkIE1vZGUgRXh0ZW5kZWQpIGNvbW1hbmQgKmJlZm9yZSogc3Bpbm5pbmcgdXAgYSBuZXcgaW5jb21pbmcgc29ja2V0IGZvciBhIGxpc3RlbmluZyBzb2NrZXQuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgY2hhbmdlLiBJdCBzdHJpa2VzIG1lIGFzIGEgY29yZSBtb2RpZmljYXRpb24gdG8gdGhlIExMQyBuZXR3b3JraW5nIGNvZGUsIGFuZCBmcm9tIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN5c3RlbSwgdGhpcyBjb2RlIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgdmlhIGBBRl9MTENgIHNvY2tldHMuIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWsuCgpOb3csIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgcnVubmluZyBzZXQtcmVzdWx0cyB0byBzZWUgd2hlcmUgdGhpcyBpcyBhbGwgZ29pbmcsIGFuZCBleGFjdGx5IGhvdyB0aGUgbmV3IGNoZWNraW5nIG1ldGhvZG9sb2d5IHdpbGwgbW9kaWZ5IHRoZSBmbG93IG9mIGluY29taW5nIGNvbm5lY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TExDMiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2xsY19jb25uX2hhbmRsZXImIzM0OywKICAgICYjMzQ7bGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIExMQyBjb25uZWN0aW9uIGhhbmRsZXIgYGxsY19jb25uX2hhbmRsZXJgIHRvIGNoZWNrIGlmIHRoZSByZWNlaXZlZCBwYWNrZXQgaXMgYSBTQUJNRSBjb21tYW5kIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBpbmNvbWluZyBzb2NrZXQgZm9yIGEgbGlzdGVuaW5nIHNvY2tldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIExMQyBuZXR3b3JraW5nIGNvZGUsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfTExDIHNvY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xMQzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtsbGNfY29ubl9oYW5kbGVyJiMzNDssCiAgICAmIzM0O2xsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMTEMgY29ubmVjdGlvbiBoYW5kbGVyIGBsbGNfY29ubl9oYW5kbGVyYCB0byBjaGVjayBpZiB0aGUgcmVjZWl2ZWQgcGFja2V0IGlzIGEgU0FCTUUgY29tbWFuZCBiZWZvcmUgY3JlYXRpbmcgYSBuZXcgaW5jb21pbmcgc29ja2V0IGZvciBhIGxpc3RlbmluZyBzb2NrZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBMTEMgbmV0d29ya2luZyBjb2RlLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEFGX0xMQyBzb2NrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTE6NTcuNTE2MzA3NDYyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA0NDExNjM4MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTExDMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImxsY19jb25uX2hhbmRsZXJcIixcbiAgICBcImxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIExMQyBjb25uZWN0aW9uIGhhbmRsZXIgYGxsY19jb25uX2hhbmRsZXJgIHRvIGNoZWNrIGlmIHRoZSByZWNlaXZlZCBwYWNrZXQgaXMgYSBTQUJNRSBjb21tYW5kIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBpbmNvbWluZyBzb2NrZXQgZm9yIGEgbGlzdGVuaW5nIHNvY2tldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIExMQyBuZXR3b3JraW5nIGNvZGUsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgQUZfTExDIHNvY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUxOjU3LjUxNjMxMjY5MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MTA0MzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTNiZDY1ZWI5YmQyMmQ0M2Y3Zjk2ZmMyNmFmNWMzNjI3NWEzMmQ0MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAyNCAyMTo1MTo1NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbGxjL2xsY19jb25uLmMgYi9uZXQvbGxjL2xsY19jb25uLmNcXG5pbmRleCAwYTNmNWUwYmVjMDBjZS4uYTIzNTc0OGUzNmRjZTAgMTAwNjQ0XFxuLS0tIGEvbmV0L2xsYy9sbGNfY29ubi5jXFxuKysrIGIvbmV0L2xsYy9sbGNfY29ubi5jXFxuQEAgLTgwMSw3ICs4MDEsOCBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0ICogdGhlIG9yaWdpbmF0b3Igb2YgdGhlIG5ldyBjb25uZWN0aW9uLCBhbmQgdGhpcyBzdGF0ZSBoYXMgdG8gYmVcXG4gXFx0ICogaW4gdGhlIG5ld2x5IGNyZWF0ZWQgc3RydWN0IHNvY2sgcHJpdmF0ZSBhcmVhLiAtYWNtZVxcbiBcXHQgKi9cXG4tXFx0aWYgKHVubGlrZWx5KHNrLVxcdTAwM2Vza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSkge1xcbitcXHRpZiAodW5saWtlbHkoc2stXFx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc2ssIHNrYikpIHtcXG4gXFx0XFx0c3RydWN0IHNvY2sgKm5ld3NrID0gbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHNrLCBza2ItXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNhZGRyLCBcXHUwMDI2ZGFkZHIpO1xcbiBcXHRcXHRpZiAoIW5ld3NrKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MTo1OC4wNDYwOTI3OTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozOTkxMTM0NjMzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMTEMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibGxjX2Nvbm5faGFuZGxlclwiLFxuICAgIFwibGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTExDIGNvbm5lY3Rpb24gaGFuZGxlciBgbGxjX2Nvbm5faGFuZGxlcmAgdG8gY2hlY2sgaWYgdGhlIHJlY2VpdmVkIHBhY2tldCBpcyBhIFNBQk1FIGNvbW1hbmQgYmVmb3JlIGNyZWF0aW5nIGEgbmV3IGluY29taW5nIHNvY2tldCBmb3IgYSBsaXN0ZW5pbmcgc29ja2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgTExDIG5ldHdvcmtpbmcgY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBBRl9MTEMgc29ja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTNiZDY1ZWI5YmQyMmQ0M2Y3Zjk2ZmMyNmFmNWMzNjI3NWEzMmQ0MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDIxOjUxOjU1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2xsYy9sbGNfY29ubi5jIGIvbmV0L2xsYy9sbGNfY29ubi5jXG5pbmRleCAwYTNmNWUwYmVjMDBjZS4uYTIzNTc0OGUzNmRjZTAgMTAwNjQ0XG4tLS0gYS9uZXQvbGxjL2xsY19jb25uLmNcbisrKyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xuQEAgLTgwMSw3ICs4MDEsOCBAQCB2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdCAqIHRoZSBvcmlnaW5hdG9yIG9mIHRoZSBuZXcgY29ubmVjdGlvbiwgYW5kIHRoaXMgc3RhdGUgaGFzIHRvIGJlXG4gXHQgKiBpbiB0aGUgbmV3bHkgY3JlYXRlZCBzdHJ1Y3Qgc29jayBwcml2YXRlIGFyZWEuIC1hY21lXG4gXHQgKi9cbi1cdGlmICh1bmxpa2VseShzay1cdTAwM2Vza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSkge1xuK1x0aWYgKHVubGlrZWx5KHNrLVx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzaywgc2tiKSkge1xuIFx0XHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cdTAwM2VkZXYsXG4gXHRcdFx0XHRcdFx0XHQgICAgICBcdTAwMjZzYWRkciwgXHUwMDI2ZGFkZHIpO1xuIFx0XHRpZiAoIW5ld3NrKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTE6NTguMDQ2MDk0Mzc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc1NTEzNzgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIENvbm5lY3Rpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L2xsYy9sbGNfY29ubi5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYGxsY19jb25uX2hhbmRsZXJgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHMgYSBuZXcgY29uZGl0aW9uLCBgIWxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHNrLCBza2IpYCwgdG8gYW4gZXhpc3RpbmcgYGlmYCBzdGF0ZW1lbnQuIFRoaXMgYGlmYCBzdGF0ZW1lbnQgaXMgYWxyZWFkeSBjaGVja2luZyBpZiB0aGUgc29ja2V0J3Mgc3RhdGUgaXMgYFRDUF9MSVNURU5gLiBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2h5KiB0aGlzIGNvbmRpdGlvbiBpcyBiZWluZyBhZGRlZC4gV2hhdCBpcyBgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hgIGRvaW5nPyBBbmQgd2h5IGlzIGl0IHJlbGV2YW50IGluIHRoZSBjb250ZXh0IG9mIGEgc29ja2V0IGluIHRoZSBsaXN0ZW5pbmcgc3RhdGU/IE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgcmVsYXRlZCB0byBhIHNwZWNpZmljIHZ1bG5lcmFiaWxpdHkgb3Igb3B0aW1pemF0aW9uLiBJcyBpdCBhIGJ1ZyBmaXg/IE9yIHNvbWUgbmV3IGZlYXR1cmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgY29uZGl0aW9uYWwuIExldCdzIHNlZSBpZiB0aGUgY29kZSBpdHNlbGYgcHJvdmlkZXMgYW55IGltbWVkaWF0ZSBjbHVlcyBhbmQgd2hhdCB0aGlzIG5ldyBmdW5jdGlvbidzIHJvbGUgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MjowMS44MDEyMzQ1MDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ1MDEyNDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxsY19jb25uX2hhbmRsZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2xsYy9sbGNfY29ubi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sbGMvbGxjX2Nvbm4uYz02Mj1pbnQgbGxjX2Nvbm5fc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbGxjL2xsY19jb25uLmMtOTQtXFx0XFx0ICogc2tiLVxcdTAwM2VzayBwb2ludGluZyB0byB0aGUgbmV3bHkgY3JlYXRlZCBzdHJ1Y3Qgc29jayBpblxcbm5ldC9sbGMvbGxjX2Nvbm4uYzo5NTpcXHRcXHQgKiBsbGNfY29ubl9oYW5kbGVyLiAtYWNtZVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy05Ni1cXHRcXHQgKi9cXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYz03NTk9c3RhdGljIHN0cnVjdCBzb2NrICpsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2xsYy9sbGNfY29ubi5jLTc4MC1cXG5uZXQvbGxjL2xsY19jb25uLmM6NzgxOnZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy03ODIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MjowMi4yNDYyNTE2MDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM3ODg2MzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB1bnBhY2sgd2hhdCBpdCdzIGRvaW5nIHdpdGggdGhlIFNBQk1FIGNvbW1hbmQgYW5kIHRoZSBQLWJpdC4gTXkgaW5pdGlhbCBoeXBvdGhlc2lzIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBsaWtlbHkgaGFuZGxlcyB0aGUgc2V0dGluZyBvZiB0aGUgUG9sbCBiaXQgKFAtYml0KSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYW4gTExDIGNvbm5lY3Rpb24sIGxpa2VseSBkdXJpbmcgdGhlIHJlY2VwdGlvbiBvZiBhbiBTQUJNRSAoU2V0IEFzeW5jaHJvbm91cyBCYWxhbmNlZCBNb2RlIEV4dGVuZGVkKSBjb21tYW5kLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgc3VzcGVjdCB0aGlzIGhhcyB0byBkbyB3aXRoIGxpbmsgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGhvdyB3ZSBtYW5hZ2UgYW5kIHJlc3BvbmQgdG8gaW5jb21pbmcgcmVxdWVzdHMgb3IgY29tbWFuZHMuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgZnVuY3Rpb24ncyBpbnRlcm5hbCBsb2dpYzsgdGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgUC1iaXQncyByb2xlIGluIHRoZSBsaW5rIGxheWVyJ3MgY29ubmVjdGlvbiBzZXR1cCBvciBjb250cm9sIHByb2Nlc3MuIFdoYXQgc3BlY2lmaWNhbGx5IHRyaWdnZXJzIHRoZSBoYW5kbGluZyBvZiB0aGlzIGZ1bmN0aW9uPyBIb3cgZG9lcyBpdCBkaWZmZXIgZnJvbSBvdGhlciBTQUJNRSBjb21tYW5kIGhhbmRsaW5nIGZ1bmN0aW9ucz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHN1Y2ggYXMgYGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF94YC4gSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQgY29ycmVjdGx5IGhhbmRsZXMgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMgb3IgZWRnZSBjYXNlcy4gRnJvbSB0aGVyZSwgSSBuZWVkIHRvIHNlZSBob3cgaXQgbWlnaHQgYmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaW50ZXJuYWwgY29ubmVjdGlvbiBzdGF0ZSwgcG9zc2libHkgYnkgdHJhbnNpdGlvbmluZyBzdGF0ZXMgb3Igc2V0dGluZyBmbGFncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjczOSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjA1LjM4NDEzOTQ3MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEwOTUyMzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2xsY19jX2V2Lmg9MTQ4PWludCBsbGNfY29ubl9ldl9yeF9yZWpfcnNwX2ZiaXRfc2V0X3goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5pbmNsdWRlL25ldC9sbGNfY19ldi5oOjE0OTppbnQgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5pbmNsdWRlL25ldC9sbGNfY19ldi5oLTE1MC1pbnQgbGxjX2Nvbm5fZXZfcnhfdWFfcnNwX2ZiaXRfc2V0X3goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4tLVxcbm5ldC9sbGMvbGxjX2NfZXYuYz00MjE9aW50IGxsY19jb25uX2V2X3J4X3JyX3JzcF9mYml0X3NldF8xKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9sbGMvbGxjX2NfZXYuYy00MzAtXFxubmV0L2xsYy9sbGNfY19ldi5jOjQzMTppbnQgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9sbGMvbGxjX2NfZXYuYy00MzIte1xcbi0tXFxubmV0L2xsYy9sbGNfY19zdC5jPTgyPXN0YXRpYyBzdHJ1Y3QgbGxjX2Nvbm5fc3RhdGVfdHJhbnMgbGxjX2NvbW1vbl9zdGF0ZV90cmFuc18zID0ge1xcbm5ldC9sbGMvbGxjX2Nfc3QuYzo4MzpcXHQuZXZcXHQgICAgICAgPSBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeCxcXG5uZXQvbGxjL2xsY19jX3N0LmMtODQtXFx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9OT1JNQUwsXFxuLS1cXG5uZXQvbGxjL2xsY19jX3N0LmM9MzgxPXN0YXRpYyBzdHJ1Y3QgbGxjX2Nvbm5fc3RhdGVfdHJhbnMgbGxjX2FkbV9zdGF0ZV90cmFuc18yID0ge1xcbm5ldC9sbGMvbGxjX2Nfc3QuYzozODI6XFx0LmV2XFx0ICAgICAgID0gbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3gsXFxubmV0L2xsYy9sbGNfY19zdC5jLTM4My1cXHQubmV4dF9zdGF0ZSAgICA9IExMQ19DT05OX1NUQVRFX05PUk1BTCxcXG4tLVxcbm5ldC9sbGMvbGxjX2Nfc3QuYz00NTY9c3RhdGljIHN0cnVjdCBsbGNfY29ubl9zdGF0ZV90cmFucyBsbGNfc2V0dXBfc3RhdGVfdHJhbnNfMSA9IHtcXG5uZXQvbGxjL2xsY19jX3N0LmM6NDU3OlxcdC5ldlxcdCAgICAgICA9IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94LFxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00NTgtXFx0Lm5leHRfc3RhdGUgICAgPSBMTENfQ09OTl9TVEFURV9TRVRVUCxcXG4tLVxcbm5ldC9sbGMvbGxjX2Nfc3QuYz00MTc0PXN0YXRpYyBzdHJ1Y3QgbGxjX2Nvbm5fc3RhdGVfdHJhbnMgbGxjX2RfY29ubl9zdGF0ZV90cmFuc18xID0ge1xcbm5ldC9sbGMvbGxjX2Nfc3QuYzo0MTc1OlxcdC5ldlxcdCAgICAgICA9IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94LFxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00MTc2LVxcdC5uZXh0X3N0YXRlICAgID0gTExDX0NPTk5fU1RBVEVfQURNLFxcbi0tXFxubmV0L2xsYy9sbGNfY19zdC5jPTQxOTc9c3RhdGljIHN0cnVjdCBsbGNfY29ubl9zdGF0ZV90cmFucyBsbGNfZF9jb25uX3N0YXRlX3RyYW5zXzFfMSA9IHtcXG5uZXQvbGxjL2xsY19jX3N0LmM6NDE5ODpcXHQuZXZcXHQgICAgICAgPSBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeCxcXG5uZXQvbGxjL2xsY19jX3N0LmMtNDE5OS1cXHQubmV4dF9zdGF0ZSAgICA9IExMQ19DT05OX1NUQVRFX0FETSxcXG4tLVxcbm5ldC9sbGMvbGxjX2Nfc3QuYz00NDIyPXN0YXRpYyBzdHJ1Y3QgbGxjX2Nvbm5fc3RhdGVfdHJhbnMgbGxjX3JzdF9zdGF0ZV90cmFuc18xID0ge1xcbm5ldC9sbGMvbGxjX2Nfc3QuYzo0NDIzOlxcdC5ldlxcdCAgICAgICA9IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94LFxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00NDI0LVxcdC5uZXh0X3N0YXRlICAgID0gTExDX0NPTk5fU1RBVEVfUkVTRVQsXFxuLS1cXG5uZXQvbGxjL2xsY19jX3N0LmM9NDcxMz1zdGF0aWMgc3RydWN0IGxsY19jb25uX3N0YXRlX3RyYW5zIGxsY19lcnJvcl9zdGF0ZV90cmFuc18xID0ge1xcbm5ldC9sbGMvbGxjX2Nfc3QuYzo0NzE0OlxcdC5ldlxcdCAgICAgICA9IGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94LFxcbm5ldC9sbGMvbGxjX2Nfc3QuYy00NzE1LVxcdC5uZXh0X3N0YXRlICAgID0gTExDX0NPTk5fU1RBVEVfTk9STUFMLFxcbi0tXFxubmV0L2xsYy9sbGNfY29ubi5jPTc4MT12b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy04MDQtXFx0aWYgKHVubGlrZWx5KHNrLVxcdTAwM2Vza19zdGF0ZSA9PSBUQ1BfTElTVEVOKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9sbGMvbGxjX2Nvbm4uYzo4MDU6XFx0ICAgICFsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzaywgc2tiKSkge1xcbm5ldC9sbGMvbGxjX2Nvbm4uYy04MDYtXFx0XFx0c3RydWN0IHNvY2sgKm5ld3NrID0gbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHNrLCBza2ItXFx1MDAzZWRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTI6MDYuODk1MDk2MzU5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY0NzE1MzU3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGEgQ2hhbmdlIGluIGBsbGNfY29ubl9oYW5kbGVyYCoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGBuZXQvbGxjL2xsY19jb25uLmNgLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IHRoaXMgYWx0ZXJzIHRoZSBgbGxjX2Nvbm5faGFuZGxlcmAgZnVuY3Rpb24uIE15IGluc3RpbmN0IG5vdyBpcyB0byBpbW1lZGlhdGVseSBjaGVjayB0aGUgcmVsYXRlZCBgbmV0L2xsYy9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBtaWdodCBiZSBhZmZlY3RlZCBvciBtaWdodCBub3cgYmUgbmVjZXNzYXJ5IHRvIGVuYWJsZSB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5LCBvciBldmVuIHRvIHNlZSB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW52b2x2ZWQuIFRoZSBLY29uZmlnIGlzIGtleSB0byBkZXRlcm1pbmluZyB0aGUgcHJhY3RpY2FsIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNvZGUgY2hhbmdlIGFuZCBob3cgaXQgaW1wYWN0cyB0aGUgb3ZlcmFsbCBidWlsZCBwcm9jZXNzIGFuZCBzeXN0ZW0gY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQwNSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjA5LjU0MjI1MTc4NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTAxNzMyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTExDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9sbGMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbGxjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbGxjL0tjb25maWc6Mjpjb25maWcgTExDXFxubmV0L2xsYy9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5uZXQvbGxjL0tjb25maWctNC1cXG5uZXQvbGxjL0tjb25maWc6NTpjb25maWcgTExDMlxcbm5ldC9sbGMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJBTlNJL0lFRUUgODAyLjIgTExDIHR5cGUgMiBTdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MjowOS42MDMyNzI0ODNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODM4OTE0NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqTExDMiBQcm9tcHQgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIExMQzIgaXMgdGhlIG9uZSB3ZSB0aGluayBpcyBkcml2aW5nIHRoZSBwcm9tcHQgYmVoYXZpb3IuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYnVpbGQgcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHRoZSBNYWtlZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IExMQzIgaXMgY29uc3RydWN0ZWQgYW5kIGlmIHRoZXJlIGFyZSBhbnkgaGludHMgcmVsYXRlZCB0byBwcm9tcHQgaGFuZGxpbmcgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBMZXQncyBkaXZlIGludG8gYG5ldC9sbGMvTWFrZWZpbGVgLiBJJ20gaG9waW5nIHRvIGZpbmQgc29tZSBjbHVlcyB0aGVyZSBhYm91dCBob3cgdGhlIHByb21wdCBpcyBpbnRlZ3JhdGVkIG9yIG1hbmFnZWQgd2l0aGluIHRoYXQgbW9kdWxlLiBUaGlzIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgbGlua2FnZXMsIGlmIGFueXdoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzU5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTI6MTIuNDQyMTg5NjUzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjAzMTUyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsbGNfY29ublwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbGxjL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9sbGMvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX0xMQzIpICs9IGxsYzIub1xcbm5ldC9sbGMvTWFrZWZpbGUtMjAtXFxubmV0L2xsYy9NYWtlZmlsZToyMTpsbGMyLXkgOj0gbGxjX2lmLm8gbGxjX2NfZXYubyBsbGNfY19hYy5vIGxsY19jb25uLm8gbGxjX2Nfc3QubyBsbGNfcGR1Lm8gXFxcXFxcbm5ldC9sbGMvTWFrZWZpbGUtMjItXFx0ICBsbGNfc2FwLm8gbGxjX3NfYWMubyBsbGNfc19ldi5vIGxsY19zX3N0Lm8gYWZfbGxjLm8gbGxjX3N0YXRpb24ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MjoxMi40OTgyMjQ4MzFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0MDgxODg3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkRlYnVnZ2luZyB0aGUgTExDMiBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19MTEMyYCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZW1lbnQgaGVyZS4gTmVlZCB0byB2ZXJpZnkgdGhhdCdzIGVuYWJsZWQgYW5kIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhhdCBgbGxjX2Nvbm5faGFuZGxlcmAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGluIHRoaXMgY3VycmVudCBzY2VuYXJpby4gTGV0IG1lIHB1bGwgdXAgdGhlIGNvZGU7IEkgcmVjYWxsIHRoYXQncyBpbiBgbGxjX2Nvbm4uY2AuIE9rYXksIGhlcmUgd2UgYXJlLiBOb3csIHRoZSBrZXkgaXMgKmhvdyogaXMgdGhhdCBoYW5kbGVyIGludm9rZWQ/IEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBmbG93LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGl0J3MgcHJvYmFibHkgY2FsbGVkIGZyb20gYSByZWNlaXZlIHBhdGgsIHNvbWV0aGluZyBsaWtlIGBsbGNfcmN2YCBvciBhIHNpbWlsYXIgcmVjZWl2ZSBmdW5jdGlvbi4gTGV0J3MgZGlnIGludG8gdGhhdCBhbmQgc2VlIHdoZXJlIGl0J3MgY2FsbGVkIGZyb20sIHRvIHRyYWNlIHRoZSBwYXRoIGFuZCBtYWtlIHN1cmUgaXQgaXMgYWN0dWFsbHkgZ2V0dGluZyBjYWxsZWQgYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwOTgsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MjoxNS44MzkwNDU4NTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDg3NjE1ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGxjX2Nvbm5faGFuZGxlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9sbGMuaD0xNDA9dm9pZCBsbGNfc2FwX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuaW5jbHVkZS9uZXQvbGxjLmg6MTQxOnZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5pbmNsdWRlL25ldC9sbGMuaC0xNDItXFxuLS1cXG5uZXQvbGxjL2FmX2xsYy5jPTEyNDQ9c3RhdGljIGludCBfX2luaXQgbGxjMl9pbml0KHZvaWQpXFxuLS1cXG5uZXQvbGxjL2FmX2xsYy5jLTEyNjktXFx0bGxjX2FkZF9wYWNrKExMQ19ERVNUX1NBUCwgbGxjX3NhcF9oYW5kbGVyKTtcXG5uZXQvbGxjL2FmX2xsYy5jOjEyNzA6XFx0bGxjX2FkZF9wYWNrKExMQ19ERVNUX0NPTk4sIGxsY19jb25uX2hhbmRsZXIpO1xcbm5ldC9sbGMvYWZfbGxjLmMtMTI3MS1vdXQ6XFxuLS1cXG5uZXQvbGxjL2xsY19jb25uLmM9NjI9aW50IGxsY19jb25uX3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2xsYy9sbGNfY29ubi5jLTk0LVxcdFxcdCAqIHNrYi1cXHUwMDNlc2sgcG9pbnRpbmcgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgc3RydWN0IHNvY2sgaW5cXG5uZXQvbGxjL2xsY19jb25uLmM6OTU6XFx0XFx0ICogbGxjX2Nvbm5faGFuZGxlci4gLWFjbWVcXG5uZXQvbGxjL2xsY19jb25uLmMtOTYtXFx0XFx0ICovXFxuLS1cXG5uZXQvbGxjL2xsY19jb25uLmM9NzU5PXN0YXRpYyBzdHJ1Y3Qgc29jayAqbGxjX2NyZWF0ZV9pbmNvbWluZ19zb2NrKHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9sbGMvbGxjX2Nvbm4uYy03ODAtXFxubmV0L2xsYy9sbGNfY29ubi5jOjc4MTp2b2lkIGxsY19jb25uX2hhbmRsZXIoc3RydWN0IGxsY19zYXAgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbGxjL2xsY19jb25uLmMtNzgyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTI6MTcuODg3ODEzNThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwNjEzMTg0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExMQyBDb25uZWN0aW9uIEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyBgbGxjX2Nvbm5faGFuZGxlcmAgaXMgdGhlIHBhY2tldCBoYW5kbGVyIGZvciBgTExDX0RFU1RfQ09OTmAuIEknbSBjb25maWRlbnQgaXQncyByZWFjaGFibGUgYW5kIHdvcmtpbmcgYXMgZXhwZWN0ZWQuIFRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSwgaXMgbW9kaWZ5aW5nIGBsbGNfY29ubl9oYW5kbGVyYC4gVGhlcmVmb3JlLCB0aGF0J3MgZGVmaW5pdGVseSB0aGUgZm9jdXMgc3ltYm9sIEkgbmVlZCB0byBjb25jZW50cmF0ZSBvbiBkdXJpbmcgdGhpcyByZXZpZXcuIFRoZSByZWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgYExMQzJgLlxuXG5Ob3csIGxldCBtZSBtYWtlIHN1cmUgdGhpcyBgTExDMmAgY29uZmlnIGlzbid0IGRlcGVuZGVudCBvbiBhbnl0aGluZyB1bnVzdWFsIG9yIHBvdGVudGlhbGx5IG92ZXJsb29rZWQuIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBuZXQvbGxjL0tjb25maWdgIGZpbGUgdG8gY29uZmlybSB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEp1c3QgY292ZXJpbmcgYWxsIG15IGJhc2VzIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MzgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTI6MjEuNDkzOTQ4Mzc5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDA0NzM2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTExDMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbGxjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2xsYy9LY29uZmlnPTI9Y29uZmlnIExMQ1xcbi0tXFxubmV0L2xsYy9LY29uZmlnLTQtXFxubmV0L2xsYy9LY29uZmlnOjU6Y29uZmlnIExMQzJcXG5uZXQvbGxjL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiQU5TSS9JRUVFIDgwMi4yIExMQyB0eXBlIDIgU3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTI6MjEuNTU4MDAwOTQ3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5Njk4NTI5MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBpbnN0cnVjdGlvbnMsIGFzIGlmIHRoZXkncmUgbXkgdHJhaW4gb2YgdGhvdWdodDpcblxuKipEaXZpbmcgaW50byB0aGUgS2NvbmZpZyBvZiBuZXQvbGxjKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgYSBnb29kIGxvb2sgYXQgYG5ldC9sbGMvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgTG9naWNhbCBMaW5rIENvbnRyb2wgbGF5ZXIuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIExMQyBpcyBidWlsdCBhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZHVyaW5nIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgbWVudSBzdHJ1Y3R1cmUuIFRoaXMgaXMgd2hlcmUgdGhlIGRlY2lzaW9ucyBnZXQgbWFkZSwgdGhlIGxldmVycyBhcmUgcHVsbGVkLCBhbmQgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgZWl0aGVyIGJyb3VnaHQgaW4sIG9yIGV4Y2x1ZGVkLiBJdCdzIHRpbWUgdG8gc2VlIHdoYXQncyB3aGF0LiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBjb250YWluZWQgaGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjExLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6NTI6MjQuNTI3ODU1NzUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9sbGMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIExMQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIExMQzJcXG4gICA2OlxcdFxcdHRyaXN0YXRlIFxcXCJBTlNJL0lFRUUgODAyLjIgTExDIHR5cGUgMiBTdXBwb3J0XFxcIlxcbiAgIDc6XFx0XFx0c2VsZWN0IExMQ1xcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBUaGlzIGlzIGEgTG9naWNhbCBMaW5rIExheWVyIHR5cGUgMiwgY29ubmVjdGlvbiBvcmllbnRlZCBzdXBwb3J0LlxcbiAgMTA6XFx0XFx0ICBTZWxlY3QgdGhpcyBpZiB5b3Ugd2FudCB0byBoYXZlIHN1cHBvcnQgZm9yIFBGX0xMQyBzb2NrZXRzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTo1MjoyNC41Mjc5MDk1NjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3OTUyODAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIGV4cGVjdGF0aW9uIHRoYXQgSSdtIGRpc2N1c3NpbmcgdGhpcyB3aXRoIGEgZmVsbG93IGV4cGVydDpcblxuKipMTEMyIFN1ZmZpY2llbmN5IGFuZCBDb25uZWN0aW9uIEhhbmRsZXIgRGVlcCBEaXZlKipcblxuUmlnaHQsIHNvIEkndmUgZGVjaWRlZCB0aGF0IGBMTEMyYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQuIFRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gdG8gYWRkcmVzcyB0aGlzLlxuXG5Ob3csIHRvIHNvbGlkaWZ5IHRoYXQsIEkgbmVlZCB0byBjaGVjayBgbGxjX2Nvbm5faGFuZGxlcmAgaW4gYG5ldC9sbGMvbGxjX2Nvbm4uY2AuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY29ubmVjdGlvbiBoYW5kbGluZyBmdW5jdGlvbnMuIEl0J3MgZWFzeSB0byBnZXQgdHVubmVsIHZpc2lvbiwgYW5kIGEgY3Vyc29yeSBnbGFuY2UgYXQgdGhhdCBhcmVhIHdpbGwgaG9wZWZ1bGx5IHRlbGwgbWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBrZXkgZnVuY3Rpb25zIG9yIGRhdGEgc3RydWN0dXJlcyBJIHNob3VsZCBiZSBjb25zaWRlcmluZy4gTmVlZCB0byBhdm9pZCBvdmVybG9va2luZyBhbnkgc3VidGxlIGVkZ2UgY2FzZXMuIEknbGwgZm9jdXMgb24gdGhhdCBmaWxlIGZvciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NjIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjI3LjYwNzQzOTUwN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2xsYy9sbGNfY29ubi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc4MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc4MDpcXHRcXG4gNzgxOlxcdHZvaWQgbGxjX2Nvbm5faGFuZGxlcihzdHJ1Y3QgbGxjX3NhcCAqc2FwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiA3ODI6XFx0e1xcbiA3ODM6XFx0XFx0c3RydWN0IGxsY19hZGRyIHNhZGRyLCBkYWRkcjtcXG4gNzg0OlxcdFxcdHN0cnVjdCBzb2NrICpzaztcXG4gNzg1OlxcdFxcbiA3ODY6XFx0XFx0bGxjX3BkdV9kZWNvZGVfc2Eoc2tiLCBzYWRkci5tYWMpO1xcbiA3ODc6XFx0XFx0bGxjX3BkdV9kZWNvZGVfc3NhcChza2IsIFxcdTAwMjZzYWRkci5sc2FwKTtcXG4gNzg4OlxcdFxcdGxsY19wZHVfZGVjb2RlX2RhKHNrYiwgZGFkZHIubWFjKTtcXG4gNzg5OlxcdFxcdGxsY19wZHVfZGVjb2RlX2RzYXAoc2tiLCBcXHUwMDI2ZGFkZHIubHNhcCk7XFxuIDc5MDpcXHRcXG4gNzkxOlxcdFxcdHNrID0gX19sbGNfbG9va3VwKHNhcCwgXFx1MDAyNnNhZGRyLCBcXHUwMDI2ZGFkZHIsIGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpKTtcXG4gNzkyOlxcdFxcdGlmICghc2spXFxuIDc5MzpcXHRcXHRcXHRnb3RvIGRyb3A7XFxuIDc5NDpcXHRcXG4gNzk1OlxcdFxcdGJoX2xvY2tfc29jayhzayk7XFxuIDc5NjpcXHRcXHQvKlxcbiA3OTc6XFx0XFx0ICogVGhpcyBoYXMgdG8gYmUgZG9uZSBoZXJlIGFuZCBub3QgYXQgdGhlIHVwcGVyIGxheWVyIC1cXHUwMDNlYWNjZXB0XFxuIDc5ODpcXHRcXHQgKiBtZXRob2QgYmVjYXVzZSBvZiB0aGUgd2F5IHRoZSBQUk9DT00gc3RhdGUgbWFjaGluZSB3b3JrczpcXG4gNzk5OlxcdFxcdCAqIGl0IG5lZWRzIHRvIHNldCBzZXZlcmFsIHN0YXRlIHZhcmlhYmxlcyAoc2VlLCBmb3IgaW5zdGFuY2UsXFxuIDgwMDpcXHRcXHQgKiBsbGNfYWRtX2FjdGlvbnNfMiBpbiBuZXQvbGxjL2xsY19jX3N0LmMpIGFuZCBzZW5kIGEgcGFja2V0IHRvXFxuIDgwMTpcXHRcXHQgKiB0aGUgb3JpZ2luYXRvciBvZiB0aGUgbmV3IGNvbm5lY3Rpb24sIGFuZCB0aGlzIHN0YXRlIGhhcyB0byBiZVxcbiA4MDI6XFx0XFx0ICogaW4gdGhlIG5ld2x5IGNyZWF0ZWQgc3RydWN0IHNvY2sgcHJpdmF0ZSBhcmVhLiAtYWNtZVxcbiA4MDM6XFx0XFx0ICovXFxuIDgwNDpcXHRcXHRpZiAodW5saWtlbHkoc2stXFx1MDAzZXNrX3N0YXRlID09IFRDUF9MSVNURU4pIFxcdTAwMjZcXHUwMDI2XFxuIDgwNTpcXHRcXHQgICAgIWxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94KHNrLCBza2IpKSB7XFxuIDgwNjpcXHRcXHRcXHRzdHJ1Y3Qgc29jayAqbmV3c2sgPSBsbGNfY3JlYXRlX2luY29taW5nX3NvY2soc2ssIHNrYi1cXHUwMDNlZGV2LFxcbiA4MDc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNhZGRyLCBcXHUwMDI2ZGFkZHIpO1xcbiA4MDg6XFx0XFx0XFx0aWYgKCFuZXdzaylcXG4gODA5OlxcdFxcdFxcdFxcdGdvdG8gZHJvcF91bmxvY2s7XFxuIDgxMDpcXHRcXHRcXHRza2Jfc2V0X293bmVyX3Ioc2tiLCBuZXdzayk7XFxuIDgxMTpcXHRcXHR9IGVsc2Uge1xcbiA4MTI6XFx0XFx0XFx0LypcXG4gODEzOlxcdFxcdFxcdCAqIENhbid0IGJlIHNrYl9zZXRfb3duZXJfciwgdGhpcyB3aWxsIGJlIGRvbmUgYXQgdGhlXFxuIDgxNDpcXHRcXHRcXHQgKiBsbGNfY29ubl9zdGF0ZV9wcm9jZXNzIGZ1bmN0aW9uLCBsYXRlciBvbiwgd2hlbiB3ZSB3aWxsIHVzZVxcbiA4MTU6XFx0XFx0XFx0ICogc2tiX3F1ZXVlX3Jjdl9za2IgdG8gc2VuZCBpdCB0byB1cHBlciBsYXllcnMsIHRoaXMgaXNcXG4gODE2OlxcdFxcdFxcdCAqIGFub3RoZXIgdHJpY2sgcmVxdWlyZWQgdG8gY29wZSB3aXRoIGhvdyB0aGUgUFJPQ09NIHN0YXRlXFxuIDgxNzpcXHRcXHRcXHQgKiBtYWNoaW5lIHdvcmtzLiAtYWNtZVxcbiA4MTg6XFx0XFx0XFx0ICovXFxuIDgxOTpcXHRcXHRcXHRza2Jfb3JwaGFuKHNrYik7XFxuIDgyMDpcXHRcXHRcXHRzb2NrX2hvbGQoc2spO1xcbiA4MjE6XFx0XFx0XFx0c2tiLVxcdTAwM2VzayA9IHNrO1xcbiA4MjI6XFx0XFx0XFx0c2tiLVxcdTAwM2VkZXN0cnVjdG9yID0gc29ja19lZnJlZTtcXG4gODIzOlxcdFxcdH1cXG4gODI0OlxcdFxcdGlmICghc29ja19vd25lZF9ieV91c2VyKHNrKSlcXG4gODI1OlxcdFxcdFxcdGxsY19jb25uX3Jjdihzaywgc2tiKTtcXG4gODI2OlxcdFxcdGVsc2Uge1xcbiA4Mjc6XFx0XFx0XFx0ZHByaW50ayhcXFwiJXM6IGFkZGluZyB0byBiYWNrbG9nLi4uXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuIDgyODpcXHRcXHRcXHRsbGNfc2V0X2JhY2tsb2dfdHlwZShza2IsIExMQ19QQUNLRVQpO1xcbiA4Mjk6XFx0XFx0XFx0aWYgKHNrX2FkZF9iYWNrbG9nKHNrLCBza2IsIFJFQURfT05DRShzay1cXHUwMDNlc2tfcmN2YnVmKSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjI3LjYwNzU1MDEzN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDg4NTA0OTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUHJvcG9zZWQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgY29uZGl0aW9uIHdpdGggYCFsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzaywgc2tiKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIGludG8gd2hhdCB0aGF0IGZ1bmN0aW9uIGFjdHVhbGx5ICpkb2VzKi4gSSBrbm93IGBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeGAgaXMgZGVmaW5lZCBpbiBgbmV0L2xsYy9sbGNfY19ldi5jYC4gRmlyc3QgdGhpbmcsIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgaXQncyBhIHN0YXRpYyBmdW5jdGlvbiBvciBpZiBpdCdzIGV4cG9ydGVkLiBMZXQncyBzZWUuLi4gQWgsIGl0J3Mgbm90IHN0YXRpYy4gR29vZCwgdGhhdCBtYWtlcyBpdCBtb3JlIGludGVyZXN0aW5nLiBUaGUgZmFjdCB0aGF0IGl0J3MgaW4gYGluY2x1ZGUvbmV0L2xsY19jX2V2LmhgIG1lYW5zIGl0ICpjb3VsZCogYmUgYSBjcml0aWNhbCBzeW1ib2wsIHBvc3NpYmx5IGEgZm9jdXMgb2YgYW5vdGhlciBhbmFseXNpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgYmV0dGVyLCBzbyBuZXh0LCBJJ2xsIGdvIHRocm91Z2ggdGhlIGRlZmluaXRpb24gb2YgYGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94YC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc0MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjMxLjY5NjA1NzY1MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3OTIzMzc2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgbGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbGxjX2NfZXYuaD0xNDg9aW50IGxsY19jb25uX2V2X3J4X3Jlal9yc3BfZmJpdF9zZXRfeChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xcbmluY2x1ZGUvbmV0L2xsY19jX2V2Lmg6MTQ5OmludCBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xcbmluY2x1ZGUvbmV0L2xsY19jX2V2LmgtMTUwLWludCBsbGNfY29ubl9ldl9yeF91YV9yc3BfZmJpdF9zZXRfeChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxubmV0L2xsYy9sbGNfY19ldi5jPTQyMT1pbnQgbGxjX2Nvbm5fZXZfcnhfcnJfcnNwX2ZiaXRfc2V0XzEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2xsYy9sbGNfY19ldi5jLTQzMC1cXG5uZXQvbGxjL2xsY19jX2V2LmM6NDMxOmludCBsbGNfY29ubl9ldl9yeF9zYWJtZV9jbWRfcGJpdF9zZXRfeChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2xsYy9sbGNfY19ldi5jLTQzMi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjMzLjE3NTI5NjM5MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzA2NzE1NDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZHJhd2luZyBvbiBteSBleHBlcmllbmNlIGluIG5ldHdvcmsgcHJvdG9jb2xzOlxuXG4qKkFuYWx5emluZyB0aGUgTExDIENvbm5lY3Rpb24gSGFuZGxlciBQYXRjaCoqXG5cbkFscmlnaHQsIG15IGZvY3VzIGhlcmUgaXMgaG9uZWQgaW4gb24gYSBjb3VwbGUgb2Yga2V5IHN5bWJvbHM6IGBsbGNfY29ubl9oYW5kbGVyYCBhbmQgYGxsY19jb25uX2V2X3J4X3NhYm1lX2NtZF9wYml0X3NldF94YC4gVGhlc2UgYXJlIHRoZSBjcnVjaWFsIGVsZW1lbnRzLiBUaGUgY29uZmlndXJhdGlvbiBiZWluZyBjb25zaWRlcmVkIGlzIHRoZSBgTExDMmAgc2V0dXAuXG5cblRoZSBlc3NlbmNlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gaW52b2x2ZSBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBgbGxjX2Nvbm5faGFuZGxlcmAuIEl0IGFwcGVhcnMgdGhhdCB0aGUgY29kZSBub3cgZXhwbGljaXRseSBjaGVja3MgaWYgYSByZWNlaXZlZCBwYWNrZXQgaXMgYSBTQUJNRSAoU2V0IEFzeW5jaHJvbm91cyBCYWxhbmNlZCBNb2RlIEV4dGVuZGVkKSBjb21tYW5kICpiZWZvcmUqIHNwaW5uaW5nIHVwIGEgbmV3IGluY29taW5nIHNvY2tldCBmb3IgYSBsaXN0ZW5pbmcgc29ja2V0LiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZS4gSXQgc3RyaWtlcyBtZSBhcyBhIGNvcmUgbW9kaWZpY2F0aW9uIHRvIHRoZSBMTEMgbmV0d29ya2luZyBjb2RlLCBhbmQgZnJvbSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0sIHRoaXMgY29kZSBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlIHZpYSBgQUZfTExDYCBzb2NrZXRzLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLlxuXG5Ob3csIEknbSBnb2luZyB0byBzdGFydCBydW5uaW5nIHNldC1yZXN1bHRzIHRvIHNlZSB3aGVyZSB0aGlzIGlzIGFsbCBnb2luZywgYW5kIGV4YWN0bHkgaG93IHRoZSBuZXcgY2hlY2tpbmcgbWV0aG9kb2xvZ3kgd2lsbCBtb2RpZnkgdGhlIGZsb3cgb2YgaW5jb21pbmcgY29ubmVjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0ODYsIk91dHB1dFRva2VucyI6MTI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjUyOjM3Ljg4MjAxMzk0OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NDIxNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMTEMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibGxjX2Nvbm5faGFuZGxlclwiLFxuICAgIFwibGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTExDIGNvbm5lY3Rpb24gaGFuZGxlciBgbGxjX2Nvbm5faGFuZGxlcmAgdG8gY2hlY2sgaWYgdGhlIHJlY2VpdmVkIHBhY2tldCBpcyBhIFNBQk1FIGNvbW1hbmQgYmVmb3JlIGNyZWF0aW5nIGEgbmV3IGluY29taW5nIHNvY2tldCBmb3IgYSBsaXN0ZW5pbmcgc29ja2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgTExDIG5ldHdvcmtpbmcgY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBBRl9MTEMgc29ja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMTEMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibGxjX2Nvbm5faGFuZGxlclwiLFxuICAgIFwibGxjX2Nvbm5fZXZfcnhfc2FibWVfY21kX3BiaXRfc2V0X3hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTExDIGNvbm5lY3Rpb24gaGFuZGxlciBgbGxjX2Nvbm5faGFuZGxlcmAgdG8gY2hlY2sgaWYgdGhlIHJlY2VpdmVkIHBhY2tldCBpcyBhIFNBQk1FIGNvbW1hbmQgYmVmb3JlIGNyZWF0aW5nIGEgbmV3IGluY29taW5nIHNvY2tldCBmb3IgYSBsaXN0ZW5pbmcgc29ja2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgTExDIG5ldHdvcmtpbmcgY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBBRl9MTEMgc29ja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4mmbh[1] Phase: Succeeded StartedAt: 2026-07-24 21:52:49 +0000 UTC FinishedAt: 2026-07-24 21:52:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4mmbh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-24 21:52:49 +0000 UTC FinishedAt: 2026-07-24 21:52:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4mmbh[2] Phase: Succeeded StartedAt: 2026-07-24 21:52:49 +0000 UTC FinishedAt: 2026-07-24 22:29:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4mmbh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler","llc_conn_ev_rx_sabme_cmd_pbit_set_x"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"655c6b2e-8241-4bc6-b786-4cd13578631a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-24 21:52:49 +0000 UTC FinishedAt: 2026-07-24 22:29:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler","llc_conn_ev_rx_sabme_cmd_pbit_set_x"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"655c6b2e-8241-4bc6-b786-4cd13578631a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4mmbh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler","llc_conn_ev_rx_sabme_cmd_pbit_set_x"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"655c6b2e-8241-4bc6-b786-4cd13578631a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-24 21:52:49 +0000 UTC FinishedAt: 2026-07-24 21:54:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4mmbh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler","llc_conn_ev_rx_sabme_cmd_pbit_set_x"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"655c6b2e-8241-4bc6-b786-4cd13578631a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-24 21:52:49 +0000 UTC FinishedAt: 2026-07-24 21:53:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4mmbh/series-workflow4mmbh-convert-artifact-836571548/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4mmbh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler","llc_conn_ev_rx_sabme_cmd_pbit_set_x"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"655c6b2e-8241-4bc6-b786-4cd13578631a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-24 21:54:34 +0000 UTC FinishedAt: 2026-07-24 22:28:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4mmbh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler","llc_conn_ev_rx_sabme_cmd_pbit_set_x"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"655c6b2e-8241-4bc6-b786-4cd13578631a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-24 21:54:34 +0000 UTC FinishedAt: 2026-07-24 22:28:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*770f8e55-9869-49de-bef0-0e6b98e9e3e8,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-workflow4mmbh/series-workflow4mmbh-convert-artifact-836571548/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": "f04d2ca5-b817-421a-adbe-0393d551a071", "success": false },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-workflow4mmbh/series-workflow4mmbh-build-action-2961684426/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4mmbh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler","llc_conn_ev_rx_sabme_cmd_pbit_set_x"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"655c6b2e-8241-4bc6-b786-4cd13578631a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-24 21:54:34 +0000 UTC FinishedAt: 2026-07-24 22:28: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:*770f8e55-9869-49de-bef0-0e6b98e9e3e8,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-workflow4mmbh/series-workflow4mmbh-convert-artifact-836571548/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": "f04d2ca5-b817-421a-adbe-0393d551a071", "success": false },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-workflow4mmbh/series-workflow4mmbh-build-action-2961684426/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4mmbh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler","llc_conn_ev_rx_sabme_cmd_pbit_set_x"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"655c6b2e-8241-4bc6-b786-4cd13578631a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Failed StartedAt: 2026-07-24 22:28:58 +0000 UTC FinishedAt: 2026-07-24 22:29:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4mmbh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["llc_conn_handler","llc_conn_ev_rx_sabme_cmd_pbit_set_x"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"615d300648869c774bd1fe54b4627bb0c20faed4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LLC2"],"series_id":"655c6b2e-8241-4bc6-b786-4cd13578631a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Failed StartedAt: 2026-07-24 22:28:58 +0000 UTC FinishedAt: 2026-07-24 22:29:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}