Name: series-workflow2qr2w Phase: Succeeded StartedAt: 2026-07-13 12:38:10 +0000 UTC FinishedAt: 2026-07-13 17:05:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[0] Phase: Succeeded StartedAt: 2026-07-13 12:38:10 +0000 UTC FinishedAt: 2026-07-13 12:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 12:38:10 +0000 UTC FinishedAt: 2026-07-13 12:51:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "2c7c88a412aa6d09cd04b414211b4ef8553b5309", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_RR", "IP_VS_WRR", "IP_VS_LC", "IP_VS_WLC", "IP_VS_FO", "IP_VS_OVF", "IP_VS_LBLC", "IP_VS_LBLCR", "IP_VS_DH", "IP_VS_SH", "IP_VS_MH", "IP_VS_SED", "IP_VS_NQ", "IP_VS_TWOS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "2c7c88a412aa6d09cd04b414211b4ef8553b5309", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_RR", "IP_VS_WRR", "IP_VS_LC", "IP_VS_WLC", "IP_VS_FO", "IP_VS_OVF", "IP_VS_LBLC", "IP_VS_LBLCR", "IP_VS_DH", "IP_VS_SH", "IP_VS_MH", "IP_VS_SED", "IP_VS_NQ", "IP_VS_TWOS" ], "series_id": "f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_dest_update_overload", "ip_vs_bind_dest", "ip_vs_unbind_dest", "__ip_vs_update_dest", "ip_vs_add_dest", "ip_vs_edit_dest" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dSUiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQyYjMzQ7LAogICAgJiMzNDtJUF9WU19XTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfRk8mIzM0OywKICAgICYjMzQ7SVBfVlNfT1ZGJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQ1ImIzM0OywKICAgICYjMzQ7SVBfVlNfREgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0gmIzM0OywKICAgICYjMzQ7SVBfVlNfTUgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0VEJiMzNDssCiAgICAmIzM0O0lQX1ZTX05RJiMzNDssCiAgICAmIzM0O0lQX1ZTX1RXT1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZCYjMzQ7LAogICAgJiMzNDtpcF92c19iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfdW5iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7X19pcF92c191cGRhdGVfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19hZGRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19lZGl0X2Rlc3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcgbG9naWMgb2YgSVBWUyBieSBjaGFuZ2luZyBob3cgdGhlIGRlc3RpbmF0aW9uIG92ZXJsb2FkIGZsYWcgaXMgdXBkYXRlZCBhbmQgY2hlY2tlZC4gSXQgaW50cm9kdWNlcyBhIG5ldyBgZmxhZ3MyYCBmaWVsZCBhbmQgdXBkYXRlcyBtdWx0aXBsZSBJUFZTIHNjaGVkdWxlcnMgdG8gdXNlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWYxMzZiNzM1ZDgxYmZjMGU0ZjM5MzBiZDAwOGVhYmQ4Y2Q2ZmVmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDEyOjQ5OjM4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX3ZzLmggYi9pbmNsdWRlL25ldC9pcF92cy5oXG5pbmRleCA0MTdmZjUxZjYyZmM4ZS4uNWU4ZTU1ZjgyYjA0NDAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9pcF92cy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9pcF92cy5oXG5AQCAtMzYsNiAmIzQzOzM2LDEzIEBAXG4gI2RlZmluZSBJUF9WU19IRFJfSU5WRVJTRVx0MVxuICNkZWZpbmUgSVBfVlNfSERSX0lDTVBcdFx0MlxuIFxuJiM0MzsvKiBEZXN0aW5hdGlvbiBTZXJ2ZXIgRmxhZ3MgKi9cbiYjNDM7I2RlZmluZSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFXHQweDAwMDFcdFx0Lyogc2VydmVyIGlzIGF2YWlsYWJsZSAqL1xuJiM0MztcbiYjNDM7ZW51bSB7XG4mIzQzO1x0SVBfVlNfREVTVF9GTF9PVkVSTE9BRCxcbiYjNDM7fTtcbiYjNDM7XG4gLyogY29ubl90YWIgbGltaXRzIChhcyBwZXIgS2NvbmZpZykgKi9cbiAjZGVmaW5lIElQX1ZTX0NPTk5fVEFCX01JTl9CSVRTXHQ4XG4gI2lmIEJJVFNfUEVSX0xPTkcgXHUwMDNlIDMyXG5AQCAtOTc2LDYgJiM0Mzs5ODMsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XG4gXHR2b2xhdGlsZSB1bnNpZ25lZCBpbnRcdGZsYWdzO1x0XHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xuIFx0YXRvbWljX3RcdFx0Y29ubl9mbGFncztcdC8qIGZsYWdzIHRvIGNvcHkgdG8gY29ubiAqL1xuIFx0YXRvbWljX3RcdFx0d2VpZ2h0O1x0XHQvKiBzZXJ2ZXIgd2VpZ2h0ICovXG4mIzQzO1x0dW5zaWduZWQgbG9uZ1x0XHRmbGFnczI7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRsYXN0X3dlaWdodDtcdC8qIHNlcnZlciBsYXRlc3Qgd2VpZ2h0ICovXG4gXHRfX3UxNlx0XHRcdHR1bl90eXBlO1x0LyogdHVubmVsIHR5cGUgKi9cbiBcdF9fYmUxNlx0XHRcdHR1bl9wb3J0O1x0LyogdHVubmVsIHBvcnQgKi9cbkBAIC0xOTA3LDYgJiM0MzsxOTE1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2Rlc3RfcHV0X2FuZF9mcmVlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHRrZnJlZShkZXN0KTtcbiB9XG4gXG4mIzQzO3ZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpO1xuJiM0MztcbiAvKiBJUFZTIHN5bmMgZGFlbW9uIGRhdGEgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXNcbiAgKiAoZnJvbSBpcF92c19zeW5jLmMpXG4gICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxuaW5kZXggMWVkMjM0ZTdmMjUxMzYuLjJjMzdjNmFjNzUyNWE1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oXG5AQCAtMjgsMTIgJiM0MzsyOCw2IEBAXG4gI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9GQUxMQkFDS1x0SVBfVlNfU1ZDX0ZfU0NIRUQxIC8qIFNIIGZhbGxiYWNrICovXG4gI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9QT1JUXHRJUF9WU19TVkNfRl9TQ0hFRDIgLyogU0ggdXNlIHBvcnQgKi9cbiBcbi0vKlxuLSAqICAgICAgRGVzdGluYXRpb24gU2VydmVyIEZsYWdzXG4tICovXG4tI2RlZmluZSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFXHQweDAwMDFcdFx0Lyogc2VydmVyIGlzIGF2YWlsYWJsZSAqL1xuLSNkZWZpbmUgSVBfVlNfREVTVF9GX09WRVJMT0FEXHQweDAwMDJcdFx0Lyogc2VydmVyIGlzIG92ZXJsb2FkZWQgKi9cbi1cbiAvKlxuICAqICAgICAgSVBWUyBzeW5jIGRhZW1vbiBzdGF0ZXNcbiAgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggNmVkMjYyMjM2M2YwZDYuLjI1OTFmNGUxNDNmODRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTk5MSw2ICYjNDM7OTkxLDM0IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcdFx0JiM0MzsgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiB9XG4gXG4mIzQzOy8qIFVwZGF0ZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIG51bWJlciBvZiBkZXN0IGNvbm5zIGFuZCBsb3dlci91cHBlclxuJiM0MzsgKiBjb25uZWN0aW9uIHRocmVzaG9sZHM6XG4mIzQzOyAqIC0gY29ubnMgcmVhY2ggdV90aHJlc2hvbGQgYW5kIGV4Y2VlZCBpdDogc2V0IHRoZSBmbGFnXG4mIzQzOyAqIC0gY29ubnMgZ28gYmVsb3cgbF90aHJlc2hvbGQgKG9yIDc1JSBvZiB1X3RocmVzaG9sZCk6IGNsZWFyIHRoZSBmbGFnXG4mIzQzOyAqL1xuJiM0MztfX2Fsd2F5c19pbmxpbmUgdm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiYjNDM7e1xuJiM0MztcdGludCBjb25ucztcbiYjNDM7XHR1MzIgbCwgdTtcbiYjNDM7XG4mIzQzO1x0dSA9IFJFQURfT05DRShkZXN0LVx1MDAzZXVfdGhyZXNob2xkKTtcbiYjNDM7XHRpZiAoIXUpXG4mIzQzO1x0XHRnb3RvIHVuc2V0O1xuJiM0MztcdGNvbm5zID0gaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpO1xuJiM0MztcdGlmIChjb25ucyBcdTAwM2U9IHUpIHtcbiYjNDM7XHRcdHNldF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XHQvKiBMb3cgdGhyZXNob2xkIGRlZmF1bHRzIHRvIDc1JSBvZiB1cHBlciB0aHJlc2hvbGQgKi9cbiYjNDM7XHRsID0gUkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpID8gOiAodSAtICh1IFx1MDAzZVx1MDAzZSAyKSk7XG4mIzQzO1x0aWYgKGNvbm5zIFx1MDAzZT0gbClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO3Vuc2V0OlxuJiM0MztcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikpXG4mIzQzO1x0XHRjbGVhcl9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpO1xuJiM0Mzt9XG4mIzQzO1xuIC8qXG4gICpcdEJpbmQgYSBjb25uZWN0aW9uIGVudHJ5IHdpdGggYSB2aXJ0dWFsIHNlcnZpY2UgZGVzdGluYXRpb25cbiAgKlx0Q2FsbGVkIGp1c3QgYWZ0ZXIgYSBuZXcgY29ubmVjdGlvbiBlbnRyeSBpcyBjcmVhdGVkLlxuQEAgLTEwNTMsOSAmIzQzOzEwODEsNyBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZXBlcnNpc3Rjb25ucyk7XG4gXHR9XG4gXG4tXHRpZiAoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCAhPSAwIFx1MDAyNlx1MDAyNlxuLVx0ICAgIGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2U9IGRlc3QtXHUwMDNldV90aHJlc2hvbGQpXG4tXHRcdGRlc3QtXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuJiM0MztcdGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QpO1xuIH1cbiBcbiBcbkBAIC0xMTQ5LDE2ICYjNDM7MTE3NSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c191bmJpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4gXHRcdGF0b21pY19kZWMoXHUwMDI2ZGVzdC1cdTAwM2VwZXJzaXN0Y29ubnMpO1xuIFx0fVxuIFxuLVx0aWYgKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQgIT0gMCkge1xuLVx0XHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFx1MDAzYyBkZXN0LVx1MDAzZWxfdGhyZXNob2xkKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuLVx0fSBlbHNlIGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDApIHtcbi1cdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgXHUwMDNjIGRlc3QtXHUwMDNldV90aHJlc2hvbGQgKiAzKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuLVx0fSBlbHNlIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbi1cdH1cbiYjNDM7XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuJiM0MztcdFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XG4gXG4gXHRpcF92c19kZXN0X3B1dChkZXN0KTtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjJmNzNkODkyZjk3YzkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuQEAgLTEzNzAsMTAgJiM0MzsxMzcwLDEyIEBAIF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHQvKiBzZXQgdGhlIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRkZXN0LVx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEU7XG4gXG4tXHRpZiAodWRlc3QtXHUwMDNldV90aHJlc2hvbGQgPT0gMCB8fCB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2UgZGVzdC1cdTAwM2V1X3RocmVzaG9sZClcbi1cdFx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4tXHRkZXN0LVx1MDAzZXVfdGhyZXNob2xkID0gdWRlc3QtXHUwMDNldV90aHJlc2hvbGQ7XG4tXHRkZXN0LVx1MDAzZWxfdGhyZXNob2xkID0gdWRlc3QtXHUwMDNlbF90aHJlc2hvbGQ7XG4mIzQzO1x0aWYgKFJFQURfT05DRShkZXN0LVx1MDAzZXVfdGhyZXNob2xkKSAhPSB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCB8fFxuJiM0MztcdCAgICBSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkgIT0gdWRlc3QtXHUwMDNlbF90aHJlc2hvbGQpIHtcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQpO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXN0LVx1MDAzZWxfdGhyZXNob2xkLCB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZCk7XG4mIzQzO1x0XHRpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0KTtcbiYjNDM7XHR9XG4gXG4gXHRkZXN0LVx1MDAzZWFmID0gdWRlc3QtXHUwMDNlYWY7XG4gXG5AQCAtMTQ4Niw2ICYjNDM7MTQ4OCw5IEBAIGlwX3ZzX2FkZF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4gXHRcdHJldHVybiAtRVJBTkdFO1xuIFx0fVxuIFxuJiM0MztcdGlmICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2UgSU5UX01BWClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdGlmICh1ZGVzdC1cdTAwM2V0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7XG4gXHRcdGlmICh1ZGVzdC1cdTAwM2V0dW5fcG9ydCA9PSAwKSB7XG4gXHRcdFx0cHJfZXJyKFwmIzM0OyVzKCk6IHR1bm5lbCBwb3J0IGlzIHplcm9cXG5cJiMzNDssIF9fZnVuY19fKTtcbkBAIC0xNTU5LDYgJiM0MzsxNTY0LDkgQEAgaXBfdnNfZWRpdF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4gXHRcdHJldHVybiAtRVJBTkdFO1xuIFx0fVxuIFxuJiM0MztcdGlmICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2UgSU5UX01BWClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdGlmICh1ZGVzdC1cdTAwM2V0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7XG4gXHRcdGlmICh1ZGVzdC1cdTAwM2V0dW5fcG9ydCA9PSAwKSB7XG4gXHRcdFx0cHJfZXJyKFwmIzM0OyVzKCk6IHR1bm5lbCBwb3J0IGlzIHplcm9cXG5cJiMzNDssIF9fZnVuY19fKTtcbkBAIC0zNjY3LDggJiM0MzszNjc1LDggQEAgX19pcF92c19nZXRfZGVzdF9lbnRyaWVzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBjb25zdCBzdHJ1Y3QgaXBfdnNfZ2V0X2Rlc3RzICpcbiBcdFx0XHRlbnRyeS5wb3J0ID0gZGVzdC1cdTAwM2Vwb3J0O1xuIFx0XHRcdGVudHJ5LmNvbm5fZmxhZ3MgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWNvbm5fZmxhZ3MpO1xuIFx0XHRcdGVudHJ5LndlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbi1cdFx0XHRlbnRyeS51X3RocmVzaG9sZCA9IGRlc3QtXHUwMDNldV90aHJlc2hvbGQ7XG4tXHRcdFx0ZW50cnkubF90aHJlc2hvbGQgPSBkZXN0LVx1MDAzZWxfdGhyZXNob2xkO1xuJiM0MztcdFx0XHRlbnRyeS51X3RocmVzaG9sZCA9IFJFQURfT05DRShkZXN0LVx1MDAzZXVfdGhyZXNob2xkKTtcbiYjNDM7XHRcdFx0ZW50cnkubF90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCk7XG4gXHRcdFx0ZW50cnkuYWN0aXZlY29ubnMgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbiBcdFx0XHRlbnRyeS5pbmFjdGNvbm5zID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiBcdFx0XHRlbnRyeS5wZXJzaXN0Y29ubnMgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXBlcnNpc3Rjb25ucyk7XG5AQCAtNDI3Nyw4ICYjNDM7NDI4NSwxMCBAQCBzdGF0aWMgaW50IGlwX3ZzX2dlbmxfZmlsbF9kZXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHRcdCBkZXN0LVx1MDAzZXR1bl9wb3J0KSB8fFxuIFx0ICAgIG5sYV9wdXRfdTE2KHNrYiwgSVBWU19ERVNUX0FUVFJfVFVOX0ZMQUdTLFxuIFx0XHRcdGRlc3QtXHUwMDNldHVuX2ZsYWdzKSB8fFxuLVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfVV9USFJFU0gsIGRlc3QtXHUwMDNldV90aHJlc2hvbGQpIHx8XG4tXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9MX1RIUkVTSCwgZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9VX1RIUkVTSCxcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpKSB8fFxuJiM0MztcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILFxuJiM0MztcdFx0XHRSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9BQ1RJVkVfQ09OTlMsXG4gXHRcdFx0YXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucykpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9JTkFDVF9DT05OUyxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG5pbmRleCBlMWY2MmY2YjI1ZTIxMS4uMzY0YWNiNjM0MmUyZmUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbkBAIC0xOTYsMTIgJiM0MzsxOTYsMTIgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiBcbiBcbiAvKlxuLSAqICAgICAgSWYgdGhlIGRlc3QgZmxhZ3MgaXMgc2V0IHdpdGggSVBfVlNfREVTVF9GX09WRVJMT0FELFxuJiM0MzsgKiAgICAgIElmIHRoZSBkZXN0IGZsYWdzIGlzIHNldCB3aXRoIElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsXG4gICogICAgICBjb25zaWRlciB0aGF0IHRoZSBzZXJ2ZXIgaXMgb3ZlcmxvYWRlZCBoZXJlLlxuICAqL1xuIHN0YXRpYyBpbmxpbmUgaW50IGlzX292ZXJsb2FkZWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuLVx0cmV0dXJuIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiYjNDM7XHRyZXR1cm4gdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpO1xuIH1cbiBcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXG5pbmRleCBkNjU3YjQ3YzY1MTFmZi4uYTU5YWY2YzExODlhY2EgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcbkBAIC0yOSw3ICYjNDM7MjksNyBAQCBpcF92c19mb19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICogRmluZCB2aXJ0dWFsIHNlcnZlciB3aXRoIGhpZ2hlc3Qgd2VpZ2h0IGFuZCBzZW5kIGl0IHRyYWZmaWNcbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgaHcpIHtcbiBcdFx0XHRod2VpZ2h0ID0gZGVzdDtcbiBcdFx0XHRodyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xuaW5kZXggMTVjY2IyYjJmYTFmNGEuLmVlMjZiZTNlYjg2MDZmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xuQEAgLTQxNCw3ICYjNDM7NDE0LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKiBuZXcgY29ubmVjdGlvbi5cbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuQEAgLTQyOSw3ICYjNDM7NDI5LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbmluZGV4IGM5MGVhODk3YzNmNzU2Li4yODg1OGU0NDIyNWE2YyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuQEAgLTE2Niw3ICYjNDM7MTY2LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxuIFx0Lyogc2VsZWN0IHRoZSBmaXJzdCBkZXN0aW5hdGlvbiBzZXJ2ZXIsIHdob3NlIHdlaWdodCBcdTAwM2UgMCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZSwgXHUwMDI2c2V0LVx1MDAzZWxpc3QsIGxpc3QpIHtcbiBcdFx0bGVhc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmxlYXN0LVx1MDAzZWZsYWdzMikpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMClcbkBAIC0xODEsNyAmIzQzOzE4MSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGUsIFx1MDAyNnNldC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4gXHRcdGRlc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5AQCAtNTc3LDcgJiM0Mzs1NzcsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKiBuZXcgY29ubmVjdGlvbi5cbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG5AQCAtNTkzLDcgJiM0Mzs1OTMsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbmluZGV4IDM4Y2MzOGM1ZDhiYmQ5Li5jNGU0ZTkxZTNlNmQ3ZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuQEAgLTM4LDcgJiM0MzszOCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiYjNDM7XHRcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xuaW5kZXggMDIwODYzMDQ3NTYyZDMuLjIzZmZjNTFjYTA4OGYwIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXG5AQCAtODAsNyAmIzQzOzgwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdlbmVyYXRlX2hhc2hfc2VjcmV0KGhzaXBoYXNoX2tleV90ICpoYXNoMSxcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuIFx0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2M9IDAgfHxcbi1cdCAgICAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0ICAgICAgIHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKTtcbiB9XG4gXG4gLyogUmV0dXJucyBoYXNoIHZhbHVlIGZvciBJUFZTIE1IIGVudHJ5ICovXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xuaW5kZXggYWRhMTU4YzYxMGNlMTEuLmQ2ZmJiOWU1MGU0YjQ0IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXG5AQCAtNzIsNyAmIzQzOzcyLDcgQEAgaXBfdnNfbnFfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuIFxuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEIHx8XG4mIzQzO1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIHx8XG4gXHRcdCAgICAhYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xuaW5kZXggYzVjNjdkZjgwYTBiM2MuLjEwNGRlOGMyNGE0ZjY1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcbkBAIC0zMyw3ICYjNDM7MzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcdFx0dyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4mIzQzO1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIHx8XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKSBcdTAwM2UgdyB8fFxuIFx0XHQgICAgdyA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcbmluZGV4IDQxMjVlZTU2MWNkYzM2Li5jMzhiZWU5ODdkMTQzMiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xuQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIGlwX3ZzX3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4gXHRcdFx0XHQvKiBISVQgKi9cbiBcdFx0XHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xuaW5kZXggMjQ1YTMyM2M4NGNkMzIuLjBjZTQyNWY5NzQ4YWY3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcbkBAIC03NSw3ICYjNDM7NzUsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkge1xuIFx0XHRcdGxlYXN0ID0gZGVzdDtcbiBcdFx0XHRsb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChsZWFzdCk7XG5AQCAtOTAsNyAmIzQzOzkwLDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcbmluZGV4IGNkNjcwNjZlM2IyNjEyLi5iYmRiNjgzYjhlODYwMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xuQEAgLTczLDcgJiM0Mzs3Myw3IEBAIHN0cnVjdCBpcF92c19zaF9zdGF0ZSB7XG4gc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbiBcdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNjPSAwIHx8XG4tXHQgICAgICAgZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuJiM0MztcdCAgICAgICB0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMik7XG4gfVxuIFxuIC8qXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcbmluZGV4IGRiYjdmNWZkNDY4OGE0Li5jZTU2MThmMDJlN2RmNCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcbkBAIC01Miw3ICYjNDM7NTIsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiBcbiBcdC8qIEdlbmVyYXRlIGEgcmFuZG9tIHdlaWdodCBiZXR3ZWVuIFswLHN1bSBvZiBhbGwgd2VpZ2h0cykgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpKSB7XG4mIzQzO1x0XHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSkge1xuIFx0XHRcdHdlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbiBcdFx0XHRpZiAod2VpZ2h0IFx1MDAzZSAwKSB7XG4gXHRcdFx0XHR0b3RhbF93ZWlnaHQgJiM0Mzs9IHdlaWdodDtcbkBAIC03NSw3ICYjNDM7NzUsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiBcbiBcdC8qIFBpY2sgdHdvIHdlaWdodGVkIHNlcnZlcnMgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0d2VpZ2h0ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xuaW5kZXggOWRhNDQ1Y2EwOWExNGMuLjYyYTRjODE0OTE5MjcyIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcbkBAIC00Nyw3ICYjNDM7NDcsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkge1xuIFx0XHRcdGxlYXN0ID0gZGVzdDtcbiBcdFx0XHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xuQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gICBuZXh0c3RhZ2U6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbiBcdFx0aWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXG5pbmRleCAyZGNmZjEwNDBkYTUyMS4uYjk5Y2JjMWQxMzAyOWQgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xuQEAgLTE3Niw3ICYjNDM7MTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlPSBtYXJrLVx1MDAzZWN3KVxuIFx0XHRcdFx0Z290byBmb3VuZDtcbiBcdFx0XHRpZiAoZGVzdCA9PSBzdG9wKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dSUiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQyYjMzQ7LAogICAgJiMzNDtJUF9WU19XTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfRk8mIzM0OywKICAgICYjMzQ7SVBfVlNfT1ZGJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQ1ImIzM0OywKICAgICYjMzQ7SVBfVlNfREgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0gmIzM0OywKICAgICYjMzQ7SVBfVlNfTUgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0VEJiMzNDssCiAgICAmIzM0O0lQX1ZTX05RJiMzNDssCiAgICAmIzM0O0lQX1ZTX1RXT1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZCYjMzQ7LAogICAgJiMzNDtpcF92c19iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfdW5iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7X19pcF92c191cGRhdGVfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19hZGRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19lZGl0X2Rlc3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcgbG9naWMgb2YgSVBWUyBieSBjaGFuZ2luZyBob3cgdGhlIGRlc3RpbmF0aW9uIG92ZXJsb2FkIGZsYWcgaXMgdXBkYXRlZCBhbmQgY2hlY2tlZC4gSXQgaW50cm9kdWNlcyBhIG5ldyBgZmxhZ3MyYCBmaWVsZCBhbmQgdXBkYXRlcyBtdWx0aXBsZSBJUFZTIHNjaGVkdWxlcnMgdG8gdXNlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhZjEzNmI3MzVkODFiZmMwZTRmMzkzMGJkMDA4ZWFiZDhjZDZmZWY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMTMgMTI6NDk6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcF92cy5oIGIvaW5jbHVkZS9uZXQvaXBfdnMuaAppbmRleCA0MTdmZjUxZjYyZmM4ZS4uNWU4ZTU1ZjgyYjA0NDAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lwX3ZzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvaXBfdnMuaApAQCAtMzYsNiAmIzQzOzM2LDEzIEBACiAjZGVmaW5lIElQX1ZTX0hEUl9JTlZFUlNFCTEKICNkZWZpbmUgSVBfVlNfSERSX0lDTVAJCTIKIAomIzQzOy8qIERlc3RpbmF0aW9uIFNlcnZlciBGbGFncyAqLwomIzQzOyNkZWZpbmUgSVBfVlNfREVTVF9GX0FWQUlMQUJMRQkweDAwMDEJCS8qIHNlcnZlciBpcyBhdmFpbGFibGUgKi8KJiM0MzsKJiM0MztlbnVtIHsKJiM0MzsJSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwKJiM0Mzt9OwomIzQzOwogLyogY29ubl90YWIgbGltaXRzIChhcyBwZXIgS2NvbmZpZykgKi8KICNkZWZpbmUgSVBfVlNfQ09OTl9UQUJfTUlOX0JJVFMJOAogI2lmIEJJVFNfUEVSX0xPTkcgJmd0OyAzMgpAQCAtOTc2LDYgJiM0Mzs5ODMsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7CiAJdm9sYXRpbGUgdW5zaWduZWQgaW50CWZsYWdzOwkJLyogZGVzdCBzdGF0dXMgZmxhZ3MgKi8KIAlhdG9taWNfdAkJY29ubl9mbGFnczsJLyogZmxhZ3MgdG8gY29weSB0byBjb25uICovCiAJYXRvbWljX3QJCXdlaWdodDsJCS8qIHNlcnZlciB3ZWlnaHQgKi8KJiM0MzsJdW5zaWduZWQgbG9uZwkJZmxhZ3MyOwkJLyogZGVzdCBzdGF0dXMgZmxhZ3MgKi8KIAlhdG9taWNfdAkJbGFzdF93ZWlnaHQ7CS8qIHNlcnZlciBsYXRlc3Qgd2VpZ2h0ICovCiAJX191MTYJCQl0dW5fdHlwZTsJLyogdHVubmVsIHR5cGUgKi8KIAlfX2JlMTYJCQl0dW5fcG9ydDsJLyogdHVubmVsIHBvcnQgKi8KQEAgLTE5MDcsNiAmIzQzOzE5MTUsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfZGVzdF9wdXRfYW5kX2ZyZWUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpCiAJCWtmcmVlKGRlc3QpOwogfQogCiYjNDM7dm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCk7CiYjNDM7CiAvKiBJUFZTIHN5bmMgZGFlbW9uIGRhdGEgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAqIChmcm9tIGlwX3ZzX3N5bmMuYykKICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaAppbmRleCAxZWQyMzRlN2YyNTEzNi4uMmMzN2M2YWM3NTI1YTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oCkBAIC0yOCwxMiAmIzQzOzI4LDYgQEAKICNkZWZpbmUgSVBfVlNfU1ZDX0ZfU0NIRURfU0hfRkFMTEJBQ0sJSVBfVlNfU1ZDX0ZfU0NIRUQxIC8qIFNIIGZhbGxiYWNrICovCiAjZGVmaW5lIElQX1ZTX1NWQ19GX1NDSEVEX1NIX1BPUlQJSVBfVlNfU1ZDX0ZfU0NIRUQyIC8qIFNIIHVzZSBwb3J0ICovCiAKLS8qCi0gKiAgICAgIERlc3RpbmF0aW9uIFNlcnZlciBGbGFncwotICovCi0jZGVmaW5lIElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUJMHgwMDAxCQkvKiBzZXJ2ZXIgaXMgYXZhaWxhYmxlICovCi0jZGVmaW5lIElQX1ZTX0RFU1RfRl9PVkVSTE9BRAkweDAwMDIJCS8qIHNlcnZlciBpcyBvdmVybG9hZGVkICovCi0KIC8qCiAgKiAgICAgIElQVlMgc3luYyBkYWVtb24gc3RhdGVzCiAgKi8KZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCmluZGV4IDZlZDI2MjIzNjNmMGQ2Li4yNTkxZjRlMTQzZjg0YyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCkBAIC05OTEsNiAmIzQzOzk5MSwzNCBAQCBzdGF0aWMgaW5saW5lIGludCBpcF92c19kZXN0X3RvdGFsY29ubnMoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpCiAJCSYjNDM7IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7aW5hY3Rjb25ucyk7CiB9CiAKJiM0MzsvKiBVcGRhdGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBudW1iZXIgb2YgZGVzdCBjb25ucyBhbmQgbG93ZXIvdXBwZXIKJiM0MzsgKiBjb25uZWN0aW9uIHRocmVzaG9sZHM6CiYjNDM7ICogLSBjb25ucyByZWFjaCB1X3RocmVzaG9sZCBhbmQgZXhjZWVkIGl0OiBzZXQgdGhlIGZsYWcKJiM0MzsgKiAtIGNvbm5zIGdvIGJlbG93IGxfdGhyZXNob2xkIChvciA3NSUgb2YgdV90aHJlc2hvbGQpOiBjbGVhciB0aGUgZmxhZwomIzQzOyAqLwomIzQzO19fYWx3YXlzX2lubGluZSB2b2lkIGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQomIzQzO3sKJiM0MzsJaW50IGNvbm5zOwomIzQzOwl1MzIgbCwgdTsKJiM0MzsKJiM0MzsJdSA9IFJFQURfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCk7CiYjNDM7CWlmICghdSkKJiM0MzsJCWdvdG8gdW5zZXQ7CiYjNDM7CWNvbm5zID0gaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpOwomIzQzOwlpZiAoY29ubnMgJmd0Oz0gdSkgewomIzQzOwkJc2V0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMik7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsJLyogTG93IHRocmVzaG9sZCBkZWZhdWx0cyB0byA3NSUgb2YgdXBwZXIgdGhyZXNob2xkICovCiYjNDM7CWwgPSBSRUFEX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGQpID8gOiAodSAtICh1ICZndDsmZ3Q7IDIpKTsKJiM0MzsJaWYgKGNvbm5zICZndDs9IGwpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7dW5zZXQ6CiYjNDM7CWlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikpCiYjNDM7CQljbGVhcl9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpOwomIzQzO30KJiM0MzsKIC8qCiAgKglCaW5kIGEgY29ubmVjdGlvbiBlbnRyeSB3aXRoIGEgdmlydHVhbCBzZXJ2aWNlIGRlc3RpbmF0aW9uCiAgKglDYWxsZWQganVzdCBhZnRlciBhIG5ldyBjb25uZWN0aW9uIGVudHJ5IGlzIGNyZWF0ZWQuCkBAIC0xMDUzLDkgJiM0MzsxMDgxLDcgQEAgaXBfdnNfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpCiAJCWF0b21pY19pbmMoJmFtcDtkZXN0LSZndDtwZXJzaXN0Y29ubnMpOwogCX0KIAotCWlmIChkZXN0LSZndDt1X3RocmVzaG9sZCAhPSAwICZhbXA7JmFtcDsKLQkgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICZndDs9IGRlc3QtJmd0O3VfdGhyZXNob2xkKQotCQlkZXN0LSZndDtmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CWlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QpOwogfQogCiAKQEAgLTExNDksMTYgJiM0MzsxMTc1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCkKIAkJYXRvbWljX2RlYygmYW1wO2Rlc3QtJmd0O3BlcnNpc3Rjb25ucyk7CiAJfQogCi0JaWYgKGRlc3QtJmd0O2xfdGhyZXNob2xkICE9IDApIHsKLQkJaWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAmbHQ7IGRlc3QtJmd0O2xfdGhyZXNob2xkKQotCQkJZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDs9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7Ci0JfSBlbHNlIGlmIChkZXN0LSZndDt1X3RocmVzaG9sZCAhPSAwKSB7Ci0JCWlmIChpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgKiA0ICZsdDsgZGVzdC0mZ3Q7dV90aHJlc2hvbGQgKiAzKQotCQkJZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDs9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7Ci0JfSBlbHNlIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKLQkJCWRlc3QtJmd0O2ZsYWdzICZhbXA7PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEOwotCX0KJiM0MzsJaWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSkKJiM0MzsJCWlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QpOwogCiAJaXBfdnNfZGVzdF9wdXQoZGVzdCk7CiB9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKaW5kZXggYmNmNDBiOGM0MWNmMjYuLjYyZjczZDg5MmY5N2M5IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCkBAIC0xMzcwLDEwICYjNDM7MTM3MCwxMiBAQCBfX2lwX3ZzX3VwZGF0ZV9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LAogCS8qIHNldCB0aGUgZGVzdCBzdGF0dXMgZmxhZ3MgKi8KIAlkZXN0LSZndDtmbGFncyB8PSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFOwogCi0JaWYgKHVkZXN0LSZndDt1X3RocmVzaG9sZCA9PSAwIHx8IHVkZXN0LSZndDt1X3RocmVzaG9sZCAmZ3Q7IGRlc3QtJmd0O3VfdGhyZXNob2xkKQotCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKLQlkZXN0LSZndDt1X3RocmVzaG9sZCA9IHVkZXN0LSZndDt1X3RocmVzaG9sZDsKLQlkZXN0LSZndDtsX3RocmVzaG9sZCA9IHVkZXN0LSZndDtsX3RocmVzaG9sZDsKJiM0MzsJaWYgKFJFQURfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCkgIT0gdWRlc3QtJmd0O3VfdGhyZXNob2xkIHx8CiYjNDM7CSAgICBSRUFEX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGQpICE9IHVkZXN0LSZndDtsX3RocmVzaG9sZCkgewomIzQzOwkJV1JJVEVfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCwgdWRlc3QtJmd0O3VfdGhyZXNob2xkKTsKJiM0MzsJCVdSSVRFX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGQsIHVkZXN0LSZndDtsX3RocmVzaG9sZCk7CiYjNDM7CQlpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0KTsKJiM0MzsJfQogCiAJZGVzdC0mZ3Q7YWYgPSB1ZGVzdC0mZ3Q7YWY7CiAKQEAgLTE0ODYsNiAmIzQzOzE0ODgsOSBAQCBpcF92c19hZGRfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KQogCQlyZXR1cm4gLUVSQU5HRTsKIAl9CiAKJiM0MzsJaWYgKHVkZXN0LSZndDt1X3RocmVzaG9sZCAmZ3Q7IElOVF9NQVgpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAlpZiAodWRlc3QtJmd0O3R1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHsKIAkJaWYgKHVkZXN0LSZndDt0dW5fcG9ydCA9PSAwKSB7CiAJCQlwcl9lcnIoJiMzNDslcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXG4mIzM0OywgX19mdW5jX18pOwpAQCAtMTU1OSw2ICYjNDM7MTU2NCw5IEBAIGlwX3ZzX2VkaXRfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KQogCQlyZXR1cm4gLUVSQU5HRTsKIAl9CiAKJiM0MzsJaWYgKHVkZXN0LSZndDt1X3RocmVzaG9sZCAmZ3Q7IElOVF9NQVgpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAlpZiAodWRlc3QtJmd0O3R1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHsKIAkJaWYgKHVkZXN0LSZndDt0dW5fcG9ydCA9PSAwKSB7CiAJCQlwcl9lcnIoJiMzNDslcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXG4mIzM0OywgX19mdW5jX18pOwpAQCAtMzY2Nyw4ICYjNDM7MzY3NSw4IEBAIF9faXBfdnNfZ2V0X2Rlc3RfZW50cmllcyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgY29uc3Qgc3RydWN0IGlwX3ZzX2dldF9kZXN0cyAqCiAJCQllbnRyeS5wb3J0ID0gZGVzdC0mZ3Q7cG9ydDsKIAkJCWVudHJ5LmNvbm5fZmxhZ3MgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2Nvbm5fZmxhZ3MpOwogCQkJZW50cnkud2VpZ2h0ID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpOwotCQkJZW50cnkudV90aHJlc2hvbGQgPSBkZXN0LSZndDt1X3RocmVzaG9sZDsKLQkJCWVudHJ5LmxfdGhyZXNob2xkID0gZGVzdC0mZ3Q7bF90aHJlc2hvbGQ7CiYjNDM7CQkJZW50cnkudV90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC0mZ3Q7dV90aHJlc2hvbGQpOwomIzQzOwkJCWVudHJ5LmxfdGhyZXNob2xkID0gUkVBRF9PTkNFKGRlc3QtJmd0O2xfdGhyZXNob2xkKTsKIAkJCWVudHJ5LmFjdGl2ZWNvbm5zID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucyk7CiAJCQllbnRyeS5pbmFjdGNvbm5zID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtpbmFjdGNvbm5zKTsKIAkJCWVudHJ5LnBlcnNpc3Rjb25ucyA9IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7cGVyc2lzdGNvbm5zKTsKQEAgLTQyNzcsOCAmIzQzOzQyODUsMTAgQEAgc3RhdGljIGludCBpcF92c19nZW5sX2ZpbGxfZGVzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIAkJCSBkZXN0LSZndDt0dW5fcG9ydCkgfHwKIAkgICAgbmxhX3B1dF91MTYoc2tiLCBJUFZTX0RFU1RfQVRUUl9UVU5fRkxBR1MsCiAJCQlkZXN0LSZndDt0dW5fZmxhZ3MpIHx8Ci0JICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfVV9USFJFU0gsIGRlc3QtJmd0O3VfdGhyZXNob2xkKSB8fAotCSAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILCBkZXN0LSZndDtsX3RocmVzaG9sZCkgfHwKJiM0MzsJICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfVV9USFJFU0gsCiYjNDM7CQkJUkVBRF9PTkNFKGRlc3QtJmd0O3VfdGhyZXNob2xkKSkgfHwKJiM0MzsJICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfTF9USFJFU0gsCiYjNDM7CQkJUkVBRF9PTkNFKGRlc3QtJmd0O2xfdGhyZXNob2xkKSkgfHwKIAkgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9BQ1RJVkVfQ09OTlMsCiAJCQlhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2FjdGl2ZWNvbm5zKSkgfHwKIAkgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9JTkFDVF9DT05OUywKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMKaW5kZXggZTFmNjJmNmIyNWUyMTEuLjM2NGFjYjYzNDJlMmZlIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYwpAQCAtMTk2LDEyICYjNDM7MTk2LDEyIEBAIHN0YXRpYyBpbnQgaXBfdnNfZGhfZGVzdF9jaGFuZ2VkKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAKIAogLyoKLSAqICAgICAgSWYgdGhlIGRlc3QgZmxhZ3MgaXMgc2V0IHdpdGggSVBfVlNfREVTVF9GX09WRVJMT0FELAomIzQzOyAqICAgICAgSWYgdGhlIGRlc3QgZmxhZ3MgaXMgc2V0IHdpdGggSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwKICAqICAgICAgY29uc2lkZXIgdGhhdCB0aGUgc2VydmVyIGlzIG92ZXJsb2FkZWQgaGVyZS4KICAqLwogc3RhdGljIGlubGluZSBpbnQgaXNfb3ZlcmxvYWRlZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIHsKLQlyZXR1cm4gZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwlyZXR1cm4gdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpOwogfQogCiAKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmMKaW5kZXggZDY1N2I0N2M2NTExZmYuLmE1OWFmNmMxMTg5YWNhIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYwpAQCAtMjksNyAmIzQzOzI5LDcgQEAgaXBfdnNfZm9fc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpYwogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpICZhbXA7JmFtcDsKJiM0MzsJCWlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpICZhbXA7JmFtcDsKIAkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IGh3KSB7CiAJCQlod2VpZ2h0ID0gZGVzdDsKIAkJCWh3ID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKaW5kZXggMTVjY2IyYjJmYTFmNGEuLmVlMjZiZTNlYjg2MDZmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKQEAgLTQxNCw3ICYjNDM7NDE0LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpCiAJICogbmV3IGNvbm5lY3Rpb24uCiAJICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpKQogCQkJY29udGludWU7CiAJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CiAJCQlsZWFzdCA9IGRlc3Q7CkBAIC00MjksNyAmIzQzOzQyOSw3IEBAIF9faXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKQogCSAqLwogICBuZXh0c3RhZ2U6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpKQogCQkJY29udGludWU7CiAKIAkJZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYwppbmRleCBjOTBlYTg5N2MzZjc1Ni4uMjg4NThlNDQyMjVhNmMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCkBAIC0xNjYsNyAmIzQzOzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCkKIAkvKiBzZWxlY3QgdGhlIGZpcnN0IGRlc3RpbmF0aW9uIHNlcnZlciwgd2hvc2Ugd2VpZ2h0ICZndDsgMCAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGUsICZhbXA7c2V0LSZndDtsaXN0LCBsaXN0KSB7CiAJCWxlYXN0ID0gZS0mZ3Q7ZGVzdDsKLQkJaWYgKGxlYXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtsZWFzdC0mZ3Q7ZmxhZ3MyKSkKIAkJCWNvbnRpbnVlOwogCiAJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IDApCkBAIC0xODEsNyAmIzQzOzE4MSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCkKICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGUsICZhbXA7c2V0LSZndDtsaXN0LCBsaXN0KSB7CiAJCWRlc3QgPSBlLSZndDtkZXN0OwotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSkKIAkJCWNvbnRpbnVlOwogCiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKQEAgLTU3Nyw3ICYjNDM7NTc3LDcgQEAgX19pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKQogCSAqIG5ldyBjb25uZWN0aW9uLgogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSkKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CkBAIC01OTMsNyAmIzQzOzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YykKIAkgKi8KICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSkKIAkJCWNvbnRpbnVlOwogCiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMKaW5kZXggMzhjYzM4YzVkOGJiZDkuLmM0ZTRlOTFlM2U2ZDdkIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYwpAQCAtMzgsNyAmIzQzOzM4LDcgQEAgaXBfdnNfbGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHwKJiM0MzsJCWlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikgfHwKIAkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSA9PSAwKQogCQkJY29udGludWU7CiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMKaW5kZXggMDIwODYzMDQ3NTYyZDMuLjIzZmZjNTFjYTA4OGYwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYwpAQCAtODAsNyAmIzQzOzgwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdlbmVyYXRlX2hhc2hfc2VjcmV0KGhzaXBoYXNoX2tleV90ICpoYXNoMSwKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc191bmF2YWlsYWJsZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIHsKIAlyZXR1cm4gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZsdDs9IDAgfHwKLQkgICAgICAgZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwkgICAgICAgdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpOwogfQogCiAvKiBSZXR1cm5zIGhhc2ggdmFsdWUgZm9yIElQVlMgTUggZW50cnkgKi8KZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmMKaW5kZXggYWRhMTU4YzYxMGNlMTEuLmQ2ZmJiOWU1MGU0YjQ0IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYwpAQCAtNzIsNyAmIzQzOzcyLDcgQEAgaXBfdnNfbnFfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewogCi0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQgfHwKJiM0MzsJCWlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikgfHwKIAkJICAgICFhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkpCiAJCQljb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jCmluZGV4IGM1YzY3ZGY4MGEwYjNjLi4xMDRkZThjMjRhNGY2NSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuYwpAQCAtMzMsNyAmIzQzOzMzLDcgQEAgaXBfdnNfb3ZmX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKIAkJdyA9IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KTsKLQkJaWYgKChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8CiYjNDM7CQlpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpIHx8CiAJCSAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2FjdGl2ZWNvbm5zKSAmZ3Q7IHcgfHwKIAkJICAgIHcgPT0gMCkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuYwppbmRleCA0MTI1ZWU1NjFjZGMzNi4uYzM4YmVlOTg3ZDE0MzIgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jCkBAIC02Niw3ICYjNDM7NjYsNyBAQCBpcF92c19ycl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LAogCQkJCQkJICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsCiAJCQkJCQkgbl9saXN0KSB7Ci0JCQlpZiAoIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpICZhbXA7JmFtcDsKJiM0MzsJCQlpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSAmYW1wOyZhbXA7CiAJCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkKIAkJCQkvKiBISVQgKi8KIAkJCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYwppbmRleCAyNDVhMzIzYzg0Y2QzMi4uMGNlNDI1Zjk3NDhhZjcgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmMKQEAgLTc1LDcgJiM0Mzs3NSw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmICghKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwomIzQzOwkJaWYgKCF0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikgJmFtcDsmYW1wOwogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkgewogCQkJbGVhc3QgPSBkZXN0OwogCQkJbG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQobGVhc3QpOwpAQCAtOTAsNyAmIzQzOzkwLDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJICovCiAgIG5leHRzdGFnZToKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikpCiAJCQljb250aW51ZTsKIAkJZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7CiAJCWlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMKaW5kZXggY2Q2NzA2NmUzYjI2MTIuLmJiZGI2ODNiOGU4NjAxIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYwpAQCAtNzMsNyAmIzQzOzczLDcgQEAgc3RydWN0IGlwX3ZzX3NoX3N0YXRlIHsKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc191bmF2YWlsYWJsZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIHsKIAlyZXR1cm4gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZsdDs9IDAgfHwKLQkgICAgICAgZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwkgICAgICAgdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMKaW5kZXggZGJiN2Y1ZmQ0Njg4YTQuLmNlNTYxOGYwMmU3ZGY0IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMKQEAgLTUyLDcgJiM0Mzs1Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLAogCiAJLyogR2VuZXJhdGUgYSByYW5kb20gd2VpZ2h0IGJldHdlZW4gWzAsc3VtIG9mIGFsbCB3ZWlnaHRzKSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpKSB7CiYjNDM7CQlpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSkgewogCQkJd2VpZ2h0ID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpOwogCQkJaWYgKHdlaWdodCAmZ3Q7IDApIHsKIAkJCQl0b3RhbF93ZWlnaHQgJiM0Mzs9IHdlaWdodDsKQEAgLTc1LDcgJiM0Mzs3NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLAogCiAJLyogUGljayB0d28gd2VpZ2h0ZWQgc2VydmVycyAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSkKIAkJCWNvbnRpbnVlOwogCiAJCXdlaWdodCA9IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuYwppbmRleCA5ZGE0NDVjYTA5YTE0Yy4uNjJhNGM4MTQ5MTkyNzIgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMKQEAgLTQ3LDcgJiM0Mzs0Nyw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmICghKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwomIzQzOwkJaWYgKCF0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikgJmFtcDsmYW1wOwogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkgewogCQkJbGVhc3QgPSBkZXN0OwogCQkJbG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTsKQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogICBuZXh0c3RhZ2U6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpKQogCQkJY29udGludWU7CiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKIAkJaWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jCmluZGV4IDJkY2ZmMTA0MGRhNTIxLi5iOTljYmMxZDEzMDI5ZCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYwpAQCAtMTc2LDcgJiM0MzsxNzYsNyBAQCBpcF92c193cnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwKIAkJCQkJCSAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLAogCQkJCQkJIG5fbGlzdCkgewotCQkJaWYgKCEoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiYjNDM7CQkJaWYgKCF0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikgJmFtcDsmYW1wOwogCQkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7PSBtYXJrLSZndDtjdykKIAkJCQlnb3RvIGZvdW5kOwogCQkJaWYgKGRlc3QgPT0gc3RvcCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMzNAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDI3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIElQVlMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBhIGZ1bmRhbWVudGFsIGNoYW5nZSB0byB0aGUgSVBWUyBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgYW5kIHNwZWNpZmljYWxseSwgaG93IGl0IGhhbmRsZXMgb3ZlcmxvYWQgY29uZGl0aW9ucyBmb3IgZGVzdGluYXRpb25zLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIG1vdmluZyBhd2F5IGZyb20gdGhlIG9sZCBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCBmbGFnIGFuZCBpbnRyb2R1Y2luZyBhIG1vcmUgcmVmaW5lZCBhcHByb2FjaCB3aXRoIGBmbGFnczJgIGFuZCBhIGRlZGljYXRlZCBgSVBfVlNfREVTVF9GTF9PVkVSTE9BRGAgZW51bS4gVGhpcyBhbHNvIGluY2x1ZGVzIGEgbmV3IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgZnVuY3Rpb24sIHdoaWNoIEkgcHJlc3VtZSB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBkeW5hbWljYWxseSBzZXR0aW5nIHRoaXMgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBjb25uZWN0aW9uIGNvdW50cyBhbmQgcHJlLWRlZmluZWQgdGhyZXNob2xkcy4KClRoZSBmYWN0IHRoYXQgdGhleSYjMzk7cmUgbW9kaWZ5aW5nIGFsbCB0aG9zZSBzY2hlZHVsZXIgYWxnb3JpdGhtcyDigJMgYGZvYCwgYGxibGNgLCBgbGJsY3JgLCBgbGNgLCBgbWhgLCBgbnFgLCBgb3ZmYCwgYHJyYCwgYHNlZGAsIGBzaGAsIGB0d29zYCwgYHdsY2AsIGB3cnJgIOKAkyB0byB1c2UgdGhlIG5ldyBgdGVzdF9iaXRgIGFwcHJvYWNoIGluc3RlYWQgb2YgdGhlIG9sZCBiaXR3aXNlIEFORCBzdWdnZXN0cyBhIHNpZ25pZmljYW50IHJlZmFjdG9yIGluIGhvdyB0aGVzZSBhbGdvcml0aG1zIGludGVycHJldCBhbmQgcmVhY3QgdG8gZGVzdGluYXRpb24gb3ZlcmxvYWQuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGNvcmUgbG9naWMgY2hhbmdlIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcsIGFuZCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgYnVncyBpbiBzdWNoIGEgc2Vuc2l0aXZlIGFyZWEsIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQgKiphYnNvbHV0ZWx5IG5lZWRzIHRvIGJlIGZ1enplZC4qKgoKTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gdGhlIHByYWN0aWNhbGl0aWVzLiBUaGUgb2J2aW91cyBlbnRyeSBwb2ludCBmb3IgZGV0ZXJtaW5pbmcgdGhlIGFmZmVjdGVkIGNvbmZpZ3VyYXRpb25zIGlzIGBDT05GSUdfSVBfVlNgLCBzbyB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBzaG91bGQgcHJvYmFibHkgZGlnIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZmlsZSBvciBzb21ldGhpbmcgc2ltaWxhciB0byBwaW5wb2ludCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI1MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHRob3VnaHQgaXM6CgoqKkNoZWNraW5nIFNjaGVkdWxlciBDb25maWd1cmF0aW9uIE5lZWRzKioKClJpZ2h0LCBiZWZvcmUgSSBnZXQgc3RhcnRlZCBvbiBhbnl0aGluZywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGtub3cgdGhlICpleGFjdCogY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIG5lY2Vzc2FyeSBmb3IgdGhlc2Ugc2NoZWR1bGVycy4gSSBjYW4mIzM5O3QganVzdCBqdW1wIGluIGFuZCBzdGFydCBjb2Rpbmcgd2l0aG91dCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGlucHV0cyBhbmQgcGFyYW1ldGVycy4gV2hhdCBhcmUgdGhlIGtleSBzZXR0aW5ncz8gV2hhdCBhcmUgdGhlIGRlZmF1bHRzPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnM/IFRoaXMgaXNuJiMzOTt0IGEgJiMzNDtvbmUtc2l6ZS1maXRzLWFsbCYjMzQ7IHNjZW5hcmlvLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGFsbCB0aGUgcG9zc2liaWxpdGllcyBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIE9ubHkgdGhlbiBjYW4gSSBkZXRlcm1pbmUgdGhlIGJlc3QgYXBwcm9hY2ggZm9yIGltcGxlbWVudGF0aW9uLiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG92ZXJsb29rIGFueXRoaW5nIGNydWNpYWwuIEkmIzM5O2xsIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlbGV2YW50IGRlc2lnbiBzcGVjcyB3aXRoIGEgZmluZS10b290aGVkIGNvbWIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTXy4qJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2OTMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0OgoKKipEaXZpbmcgRGVlcGVyIGludG8gU2NoZWR1bGVyIENvbmZpZ3VyYXRpb25zKioKCkFscmlnaHQsIEkmIzM5O20gYXQgYSBwb2ludCBpbiB0aGUgcHJvY2VzcyB3aGVyZSBJIG5lZWQgdG8gbW92ZSBiZXlvbmQgZ2VuZXJhbCBwcmluY2lwbGVzLiBJIG5lZWQgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHNjaGVkdWxlcnMsIGFuZCB3aGlsZSBJIHVuZGVyc3RhbmQgdGhlIGhpZ2gtbGV2ZWwgY29uY2VwdHMsIEkgY2FuJiMzOTt0IHJlYWxseSBtYWtlIGFueSBpbmZvcm1lZCBkZWNpc2lvbnMgYWJvdXQgb3B0aW1pemF0aW9uIG9yIGZpbmUtdHVuaW5nIHdpdGhvdXQgc2VlaW5nIHRoZSAqYWN0dWFsKiBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEl0JiMzOTtzIHRpbWUgdG8gc3RvcCB0aGVvcml6aW5nIGFuZCBzdGFydCBsb29raW5nIGF0IHRoZSBzcGVjaWZpY3MuIFdoYXQgcGFyYW1ldGVycyBhcmUgYXZhaWxhYmxlPyBXaGF0IGFyZSB0aGVpciBkZWZhdWx0IHZhbHVlcz8gV2hhdCBraW5kIG9mIGtub2JzIGRvIEkgaGF2ZSB0byB0dXJuIHRvIGdldCB0aGUgcGVyZm9ybWFuY2UgSSYjMzk7bSBsb29raW5nIGZvcj8gSSYjMzk7bSBub3QgZ29pbmcgdG8gZ2V0IGJvZ2dlZCBkb3duIGluIHRoZSBnZW5lcmljLCBhYnN0cmFjdCBleHBsYW5hdGlvbnMgYW55bW9yZS4gR2l2ZSBtZSB0aGUgY29uY3JldGUgc3R1ZmYgLSB0aGUgY29uZmlndXJhdGlvbiBmaWxlcywgdGhlIEFQSSBkb2N1bWVudGF0aW9uLCB3aGF0ZXZlciBpdCB0YWtlcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBudXRzIGFuZCBib2x0cyBvZiB0aGUgc2NoZWR1bGVyIGltcGxlbWVudGF0aW9ucyB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGVpciBwb3RlbnRpYWwuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgYWN0dWFsbHkgd29ya2luZyB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjM0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIERpcmVjdCBBcHByb2FjaCoqCgpBbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGlzIHByZXR0eSBjbGVhci4gTm8gbmVlZCB0byBvdmVydGhpbmsgdGhpcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGp1c3QgcmVhZCB0aGUgZmlsZS4mIzM0OyBJJiMzOTttIGN1dHRpbmcgdGhyb3VnaCBhbnkgcHJlbGltaW5hcnkgYXNzdW1wdGlvbnMgb3Igc3RyYXRlZ2ljIGNvbnNpZGVyYXRpb25zLiBJdCYjMzk7cyBhIHNpbXBsZSwgZGlyZWN0LCBhbmQgb2Z0ZW4gdGhlIG1vc3QgZWZmaWNpZW50IHN0YXJ0aW5nIHBvaW50LiBXZSYjMzk7cmUgbm90IGVuZ2FnaW5nIGluIGNvbXBsZXggbW9kZWxpbmcgb3IgcmlzayBhc3Nlc3NtZW50cyBhdCB0aGlzIHN0YWdlOyByYXRoZXIsIHdlIG5lZWQgdG8gZXN0YWJsaXNoIGEgYmFzZSBsZXZlbCB1bmRlcnN0YW5kaW5nLiBUaGUgZmlsZSBpdHNlbGYgaXMgdGhlIHByaW1hcnkgc291cmNlIG9mIGluZm9ybWF0aW9uLCBhbmQgdGhlIG1vc3QgZXhwZWRpZW50IG1ldGhvZCBpcyB0byBzaW1wbHkgYmVnaW4gcHJvY2Vzc2luZyBpdHMgY29udGVudHMuIFdlJiMzOTtsbCBzdGFydCBhdCB0aGUgbW9zdCBlbGVtZW50YXJ5IGxldmVsLCBhbmQgYmVnaW4gcHJvY2Vzc2luZyB0aGUgZGF0YSB0byBsYXkgdGhlIGZvdW5kYXRpb25zIGZvciBkZWVwZXIgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15jb25maWcgSVBfVlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2NTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gSHVudGluZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgSVBWUyAoSVAgVmlydHVhbCBTZXJ2ZXIpIGlzIGNvbmZpZ3VyZWQgaW4gdGhpcyBrZXJuZWwuICBSYXRoZXIgdGhhbiBtYW51YWxseSBzaWZ0aW5nIHRocm91Z2ggdGhlIHNwcmF3bGluZyBgLmNvbmZpZ2AgZmlsZSwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgZ3JlcGAuIEkgd2FudCB0byBiZSBzcGVjaWZpYywgc28gSSYjMzk7bSB1c2luZyBgZ3JlcGAgd2l0aCB0aGUgZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uIG9wdGlvbiAoYC1FYCkuIFRoYXQgd2F5IEkgY2FuIHVzZSB0aGUgYW5jaG9yIHRvIG1ha2Ugc3VyZSB0aGF0IEkgb25seSBnZXQgcmVzdWx0cyBmcm9tIHRoZSBzdGFydCBvZiBhIGxpbmUuIEkmIzM5O2xsIHNlYXJjaCBmb3IgdGhlIGBjb25maWcgSVBfVlNgIHN0cmluZy4gVGhhdCBzaG91bGQgemVybyBpbiBwcmVjaXNlbHkgb24gdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBsaW5lIGFuZCBpZ25vcmUgYW55IG90aGVyIGluc3RhbmNlcyBvZiBgSVBfVlNgIGVsc2V3aGVyZSB3aXRoaW4gdGhlIGNvbmZpZyBmaWxlLiAgVGhpcyBpcyB0aGUgZmFzdGVzdCwgY2xlYW5lc3Qgd2F5IHRvIGdldCBhIHllcy9ubyBvbiBJUFZTLiBTaW1wbGUgYW5kIGVmZmljaWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmNvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA5NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4KCioqSW5pdGlhbCBDb25mdXNpb24gYW5kIEludmVzdGlnYXRpb24gQmVnaW5zKioKCldhaXQgYSBzZWNvbmQuLi4gd2h5IGFyZSAqdGhvc2Ugc3BlY2lmaWMqIHN5bWJvbGljIGNvbnN0YW50cywgYElQX1ZTX1NIX1RBQl9CSVRTYCBhbmQgYElQX1ZTX01IX1RBQl9JTkRFWGAsIHRoZSBvbmx5IG9uZXMgc2hvd2luZyB1cD8gVGhhdCYjMzk7cyBub3Qgd2hhdCBJIGV4cGVjdGVkLiBUaGVyZSBtdXN0IGJlIGEgcmVhc29uIGZvciB0aGlzIG5hcnJvd2VkIHNjb3BlLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuIFRoZSBiZXN0IHdheSB0byBjbGFyaWZ5IHRoaXMgd291bGQgYmUgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gVGltZSB0byBkaWcgaW50byB0aGUgZmlsZSBhbmQgZ2V0IHNvbWUgY29udGV4dC4gTGV0IG1lIHJlYWQgdGhlIHNvdXJjZSBmaWxlIGl0c2VsZi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB0aGVyZSBhbmQgdGhlbiBJIGNhbiBidWlsZCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIGZyb20gZmlyc3QgcHJpbmNpcGxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBJUCBWaXJ0dWFsIFNlcnZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdG1lbnVjb25maWcgSVBfVlNcbiAgIDY6XHRcdHRyaXN0YXRlIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcJiMzNDtcbiAgIDc6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG4gICA4Olx0XHRkZXBlbmRzIG9uIChORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLPW4pXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIElQIFZpcnR1YWwgU2VydmVyIHN1cHBvcnQgd2lsbCBsZXQgeW91IGJ1aWxkIGEgaGlnaC1wZXJmb3JtYW5jZVxuICAxMTpcdFx0ICB2aXJ0dWFsIHNlcnZlciBiYXNlZCBvbiBjbHVzdGVyIG9mIHR3byBvciBtb3JlIHJlYWwgc2VydmVycy4gVGhpc1xuICAxMjpcdFx0ICBvcHRpb24gbXVzdCBiZSBlbmFibGVkIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlIGNsdXN0ZXJlZCBjb21wdXRlcnNcbiAgMTM6XHRcdCAgdGhhdCB3aWxsIHRha2UgY2FyZSBvZiBpbnRlcmNlcHRpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYVxuICAxNDpcdFx0ICBzaW5nbGUgSVAgYWRkcmVzcyBhbmQgc2NoZWR1bGluZyB0aGVtIHRvIHJlYWwgc2VydmVycy5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgVGhyZWUgcmVxdWVzdCBkaXNwYXRjaGluZyB0ZWNobmlxdWVzIGFyZSBpbXBsZW1lbnRlZCwgdGhleSBhcmVcbiAgMTc6XHRcdCAgdmlydHVhbCBzZXJ2ZXIgdmlhIE5BVCwgdmlydHVhbCBzZXJ2ZXIgdmlhIHR1bm5lbGluZyBhbmQgdmlydHVhbFxuICAxODpcdFx0ICBzZXJ2ZXIgdmlhIGRpcmVjdCByb3V0aW5nLiBUaGUgc2V2ZXJhbCBzY2hlZHVsaW5nIGFsZ29yaXRobXMgY2FuXG4gIDE5Olx0XHQgIGJlIHVzZWQgdG8gY2hvb3NlIHdoaWNoIHNlcnZlciB0aGUgY29ubmVjdGlvbiBpcyBkaXJlY3RlZCB0byxcbiAgMjA6XHRcdCAgdGh1cyBsb2FkIGJhbGFuY2luZyBjYW4gYmUgYWNoaWV2ZWQgYW1vbmcgdGhlIHNlcnZlcnMuICBGb3IgbW9yZVxuICAyMTpcdFx0ICBpbmZvcm1hdGlvbiBhbmQgaXRzIGFkbWluaXN0cmF0aW9uIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB0aGVcbiAgMjI6XHRcdCAgZm9sbG93aW5nIFVSTDogXHUwMDNjaHR0cDovL3d3dy5saW51eHZpcnR1YWxzZXJ2ZXIub3JnL1x1MDAzZS5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAgMjU6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuICAyNjpcdFxuICAyNzpcdGlmIElQX1ZTXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnXHRJUF9WU19JUFY2XG4gIDMwOlx0XHRib29sIFwmIzM0O0lQdjYgc3VwcG9ydCBmb3IgSVBWU1wmIzM0O1xuICAzMTpcdFx0ZGVwZW5kcyBvbiBJUFY2ID0geSB8fCBJUF9WUyA9IElQVjZcbiAgMzI6XHRcdHNlbGVjdCBORl9ERUZSQUdfSVBWNlxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBBZGQgSVB2NiBzdXBwb3J0IHRvIElQVlMuXG4gIDM1Olx0XG4gIDM2Olx0XHQgIFNheSBZIGlmIHVuc3VyZS5cbiAgMzc6XHRcbiAgMzg6XHRjb25maWdcdElQX1ZTX0RFQlVHXG4gIDM5Olx0XHRib29sIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIGRlYnVnZ2luZ1wmIzM0O1xuICA0MDpcdFx0aGVscFxuICA0MTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGdldCBhZGRpdGlvbmFsIG1lc3NhZ2VzIHVzZWZ1bCBpblxuICA0MjpcdFx0ICBkZWJ1Z2dpbmcgdGhlIElQIHZpcnR1YWwgc2VydmVyIGNvZGUuIFlvdSBjYW4gY2hhbmdlIHRoZSBkZWJ1Z1xuICA0MzpcdFx0ICBsZXZlbCBpbiAvcHJvYy9zeXMvbmV0L2lwdjQvdnMvZGVidWdfbGV2ZWxcbiAgNDQ6XHRcbiAgNDU6XHRjb25maWdcdElQX1ZTX1RBQl9CSVRTXG4gIDQ2Olx0XHRpbnQgXCYjMzQ7SVBWUyBjb25uZWN0aW9uIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbiAgNDc6XHRcdHJhbmdlIDggMjAgaWYgITY0QklUXG4gIDQ4Olx0XHRyYW5nZSA4IDI3IGlmIDY0QklUXG4gIDQ5Olx0XHRkZWZhdWx0IDEyXG4gIDUwOlx0XHRoZWxwXG4gIDUxOlx0XHQgIFRoZSBJUFZTIGNvbm5lY3Rpb24gaGFzaCB0YWJsZSB1c2VzIHRoZSBjaGFpbmluZyBzY2hlbWUgdG8gaGFuZGxlXG4gIDUyOlx0XHQgIGhhc2ggY29sbGlzaW9ucy4gVXNpbmcgYSBiaWcgSVBWUyBjb25uZWN0aW9uIGhhc2ggdGFibGUgd2lsbCBncmVhdGx5XG4gIDUzOlx0XHQgIHJlZHVjZSBjb25mbGljdHMgd2hlbiB0aGVyZSBhcmUgaHVuZHJlZHMgb2YgdGhvdXNhbmRzIG9mIGNvbm5lY3Rpb25zXG4gIDU0Olx0XHQgIGluIHRoZSBoYXNoIHRhYmxlLlxuICA1NTpcdFxuICA1NjpcdFx0ICBOb3RlIHRoZSB0YWJsZSBzaXplIG11c3QgYmUgcG93ZXIgb2YgMi4gVGhlIHRhYmxlIHNpemUgd2lsbCBiZSB0aGVcbiAgNTc6XHRcdCAgdmFsdWUgb2YgMiB0byB0aGUgeW91ciBpbnB1dCBudW1iZXIgcG93ZXIuIFRoZSBudW1iZXIgdG8gY2hvb3NlIGlzXG4gIDU4Olx0XHQgIGZyb20gOCB0byAyNyBmb3IgNjRCSVQoMjAgb3RoZXJ3aXNlKSwgdGhlIGRlZmF1bHQgbnVtYmVyIGlzIDEyLFxuICA1OTpcdFx0ICB3aGljaCBtZWFucyB0aGUgdGFibGUgc2l6ZSBpcyA0MDk2LiBEb24mIzM5O3QgaW5wdXQgdGhlIG51bWJlciB0b29cbiAgNjA6XHRcdCAgc21hbGwsIG90aGVyd2lzZSB5b3Ugd2lsbCBsb3NlIHBlcmZvcm1hbmNlIG9uIGl0LiBZb3UgY2FuIGFkYXB0IHRoZVxuICA2MTpcdFx0ICB0YWJsZSBzaXplIHlvdXJzZWxmLCBhY2NvcmRpbmcgdG8geW91ciB2aXJ0dWFsIHNlcnZlciBhcHBsaWNhdGlvbi5cbiAgNjI6XHRcdCAgSXQgaXMgZ29vZCB0byBzZXQgdGhlIHRhYmxlIHNpemUgbm90IGZhciBsZXNzIHRoYW4gdGhlIG51bWJlciBvZlxuICA2MzpcdFx0ICBjb25uZWN0aW9ucyBwZXIgc2Vjb25kIG11bHRpcGx5aW5nIGF2ZXJhZ2UgbGFzdGluZyB0aW1lIG9mXG4gIDY0Olx0XHQgIGNvbm5lY3Rpb24gaW4gdGhlIHRhYmxlLiAgRm9yIGV4YW1wbGUsIHlvdXIgdmlydHVhbCBzZXJ2ZXIgZ2V0cyAyMDBcbiAgNjU6XHRcdCAgY29ubmVjdGlvbnMgcGVyIHNlY29uZCwgdGhlIGNvbm5lY3Rpb24gbGFzdHMgZm9yIDIwMCBzZWNvbmRzIGluXG4gIDY2Olx0XHQgIGF2ZXJhZ2UgaW4gdGhlIGNvbm5lY3Rpb24gdGFibGUsIHRoZSB0YWJsZSBzaXplIHNob3VsZCBiZSBub3QgZmFyXG4gIDY3Olx0XHQgIGxlc3MgdGhhbiAyMDB4MjAwLCBpdCBpcyBnb29kIHRvIHNldCB0aGUgdGFibGUgc2l6ZSAzMjc2OCAoMioqMTUpLlxuICA2ODpcdFxuICA2OTpcdFx0ICBBbm90aGVyIG5vdGUgdGhhdCBlYWNoIGNvbm5lY3Rpb24gb2NjdXBpZXMgMTI4IGJ5dGVzIGVmZmVjdGl2ZWx5IGFuZFxuICA3MDpcdFx0ICBlYWNoIGhhc2ggZW50cnkgdXNlcyA4IGJ5dGVzLCBzbyB5b3UgY2FuIGVzdGltYXRlIGhvdyBtdWNoIG1lbW9yeSBpc1xuICA3MTpcdFx0ICBuZWVkZWQgZm9yIHlvdXIgYm94LlxuICA3MjpcdFxuICA3MzpcdFx0ICBZb3UgY2FuIG92ZXJ3cml0ZSB0aGlzIG51bWJlciBzZXR0aW5nIGNvbm5fdGFiX2JpdHMgbW9kdWxlIHBhcmFtZXRlclxuICA3NDpcdFx0ICBvciBieSBhcHBlbmRpbmcgaXBfdnMuY29ubl90YWJfYml0cz0/IHRvIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIGlmXG4gIDc1Olx0XHQgIElQIFZTIHdhcyBjb21waWxlZCBidWlsdC1pbi5cbiAgNzY6XHRcbiAgNzc6XHRjb21tZW50IFwmIzM0O0lQVlMgdHJhbnNwb3J0IHByb3RvY29sIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbiAgNzg6XHRcbiAgNzk6XHRjb25maWdcdElQX1ZTX1BST1RPX1RDUFxuICA4MDpcdFx0Ym9vbCBcJiMzNDtUQ1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuICA4MTpcdFx0aGVscFxuICA4MjpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIFRDUCB0cmFuc3BvcnRcbiAgODM6XHRcdCAgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cbiAgODQ6XHRcbiAgODU6XHRjb25maWdcdElQX1ZTX1BST1RPX1VEUFxuICA4NjpcdFx0Ym9vbCBcJiMzNDtVRFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuICA4NzpcdFx0aGVscFxuICA4ODpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIFVEUCB0cmFuc3BvcnRcbiAgODk6XHRcdCAgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cbiAgOTA6XHRcbiAgOTE6XHRjb25maWdcdElQX1ZTX1BST1RPX0FIX0VTUFxuICA5MjpcdFx0ZGVmX2Jvb2wgSVBfVlNfUFJPVE9fRVNQIHx8IElQX1ZTX1BST1RPX0FIXG4gIDkzOlx0XG4gIDk0Olx0Y29uZmlnXHRJUF9WU19QUk9UT19FU1BcbiAgOTU6XHRcdGJvb2wgXCYjMzQ7RVNQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbiAgOTY6XHRcdGhlbHBcbiAgOTc6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBFU1AgKEVuY2Fwc3VsYXRpb25cbiAgOTg6XHRcdCAgU2VjdXJpdHkgUGF5bG9hZCkgdHJhbnNwb3J0IHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXG4gIDk5Olx0XG4gMTAwOlx0Y29uZmlnXHRJUF9WU19QUk9UT19BSFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzgzMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gUXVhbmRhcnkqKgoKUmlnaHQsIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIGtlcm5lbCBjb25maWcgZmlsZXMgYWdhaW4sIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGxvYWQgYmFsYW5jaW5nIHNjaGVkdWxlcnMuIE15IGluaXRpYWwgaHVuY2gsIGFuZCBpdCYjMzk7cyBhIHByZXR0eSBzdHJvbmcgb25lIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRoYXQgdGhlIGRlZmluaXRpb25zIGZvciB0aGluZ3MgbGlrZSBSb3VuZCBSb2JpbiAoYElQX1ZTX1JSYCkgYW5kIFdlaWdodGVkIFJvdW5kIFJvYmluIChgSVBfVlNfV1JSYCkgYXJlIGxpa2VseSBuZXN0ZWQgd2l0aGluIHRob3NlIGBjb25maWdgIGRpcmVjdGl2ZXMuIEkmIzM5O3ZlIHNlZW4gdGhhdCBwYXR0ZXJuIGNvdW50bGVzcyB0aW1lcyBiZWZvcmUgaW4gdGhpcyBzb3J0IG9mIGNvZGUuIFRoZXJlZm9yZSwgbGV0JiMzOTtzIGNvbmZpcm0gbXkgc3VzcGljaW9ucyBieSBleGFtaW5pbmcgdGhlIG5leHQgMTAwIGxpbmVzLiBUaGlzIHNob3VsZCBnaXZlIG1lIGVub3VnaCBjb250ZXh0IHRvIHNlZSBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgZGVmaW5lZCwgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsbHkgaG93IHRoZXkmIzM5O3JlIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBgaXBfdnNgIGZyYW1ld29yay4gSSBleHBlY3QgdG8gYmUgbG9va2luZyBmb3IgYXNzb2NpYXRlZCBkZWZpbmVzLCBkb2N1bWVudGF0aW9uIGNvbW1lbnRzLCBhbmQgYW55IGxvZ2ljIHRpZWQgdG8gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoZXNlIHNjaGVkdWxlcnMuIEl0JiMzOTtzIGEgZmFpcmx5IHN0YW5kYXJkIGFwcHJvYWNoIHRvIHBpbnBvaW50aW5nIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMTpcdFx0Ym9vbCBcJiMzNDtBSCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4gMTAyOlx0XHRoZWxwXG4gMTAzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgQUggKEF1dGhlbnRpY2F0aW9uXG4gMTA0Olx0XHQgIEhlYWRlcikgdHJhbnNwb3J0IHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXG4gMTA1Olx0XG4gMTA2Olx0Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXG4gMTA3Olx0XHRib29sIFwmIzM0O1NDVFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuIDEwODpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiAxMDk6XHRcdGhlbHBcbiAxMTA6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBTQ1RQIHRyYW5zcG9ydFxuIDExMTpcdFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxuIDExMjpcdFxuIDExMzpcdGNvbW1lbnQgXCYjMzQ7SVBWUyBzY2hlZHVsZXJcJiMzNDtcbiAxMTQ6XHRcbiAxMTU6XHRjb25maWdcdElQX1ZTX1JSXG4gMTE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtyb3VuZC1yb2JpbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTE3Olx0XHRoZWxwXG4gMTE4Olx0XHQgIFRoZSByb2Jpbi1yb2JpbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBzaW1wbHkgZGlyZWN0cyBuZXR3b3JrXG4gMTE5Olx0XHQgIGNvbm5lY3Rpb25zIHRvIGRpZmZlcmVudCByZWFsIHNlcnZlcnMgaW4gYSByb3VuZC1yb2JpbiBtYW5uZXIuXG4gMTIwOlx0XG4gMTIxOlx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTIyOlx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxMjM6XHQgXG4gMTI0Olx0Y29uZmlnXHRJUF9WU19XUlJcbiAxMjU6XHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcJiMzNDtcbiAxMjY6XHRcdGhlbHBcbiAxMjc6XHRcdCAgVGhlIHdlaWdodGVkIHJvYmluLXJvYmluIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xuIDEyODpcdFx0ICBjb25uZWN0aW9ucyB0byBkaWZmZXJlbnQgcmVhbCBzZXJ2ZXJzIGJhc2VkIG9uIHNlcnZlciB3ZWlnaHRzXG4gMTI5Olx0XHQgIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLiBTZXJ2ZXJzIHdpdGggaGlnaGVyIHdlaWdodHMgcmVjZWl2ZVxuIDEzMDpcdFx0ICBuZXcgY29ubmVjdGlvbnMgZmlyc3QgdGhhbiB0aG9zZSB3aXRoIGxlc3Mgd2VpZ2h0cywgYW5kIHNlcnZlcnNcbiAxMzE6XHRcdCAgd2l0aCBoaWdoZXIgd2VpZ2h0cyBnZXQgbW9yZSBjb25uZWN0aW9ucyB0aGFuIHRob3NlIHdpdGggbGVzc1xuIDEzMjpcdFx0ICB3ZWlnaHRzIGFuZCBzZXJ2ZXJzIHdpdGggZXF1YWwgd2VpZ2h0cyBnZXQgZXF1YWwgY29ubmVjdGlvbnMuXG4gMTMzOlx0XG4gMTM0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTM1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxMzY6XHRcbiAxMzc6XHRjb25maWdcdElQX1ZTX0xDXG4gMTM4Olx0XHR0cmlzdGF0ZSBcJiMzNDtsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbiAxMzk6XHRcdGhlbHBcbiAxNDA6XHRcdCAgVGhlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXG4gMTQxOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgbnVtYmVyIG9mIGFjdGl2ZSBcbiAxNDI6XHRcdCAgY29ubmVjdGlvbnMuXG4gMTQzOlx0XG4gMTQ0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTQ1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxNDY6XHRcbiAxNDc6XHRjb25maWdcdElQX1ZTX1dMQ1xuIDE0ODpcdFx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTQ5Olx0XHRoZWxwXG4gMTUwOlx0XHQgIFRoZSB3ZWlnaHRlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xuIDE1MTpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IGFjdGl2ZSBjb25uZWN0aW9uc1xuIDE1MjpcdFx0ICBub3JtYWxpemVkIGJ5IHRoZSBzZXJ2ZXIgd2VpZ2h0LlxuIDE1MzpcdFxuIDE1NDpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDE1NTpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTU2Olx0XG4gMTU3Olx0Y29uZmlnICBJUF9WU19GT1xuIDE1ODpcdFx0XHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXCYjMzQ7XG4gMTU5Olx0XHRoZWxwXG4gMTYwOlx0XHQgIFRoZSB3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcbiAxNjE6XHRcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBoaWdoZXN0IHdlaWdodCB0aGF0IGlzXG4gMTYyOlx0XHQgIGN1cnJlbnRseSBhdmFpbGFibGUuXG4gMTYzOlx0XG4gMTY0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTY1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxNjY6XHRcbiAxNjc6XHRjb25maWcgIElQX1ZTX09WRlxuIDE2ODpcdFx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZ1wmIzM0O1xuIDE2OTpcdFx0aGVscFxuIDE3MDpcdFx0ICBUaGUgd2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXG4gMTcxOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xuIDE3MjpcdFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlIGFuZCBvdmVyZmxvd3MgdG8gdGhlIG5leHQgd2hlbiBhY3RpdmVcbiAxNzM6XHRcdCAgY29ubmVjdGlvbnMgZXhjZWVkIHRoZSBub2RlJiMzOTtzIHdlaWdodC5cbiAxNzQ6XHRcbiAxNzU6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAxNzY6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDE3NzpcdFxuIDE3ODpcdGNvbmZpZ1x0SVBfVlNfTEJMQ1xuIDE3OTpcdFx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTgwOlx0XHRoZWxwXG4gMTgxOlx0XHQgIFRoZSBsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGlzIGZvclxuIDE4MjpcdFx0ICBkZXN0aW5hdGlvbiBJUCBsb2FkIGJhbGFuY2luZy4gSXQgaXMgdXN1YWxseSB1c2VkIGluIGNhY2hlIGNsdXN0ZXIuXG4gMTgzOlx0XHQgIFRoaXMgYWxnb3JpdGhtIHVzdWFsbHkgZGlyZWN0cyBwYWNrZXQgZGVzdGluZWQgZm9yIGFuIElQIGFkZHJlc3MgdG9cbiAxODQ6XHRcdCAgaXRzIHNlcnZlciBpZiB0aGUgc2VydmVyIGlzIGFsaXZlIGFuZCB1bmRlciBsb2FkLiBJZiB0aGUgc2VydmVyIGlzXG4gMTg1Olx0XHQgIG92ZXJsb2FkZWQgKGl0cyBhY3RpdmUgY29ubmVjdGlvbiBudW1iZXJzIGlzIGxhcmdlciB0aGFuIGl0cyB3ZWlnaHQpXG4gMTg2Olx0XHQgIGFuZCB0aGVyZSBpcyBhIHNlcnZlciBpbiBpdHMgaGFsZiBsb2FkLCB0aGVuIGFsbG9jYXRlIHRoZSB3ZWlnaHRlZFxuIDE4NzpcdFx0ICBsZWFzdC1jb25uZWN0aW9uIHNlcnZlciB0byB0aGlzIElQIGFkZHJlc3MuXG4gMTg4Olx0XG4gMTg5Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTkwOlx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxOTE6XHRcbiAxOTI6XHRjb25maWcgIElQX1ZTX0xCTENSXG4gMTkzOlx0XHR0cmlzdGF0ZSBcJiMzNDtsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1wmIzM0O1xuIDE5NDpcdFx0aGVscFxuIDE5NTpcdFx0ICBUaGUgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcbiAxOTY6XHRcdCAgYWxnb3JpdGhtIGlzIGFsc28gZm9yIGRlc3RpbmF0aW9uIElQIGxvYWQgYmFsYW5jaW5nLiBJdCBpcyBcbiAxOTc6XHRcdCAgdXN1YWxseSB1c2VkIGluIGNhY2hlIGNsdXN0ZXIuIEl0IGRpZmZlcnMgZnJvbSB0aGUgTEJMQyBzY2hlZHVsaW5nXG4gMTk4Olx0XHQgIGFzIGZvbGxvd3M6IHRoZSBsb2FkIGJhbGFuY2VyIG1haW50YWlucyBtYXBwaW5ncyBmcm9tIGEgdGFyZ2V0XG4gMTk5Olx0XHQgIHRvIGEgc2V0IG9mIHNlcnZlciBub2RlcyB0aGF0IGNhbiBzZXJ2ZSB0aGUgdGFyZ2V0LiBSZXF1ZXN0cyBmb3JcbiAyMDA6XHRcdCAgYSB0YXJnZXQgYXJlIGFzc2lnbmVkIHRvIHRoZSBsZWFzdC1jb25uZWN0aW9uIG5vZGUgaW4gdGhlIHRhcmdldCYjMzk7c1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTY2NwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgSVBWUyBzY2hlZHVsaW5nIG1ldGhvZHM6CgoqKkFuYWx5emluZyBJUFZTIFNjaGVkdWxpbmcgQWxnb3JpdGhtcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIGxpc3Qgb2YgSVBWUyBzY2hlZHVsaW5nIGFsZ29yaXRobXMuIFdlIGhhdmUgdGhlIHVzdWFsIHN1c3BlY3RzLCBzdGFydGluZyB3aXRoIHRoZSBiYXNlIGBJUF9WU2AgLSB0aGUgZm91bmRhdGlvbmFsIHJvdW5kLXJvYmluIHNjaGVtZS4gVGhlbiB0aGVyZSYjMzk7cyBgSVBfVlNfUlJgLCB3aGljaCBpcyBjbGFzc2ljLCBidXQgbGV0JiMzOTtzIGRpdmUgaW50byBzb21lIG1vcmUgYWR2YW5jZWQgb3B0aW9ucy4gYElQX1ZTX1dSUmAgc2lnbmlmaWVzIFdlaWdodGVkIFJvdW5kIFJvYmluLCBnaXZpbmcgbW9yZSB3ZWlnaHQgdG8gY2VydGFpbiByZWFsIHNlcnZlcnMgYmFzZWQgb24gY2FwYWNpdHkgb3IgcHJpb3JpdHksIHRoYXQmIzM5O3MgdXNlZnVsLiBOZXh0IGlzIGBJUF9WU19MQ2AsIExlYXN0IENvbm5lY3Rpb25zIHdoaWNoIEkgb2Z0ZW4gdXNlLiBXZSBoYXZlIGBJUF9WU19XTENgIC0gV2VpZ2h0ZWQgTGVhc3QgQ29ubmVjdGlvbnMuIEl0JiMzOTtzIGEgc29saWQgY2hvaWNlIGZvciBiYWxhbmNpbmcgbG9hZCBiYXNlZCBvbiBzZXJ2ZXIgY2FwYWNpdHkgYW5kIGNvbm5lY3Rpb24gY291bnQuIGBJUF9WU19GT2AsIHRoYXQmIzM5O3MgdGhlICYjMzQ7ZmFzdGVzdCBvbmUmIzM0OyB0aGF0IGlzIHJhcmVseSB1c2VkLiBMZXQmIzM5O3Mgc2VlLi4uIGBJUF9WU19PVkZgLCBJIGhhdmVuJiMzOTt0IG5lZWRlZCB0byB1c2UgdGhhdCBtdWNoLiBUaGVuLCB3ZSBnZXQgaW50byBtb3JlIGFkdmFuY2VkIGNvbnNpZGVyYXRpb25zOiBgSVBfVlNfTEJMQ2AsIHRoZSBMb2NhbGl0eS1CYXNlZCBMZWFzdCBDb25uZWN0aW9ucy4gQW5kLCBmaW5hbGx5LCBgSVBfVlNfTEJMQ1JgIHdoaWNoIGFkZHMgbG9jYWxpdHkgd2l0aCBhIHJlcGxpY2F0aW9uIGNvbXBvbmVudC4gVGltZSB0byBjb21wYXJlIHRoZSBlZmZlY3RpdmVuZXNzIG9mIGVhY2guIExldCYjMzk7cyBkaWcgZGVlcGVyIGludG8gdGhlIG51YW5jZXMgb2YgZWFjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMTpcdFx0ICBzZXJ2ZXIgc2V0LiBJZiBhbGwgdGhlIG5vZGUgaW4gdGhlIHNlcnZlciBzZXQgYXJlIG92ZXIgbG9hZGVkLFxuIDIwMjpcdFx0ICBpdCBwaWNrcyB1cCBhIGxlYXN0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgY2x1c3RlciBhbmQgYWRkcyBpdFxuIDIwMzpcdFx0ICBpbiB0aGUgc2V2ZXIgc2V0IGZvciB0aGUgdGFyZ2V0LiBJZiB0aGUgc2VydmVyIHNldCBoYXMgbm90IGJlZW5cbiAyMDQ6XHRcdCAgbW9kaWZpZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGltZSwgdGhlIG1vc3QgbG9hZGVkIG5vZGUgaXMgcmVtb3ZlZFxuIDIwNTpcdFx0ICBmcm9tIHRoZSBzZXJ2ZXIgc2V0LCBpbiBvcmRlciB0byBhdm9pZCBoaWdoIGRlZ3JlZSBvZiByZXBsaWNhdGlvbi5cbiAyMDY6XHRcbiAyMDc6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAyMDg6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDIwOTpcdFxuIDIxMDpcdGNvbmZpZ1x0SVBfVlNfREhcbiAyMTE6XHRcdHRyaXN0YXRlIFwmIzM0O2Rlc3RpbmF0aW9uIGhhc2hpbmcgc2NoZWR1bGluZ1wmIzM0O1xuIDIxMjpcdFx0aGVscFxuIDIxMzpcdFx0ICBUaGUgZGVzdGluYXRpb24gaGFzaGluZyBzY2hlZHVsaW5nIGFsZ29yaXRobSBhc3NpZ25zIG5ldHdvcmtcbiAyMTQ6XHRcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlcnMgdGhyb3VnaCBsb29raW5nIHVwIGEgc3RhdGljYWxseSBhc3NpZ25lZFxuIDIxNTpcdFx0ICBoYXNoIHRhYmxlIGJ5IHRoZWlyIGRlc3RpbmF0aW9uIElQIGFkZHJlc3Nlcy5cbiAyMTY6XHRcbiAyMTc6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAyMTg6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDIxOTpcdFxuIDIyMDpcdGNvbmZpZ1x0SVBfVlNfU0hcbiAyMjE6XHRcdHRyaXN0YXRlIFwmIzM0O3NvdXJjZSBoYXNoaW5nIHNjaGVkdWxpbmdcJiMzNDtcbiAyMjI6XHRcdGhlbHBcbiAyMjM6XHRcdCAgVGhlIHNvdXJjZSBoYXNoaW5nIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFzc2lnbnMgbmV0d29ya1xuIDIyNDpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVycyB0aHJvdWdoIGxvb2tpbmcgdXAgYSBzdGF0aWNhbGx5IGFzc2lnbmVkXG4gMjI1Olx0XHQgIGhhc2ggdGFibGUgYnkgdGhlaXIgc291cmNlIElQIGFkZHJlc3Nlcy5cbiAyMjY6XHRcbiAyMjc6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAyMjg6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDIyOTpcdFxuIDIzMDpcdGNvbmZpZ1x0SVBfVlNfTUhcbiAyMzE6XHRcdHRyaXN0YXRlIFwmIzM0O21hZ2xldiBoYXNoaW5nIHNjaGVkdWxpbmdcJiMzNDtcbiAyMzI6XHRcdGhlbHBcbiAyMzM6XHRcdCAgVGhlIG1hZ2xldiBjb25zaXN0ZW50IGhhc2hpbmcgc2NoZWR1bGluZyBhbGdvcml0aG0gcHJvdmlkZXMgdGhlXG4gMjM0Olx0XHQgIEdvb2dsZSYjMzk7cyBNYWdsZXYgaGFzaGluZyBhbGdvcml0aG0gYXMgYSBJUFZTIHNjaGVkdWxlci4gSXQgYXNzaWduc1xuIDIzNTpcdFx0ICBuZXR3b3JrIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXJzIHRocm91Z2ggbG9va2luZyB1cCBhIHN0YXRpY2FsbHlcbiAyMzY6XHRcdCAgYXNzaWduZWQgc3BlY2lhbCBoYXNoIHRhYmxlIGNhbGxlZCB0aGUgbG9va3VwIHRhYmxlLiBNYWdsZXYgaGFzaGluZ1xuIDIzNzpcdFx0ICBpcyB0byBhc3NpZ24gYSBwcmVmZXJlbmNlIGxpc3Qgb2YgYWxsIHRoZSBsb29rdXAgdGFibGUgcG9zaXRpb25zXG4gMjM4Olx0XHQgIHRvIGVhY2ggZGVzdGluYXRpb24uXG4gMjM5Olx0XG4gMjQwOlx0XHQgIFRocm91Z2ggdGhpcyBvcGVyYXRpb24sIFRoZSBtYWdsZXYgaGFzaGluZyBnaXZlcyBhbiBhbG1vc3QgZXF1YWxcbiAyNDE6XHRcdCAgc2hhcmUgb2YgdGhlIGxvb2t1cCB0YWJsZSB0byBlYWNoIG9mIHRoZSBkZXN0aW5hdGlvbnMgYW5kIHByb3ZpZGVzXG4gMjQyOlx0XHQgIG1pbmltYWwgZGlzcnVwdGlvbiBieSB1c2luZyB0aGUgbG9va3VwIHRhYmxlLiBXaGVuIHRoZSBzZXQgb2ZcbiAyNDM6XHRcdCAgZGVzdGluYXRpb25zIGNoYW5nZXMsIGEgY29ubmVjdGlvbiB3aWxsIGxpa2VseSBiZSBzZW50IHRvIHRoZSBzYW1lXG4gMjQ0Olx0XHQgIGRlc3RpbmF0aW9uIGFzIGl0IHdhcyBiZWZvcmUuXG4gMjQ1Olx0XG4gMjQ2Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMjQ3Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAyNDg6XHRcbiAyNDk6XHRjb25maWdcdElQX1ZTX1NFRFxuIDI1MDpcdFx0dHJpc3RhdGUgXCYjMzQ7c2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkgc2NoZWR1bGluZ1wmIzM0O1xuIDI1MTpcdFx0aGVscFxuIDI1MjpcdFx0ICBUaGUgc2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkgc2NoZWR1bGluZyBhbGdvcml0aG0gYXNzaWducyBuZXR3b3JrXG4gMjUzOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgc2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkuIFRoZSBcbiAyNTQ6XHRcdCAgZXhwZWN0ZWQgZGVsYXkgdGhhdCB0aGUgam9iIHdpbGwgZXhwZXJpZW5jZSBpcyAoQ2kgJiM0MzsgMSkgLyBVaSBpZiBcbiAyNTU6XHRcdCAgc2VudCB0byB0aGUgaXRoIHNlcnZlciwgaW4gd2hpY2ggQ2kgaXMgdGhlIG51bWJlciBvZiBjb25uZWN0aW9uc1xuIDI1NjpcdFx0ICBvbiB0aGUgaXRoIHNlcnZlciBhbmQgVWkgaXMgdGhlIGZpeGVkIHNlcnZpY2UgcmF0ZSAod2VpZ2h0KVxuIDI1NzpcdFx0ICBvZiB0aGUgaXRoIHNlcnZlci5cbiAyNTg6XHRcbiAyNTk6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAyNjA6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDI2MTpcdFxuIDI2MjpcdGNvbmZpZ1x0SVBfVlNfTlFcbiAyNjM6XHRcdHRyaXN0YXRlIFwmIzM0O25ldmVyIHF1ZXVlIHNjaGVkdWxpbmdcJiMzNDtcbiAyNjQ6XHRcdGhlbHBcbiAyNjU6XHRcdCAgVGhlIG5ldmVyIHF1ZXVlIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFkb3B0cyBhIHR3by1zcGVlZCBtb2RlbC5cbiAyNjY6XHRcdCAgV2hlbiB0aGVyZSBpcyBhbiBpZGxlIHNlcnZlciBhdmFpbGFibGUsIHRoZSBqb2Igd2lsbCBiZSBzZW50IHRvXG4gMjY3Olx0XHQgIHRoZSBpZGxlIHNlcnZlciwgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBhIGZhc3Qgb25lLiBXaGVuIHRoZXJlXG4gMjY4Olx0XHQgIGlzIG5vIGlkbGUgc2VydmVyIGF2YWlsYWJsZSwgdGhlIGpvYiB3aWxsIGJlIHNlbnQgdG8gdGhlIHNlcnZlclxuIDI2OTpcdFx0ICB0aGF0IG1pbmltaXplIGl0cyBleHBlY3RlZCBkZWxheSAoVGhlIFNob3J0ZXN0IEV4cGVjdGVkIERlbGF5XG4gMjcwOlx0XHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtKS5cbiAyNzE6XHRcbiAyNzI6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAyNzM6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDI3NDpcdFxuIDI3NTpcdGNvbmZpZ1x0SVBfVlNfVFdPU1xuIDI3NjpcdFx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgcmFuZG9tIHR3b3MgY2hvaWNlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1wmIzM0O1xuIDI3NzpcdFx0aGVscFxuIDI3ODpcdFx0ICBUaGUgd2VpZ2h0ZWQgcmFuZG9tIHR3b3MgY2hvaWNlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1xuIDI3OTpcdFx0ICBhbGdvcml0aG0gcGlja3MgdHdvIHJhbmRvbSByZWFsIHNlcnZlcnMgYW5kIGRpcmVjdHMgbmV0d29ya1xuIDI4MDpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IGFjdGl2ZSBjb25uZWN0aW9uc1xuIDI4MTpcdFx0ICBub3JtYWxpemVkIGJ5IHRoZSBzZXJ2ZXIgd2VpZ2h0LlxuIDI4MjpcdFxuIDI4MzpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDI4NDpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMjg1Olx0XG4gMjg2Olx0Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbiAyODc6XHRcbiAyODg6XHRjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbiAyODk6XHRcdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbiAyOTA6XHRcdHJhbmdlIDQgMjBcbiAyOTE6XHRcdGRlZmF1bHQgOFxuIDI5MjpcdFx0aGVscFxuIDI5MzpcdFx0ICBUaGUgc291cmNlIGhhc2hpbmcgc2NoZWR1bGVyIG1hcHMgc291cmNlIElQcyB0byBkZXN0aW5hdGlvbnNcbiAyOTQ6XHRcdCAgc3RvcmVkIGluIGEgaGFzaCB0YWJsZS4gVGhpcyB0YWJsZSBpcyB0aWxlZCBieSBlYWNoIGRlc3RpbmF0aW9uXG4gMjk1Olx0XHQgIHVudGlsIGFsbCBzbG90cyBpbiB0aGUgdGFibGUgYXJlIGZpbGxlZC4gV2hlbiB1c2luZyB3ZWlnaHRzIHRvXG4gMjk2Olx0XHQgIGFsbG93IGRlc3RpbmF0aW9ucyB0byByZWNlaXZlIG1vcmUgY29ubmVjdGlvbnMsIHRoZSB0YWJsZSBpc1xuIDI5NzpcdFx0ICB0aWxlZCBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSB3ZWlnaHRzIHNwZWNpZmllZC4gVGhlIHRhYmxlXG4gMjk4Olx0XHQgIG5lZWRzIHRvIGJlIGxhcmdlIGVub3VnaCB0byBlZmZlY3RpdmVseSBmaXQgYWxsIHRoZSBkZXN0aW5hdGlvbnNcbiAyOTk6XHRcdCAgbXVsdGlwbGllZCBieSB0aGVpciByZXNwZWN0aXZlIHdlaWdodHMuXG4gMzAwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NjYxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogOTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBJUFZTIFNjaGVkdWxlciBNb2RpZmljYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBhIGNvbXByZWhlbnNpdmUgbW9kaWZpY2F0aW9uIHRvdWNoaW5nIGFsbW9zdCBldmVyeSBJUFZTIHNjaGVkdWxlciB3ZSYjMzk7dmUgZ290OiBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLiBUaGUgcGF0Y2ggaXMgY2hhbmdpbmcgYSBsYXJnZSBzd2F0aGUgb2YgY29kZSwgdG91Y2hpbmcgYGlwX3ZzX2Nvbm4uY2AsIGBpcF92c19jdGwuY2AsIGFuZCBhbGwgdGhlIHNjaGVkdWxlci1zcGVjaWZpYyBmaWxlcyB0aGVtc2VsdmVzLiBUaGlzIGltcGxpZXMgYSBzaWduaWZpY2FudCBpbXBhY3QgYWNyb3NzIHRoZSBlbnRpcmUgbG9hZCBiYWxhbmNpbmcgaW5mcmFzdHJ1Y3R1cmUuIE5hdHVyYWxseSwgdGhpcyBtZWFucyB3ZSBzaG91bGQgZW5zdXJlIHRoYXQgYElQX1ZTYCBhbmQgYWxsIG9mIHRoZXNlIHNjaGVkdWxlcnMgYXJlIGVuYWJsZWQgZHVyaW5nIGJ1aWxkIHRpbWUuCgpNeSBhdHRlbnRpb24gaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gdGhlIGNvcmUgSVBWUyBmdW5jdGlvbnMgdGhhdCBhcmUgdGhlIGJlZHJvY2sgb2YgZGVzdGluYXRpb24gbWFuYWdlbWVudDogYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCwgYGlwX3ZzX2JpbmRfZGVzdGAsIGBpcF92c191bmJpbmRfZGVzdGAsIGBpcF92c19hZGRfZGVzdGAsIGFuZCBgaXBfdnNfZWRpdF9kZXN0YCwgYWxvbmcgd2l0aCB0aGUgcmVsYXRlZCBgX19pcF92c191cGRhdGVfZGVzdGAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgcGllY2VzIHRoYXQgd291bGQgYmUgYWZmZWN0ZWQgYnkgc3VjaCBhIGJyb2FkIGNoYW5nZS4KClNwZWNpZmljYWxseSwgSSYjMzk7bSBub3cgemVyb2luZyBpbiBvbiBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLiBJJiMzOTttIGNvbmNlcm5lZCBhYm91dCB0aGUgaW5saW5lIGRlY2xhcmF0aW9uLCB3aGljaCBpcyBzaG93biBpbiB0aGUgcGF0Y2guIEkgd2FzIGluaXRpYWxseSB0aHJvd24gYnkgdGhlIGBfX2Fsd2F5c19pbmxpbmVgIGRlY2xhcmF0aW9uIGluIGBpcF92c19jb25uLmNgIGFuZCBpdHMgcHJlc2VuY2UgaW4gYGluY2x1ZGUvbmV0L2lwX3ZzLmhgLiBJZiBpdCYjMzk7cyBpbmxpbmUsIGhvdyBjYW4gb3RoZXIgbW9kdWxlcyBsaWtlIGBpcF92c19jdGwuY2AgZGlyZWN0bHkgY2FsbCBpdD8gVGhhdCYjMzk7cyBhIHRleHRib29rIHNvdXJjZSBvZiBsaW5rZXIgZXJyb3JzIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4gSG93ZXZlciwgYSBxdWljayBzY2FuIG9mIHRoZSBwYXRjaCByZXZlYWxzIHRoZSBmdW5jdGlvbiBpdHNlbGYgaW4gYGlwX3ZzX2Nvbm4uY2AuIFRoZSBjb21tZW50IGV4cGxhaW5zIGl0cyBwdXJwb3NlOiBtYW5hZ2luZyB0aGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBkZXN0aW5hdGlvbiBjb25uZWN0aW9uIGNvdW50cyBhbmQgdGhyZXNob2xkcy4gVGhlIGxvZ2ljIGlzIGNsZWFybHkgZGVmaW5lZC4KClRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6ICpkb2VzIHRoaXMgYnVpbGQ/KiBUaGUgcHJvbXB0IHN0YXRlcyB0aGUgY2hhbmdlcyBhcmUgYWxyZWFkeSBhcHBsaWVkLCBzbyBhbnkgcG90ZW50aWFsIGJ1aWxkIGVycm9ycyBzaG91bGQgaGF2ZSBiZWVuIGNhdWdodC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgaXBfdnNfY29ubi5jYCBhbmQgYGlwX3ZzX2N0bC5jYCBidWlsZCBjb3JyZWN0bHksIGJ1dCB0aGlzIGlzIHRoZSBmaXJzdCB0aGluZyBJJiMzOTtkIGxvb2sgZm9yLiBBIG1pc3NpbmcgaW5jbHVkZSBvciBpbmNvcnJlY3QgdXNlIG9mIHRoZSBpbmxpbmUga2V5d29yZCB3b3VsZCBiZSBhIHNlcmlvdXMgcmVkIGZsYWcuIEkgd2FudCB0byBjb25maXJtIHRoYXQgYGlwX3ZzX2N0bC5jYCBjYW4gaW5kZWVkIGNhbGwgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYC4gVGhpcyBpcyBhIGNsYXNzaWMgcG90ZW50aWFsIGdvdGNoYSwgYW5kIGl0IGlzIHNvbWV0aGluZyB0byBlbnN1cmUgaXMgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaXBfdnMuaD0xOTEyPXN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19kZXN0X3B1dF9hbmRfZnJlZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbi0tXG5pbmNsdWRlL25ldC9pcF92cy5oLTE5MTctXG5pbmNsdWRlL25ldC9pcF92cy5oOjE5MTg6dm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCk7XG5pbmNsdWRlL25ldC9pcF92cy5oLTE5MTktXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz05ODg9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTk4LSAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo5OTk6X19hbHdheXNfaW5saW5lIHZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwMDAte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTAyNz1pcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwODMtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwODQ6XHRpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0KTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA4NS19XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMTQ1PXN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c191bmJpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTc4LVx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTE3OTpcdFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExODAtXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTEzMTE9X19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTM3Ni1cdFx0V1JJVEVfT05DRShkZXN0LVx1MDAzZWxfdGhyZXNob2xkLCB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTM3NzpcdFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTM3OC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5NzYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgQ3Jvc3MtRmlsZSBGdW5jdGlvbiBDYWxsIElzc3VlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBzb21ldGhpbmcmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LiBJIHNlZSBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIGFuZCB0aGUgZGVmaW5pdGlvbiBpbiBgaXBfdnNfY29ubi5jYC4gVGhlIGtpY2tlciBpcywgaXQmIzM5O3MgZGVmaW5lZCBhcyBgX19hbHdheXNfaW5saW5lYC4gSWYgaXQmIzM5O3MgKmFsd2F5cyogaW5saW5lZCB3aXRoaW4gdGhhdCBgLmNgIGZpbGUsIHRoZXJlJiMzOTtzIG5vIHdheSBpdCYjMzk7cyBkaXJlY3RseSBjYWxsYWJsZSBmcm9tIGFub3RoZXIgYC5jYCBmaWxlLCBsaWtlIGBpcF92c19jdGwuY2AuIFRoYXQganVzdCB3b3VsZG4mIzM5O3Qgd29yay4gCgpOb3csIGEgZmxlZXRpbmcgdGhvdWdodC4uLiBjb3VsZCBgX19hbHdheXNfaW5saW5lYCBqdXN0IGJlIGEgY29tcGlsZXIgaGludCwgYW5kIG1heWJlIGl0ICpzdGlsbCogZ2VuZXJhdGVzIGFuIG91dC1vZi1saW5lIGNvcHk/IFRoYXQgc2VlbXMgdW5saWtlbHksIHRob3VnaC4gVXN1YWxseSwgYF9fYWx3YXlzX2lubGluZWAgcHJldHR5IG11Y2ggZm9yY2VzIHRoZSBmdW5jdGlvbiB0byBiZSBpbmxpbmVkLCBhbmQgaXQgdXN1YWxseSBpbXBsaWVzIGBpbmxpbmVgLiBJZiBpdCB3YXNuJiMzOTt0IGBzdGF0aWNgLCBpdCAqbWlnaHQqIGdlbmVyYXRlIGFuIGV4dGVybmFsIHN5bWJvbCwgYnV0IGhvbmVzdGx5LCBgX19hbHdheXNfaW5saW5lYCB3aXRob3V0IGBzdGF0aWNgIGlzIGp1c3Qgc3RyYW5nZS4gSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgYGlwX3ZzX2Nvbm4uY2AgdG8gc2VlIGlmIGl0JiMzOTtzIGV4cGxpY2l0bHkgZXhwb3J0ZWQgc29tZWhvdywgb3IgaWYgdGhlcmUmIzM5O3Mgc29tZSBvdGhlciB0cmlja2VyeSBnb2luZyBvbi4gTmVlZCB0byB2ZXJpZnkgdGhpcyBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5OTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDk5MDpcdFx0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpXG4gOTkxOlx0XHRcdCYjNDM7IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4gOTkyOlx0fVxuIDk5MzpcdFxuIDk5NDpcdC8qIFVwZGF0ZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIG51bWJlciBvZiBkZXN0IGNvbm5zIGFuZCBsb3dlci91cHBlclxuIDk5NTpcdCAqIGNvbm5lY3Rpb24gdGhyZXNob2xkczpcbiA5OTY6XHQgKiAtIGNvbm5zIHJlYWNoIHVfdGhyZXNob2xkIGFuZCBleGNlZWQgaXQ6IHNldCB0aGUgZmxhZ1xuIDk5NzpcdCAqIC0gY29ubnMgZ28gYmVsb3cgbF90aHJlc2hvbGQgKG9yIDc1JSBvZiB1X3RocmVzaG9sZCk6IGNsZWFyIHRoZSBmbGFnXG4gOTk4Olx0ICovXG4gOTk5Olx0X19hbHdheXNfaW5saW5lIHZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4xMDAwOlx0e1xuMTAwMTpcdFx0aW50IGNvbm5zO1xuMTAwMjpcdFx0dTMyIGwsIHU7XG4xMDAzOlx0XG4xMDA0Olx0XHR1ID0gUkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpO1xuMTAwNTpcdFx0aWYgKCF1KVxuMTAwNjpcdFx0XHRnb3RvIHVuc2V0O1xuMTAwNzpcdFx0Y29ubnMgPSBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCk7XG4xMDA4Olx0XHRpZiAoY29ubnMgXHUwMDNlPSB1KSB7XG4xMDA5Olx0XHRcdHNldF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDc5NQoJCQkJCQkJb3V0cHV0OiAyODIKCQkJCQkJCXRob3VnaHRzOiA4MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBhIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGBfX2Fsd2F5c19pbmxpbmVgIHdpdGhvdXQgYHN0YXRpY2AgaW4gR0NDLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgaXQgd291bGQgYmUgaW5saW5lZCBldmVyeXdoZXJlIGJ1dCBhbHNvIGhhdmUgYW4gZXh0ZXJuYWwgZGVmaW5pdGlvbi4gVGhlbiBJIHJlbWVtYmVyZWQgQzk5JiMzOTtzIGBpbmxpbmVgIGJlaGF2aW9yOiB3aXRob3V0IGBzdGF0aWNgLCBubyBleHRlcm5hbCBkZWZpbml0aW9uIGlzIGVtaXR0ZWQgdW5sZXNzIGBleHRlcm4gaW5saW5lYCBpcyB1c2VkLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBpZiB0aGlzIGlubGluZWQgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGlwX3ZzX2N0bC5jYCwgdGhlcmUgbWlnaHQgYmUgYW4gdW5kZWZpbmVkIHJlZmVyZW5jZSBpZiBubyBleHRlcm5hbCBkZWZpbml0aW9uIGV4aXN0cy4gQWN0dWFsbHksIG5vIG5lZWQgdG8gY29tcGlsZSwgSSYjMzk7bSBqdXN0IGFmdGVyIHRoZSByZXN1bHRzLgoKVGhlIHBhdGNoIHRvdWNoZXMgYGlwX3ZzX2Nvbm4uY2AsIGBpcF92c19jdGwuY2AsIGFuZCB0aGUgc2NoZWR1bGVycywgc28gSSBuZWVkIHRvIGhvbmUgaW4gb24gdGhlIHJlbGV2YW50IHN5bWJvbHMuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIHdhdGNoIGFyZSwgd2l0aG91dCBhIGRvdWJ0LCB0aGVzZTogYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCwgYGlwX3ZzX2JpbmRfZGVzdGAsIGBpcF92c191bmJpbmRfZGVzdGAsIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYGlwX3ZzX2FkZF9kZXN0YCwgYW5kIGBpcF92c19lZGl0X2Rlc3RgLgoKTGV0JiMzOTtzIGFsc28gY2FzdCBhIHdpZGVyIG5ldCBhbmQgbG9vayBhdCBvdGhlciBmdW5jdGlvbnMgYWZmZWN0ZWQuIFRoZSBzY2hlZHVsZXJzIGNsZWFybHkgbWF0dGVyIHRvbywgc28gSSYjMzk7bGwgYWxzbyBhZGQgdGhlc2UgdG8gdGhlIG1lbnRhbCBjaGVja2xpc3Q6IGBpcF92c19mb19zY2hlZHVsZWAsIGBfX2lwX3ZzX2xibGNfc2NoZWR1bGVgLCBgX19pcF92c19sYmxjcl9zY2hlZHVsZWAsIGBpcF92c19sY19zY2hlZHVsZWAsIGBpcF92c19taF9zY2hlZHVsZWAgKGFuZCBub3RlIHRoYXQgaXQgbW9kaWZpZXMgYGlzX3VuYXZhaWxhYmxlYCBpbiBgaXBfdnNfbWguY2ApLCBgaXBfdnNfbnFfc2NoZWR1bGVgLCBgaXBfdnNfb3ZmX3NjaGVkdWxlYCwgYGlwX3ZzX3JyX3NjaGVkdWxlYCwgYGlwX3ZzX3NlZF9zY2hlZHVsZWAsIGBpc191bmF2YWlsYWJsZWAgaW4gYGlwX3ZzX3NoLmNgLCBgaXBfdnNfdHdvc19zY2hlZHVsZWAsIGBpcF92c193bGNfc2NoZWR1bGVgLCBgaXBfdnNfd3JyX3NjaGVkdWxlYC4KCkZvciB0aGUgRm9jdXNTeW1ib2xzLCBJIHNob3VsZCBjb25zb2xpZGF0ZSB0aGUgZm9sbG93aW5nLCBlbnN1cmluZyBhIGdvb2QgYmFsYW5jZSBvZiBjb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIHNjaGVkdWxlciBiZWhhdmlvcnMsIGxpa2UgdGhpczoKYGlwX3ZzX2JpbmRfZGVzdGAKYGlwX3ZzX3VuYmluZF9kZXN0YApgX19pcF92c191cGRhdGVfZGVzdGAKYGlwX3ZzX2FkZF9kZXN0YApgaXBfdnNfZWRpdF9kZXN0YApgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgCgpBbmQsIG9mIGNvdXJzZSwgdGhlIGNvbmZpZ3VyYXRpb25zIGFyZSBjZW50cmFsIHRvIHRoaXMgdG9vLiBJJiMzOTtsbCBuZWVkIHRoZXNlOiBgSVBfVlNgLCBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLgoKQSBxdWljayBzYW5pdHkgY2hlY2sgYWdhaW5zdCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHdpbGwgY29uZmlybSB0aG9zZSBjb25maWcgbmFtZXMgYXJlIGNvcnJlY3QuIFllcCwgYWxsIGNsZWFyLgoKQWxyaWdodCwgd2l0aCB0aGF0IGNvbmZpcm1lZCwgSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHNldCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dSUiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQyYjMzQ7LAogICAgJiMzNDtJUF9WU19XTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfRk8mIzM0OywKICAgICYjMzQ7SVBfVlNfT1ZGJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQ1ImIzM0OywKICAgICYjMzQ7SVBfVlNfREgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0gmIzM0OywKICAgICYjMzQ7SVBfVlNfTUgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0VEJiMzNDssCiAgICAmIzM0O0lQX1ZTX05RJiMzNDssCiAgICAmIzM0O0lQX1ZTX1RXT1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZCYjMzQ7LAogICAgJiMzNDtpcF92c19iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfdW5iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7X19pcF92c191cGRhdGVfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19hZGRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19lZGl0X2Rlc3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcgbG9naWMgb2YgSVBWUyBieSBjaGFuZ2luZyBob3cgdGhlIGRlc3RpbmF0aW9uIG92ZXJsb2FkIGZsYWcgaXMgdXBkYXRlZCBhbmQgY2hlY2tlZC4gSXQgaW50cm9kdWNlcyBhIG5ldyBgZmxhZ3MyYCBmaWVsZCBhbmQgdXBkYXRlcyBtdWx0aXBsZSBJUFZTIHNjaGVkdWxlcnMgdG8gdXNlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19SUiYjMzQ7LAogICAgJiMzNDtJUF9WU19XUlImIzM0OywKICAgICYjMzQ7SVBfVlNfTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfV0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0ZPJiMzNDssCiAgICAmIzM0O0lQX1ZTX09WRiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0RIJiMzNDssCiAgICAmIzM0O0lQX1ZTX1NIJiMzNDssCiAgICAmIzM0O0lQX1ZTX01IJiMzNDssCiAgICAmIzM0O0lQX1ZTX1NFRCYjMzQ7LAogICAgJiMzNDtJUF9WU19OUSYjMzQ7LAogICAgJiMzNDtJUF9WU19UV09TJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQmIzM0OywKICAgICYjMzQ7aXBfdnNfYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX3VuYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O19faXBfdnNfdXBkYXRlX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfYWRkX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfZWRpdF9kZXN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIGxvYWQgYmFsYW5jaW5nIGxvZ2ljIG9mIElQVlMgYnkgY2hhbmdpbmcgaG93IHRoZSBkZXN0aW5hdGlvbiBvdmVybG9hZCBmbGFnIGlzIHVwZGF0ZWQgYW5kIGNoZWNrZWQuIEl0IGludHJvZHVjZXMgYSBuZXcgYGZsYWdzMmAgZmllbGQgYW5kIHVwZGF0ZXMgbXVsdGlwbGUgSVBWUyBzY2hlZHVsZXJzIHRvIHVzZSBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjQ5OjM5LjQ4Njk1Nzk0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MTg4ODQ0MzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19SUlwiLFxuICAgIFwiSVBfVlNfV1JSXCIsXG4gICAgXCJJUF9WU19MQ1wiLFxuICAgIFwiSVBfVlNfV0xDXCIsXG4gICAgXCJJUF9WU19GT1wiLFxuICAgIFwiSVBfVlNfT1ZGXCIsXG4gICAgXCJJUF9WU19MQkxDXCIsXG4gICAgXCJJUF9WU19MQkxDUlwiLFxuICAgIFwiSVBfVlNfREhcIixcbiAgICBcIklQX1ZTX1NIXCIsXG4gICAgXCJJUF9WU19NSFwiLFxuICAgIFwiSVBfVlNfU0VEXCIsXG4gICAgXCJJUF9WU19OUVwiLFxuICAgIFwiSVBfVlNfVFdPU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkXCIsXG4gICAgXCJpcF92c19iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX3VuYmluZF9kZXN0XCIsXG4gICAgXCJfX2lwX3ZzX3VwZGF0ZV9kZXN0XCIsXG4gICAgXCJpcF92c19hZGRfZGVzdFwiLFxuICAgIFwiaXBfdnNfZWRpdF9kZXN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcgbG9naWMgb2YgSVBWUyBieSBjaGFuZ2luZyBob3cgdGhlIGRlc3RpbmF0aW9uIG92ZXJsb2FkIGZsYWcgaXMgdXBkYXRlZCBhbmQgY2hlY2tlZC4gSXQgaW50cm9kdWNlcyBhIG5ldyBgZmxhZ3MyYCBmaWVsZCBhbmQgdXBkYXRlcyBtdWx0aXBsZSBJUFZTIHNjaGVkdWxlcnMgdG8gdXNlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo0OTozOS40ODY5NjM4MjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjYyOTkwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFmMTM2YjczNWQ4MWJmYzBlNGYzOTMwYmQwMDhlYWJkOGNkNmZlZjdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMTMgMTI6NDk6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcXG5pbmRleCA0MTdmZjUxZjYyZmM4ZS4uNWU4ZTU1ZjgyYjA0NDAgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcXG5AQCAtMzYsNiArMzYsMTMgQEBcXG4gI2RlZmluZSBJUF9WU19IRFJfSU5WRVJTRVxcdDFcXG4gI2RlZmluZSBJUF9WU19IRFJfSUNNUFxcdFxcdDJcXG4gXFxuKy8qIERlc3RpbmF0aW9uIFNlcnZlciBGbGFncyAqL1xcbisjZGVmaW5lIElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVcXHQweDAwMDFcXHRcXHQvKiBzZXJ2ZXIgaXMgYXZhaWxhYmxlICovXFxuK1xcbitlbnVtIHtcXG4rXFx0SVBfVlNfREVTVF9GTF9PVkVSTE9BRCxcXG4rfTtcXG4rXFxuIC8qIGNvbm5fdGFiIGxpbWl0cyAoYXMgcGVyIEtjb25maWcpICovXFxuICNkZWZpbmUgSVBfVlNfQ09OTl9UQUJfTUlOX0JJVFNcXHQ4XFxuICNpZiBCSVRTX1BFUl9MT05HIFxcdTAwM2UgMzJcXG5AQCAtOTc2LDYgKzk4Myw3IEBAIHN0cnVjdCBpcF92c19kZXN0IHtcXG4gXFx0dm9sYXRpbGUgdW5zaWduZWQgaW50XFx0ZmxhZ3M7XFx0XFx0LyogZGVzdCBzdGF0dXMgZmxhZ3MgKi9cXG4gXFx0YXRvbWljX3RcXHRcXHRjb25uX2ZsYWdzO1xcdC8qIGZsYWdzIHRvIGNvcHkgdG8gY29ubiAqL1xcbiBcXHRhdG9taWNfdFxcdFxcdHdlaWdodDtcXHRcXHQvKiBzZXJ2ZXIgd2VpZ2h0ICovXFxuK1xcdHVuc2lnbmVkIGxvbmdcXHRcXHRmbGFnczI7XFx0XFx0LyogZGVzdCBzdGF0dXMgZmxhZ3MgKi9cXG4gXFx0YXRvbWljX3RcXHRcXHRsYXN0X3dlaWdodDtcXHQvKiBzZXJ2ZXIgbGF0ZXN0IHdlaWdodCAqL1xcbiBcXHRfX3UxNlxcdFxcdFxcdHR1bl90eXBlO1xcdC8qIHR1bm5lbCB0eXBlICovXFxuIFxcdF9fYmUxNlxcdFxcdFxcdHR1bl9wb3J0O1xcdC8qIHR1bm5lbCBwb3J0ICovXFxuQEAgLTE5MDcsNiArMTkxNSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19kZXN0X3B1dF9hbmRfZnJlZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4gXFx0XFx0a2ZyZWUoZGVzdCk7XFxuIH1cXG4gXFxuK3ZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpO1xcbitcXG4gLyogSVBWUyBzeW5jIGRhZW1vbiBkYXRhIGFuZCBmdW5jdGlvbiBwcm90b3R5cGVzXFxuICAqIChmcm9tIGlwX3ZzX3N5bmMuYylcXG4gICovXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcXG5pbmRleCAxZWQyMzRlN2YyNTEzNi4uMmMzN2M2YWM3NTI1YTUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxcbkBAIC0yOCwxMiArMjgsNiBAQFxcbiAjZGVmaW5lIElQX1ZTX1NWQ19GX1NDSEVEX1NIX0ZBTExCQUNLXFx0SVBfVlNfU1ZDX0ZfU0NIRUQxIC8qIFNIIGZhbGxiYWNrICovXFxuICNkZWZpbmUgSVBfVlNfU1ZDX0ZfU0NIRURfU0hfUE9SVFxcdElQX1ZTX1NWQ19GX1NDSEVEMiAvKiBTSCB1c2UgcG9ydCAqL1xcbiBcXG4tLypcXG4tICogICAgICBEZXN0aW5hdGlvbiBTZXJ2ZXIgRmxhZ3NcXG4tICovXFxuLSNkZWZpbmUgSVBfVlNfREVTVF9GX0FWQUlMQUJMRVxcdDB4MDAwMVxcdFxcdC8qIHNlcnZlciBpcyBhdmFpbGFibGUgKi9cXG4tI2RlZmluZSBJUF9WU19ERVNUX0ZfT1ZFUkxPQURcXHQweDAwMDJcXHRcXHQvKiBzZXJ2ZXIgaXMgb3ZlcmxvYWRlZCAqL1xcbi1cXG4gLypcXG4gICogICAgICBJUFZTIHN5bmMgZGFlbW9uIHN0YXRlc1xcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG5pbmRleCA2ZWQyNjIyMzYzZjBkNi4uMjU5MWY0ZTE0M2Y4NGMgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG5AQCAtOTkxLDYgKzk5MSwzNCBAQCBzdGF0aWMgaW5saW5lIGludCBpcF92c19kZXN0X3RvdGFsY29ubnMoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIFxcdFxcdCsgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWluYWN0Y29ubnMpO1xcbiB9XFxuIFxcbisvKiBVcGRhdGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBudW1iZXIgb2YgZGVzdCBjb25ucyBhbmQgbG93ZXIvdXBwZXJcXG4rICogY29ubmVjdGlvbiB0aHJlc2hvbGRzOlxcbisgKiAtIGNvbm5zIHJlYWNoIHVfdGhyZXNob2xkIGFuZCBleGNlZWQgaXQ6IHNldCB0aGUgZmxhZ1xcbisgKiAtIGNvbm5zIGdvIGJlbG93IGxfdGhyZXNob2xkIChvciA3NSUgb2YgdV90aHJlc2hvbGQpOiBjbGVhciB0aGUgZmxhZ1xcbisgKi9cXG4rX19hbHdheXNfaW5saW5lIHZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuK3tcXG4rXFx0aW50IGNvbm5zO1xcbitcXHR1MzIgbCwgdTtcXG4rXFxuK1xcdHUgPSBSRUFEX09OQ0UoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpO1xcbitcXHRpZiAoIXUpXFxuK1xcdFxcdGdvdG8gdW5zZXQ7XFxuK1xcdGNvbm5zID0gaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpO1xcbitcXHRpZiAoY29ubnMgXFx1MDAzZT0gdSkge1xcbitcXHRcXHRzZXRfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFx0LyogTG93IHRocmVzaG9sZCBkZWZhdWx0cyB0byA3NSUgb2YgdXBwZXIgdGhyZXNob2xkICovXFxuK1xcdGwgPSBSRUFEX09OQ0UoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQpID8gOiAodSAtICh1IFxcdTAwM2VcXHUwMDNlIDIpKTtcXG4rXFx0aWYgKGNvbm5zIFxcdTAwM2U9IGwpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK3Vuc2V0OlxcbitcXHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMikpXFxuK1xcdFxcdGNsZWFyX2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKTtcXG4rfVxcbitcXG4gLypcXG4gICpcXHRCaW5kIGEgY29ubmVjdGlvbiBlbnRyeSB3aXRoIGEgdmlydHVhbCBzZXJ2aWNlIGRlc3RpbmF0aW9uXFxuICAqXFx0Q2FsbGVkIGp1c3QgYWZ0ZXIgYSBuZXcgY29ubmVjdGlvbiBlbnRyeSBpcyBjcmVhdGVkLlxcbkBAIC0xMDUzLDkgKzEwODEsNyBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4gXFx0XFx0YXRvbWljX2luYyhcXHUwMDI2ZGVzdC1cXHUwMDNlcGVyc2lzdGNvbm5zKTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkICE9IDAgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcXHUwMDNlPSBkZXN0LVxcdTAwM2V1X3RocmVzaG9sZClcXG4tXFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHRpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0KTtcXG4gfVxcbiBcXG4gXFxuQEAgLTExNDksMTYgKzExNzUsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbiBcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZkZXN0LVxcdTAwM2VwZXJzaXN0Y29ubnMpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQgIT0gMCkge1xcbi1cXHRcXHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFxcdTAwM2MgZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQpXFxuLVxcdFxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuLVxcdH0gZWxzZSBpZiAoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgIT0gMCkge1xcbi1cXHRcXHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICogNCBcXHUwMDNjIGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkICogMylcXG4tXFx0XFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbi1cXHRcXHRcXHRkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbi1cXHR9XFxuK1xcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSlcXG4rXFx0XFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XFxuIFxcbiBcXHRpcF92c19kZXN0X3B1dChkZXN0KTtcXG4gfVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjJmNzNkODkyZjk3YzkgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuQEAgLTEzNzAsMTAgKzEzNzAsMTIgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4gXFx0Lyogc2V0IHRoZSBkZXN0IHN0YXR1cyBmbGFncyAqL1xcbiBcXHRkZXN0LVxcdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xcbiBcXG4tXFx0aWYgKHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCA9PSAwIHx8IHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCBcXHUwMDNlIGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkKVxcbi1cXHRcXHRkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbi1cXHRkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCA9IHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZDtcXG4tXFx0ZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQgPSB1ZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQ7XFxuK1xcdGlmIChSRUFEX09OQ0UoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpICE9IHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCB8fFxcbitcXHQgICAgUkVBRF9PTkNFKGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkKSAhPSB1ZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQpIHtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCwgdWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkKTtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCwgdWRlc3QtXFx1MDAzZWxfdGhyZXNob2xkKTtcXG4rXFx0XFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XFxuK1xcdH1cXG4gXFxuIFxcdGRlc3QtXFx1MDAzZWFmID0gdWRlc3QtXFx1MDAzZWFmO1xcbiBcXG5AQCAtMTQ4Niw2ICsxNDg4LDkgQEAgaXBfdnNfYWRkX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcXG4gXFx0XFx0cmV0dXJuIC1FUkFOR0U7XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh1ZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgXFx1MDAzZSBJTlRfTUFYKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdGlmICh1ZGVzdC1cXHUwMDNldHVuX3R5cGUgPT0gSVBfVlNfQ09OTl9GX1RVTk5FTF9UWVBFX0dVRSkge1xcbiBcXHRcXHRpZiAodWRlc3QtXFx1MDAzZXR1bl9wb3J0ID09IDApIHtcXG4gXFx0XFx0XFx0cHJfZXJyKFxcXCIlcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuQEAgLTE1NTksNiArMTU2NCw5IEBAIGlwX3ZzX2VkaXRfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KVxcbiBcXHRcXHRyZXR1cm4gLUVSQU5HRTtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCBcXHUwMDNlIElOVF9NQVgpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0aWYgKHVkZXN0LVxcdTAwM2V0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7XFxuIFxcdFxcdGlmICh1ZGVzdC1cXHUwMDNldHVuX3BvcnQgPT0gMCkge1xcbiBcXHRcXHRcXHRwcl9lcnIoXFxcIiVzKCk6IHR1bm5lbCBwb3J0IGlzIHplcm9cXFxcblxcXCIsIF9fZnVuY19fKTtcXG5AQCAtMzY2Nyw4ICszNjc1LDggQEAgX19pcF92c19nZXRfZGVzdF9lbnRyaWVzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBjb25zdCBzdHJ1Y3QgaXBfdnNfZ2V0X2Rlc3RzICpcXG4gXFx0XFx0XFx0ZW50cnkucG9ydCA9IGRlc3QtXFx1MDAzZXBvcnQ7XFxuIFxcdFxcdFxcdGVudHJ5LmNvbm5fZmxhZ3MgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlY29ubl9mbGFncyk7XFxuIFxcdFxcdFxcdGVudHJ5LndlaWdodCA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbi1cXHRcXHRcXHRlbnRyeS51X3RocmVzaG9sZCA9IGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkO1xcbi1cXHRcXHRcXHRlbnRyeS5sX3RocmVzaG9sZCA9IGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkO1xcbitcXHRcXHRcXHRlbnRyeS51X3RocmVzaG9sZCA9IFJFQURfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCk7XFxuK1xcdFxcdFxcdGVudHJ5LmxfdGhyZXNob2xkID0gUkVBRF9PTkNFKGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkKTtcXG4gXFx0XFx0XFx0ZW50cnkuYWN0aXZlY29ubnMgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpO1xcbiBcXHRcXHRcXHRlbnRyeS5pbmFjdGNvbm5zID0gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWluYWN0Y29ubnMpO1xcbiBcXHRcXHRcXHRlbnRyeS5wZXJzaXN0Y29ubnMgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlcGVyc2lzdGNvbm5zKTtcXG5AQCAtNDI3Nyw4ICs0Mjg1LDEwIEBAIHN0YXRpYyBpbnQgaXBfdnNfZ2VubF9maWxsX2Rlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIFxcdFxcdFxcdCBkZXN0LVxcdTAwM2V0dW5fcG9ydCkgfHxcXG4gXFx0ICAgIG5sYV9wdXRfdTE2KHNrYiwgSVBWU19ERVNUX0FUVFJfVFVOX0ZMQUdTLFxcbiBcXHRcXHRcXHRkZXN0LVxcdTAwM2V0dW5fZmxhZ3MpIHx8XFxuLVxcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX1VfVEhSRVNILCBkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCkgfHxcXG4tXFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfTF9USFJFU0gsIGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkKSB8fFxcbitcXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9VX1RIUkVTSCxcXG4rXFx0XFx0XFx0UkVBRF9PTkNFKGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkKSkgfHxcXG4rXFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfTF9USFJFU0gsXFxuK1xcdFxcdFxcdFJFQURfT05DRShkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCkpIHx8XFxuIFxcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0FDVElWRV9DT05OUyxcXG4gXFx0XFx0XFx0YXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKSkgfHxcXG4gXFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfSU5BQ1RfQ09OTlMsXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcXG5pbmRleCBlMWY2MmY2YjI1ZTIxMS4uMzY0YWNiNjM0MmUyZmUgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xcbkBAIC0xOTYsMTIgKzE5NiwxMiBAQCBzdGF0aWMgaW50IGlwX3ZzX2RoX2Rlc3RfY2hhbmdlZChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxcbiBcXG4gXFxuIC8qXFxuLSAqICAgICAgSWYgdGhlIGRlc3QgZmxhZ3MgaXMgc2V0IHdpdGggSVBfVlNfREVTVF9GX09WRVJMT0FELFxcbisgKiAgICAgIElmIHRoZSBkZXN0IGZsYWdzIGlzIHNldCB3aXRoIElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsXFxuICAqICAgICAgY29uc2lkZXIgdGhhdCB0aGUgc2VydmVyIGlzIG92ZXJsb2FkZWQgaGVyZS5cXG4gICovXFxuIHN0YXRpYyBpbmxpbmUgaW50IGlzX292ZXJsb2FkZWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIHtcXG4tXFx0cmV0dXJuIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHRyZXR1cm4gdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMik7XFxuIH1cXG4gXFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXFxuaW5kZXggZDY1N2I0N2M2NTExZmYuLmE1OWFmNmMxMTg5YWNhIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcXG5AQCAtMjksNyArMjksNyBAQCBpcF92c19mb19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpY1xcbiBcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgaHcpIHtcXG4gXFx0XFx0XFx0aHdlaWdodCA9IGRlc3Q7XFxuIFxcdFxcdFxcdGh3ID0gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCk7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXFxuaW5kZXggMTVjY2IyYjJmYTFmNGEuLmVlMjZiZTNlYjg2MDZmIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXFxuQEAgLTQxNCw3ICs0MTQsNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG4gXFx0ICogbmV3IGNvbm5lY3Rpb24uXFxuIFxcdCAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbkBAIC00MjksNyArNDI5LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqL1xcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMikpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuaW5kZXggYzkwZWE4OTdjM2Y3NTYuLjI4ODU4ZTQ0MjI1YTZjIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcXG5AQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcXG4gXFx0Lyogc2VsZWN0IHRoZSBmaXJzdCBkZXN0aW5hdGlvbiBzZXJ2ZXIsIHdob3NlIHdlaWdodCBcXHUwMDNlIDAgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZSwgXFx1MDAyNnNldC1cXHUwMDNlbGlzdCwgbGlzdCkge1xcbiBcXHRcXHRsZWFzdCA9IGUtXFx1MDAzZWRlc3Q7XFxuLVxcdFxcdGlmIChsZWFzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2bGVhc3QtXFx1MDAzZWZsYWdzMikpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0aWYgKChhdG9taWNfcmVhZChcXHUwMDI2bGVhc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZSAwKVxcbkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZSwgXFx1MDAyNnNldC1cXHUwMDNlbGlzdCwgbGlzdCkge1xcbiBcXHRcXHRkZXN0ID0gZS1cXHUwMDNlZGVzdDtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMikpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbkBAIC01NzcsNyArNTc3LDcgQEAgX19pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxcbiBcXHQgKiBuZXcgY29ubmVjdGlvbi5cXG4gXFx0ICovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmIChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG5AQCAtNTkzLDcgKzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG4gXFx0ICovXFxuICAgbmV4dHN0YWdlOlxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcXG5pbmRleCAzOGNjMzhjNWQ4YmJkOS4uYzRlNGU5MWUzZTZkN2QgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xcbkBAIC0zOCw3ICszOCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCAqL1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcXG4rXFx0XFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpIHx8XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSA9PSAwKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXFxuaW5kZXggMDIwODYzMDQ3NTYyZDMuLjIzZmZjNTFjYTA4OGYwIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcXG5AQCAtODAsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLFxcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIHtcXG4gXFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2M9IDAgfHxcXG4tXFx0ICAgICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHQgICAgICAgdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMik7XFxuIH1cXG4gXFxuIC8qIFJldHVybnMgaGFzaCB2YWx1ZSBmb3IgSVBWUyBNSCBlbnRyeSAqL1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXFxuaW5kZXggYWRhMTU4YzYxMGNlMTEuLmQ2ZmJiOWU1MGU0YjQ0IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcXG5AQCAtNzIsNyArNzIsNyBAQCBpcF92c19ucV9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4gXFxuLVxcdFxcdGlmIChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxcbitcXHRcXHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMikgfHxcXG4gXFx0XFx0ICAgICFhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcXG5pbmRleCBjNWM2N2RmODBhMGIzYy4uMTA0ZGU4YzI0YTRmNjUgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXFxuQEAgLTMzLDcgKzMzLDcgQEAgaXBfdnNfb3ZmX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuIFxcdFxcdHcgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KTtcXG4tXFx0XFx0aWYgKChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcXG4rXFx0XFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpIHx8XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpIFxcdTAwM2UgdyB8fFxcbiBcXHRcXHQgICAgdyA9PSAwKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xcbmluZGV4IDQxMjVlZTU2MWNkYzM2Li5jMzhiZWU5ODdkMTQzMiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXFxuQEAgLTY2LDcgKzY2LDcgQEAgaXBfdnNfcnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucyxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IG5fbGlzdCkge1xcbi1cXHRcXHRcXHRpZiAoIShkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0aWYgKCF0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZSAwKVxcbiBcXHRcXHRcXHRcXHQvKiBISVQgKi9cXG4gXFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xcbmluZGV4IDI0NWEzMjNjODRjZDMyLi4wY2U0MjVmOTc0OGFmNyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcXG5AQCAtNzUsNyArNzUsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICovXFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoIShkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0aWYgKCF0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdFxcdGxlYXN0ID0gZGVzdDtcXG4gXFx0XFx0XFx0bG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQobGVhc3QpO1xcbkBAIC05MCw3ICs5MCw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKi9cXG4gICBuZXh0c3RhZ2U6XFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmIChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XFxuIFxcdFxcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXFxuaW5kZXggY2Q2NzA2NmUzYjI2MTIuLmJiZGI2ODNiOGU4NjAxIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcXG5AQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3QgaXBfdnNfc2hfc3RhdGUge1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIHtcXG4gXFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2M9IDAgfHxcXG4tXFx0ICAgICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHQgICAgICAgdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMik7XFxuIH1cXG4gXFxuIC8qXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXFxuaW5kZXggZGJiN2Y1ZmQ0Njg4YTQuLmNlNTYxOGYwMmU3ZGY0IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXFxuQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXFxuIFxcbiBcXHQvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmICghKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xcbitcXHRcXHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpKSB7XFxuIFxcdFxcdFxcdHdlaWdodCA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbiBcXHRcXHRcXHRpZiAod2VpZ2h0IFxcdTAwM2UgMCkge1xcbiBcXHRcXHRcXHRcXHR0b3RhbF93ZWlnaHQgKz0gd2VpZ2h0O1xcbkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxcbiBcXG4gXFx0LyogUGljayB0d28gd2VpZ2h0ZWQgc2VydmVycyAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHR3ZWlnaHQgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXFxuaW5kZXggOWRhNDQ1Y2EwOWExNGMuLjYyYTRjODE0OTE5MjcyIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xcbkBAIC00Nyw3ICs0Nyw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKi9cXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmICghKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbiBcXHRcXHRcXHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xcbkBAIC02Miw3ICs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKi9cXG4gICBuZXh0c3RhZ2U6XFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmIChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbiBcXHRcXHRpZiAoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXFxuaW5kZXggMmRjZmYxMDQwZGE1MjEuLmI5OWNiYzFkMTMwMjlkIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xcbkBAIC0xNzYsNyArMTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBuX2xpc3QpIHtcXG4tXFx0XFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2U9IG1hcmstXFx1MDAzZWN3KVxcbiBcXHRcXHRcXHRcXHRnb3RvIGZvdW5kO1xcbiBcXHRcXHRcXHRpZiAoZGVzdCA9PSBzdG9wKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo0OTozOS45NDQzNjEyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ3MzE0MzA5ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIklQX1ZTX1JSXCIsXG4gICAgXCJJUF9WU19XUlJcIixcbiAgICBcIklQX1ZTX0xDXCIsXG4gICAgXCJJUF9WU19XTENcIixcbiAgICBcIklQX1ZTX0ZPXCIsXG4gICAgXCJJUF9WU19PVkZcIixcbiAgICBcIklQX1ZTX0xCTENcIixcbiAgICBcIklQX1ZTX0xCTENSXCIsXG4gICAgXCJJUF9WU19ESFwiLFxuICAgIFwiSVBfVlNfU0hcIixcbiAgICBcIklQX1ZTX01IXCIsXG4gICAgXCJJUF9WU19TRURcIixcbiAgICBcIklQX1ZTX05RXCIsXG4gICAgXCJJUF9WU19UV09TXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRcIixcbiAgICBcImlwX3ZzX2JpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfdW5iaW5kX2Rlc3RcIixcbiAgICBcIl9faXBfdnNfdXBkYXRlX2Rlc3RcIixcbiAgICBcImlwX3ZzX2FkZF9kZXN0XCIsXG4gICAgXCJpcF92c19lZGl0X2Rlc3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBsb2FkIGJhbGFuY2luZyBsb2dpYyBvZiBJUFZTIGJ5IGNoYW5naW5nIGhvdyB0aGUgZGVzdGluYXRpb24gb3ZlcmxvYWQgZmxhZyBpcyB1cGRhdGVkIGFuZCBjaGVja2VkLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGBmbGFnczJgIGZpZWxkIGFuZCB1cGRhdGVzIG11bHRpcGxlIElQVlMgc2NoZWR1bGVycyB0byB1c2UgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWYxMzZiNzM1ZDgxYmZjMGU0ZjM5MzBiZDAwOGVhYmQ4Y2Q2ZmVmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDEyOjQ5OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbmluZGV4IDQxN2ZmNTFmNjJmYzhlLi41ZThlNTVmODJiMDQ0MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbisrKyBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbkBAIC0zNiw2ICszNiwxMyBAQFxuICNkZWZpbmUgSVBfVlNfSERSX0lOVkVSU0VcdDFcbiAjZGVmaW5lIElQX1ZTX0hEUl9JQ01QXHRcdDJcbiBcbisvKiBEZXN0aW5hdGlvbiBTZXJ2ZXIgRmxhZ3MgKi9cbisjZGVmaW5lIElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVcdDB4MDAwMVx0XHQvKiBzZXJ2ZXIgaXMgYXZhaWxhYmxlICovXG4rXG4rZW51bSB7XG4rXHRJUF9WU19ERVNUX0ZMX09WRVJMT0FELFxuK307XG4rXG4gLyogY29ubl90YWIgbGltaXRzIChhcyBwZXIgS2NvbmZpZykgKi9cbiAjZGVmaW5lIElQX1ZTX0NPTk5fVEFCX01JTl9CSVRTXHQ4XG4gI2lmIEJJVFNfUEVSX0xPTkcgXHUwMDNlIDMyXG5AQCAtOTc2LDYgKzk4Myw3IEBAIHN0cnVjdCBpcF92c19kZXN0IHtcbiBcdHZvbGF0aWxlIHVuc2lnbmVkIGludFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRjb25uX2ZsYWdzO1x0LyogZmxhZ3MgdG8gY29weSB0byBjb25uICovXG4gXHRhdG9taWNfdFx0XHR3ZWlnaHQ7XHRcdC8qIHNlcnZlciB3ZWlnaHQgKi9cbitcdHVuc2lnbmVkIGxvbmdcdFx0ZmxhZ3MyO1x0XHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xuIFx0YXRvbWljX3RcdFx0bGFzdF93ZWlnaHQ7XHQvKiBzZXJ2ZXIgbGF0ZXN0IHdlaWdodCAqL1xuIFx0X191MTZcdFx0XHR0dW5fdHlwZTtcdC8qIHR1bm5lbCB0eXBlICovXG4gXHRfX2JlMTZcdFx0XHR0dW5fcG9ydDtcdC8qIHR1bm5lbCBwb3J0ICovXG5AQCAtMTkwNyw2ICsxOTE1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2Rlc3RfcHV0X2FuZF9mcmVlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHRrZnJlZShkZXN0KTtcbiB9XG4gXG4rdm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCk7XG4rXG4gLyogSVBWUyBzeW5jIGRhZW1vbiBkYXRhIGFuZCBmdW5jdGlvbiBwcm90b3R5cGVzXG4gICogKGZyb20gaXBfdnNfc3luYy5jKVxuICAqL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcbmluZGV4IDFlZDIzNGU3ZjI1MTM2Li4yYzM3YzZhYzc1MjVhNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxuQEAgLTI4LDEyICsyOCw2IEBAXG4gI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9GQUxMQkFDS1x0SVBfVlNfU1ZDX0ZfU0NIRUQxIC8qIFNIIGZhbGxiYWNrICovXG4gI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9QT1JUXHRJUF9WU19TVkNfRl9TQ0hFRDIgLyogU0ggdXNlIHBvcnQgKi9cbiBcbi0vKlxuLSAqICAgICAgRGVzdGluYXRpb24gU2VydmVyIEZsYWdzXG4tICovXG4tI2RlZmluZSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFXHQweDAwMDFcdFx0Lyogc2VydmVyIGlzIGF2YWlsYWJsZSAqL1xuLSNkZWZpbmUgSVBfVlNfREVTVF9GX09WRVJMT0FEXHQweDAwMDJcdFx0Lyogc2VydmVyIGlzIG92ZXJsb2FkZWQgKi9cbi1cbiAvKlxuICAqICAgICAgSVBWUyBzeW5jIGRhZW1vbiBzdGF0ZXNcbiAgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggNmVkMjYyMjM2M2YwZDYuLjI1OTFmNGUxNDNmODRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTk5MSw2ICs5OTEsMzQgQEAgc3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHQrIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4gfVxuIFxuKy8qIFVwZGF0ZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIG51bWJlciBvZiBkZXN0IGNvbm5zIGFuZCBsb3dlci91cHBlclxuKyAqIGNvbm5lY3Rpb24gdGhyZXNob2xkczpcbisgKiAtIGNvbm5zIHJlYWNoIHVfdGhyZXNob2xkIGFuZCBleGNlZWQgaXQ6IHNldCB0aGUgZmxhZ1xuKyAqIC0gY29ubnMgZ28gYmVsb3cgbF90aHJlc2hvbGQgKG9yIDc1JSBvZiB1X3RocmVzaG9sZCk6IGNsZWFyIHRoZSBmbGFnXG4rICovXG4rX19hbHdheXNfaW5saW5lIHZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4re1xuK1x0aW50IGNvbm5zO1xuK1x0dTMyIGwsIHU7XG4rXG4rXHR1ID0gUkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpO1xuK1x0aWYgKCF1KVxuK1x0XHRnb3RvIHVuc2V0O1xuK1x0Y29ubnMgPSBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCk7XG4rXHRpZiAoY29ubnMgXHUwMDNlPSB1KSB7XG4rXHRcdHNldF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXHQvKiBMb3cgdGhyZXNob2xkIGRlZmF1bHRzIHRvIDc1JSBvZiB1cHBlciB0aHJlc2hvbGQgKi9cbitcdGwgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkgPyA6ICh1IC0gKHUgXHUwMDNlXHUwMDNlIDIpKTtcbitcdGlmIChjb25ucyBcdTAwM2U9IGwpXG4rXHRcdHJldHVybjtcbitcbit1bnNldDpcbitcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikpXG4rXHRcdGNsZWFyX2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMik7XG4rfVxuK1xuIC8qXG4gICpcdEJpbmQgYSBjb25uZWN0aW9uIGVudHJ5IHdpdGggYSB2aXJ0dWFsIHNlcnZpY2UgZGVzdGluYXRpb25cbiAgKlx0Q2FsbGVkIGp1c3QgYWZ0ZXIgYSBuZXcgY29ubmVjdGlvbiBlbnRyeSBpcyBjcmVhdGVkLlxuQEAgLTEwNTMsOSArMTA4MSw3IEBAIGlwX3ZzX2JpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHRhdG9taWNfaW5jKFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zKTtcbiBcdH1cbiBcbi1cdGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDAgXHUwMDI2XHUwMDI2XG4tXHQgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFx1MDAzZT0gZGVzdC1cdTAwM2V1X3RocmVzaG9sZClcbi1cdFx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHRpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0KTtcbiB9XG4gXG4gXG5AQCAtMTE0OSwxNiArMTE3NSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c191bmJpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4gXHRcdGF0b21pY19kZWMoXHUwMDI2ZGVzdC1cdTAwM2VwZXJzaXN0Y29ubnMpO1xuIFx0fVxuIFxuLVx0aWYgKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQgIT0gMCkge1xuLVx0XHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFx1MDAzYyBkZXN0LVx1MDAzZWxfdGhyZXNob2xkKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuLVx0fSBlbHNlIGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDApIHtcbi1cdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgXHUwMDNjIGRlc3QtXHUwMDNldV90aHJlc2hvbGQgKiAzKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuLVx0fSBlbHNlIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbi1cdH1cbitcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikpXG4rXHRcdGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QpO1xuIFxuIFx0aXBfdnNfZGVzdF9wdXQoZGVzdCk7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuaW5kZXggYmNmNDBiOGM0MWNmMjYuLjYyZjczZDg5MmY5N2M5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbkBAIC0xMzcwLDEwICsxMzcwLDEyIEBAIF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHQvKiBzZXQgdGhlIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRkZXN0LVx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEU7XG4gXG4tXHRpZiAodWRlc3QtXHUwMDNldV90aHJlc2hvbGQgPT0gMCB8fCB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2UgZGVzdC1cdTAwM2V1X3RocmVzaG9sZClcbi1cdFx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4tXHRkZXN0LVx1MDAzZXVfdGhyZXNob2xkID0gdWRlc3QtXHUwMDNldV90aHJlc2hvbGQ7XG4tXHRkZXN0LVx1MDAzZWxfdGhyZXNob2xkID0gdWRlc3QtXHUwMDNlbF90aHJlc2hvbGQ7XG4rXHRpZiAoUkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpICE9IHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIHx8XG4rXHQgICAgUkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpICE9IHVkZXN0LVx1MDAzZWxfdGhyZXNob2xkKSB7XG4rXHRcdFdSSVRFX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQpO1xuK1x0XHRXUklURV9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQsIHVkZXN0LVx1MDAzZWxfdGhyZXNob2xkKTtcbitcdFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XG4rXHR9XG4gXG4gXHRkZXN0LVx1MDAzZWFmID0gdWRlc3QtXHUwMDNlYWY7XG4gXG5AQCAtMTQ4Niw2ICsxNDg4LDkgQEAgaXBfdnNfYWRkX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcbiBcdFx0cmV0dXJuIC1FUkFOR0U7XG4gXHR9XG4gXG4rXHRpZiAodWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIElOVF9NQVgpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0aWYgKHVkZXN0LVx1MDAzZXR1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHtcbiBcdFx0aWYgKHVkZXN0LVx1MDAzZXR1bl9wb3J0ID09IDApIHtcbiBcdFx0XHRwcl9lcnIoXCIlcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXFxuXCIsIF9fZnVuY19fKTtcbkBAIC0xNTU5LDYgKzE1NjQsOSBAQCBpcF92c19lZGl0X2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcbiBcdFx0cmV0dXJuIC1FUkFOR0U7XG4gXHR9XG4gXG4rXHRpZiAodWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIElOVF9NQVgpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0aWYgKHVkZXN0LVx1MDAzZXR1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHtcbiBcdFx0aWYgKHVkZXN0LVx1MDAzZXR1bl9wb3J0ID09IDApIHtcbiBcdFx0XHRwcl9lcnIoXCIlcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXFxuXCIsIF9fZnVuY19fKTtcbkBAIC0zNjY3LDggKzM2NzUsOCBAQCBfX2lwX3ZzX2dldF9kZXN0X2VudHJpZXMoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGNvbnN0IHN0cnVjdCBpcF92c19nZXRfZGVzdHMgKlxuIFx0XHRcdGVudHJ5LnBvcnQgPSBkZXN0LVx1MDAzZXBvcnQ7XG4gXHRcdFx0ZW50cnkuY29ubl9mbGFncyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlY29ubl9mbGFncyk7XG4gXHRcdFx0ZW50cnkud2VpZ2h0ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuLVx0XHRcdGVudHJ5LnVfdGhyZXNob2xkID0gZGVzdC1cdTAwM2V1X3RocmVzaG9sZDtcbi1cdFx0XHRlbnRyeS5sX3RocmVzaG9sZCA9IGRlc3QtXHUwMDNlbF90aHJlc2hvbGQ7XG4rXHRcdFx0ZW50cnkudV90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCk7XG4rXHRcdFx0ZW50cnkubF90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCk7XG4gXHRcdFx0ZW50cnkuYWN0aXZlY29ubnMgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbiBcdFx0XHRlbnRyeS5pbmFjdGNvbm5zID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiBcdFx0XHRlbnRyeS5wZXJzaXN0Y29ubnMgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXBlcnNpc3Rjb25ucyk7XG5AQCAtNDI3Nyw4ICs0Mjg1LDEwIEBAIHN0YXRpYyBpbnQgaXBfdnNfZ2VubF9maWxsX2Rlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4gXHRcdFx0IGRlc3QtXHUwMDNldHVuX3BvcnQpIHx8XG4gXHQgICAgbmxhX3B1dF91MTYoc2tiLCBJUFZTX0RFU1RfQVRUUl9UVU5fRkxBR1MsXG4gXHRcdFx0ZGVzdC1cdTAwM2V0dW5fZmxhZ3MpIHx8XG4tXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9VX1RIUkVTSCwgZGVzdC1cdTAwM2V1X3RocmVzaG9sZCkgfHxcbi1cdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILCBkZXN0LVx1MDAzZWxfdGhyZXNob2xkKSB8fFxuK1x0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfVV9USFJFU0gsXG4rXHRcdFx0UkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpKSB8fFxuK1x0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfTF9USFJFU0gsXG4rXHRcdFx0UkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpKSB8fFxuIFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfQUNUSVZFX0NPTk5TLFxuIFx0XHRcdGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpKSB8fFxuIFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfSU5BQ1RfQ09OTlMsXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuaW5kZXggZTFmNjJmNmIyNWUyMTEuLjM2NGFjYjYzNDJlMmZlIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG5AQCAtMTk2LDEyICsxOTYsMTIgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiBcbiBcbiAvKlxuLSAqICAgICAgSWYgdGhlIGRlc3QgZmxhZ3MgaXMgc2V0IHdpdGggSVBfVlNfREVTVF9GX09WRVJMT0FELFxuKyAqICAgICAgSWYgdGhlIGRlc3QgZmxhZ3MgaXMgc2V0IHdpdGggSVBfVlNfREVTVF9GTF9PVkVSTE9BRCxcbiAgKiAgICAgIGNvbnNpZGVyIHRoYXQgdGhlIHNlcnZlciBpcyBvdmVybG9hZGVkIGhlcmUuXG4gICovXG4gc3RhdGljIGlubGluZSBpbnQgaXNfb3ZlcmxvYWRlZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiB7XG4tXHRyZXR1cm4gZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuK1x0cmV0dXJuIHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKTtcbiB9XG4gXG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uY1xuaW5kZXggZDY1N2I0N2M2NTExZmYuLmE1OWFmNmMxMTg5YWNhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXG5AQCAtMjksNyArMjksNyBAQCBpcF92c19mb19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICogRmluZCB2aXJ0dWFsIHNlcnZlciB3aXRoIGhpZ2hlc3Qgd2VpZ2h0IGFuZCBzZW5kIGl0IHRyYWZmaWNcbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSBodykge1xuIFx0XHRcdGh3ZWlnaHQgPSBkZXN0O1xuIFx0XHRcdGh3ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG5pbmRleCAxNWNjYjJiMmZhMWY0YS4uZWUyNmJlM2ViODYwNmYgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG5AQCAtNDE0LDcgKzQxNCw3IEBAIF9faXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxuIFx0ICogbmV3IGNvbm5lY3Rpb24uXG4gXHQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuQEAgLTQyOSw3ICs0MjksNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5pbmRleCBjOTBlYTg5N2MzZjc1Ni4uMjg4NThlNDQyMjVhNmMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxuIFx0Lyogc2VsZWN0IHRoZSBmaXJzdCBkZXN0aW5hdGlvbiBzZXJ2ZXIsIHdob3NlIHdlaWdodCBcdTAwM2UgMCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZSwgXHUwMDI2c2V0LVx1MDAzZWxpc3QsIGxpc3QpIHtcbiBcdFx0bGVhc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2bGVhc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0aWYgKChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKVxuQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG4gICBuZXh0c3RhZ2U6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShlLCBcdTAwMjZzZXQtXHUwMDNlbGlzdCwgbGlzdCkge1xuIFx0XHRkZXN0ID0gZS1cdTAwM2VkZXN0O1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5AQCAtNTc3LDcgKzU3Nyw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqIG5ldyBjb25uZWN0aW9uLlxuIFx0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkge1xuQEAgLTU5Myw3ICs1OTMsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuaW5kZXggMzhjYzM4YzVkOGJiZDkuLmM0ZTRlOTFlM2U2ZDdkIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG5AQCAtMzgsNyArMzgsNyBAQCBpcF92c19sY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4rXHRcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xuaW5kZXggMDIwODYzMDQ3NTYyZDMuLjIzZmZjNTFjYTA4OGYwIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXG5AQCAtODAsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBpc191bmF2YWlsYWJsZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiB7XG4gXHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMCB8fFxuLVx0ICAgICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdCAgICAgICB0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMik7XG4gfVxuIFxuIC8qIFJldHVybnMgaGFzaCB2YWx1ZSBmb3IgSVBWUyBNSCBlbnRyeSAqL1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcbmluZGV4IGFkYTE1OGM2MTBjZTExLi5kNmZiYjllNTBlNGI0NCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xuQEAgLTcyLDcgKzcyLDcgQEAgaXBfdnNfbnFfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuIFxuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEIHx8XG4rXHRcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikgfHxcbiBcdFx0ICAgICFhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkpXG4gXHRcdFx0Y29udGludWU7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXG5pbmRleCBjNWM2N2RmODBhMGIzYy4uMTA0ZGU4YzI0YTRmNjUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xuQEAgLTMzLDcgKzMzLDcgQEAgaXBfdnNfb3ZmX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4gXHRcdHcgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG4tXHRcdGlmICgoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fFxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIHx8XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKSBcdTAwM2UgdyB8fFxuIFx0XHQgICAgdyA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcbmluZGV4IDQxMjVlZTU2MWNkYzM2Li5jMzhiZWU5ODdkMTQzMiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xuQEAgLTY2LDcgKzY2LDcgQEAgaXBfdnNfcnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCxcbiBcdFx0XHRcdFx0XHQgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucyxcbiBcdFx0XHRcdFx0XHQgbl9saXN0KSB7XG4tXHRcdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbitcdFx0XHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKVxuIFx0XHRcdFx0LyogSElUICovXG4gXHRcdFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcbmluZGV4IDI0NWEzMjNjODRjZDMyLi4wY2U0MjVmOTc0OGFmNyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXG5AQCAtNzUsNyArNzUsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGlwX3ZzX3NlZF9kZXN0X292ZXJoZWFkKGxlYXN0KTtcbkBAIC05MCw3ICs5MCw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gICBuZXh0c3RhZ2U6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcbmluZGV4IGNkNjcwNjZlM2IyNjEyLi5iYmRiNjgzYjhlODYwMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xuQEAgLTczLDcgKzczLDcgQEAgc3RydWN0IGlwX3ZzX3NoX3N0YXRlIHtcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuIFx0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2M9IDAgfHxcbi1cdCAgICAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHQgICAgICAgdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpO1xuIH1cbiBcbiAvKlxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXG5pbmRleCBkYmI3ZjVmZDQ2ODhhNC4uY2U1NjE4ZjAyZTdkZjQgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXG5AQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiBcbiBcdC8qIEdlbmVyYXRlIGEgcmFuZG9tIHdlaWdodCBiZXR3ZWVuIFswLHN1bSBvZiBhbGwgd2VpZ2h0cykgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpKSB7XG4rXHRcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKSB7XG4gXHRcdFx0d2VpZ2h0ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuIFx0XHRcdGlmICh3ZWlnaHQgXHUwMDNlIDApIHtcbiBcdFx0XHRcdHRvdGFsX3dlaWdodCArPSB3ZWlnaHQ7XG5AQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiBcbiBcdC8qIFBpY2sgdHdvIHdlaWdodGVkIHNlcnZlcnMgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHR3ZWlnaHQgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXG5pbmRleCA5ZGE0NDVjYTA5YTE0Yy4uNjJhNGM4MTQ5MTkyNzIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xuQEAgLTQ3LDcgKzQ3LDcgQEAgaXBfdnNfd2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuK1x0XHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkge1xuIFx0XHRcdGxlYXN0ID0gZGVzdDtcbiBcdFx0XHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xuQEAgLTYyLDcgKzYyLDcgQEAgaXBfdnNfd2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xuaW5kZXggMmRjZmYxMDQwZGE1MjEuLmI5OWNiYzFkMTMwMjlkIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcbkBAIC0xNzYsNyArMTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0aWYgKCF0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2U9IG1hcmstXHUwMDNlY3cpXG4gXHRcdFx0XHRnb3RvIGZvdW5kO1xuIFx0XHRcdGlmIChkZXN0ID09IHN0b3ApXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo0OTozOS45NDQzNjM0MzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTUyNzM5ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgSVBWUyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSB0aGF0J3MgbWFraW5nIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRvIHRoZSBJUFZTIGltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgTGludXgga2VybmVsLCBhbmQgc3BlY2lmaWNhbGx5LCBob3cgaXQgaGFuZGxlcyBvdmVybG9hZCBjb25kaXRpb25zIGZvciBkZXN0aW5hdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBtb3ZpbmcgYXdheSBmcm9tIHRoZSBvbGQgYElQX1ZTX0RFU1RfRl9PVkVSTE9BRGAgZmxhZyBhbmQgaW50cm9kdWNpbmcgYSBtb3JlIHJlZmluZWQgYXBwcm9hY2ggd2l0aCBgZmxhZ3MyYCBhbmQgYSBkZWRpY2F0ZWQgYElQX1ZTX0RFU1RfRkxfT1ZFUkxPQURgIGVudW0uIFRoaXMgYWxzbyBpbmNsdWRlcyBhIG5ldyBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIGZ1bmN0aW9uLCB3aGljaCBJIHByZXN1bWUgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgZHluYW1pY2FsbHkgc2V0dGluZyB0aGlzIG92ZXJsb2FkIGZsYWcgYmFzZWQgb24gY29ubmVjdGlvbiBjb3VudHMgYW5kIHByZS1kZWZpbmVkIHRocmVzaG9sZHMuXG5cblRoZSBmYWN0IHRoYXQgdGhleSdyZSBtb2RpZnlpbmcgYWxsIHRob3NlIHNjaGVkdWxlciBhbGdvcml0aG1zIOKAkyBgZm9gLCBgbGJsY2AsIGBsYmxjcmAsIGBsY2AsIGBtaGAsIGBucWAsIGBvdmZgLCBgcnJgLCBgc2VkYCwgYHNoYCwgYHR3b3NgLCBgd2xjYCwgYHdycmAg4oCTIHRvIHVzZSB0aGUgbmV3IGB0ZXN0X2JpdGAgYXBwcm9hY2ggaW5zdGVhZCBvZiB0aGUgb2xkIGJpdHdpc2UgQU5EIHN1Z2dlc3RzIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3IgaW4gaG93IHRoZXNlIGFsZ29yaXRobXMgaW50ZXJwcmV0IGFuZCByZWFjdCB0byBkZXN0aW5hdGlvbiBvdmVybG9hZC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgY29yZSBsb2dpYyBjaGFuZ2UgcmVsYXRlZCB0byBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBsb2FkIGJhbGFuY2luZywgYW5kIGdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHN1YnRsZSBidWdzIGluIHN1Y2ggYSBzZW5zaXRpdmUgYXJlYSwgdGhpcyBpcyBzb21ldGhpbmcgdGhhdCAqKmFic29sdXRlbHkgbmVlZHMgdG8gYmUgZnV6emVkLioqXG5cbk5vdywgbGV0J3MgZ2V0IGRvd24gdG8gdGhlIHByYWN0aWNhbGl0aWVzLiBUaGUgb2J2aW91cyBlbnRyeSBwb2ludCBmb3IgZGV0ZXJtaW5pbmcgdGhlIGFmZmVjdGVkIGNvbmZpZ3VyYXRpb25zIGlzIGBDT05GSUdfSVBfVlNgLCBzbyB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnYCBmaWxlIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRvIHBpbnBvaW50IGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhlIGJlaGF2aW9yIG9mIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMzQsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo0OTo0Ny4wOTcxMDUyNjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1NDU1OTU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NDk6NDkuNDUxNjY5OTQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYyNTg5MTU3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHRob3VnaHQgaXM6XG5cbioqQ2hlY2tpbmcgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24gTmVlZHMqKlxuXG5SaWdodCwgYmVmb3JlIEkgZ2V0IHN0YXJ0ZWQgb24gYW55dGhpbmcsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBrbm93IHRoZSAqZXhhY3QqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSBuZWNlc3NhcnkgZm9yIHRoZXNlIHNjaGVkdWxlcnMuIEkgY2FuJ3QganVzdCBqdW1wIGluIGFuZCBzdGFydCBjb2Rpbmcgd2l0aG91dCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGlucHV0cyBhbmQgcGFyYW1ldGVycy4gV2hhdCBhcmUgdGhlIGtleSBzZXR0aW5ncz8gV2hhdCBhcmUgdGhlIGRlZmF1bHRzPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnM/IFRoaXMgaXNuJ3QgYSBcIm9uZS1zaXplLWZpdHMtYWxsXCIgc2NlbmFyaW8uIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgYWxsIHRoZSBwb3NzaWJpbGl0aWVzIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gT25seSB0aGVuIGNhbiBJIGRldGVybWluZSB0aGUgYmVzdCBhcHByb2FjaCBmb3IgaW1wbGVtZW50YXRpb24uIExldCdzIG1ha2Ugc3VyZSBJIGRvbid0IG92ZXJsb29rIGFueXRoaW5nIGNydWNpYWwuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBhbnkgcmVsZXZhbnQgZGVzaWduIHNwZWNzIHdpdGggYSBmaW5lLXRvb3RoZWQgY29tYi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNTEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo0OTo1My4wNzc1NjMxNzZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY1NTg1NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1ZTXy4qXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NDk6NTMuMTc0MTMxNTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQ2OTYzNjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIHRoZSB1c2VyIGlzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gU2NoZWR1bGVyIENvbmZpZ3VyYXRpb25zKipcblxuQWxyaWdodCwgSSdtIGF0IGEgcG9pbnQgaW4gdGhlIHByb2Nlc3Mgd2hlcmUgSSBuZWVkIHRvIG1vdmUgYmV5b25kIGdlbmVyYWwgcHJpbmNpcGxlcy4gSSBuZWVkIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHNjaGVkdWxlcnMsIGFuZCB3aGlsZSBJIHVuZGVyc3RhbmQgdGhlIGhpZ2gtbGV2ZWwgY29uY2VwdHMsIEkgY2FuJ3QgcmVhbGx5IG1ha2UgYW55IGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCBvcHRpbWl6YXRpb24gb3IgZmluZS10dW5pbmcgd2l0aG91dCBzZWVpbmcgdGhlICphY3R1YWwqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQncyB0aW1lIHRvIHN0b3AgdGhlb3JpemluZyBhbmQgc3RhcnQgbG9va2luZyBhdCB0aGUgc3BlY2lmaWNzLiBXaGF0IHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZT8gV2hhdCBhcmUgdGhlaXIgZGVmYXVsdCB2YWx1ZXM/IFdoYXQga2luZCBvZiBrbm9icyBkbyBJIGhhdmUgdG8gdHVybiB0byBnZXQgdGhlIHBlcmZvcm1hbmNlIEknbSBsb29raW5nIGZvcj8gSSdtIG5vdCBnb2luZyB0byBnZXQgYm9nZ2VkIGRvd24gaW4gdGhlIGdlbmVyaWMsIGFic3RyYWN0IGV4cGxhbmF0aW9ucyBhbnltb3JlLiBHaXZlIG1lIHRoZSBjb25jcmV0ZSBzdHVmZiAtIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLCB0aGUgQVBJIGRvY3VtZW50YXRpb24sIHdoYXRldmVyIGl0IHRha2VzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIG51dHMgYW5kIGJvbHRzIG9mIHRoZSBzY2hlZHVsZXIgaW1wbGVtZW50YXRpb25zIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZWlyIHBvdGVudGlhbC4gTGV0J3Mgc2VlIHdoYXQgd2UncmUgYWN0dWFsbHkgd29ya2luZyB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY5MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjQ5OjU3LjEyMTA5ODIzM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzIyODQxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NDk6NTcuMTc4MzMxMjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ1NzQyMjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIERpcmVjdCBBcHByb2FjaCoqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyLiBObyBuZWVkIHRvIG92ZXJ0aGluayB0aGlzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJMZXQncyBqdXN0IHJlYWQgdGhlIGZpbGUuXCIgSSdtIGN1dHRpbmcgdGhyb3VnaCBhbnkgcHJlbGltaW5hcnkgYXNzdW1wdGlvbnMgb3Igc3RyYXRlZ2ljIGNvbnNpZGVyYXRpb25zLiBJdCdzIGEgc2ltcGxlLCBkaXJlY3QsIGFuZCBvZnRlbiB0aGUgbW9zdCBlZmZpY2llbnQgc3RhcnRpbmcgcG9pbnQuIFdlJ3JlIG5vdCBlbmdhZ2luZyBpbiBjb21wbGV4IG1vZGVsaW5nIG9yIHJpc2sgYXNzZXNzbWVudHMgYXQgdGhpcyBzdGFnZTsgcmF0aGVyLCB3ZSBuZWVkIHRvIGVzdGFibGlzaCBhIGJhc2UgbGV2ZWwgdW5kZXJzdGFuZGluZy4gVGhlIGZpbGUgaXRzZWxmIGlzIHRoZSBwcmltYXJ5IHNvdXJjZSBvZiBpbmZvcm1hdGlvbiwgYW5kIHRoZSBtb3N0IGV4cGVkaWVudCBtZXRob2QgaXMgdG8gc2ltcGx5IGJlZ2luIHByb2Nlc3NpbmcgaXRzIGNvbnRlbnRzLiBXZSdsbCBzdGFydCBhdCB0aGUgbW9zdCBlbGVtZW50YXJ5IGxldmVsLCBhbmQgYmVnaW4gcHJvY2Vzc2luZyB0aGUgZGF0YSB0byBsYXkgdGhlIGZvdW5kYXRpb25zIGZvciBkZWVwZXIgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjM0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo1MDowMC45MjQwNzU1ODZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NTEzODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5jb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo1MDowMC45ODE1OTc1NTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMDA5MjM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIEh1bnRpbmcqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgSVBWUyAoSVAgVmlydHVhbCBTZXJ2ZXIpIGlzIGNvbmZpZ3VyZWQgaW4gdGhpcyBrZXJuZWwuICBSYXRoZXIgdGhhbiBtYW51YWxseSBzaWZ0aW5nIHRocm91Z2ggdGhlIHNwcmF3bGluZyBgLmNvbmZpZ2AgZmlsZSwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgZ3JlcGAuIEkgd2FudCB0byBiZSBzcGVjaWZpYywgc28gSSdtIHVzaW5nIGBncmVwYCB3aXRoIHRoZSBleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb24gb3B0aW9uIChgLUVgKS4gVGhhdCB3YXkgSSBjYW4gdXNlIHRoZSBhbmNob3IgdG8gbWFrZSBzdXJlIHRoYXQgSSBvbmx5IGdldCByZXN1bHRzIGZyb20gdGhlIHN0YXJ0IG9mIGEgbGluZS4gSSdsbCBzZWFyY2ggZm9yIHRoZSBgY29uZmlnIElQX1ZTYCBzdHJpbmcuIFRoYXQgc2hvdWxkIHplcm8gaW4gcHJlY2lzZWx5IG9uIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmcgbGluZSBhbmQgaWdub3JlIGFueSBvdGhlciBpbnN0YW5jZXMgb2YgYElQX1ZTYCBlbHNld2hlcmUgd2l0aGluIHRoZSBjb25maWcgZmlsZS4gIFRoaXMgaXMgdGhlIGZhc3Rlc3QsIGNsZWFuZXN0IHdheSB0byBnZXQgYSB5ZXMvbm8gb24gSVBWUy4gU2ltcGxlIGFuZCBlZmZpY2llbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjUzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NTA6MDQuNDExNjkyMjA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzI5MzYxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeY29uZmlnIElQX1ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NTA6MDQuNDY5MDEyNDgzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTkyMjY1NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaGVyZS5cblxuKipJbml0aWFsIENvbmZ1c2lvbiBhbmQgSW52ZXN0aWdhdGlvbiBCZWdpbnMqKlxuXG5XYWl0IGEgc2Vjb25kLi4uIHdoeSBhcmUgKnRob3NlIHNwZWNpZmljKiBzeW1ib2xpYyBjb25zdGFudHMsIGBJUF9WU19TSF9UQUJfQklUU2AgYW5kIGBJUF9WU19NSF9UQUJfSU5ERVhgLCB0aGUgb25seSBvbmVzIHNob3dpbmcgdXA/IFRoYXQncyBub3Qgd2hhdCBJIGV4cGVjdGVkLiBUaGVyZSBtdXN0IGJlIGEgcmVhc29uIGZvciB0aGlzIG5hcnJvd2VkIHNjb3BlLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCdzIGhhcHBlbmluZy4gVGhlIGJlc3Qgd2F5IHRvIGNsYXJpZnkgdGhpcyB3b3VsZCBiZSB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBmaWxlIGFuZCBnZXQgc29tZSBjb250ZXh0LiBMZXQgbWUgcmVhZCB0aGUgc291cmNlIGZpbGUgaXRzZWxmLiBJJ20gZ29pbmcgdG8gc3RhcnQgdGhlcmUgYW5kIHRoZW4gSSBjYW4gYnVpbGQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBmcm9tIGZpcnN0IHByaW5jaXBsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDk1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NTA6MDguNjY4MjQyNzAyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgSVAgVmlydHVhbCBTZXJ2ZXIgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0bWVudWNvbmZpZyBJUF9WU1xcbiAgIDY6XFx0XFx0dHJpc3RhdGUgXFxcIklQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIChORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLPW4pXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIElQIFZpcnR1YWwgU2VydmVyIHN1cHBvcnQgd2lsbCBsZXQgeW91IGJ1aWxkIGEgaGlnaC1wZXJmb3JtYW5jZVxcbiAgMTE6XFx0XFx0ICB2aXJ0dWFsIHNlcnZlciBiYXNlZCBvbiBjbHVzdGVyIG9mIHR3byBvciBtb3JlIHJlYWwgc2VydmVycy4gVGhpc1xcbiAgMTI6XFx0XFx0ICBvcHRpb24gbXVzdCBiZSBlbmFibGVkIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlIGNsdXN0ZXJlZCBjb21wdXRlcnNcXG4gIDEzOlxcdFxcdCAgdGhhdCB3aWxsIHRha2UgY2FyZSBvZiBpbnRlcmNlcHRpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYVxcbiAgMTQ6XFx0XFx0ICBzaW5nbGUgSVAgYWRkcmVzcyBhbmQgc2NoZWR1bGluZyB0aGVtIHRvIHJlYWwgc2VydmVycy5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0ICBUaHJlZSByZXF1ZXN0IGRpc3BhdGNoaW5nIHRlY2huaXF1ZXMgYXJlIGltcGxlbWVudGVkLCB0aGV5IGFyZVxcbiAgMTc6XFx0XFx0ICB2aXJ0dWFsIHNlcnZlciB2aWEgTkFULCB2aXJ0dWFsIHNlcnZlciB2aWEgdHVubmVsaW5nIGFuZCB2aXJ0dWFsXFxuICAxODpcXHRcXHQgIHNlcnZlciB2aWEgZGlyZWN0IHJvdXRpbmcuIFRoZSBzZXZlcmFsIHNjaGVkdWxpbmcgYWxnb3JpdGhtcyBjYW5cXG4gIDE5OlxcdFxcdCAgYmUgdXNlZCB0byBjaG9vc2Ugd2hpY2ggc2VydmVyIHRoZSBjb25uZWN0aW9uIGlzIGRpcmVjdGVkIHRvLFxcbiAgMjA6XFx0XFx0ICB0aHVzIGxvYWQgYmFsYW5jaW5nIGNhbiBiZSBhY2hpZXZlZCBhbW9uZyB0aGUgc2VydmVycy4gIEZvciBtb3JlXFxuICAyMTpcXHRcXHQgIGluZm9ybWF0aW9uIGFuZCBpdHMgYWRtaW5pc3RyYXRpb24gcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHRoZVxcbiAgMjI6XFx0XFx0ICBmb2xsb3dpbmcgVVJMOiBcXHUwMDNjaHR0cDovL3d3dy5saW51eHZpcnR1YWxzZXJ2ZXIub3JnL1xcdTAwM2UuXFxuICAyMzpcXHRcXG4gIDI0OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gIDI1OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMjY6XFx0XFxuICAyNzpcXHRpZiBJUF9WU1xcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWdcXHRJUF9WU19JUFY2XFxuICAzMDpcXHRcXHRib29sIFxcXCJJUHY2IHN1cHBvcnQgZm9yIElQVlNcXFwiXFxuICAzMTpcXHRcXHRkZXBlbmRzIG9uIElQVjYgPSB5IHx8IElQX1ZTID0gSVBWNlxcbiAgMzI6XFx0XFx0c2VsZWN0IE5GX0RFRlJBR19JUFY2XFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIEFkZCBJUHY2IHN1cHBvcnQgdG8gSVBWUy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBTYXkgWSBpZiB1bnN1cmUuXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZ1xcdElQX1ZTX0RFQlVHXFxuICAzOTpcXHRcXHRib29sIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBkZWJ1Z2dpbmdcXFwiXFxuICA0MDpcXHRcXHRoZWxwXFxuICA0MTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZ2V0IGFkZGl0aW9uYWwgbWVzc2FnZXMgdXNlZnVsIGluXFxuICA0MjpcXHRcXHQgIGRlYnVnZ2luZyB0aGUgSVAgdmlydHVhbCBzZXJ2ZXIgY29kZS4gWW91IGNhbiBjaGFuZ2UgdGhlIGRlYnVnXFxuICA0MzpcXHRcXHQgIGxldmVsIGluIC9wcm9jL3N5cy9uZXQvaXB2NC92cy9kZWJ1Z19sZXZlbFxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWdcXHRJUF9WU19UQUJfQklUU1xcbiAgNDY6XFx0XFx0aW50IFxcXCJJUFZTIGNvbm5lY3Rpb24gdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4gIDQ3OlxcdFxcdHJhbmdlIDggMjAgaWYgITY0QklUXFxuICA0ODpcXHRcXHRyYW5nZSA4IDI3IGlmIDY0QklUXFxuICA0OTpcXHRcXHRkZWZhdWx0IDEyXFxuICA1MDpcXHRcXHRoZWxwXFxuICA1MTpcXHRcXHQgIFRoZSBJUFZTIGNvbm5lY3Rpb24gaGFzaCB0YWJsZSB1c2VzIHRoZSBjaGFpbmluZyBzY2hlbWUgdG8gaGFuZGxlXFxuICA1MjpcXHRcXHQgIGhhc2ggY29sbGlzaW9ucy4gVXNpbmcgYSBiaWcgSVBWUyBjb25uZWN0aW9uIGhhc2ggdGFibGUgd2lsbCBncmVhdGx5XFxuICA1MzpcXHRcXHQgIHJlZHVjZSBjb25mbGljdHMgd2hlbiB0aGVyZSBhcmUgaHVuZHJlZHMgb2YgdGhvdXNhbmRzIG9mIGNvbm5lY3Rpb25zXFxuICA1NDpcXHRcXHQgIGluIHRoZSBoYXNoIHRhYmxlLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIE5vdGUgdGhlIHRhYmxlIHNpemUgbXVzdCBiZSBwb3dlciBvZiAyLiBUaGUgdGFibGUgc2l6ZSB3aWxsIGJlIHRoZVxcbiAgNTc6XFx0XFx0ICB2YWx1ZSBvZiAyIHRvIHRoZSB5b3VyIGlucHV0IG51bWJlciBwb3dlci4gVGhlIG51bWJlciB0byBjaG9vc2UgaXNcXG4gIDU4OlxcdFxcdCAgZnJvbSA4IHRvIDI3IGZvciA2NEJJVCgyMCBvdGhlcndpc2UpLCB0aGUgZGVmYXVsdCBudW1iZXIgaXMgMTIsXFxuICA1OTpcXHRcXHQgIHdoaWNoIG1lYW5zIHRoZSB0YWJsZSBzaXplIGlzIDQwOTYuIERvbid0IGlucHV0IHRoZSBudW1iZXIgdG9vXFxuICA2MDpcXHRcXHQgIHNtYWxsLCBvdGhlcndpc2UgeW91IHdpbGwgbG9zZSBwZXJmb3JtYW5jZSBvbiBpdC4gWW91IGNhbiBhZGFwdCB0aGVcXG4gIDYxOlxcdFxcdCAgdGFibGUgc2l6ZSB5b3Vyc2VsZiwgYWNjb3JkaW5nIHRvIHlvdXIgdmlydHVhbCBzZXJ2ZXIgYXBwbGljYXRpb24uXFxuICA2MjpcXHRcXHQgIEl0IGlzIGdvb2QgdG8gc2V0IHRoZSB0YWJsZSBzaXplIG5vdCBmYXIgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2ZcXG4gIDYzOlxcdFxcdCAgY29ubmVjdGlvbnMgcGVyIHNlY29uZCBtdWx0aXBseWluZyBhdmVyYWdlIGxhc3RpbmcgdGltZSBvZlxcbiAgNjQ6XFx0XFx0ICBjb25uZWN0aW9uIGluIHRoZSB0YWJsZS4gIEZvciBleGFtcGxlLCB5b3VyIHZpcnR1YWwgc2VydmVyIGdldHMgMjAwXFxuICA2NTpcXHRcXHQgIGNvbm5lY3Rpb25zIHBlciBzZWNvbmQsIHRoZSBjb25uZWN0aW9uIGxhc3RzIGZvciAyMDAgc2Vjb25kcyBpblxcbiAgNjY6XFx0XFx0ICBhdmVyYWdlIGluIHRoZSBjb25uZWN0aW9uIHRhYmxlLCB0aGUgdGFibGUgc2l6ZSBzaG91bGQgYmUgbm90IGZhclxcbiAgNjc6XFx0XFx0ICBsZXNzIHRoYW4gMjAweDIwMCwgaXQgaXMgZ29vZCB0byBzZXQgdGhlIHRhYmxlIHNpemUgMzI3NjggKDIqKjE1KS5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0ICBBbm90aGVyIG5vdGUgdGhhdCBlYWNoIGNvbm5lY3Rpb24gb2NjdXBpZXMgMTI4IGJ5dGVzIGVmZmVjdGl2ZWx5IGFuZFxcbiAgNzA6XFx0XFx0ICBlYWNoIGhhc2ggZW50cnkgdXNlcyA4IGJ5dGVzLCBzbyB5b3UgY2FuIGVzdGltYXRlIGhvdyBtdWNoIG1lbW9yeSBpc1xcbiAgNzE6XFx0XFx0ICBuZWVkZWQgZm9yIHlvdXIgYm94LlxcbiAgNzI6XFx0XFxuICA3MzpcXHRcXHQgIFlvdSBjYW4gb3ZlcndyaXRlIHRoaXMgbnVtYmVyIHNldHRpbmcgY29ubl90YWJfYml0cyBtb2R1bGUgcGFyYW1ldGVyXFxuICA3NDpcXHRcXHQgIG9yIGJ5IGFwcGVuZGluZyBpcF92cy5jb25uX3RhYl9iaXRzPT8gdG8gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgaWZcXG4gIDc1OlxcdFxcdCAgSVAgVlMgd2FzIGNvbXBpbGVkIGJ1aWx0LWluLlxcbiAgNzY6XFx0XFxuICA3NzpcXHRjb21tZW50IFxcXCJJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAgNzg6XFx0XFxuICA3OTpcXHRjb25maWdcXHRJUF9WU19QUk9UT19UQ1BcXG4gIDgwOlxcdFxcdGJvb2wgXFxcIlRDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAgODE6XFx0XFx0aGVscFxcbiAgODI6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIFRDUCB0cmFuc3BvcnRcXG4gIDgzOlxcdFxcdCAgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cXG4gIDg0OlxcdFxcbiAgODU6XFx0Y29uZmlnXFx0SVBfVlNfUFJPVE9fVURQXFxuICA4NjpcXHRcXHRib29sIFxcXCJVRFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4gIDg3OlxcdFxcdGhlbHBcXG4gIDg4OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBVRFAgdHJhbnNwb3J0XFxuICA4OTpcXHRcXHQgIHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXFxuICA5MDpcXHRcXG4gIDkxOlxcdGNvbmZpZ1xcdElQX1ZTX1BST1RPX0FIX0VTUFxcbiAgOTI6XFx0XFx0ZGVmX2Jvb2wgSVBfVlNfUFJPVE9fRVNQIHx8IElQX1ZTX1BST1RPX0FIXFxuICA5MzpcXHRcXG4gIDk0OlxcdGNvbmZpZ1xcdElQX1ZTX1BST1RPX0VTUFxcbiAgOTU6XFx0XFx0Ym9vbCBcXFwiRVNQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuICA5NjpcXHRcXHRoZWxwXFxuICA5NzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgRVNQIChFbmNhcHN1bGF0aW9uXFxuICA5ODpcXHRcXHQgIFNlY3VyaXR5IFBheWxvYWQpIHRyYW5zcG9ydCBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxcbiAgOTk6XFx0XFxuIDEwMDpcXHRjb25maWdcXHRJUF9WU19QUk9UT19BSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo1MDowOC42NjgzNjY2MzJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzMDI0Nzc4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBRdWFuZGFyeSoqXG5cblJpZ2h0LCBzbyBJJ20gZGl2aW5nIGludG8gdGhlIGtlcm5lbCBjb25maWcgZmlsZXMgYWdhaW4sIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGxvYWQgYmFsYW5jaW5nIHNjaGVkdWxlcnMuIE15IGluaXRpYWwgaHVuY2gsIGFuZCBpdCdzIGEgcHJldHR5IHN0cm9uZyBvbmUgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgdGhhdCB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoaW5ncyBsaWtlIFJvdW5kIFJvYmluIChgSVBfVlNfUlJgKSBhbmQgV2VpZ2h0ZWQgUm91bmQgUm9iaW4gKGBJUF9WU19XUlJgKSBhcmUgbGlrZWx5IG5lc3RlZCB3aXRoaW4gdGhvc2UgYGNvbmZpZ2AgZGlyZWN0aXZlcy4gSSd2ZSBzZWVuIHRoYXQgcGF0dGVybiBjb3VudGxlc3MgdGltZXMgYmVmb3JlIGluIHRoaXMgc29ydCBvZiBjb2RlLiBUaGVyZWZvcmUsIGxldCdzIGNvbmZpcm0gbXkgc3VzcGljaW9ucyBieSBleGFtaW5pbmcgdGhlIG5leHQgMTAwIGxpbmVzLiBUaGlzIHNob3VsZCBnaXZlIG1lIGVub3VnaCBjb250ZXh0IHRvIHNlZSBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgZGVmaW5lZCwgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsbHkgaG93IHRoZXkncmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBvdmVyYWxsIGBpcF92c2AgZnJhbWV3b3JrLiBJIGV4cGVjdCB0byBiZSBsb29raW5nIGZvciBhc3NvY2lhdGVkIGRlZmluZXMsIGRvY3VtZW50YXRpb24gY29tbWVudHMsIGFuZCBhbnkgbG9naWMgdGllZCB0byBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhlc2Ugc2NoZWR1bGVycy4gSXQncyBhIGZhaXJseSBzdGFuZGFyZCBhcHByb2FjaCB0byBwaW5wb2ludGluZyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODMyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo1MDoxMy41OTg2MjA5OTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMDE6XFx0XFx0Ym9vbCBcXFwiQUggbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4gMTAyOlxcdFxcdGhlbHBcXG4gMTAzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBBSCAoQXV0aGVudGljYXRpb25cXG4gMTA0OlxcdFxcdCAgSGVhZGVyKSB0cmFuc3BvcnQgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cXG4gMTA1OlxcdFxcbiAxMDY6XFx0Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXFxuIDEwNzpcXHRcXHRib29sIFxcXCJTQ1RQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuIDEwODpcXHRcXHRzZWxlY3QgTkVUX0NSQzMyQ1xcbiAxMDk6XFx0XFx0aGVscFxcbiAxMTA6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIFNDVFAgdHJhbnNwb3J0XFxuIDExMTpcXHRcXHQgIHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXFxuIDExMjpcXHRcXG4gMTEzOlxcdGNvbW1lbnQgXFxcIklQVlMgc2NoZWR1bGVyXFxcIlxcbiAxMTQ6XFx0XFxuIDExNTpcXHRjb25maWdcXHRJUF9WU19SUlxcbiAxMTY6XFx0XFx0dHJpc3RhdGUgXFxcInJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuIDExNzpcXHRcXHRoZWxwXFxuIDExODpcXHRcXHQgIFRoZSByb2Jpbi1yb2JpbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBzaW1wbHkgZGlyZWN0cyBuZXR3b3JrXFxuIDExOTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIGRpZmZlcmVudCByZWFsIHNlcnZlcnMgaW4gYSByb3VuZC1yb2JpbiBtYW5uZXIuXFxuIDEyMDpcXHRcXG4gMTIxOlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMTIyOlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAxMjM6XFx0IFxcbiAxMjQ6XFx0Y29uZmlnXFx0SVBfVlNfV1JSXFxuIDEyNTpcXHRcXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgcm91bmQtcm9iaW4gc2NoZWR1bGluZ1xcXCJcXG4gMTI2OlxcdFxcdGhlbHBcXG4gMTI3OlxcdFxcdCAgVGhlIHdlaWdodGVkIHJvYmluLXJvYmluIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xcbiAxMjg6XFx0XFx0ICBjb25uZWN0aW9ucyB0byBkaWZmZXJlbnQgcmVhbCBzZXJ2ZXJzIGJhc2VkIG9uIHNlcnZlciB3ZWlnaHRzXFxuIDEyOTpcXHRcXHQgIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLiBTZXJ2ZXJzIHdpdGggaGlnaGVyIHdlaWdodHMgcmVjZWl2ZVxcbiAxMzA6XFx0XFx0ICBuZXcgY29ubmVjdGlvbnMgZmlyc3QgdGhhbiB0aG9zZSB3aXRoIGxlc3Mgd2VpZ2h0cywgYW5kIHNlcnZlcnNcXG4gMTMxOlxcdFxcdCAgd2l0aCBoaWdoZXIgd2VpZ2h0cyBnZXQgbW9yZSBjb25uZWN0aW9ucyB0aGFuIHRob3NlIHdpdGggbGVzc1xcbiAxMzI6XFx0XFx0ICB3ZWlnaHRzIGFuZCBzZXJ2ZXJzIHdpdGggZXF1YWwgd2VpZ2h0cyBnZXQgZXF1YWwgY29ubmVjdGlvbnMuXFxuIDEzMzpcXHRcXG4gMTM0OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMTM1OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAxMzY6XFx0XFxuIDEzNzpcXHRjb25maWdcXHRJUF9WU19MQ1xcbiAxMzg6XFx0XFx0dHJpc3RhdGUgXFxcImxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1xcXCJcXG4gMTM5OlxcdFxcdGhlbHBcXG4gMTQwOlxcdFxcdCAgVGhlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXFxuIDE0MTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgbnVtYmVyIG9mIGFjdGl2ZSBcXG4gMTQyOlxcdFxcdCAgY29ubmVjdGlvbnMuXFxuIDE0MzpcXHRcXG4gMTQ0OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMTQ1OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAxNDY6XFx0XFxuIDE0NzpcXHRjb25maWdcXHRJUF9WU19XTENcXG4gMTQ4OlxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuIDE0OTpcXHRcXHRoZWxwXFxuIDE1MDpcXHRcXHQgIFRoZSB3ZWlnaHRlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xcbiAxNTE6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IGFjdGl2ZSBjb25uZWN0aW9uc1xcbiAxNTI6XFx0XFx0ICBub3JtYWxpemVkIGJ5IHRoZSBzZXJ2ZXIgd2VpZ2h0LlxcbiAxNTM6XFx0XFxuIDE1NDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE1NTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTU2OlxcdFxcbiAxNTc6XFx0Y29uZmlnICBJUF9WU19GT1xcbiAxNTg6XFx0XFx0XFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIGZhaWxvdmVyIHNjaGVkdWxpbmdcXFwiXFxuIDE1OTpcXHRcXHRoZWxwXFxuIDE2MDpcXHRcXHQgIFRoZSB3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcXG4gMTYxOlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBoaWdoZXN0IHdlaWdodCB0aGF0IGlzXFxuIDE2MjpcXHRcXHQgIGN1cnJlbnRseSBhdmFpbGFibGUuXFxuIDE2MzpcXHRcXG4gMTY0OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMTY1OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAxNjY6XFx0XFxuIDE2NzpcXHRjb25maWcgIElQX1ZTX09WRlxcbiAxNjg6XFx0XFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmdcXFwiXFxuIDE2OTpcXHRcXHRoZWxwXFxuIDE3MDpcXHRcXHQgIFRoZSB3ZWlnaHRlZCBvdmVyZmxvdyBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcXG4gMTcxOlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBoaWdoZXN0IHdlaWdodCB0aGF0IGlzXFxuIDE3MjpcXHRcXHQgIGN1cnJlbnRseSBhdmFpbGFibGUgYW5kIG92ZXJmbG93cyB0byB0aGUgbmV4dCB3aGVuIGFjdGl2ZVxcbiAxNzM6XFx0XFx0ICBjb25uZWN0aW9ucyBleGNlZWQgdGhlIG5vZGUncyB3ZWlnaHQuXFxuIDE3NDpcXHRcXG4gMTc1OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMTc2OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAxNzc6XFx0XFxuIDE3ODpcXHRjb25maWdcXHRJUF9WU19MQkxDXFxuIDE3OTpcXHRcXHR0cmlzdGF0ZSBcXFwibG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbiAxODA6XFx0XFx0aGVscFxcbiAxODE6XFx0XFx0ICBUaGUgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBpcyBmb3JcXG4gMTgyOlxcdFxcdCAgZGVzdGluYXRpb24gSVAgbG9hZCBiYWxhbmNpbmcuIEl0IGlzIHVzdWFsbHkgdXNlZCBpbiBjYWNoZSBjbHVzdGVyLlxcbiAxODM6XFx0XFx0ICBUaGlzIGFsZ29yaXRobSB1c3VhbGx5IGRpcmVjdHMgcGFja2V0IGRlc3RpbmVkIGZvciBhbiBJUCBhZGRyZXNzIHRvXFxuIDE4NDpcXHRcXHQgIGl0cyBzZXJ2ZXIgaWYgdGhlIHNlcnZlciBpcyBhbGl2ZSBhbmQgdW5kZXIgbG9hZC4gSWYgdGhlIHNlcnZlciBpc1xcbiAxODU6XFx0XFx0ICBvdmVybG9hZGVkIChpdHMgYWN0aXZlIGNvbm5lY3Rpb24gbnVtYmVycyBpcyBsYXJnZXIgdGhhbiBpdHMgd2VpZ2h0KVxcbiAxODY6XFx0XFx0ICBhbmQgdGhlcmUgaXMgYSBzZXJ2ZXIgaW4gaXRzIGhhbGYgbG9hZCwgdGhlbiBhbGxvY2F0ZSB0aGUgd2VpZ2h0ZWRcXG4gMTg3OlxcdFxcdCAgbGVhc3QtY29ubmVjdGlvbiBzZXJ2ZXIgdG8gdGhpcyBJUCBhZGRyZXNzLlxcbiAxODg6XFx0XFxuIDE4OTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE5MDpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTkxOlxcdFxcbiAxOTI6XFx0Y29uZmlnICBJUF9WU19MQkxDUlxcbiAxOTM6XFx0XFx0dHJpc3RhdGUgXFxcImxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxcIlxcbiAxOTQ6XFx0XFx0aGVscFxcbiAxOTU6XFx0XFx0ICBUaGUgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcXG4gMTk2OlxcdFxcdCAgYWxnb3JpdGhtIGlzIGFsc28gZm9yIGRlc3RpbmF0aW9uIElQIGxvYWQgYmFsYW5jaW5nLiBJdCBpcyBcXG4gMTk3OlxcdFxcdCAgdXN1YWxseSB1c2VkIGluIGNhY2hlIGNsdXN0ZXIuIEl0IGRpZmZlcnMgZnJvbSB0aGUgTEJMQyBzY2hlZHVsaW5nXFxuIDE5ODpcXHRcXHQgIGFzIGZvbGxvd3M6IHRoZSBsb2FkIGJhbGFuY2VyIG1haW50YWlucyBtYXBwaW5ncyBmcm9tIGEgdGFyZ2V0XFxuIDE5OTpcXHRcXHQgIHRvIGEgc2V0IG9mIHNlcnZlciBub2RlcyB0aGF0IGNhbiBzZXJ2ZSB0aGUgdGFyZ2V0LiBSZXF1ZXN0cyBmb3JcXG4gMjAwOlxcdFxcdCAgYSB0YXJnZXQgYXJlIGFzc2lnbmVkIHRvIHRoZSBsZWFzdC1jb25uZWN0aW9uIG5vZGUgaW4gdGhlIHRhcmdldCdzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjUwOjEzLjU5ODcyNjA0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDc4NTAyMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBJUFZTIHNjaGVkdWxpbmcgbWV0aG9kczpcblxuKipBbmFseXppbmcgSVBWUyBTY2hlZHVsaW5nIEFsZ29yaXRobXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayBkb3duIHRoaXMgbGlzdCBvZiBJUFZTIHNjaGVkdWxpbmcgYWxnb3JpdGhtcy4gV2UgaGF2ZSB0aGUgdXN1YWwgc3VzcGVjdHMsIHN0YXJ0aW5nIHdpdGggdGhlIGJhc2UgYElQX1ZTYCAtIHRoZSBmb3VuZGF0aW9uYWwgcm91bmQtcm9iaW4gc2NoZW1lLiBUaGVuIHRoZXJlJ3MgYElQX1ZTX1JSYCwgd2hpY2ggaXMgY2xhc3NpYywgYnV0IGxldCdzIGRpdmUgaW50byBzb21lIG1vcmUgYWR2YW5jZWQgb3B0aW9ucy4gYElQX1ZTX1dSUmAgc2lnbmlmaWVzIFdlaWdodGVkIFJvdW5kIFJvYmluLCBnaXZpbmcgbW9yZSB3ZWlnaHQgdG8gY2VydGFpbiByZWFsIHNlcnZlcnMgYmFzZWQgb24gY2FwYWNpdHkgb3IgcHJpb3JpdHksIHRoYXQncyB1c2VmdWwuIE5leHQgaXMgYElQX1ZTX0xDYCwgTGVhc3QgQ29ubmVjdGlvbnMgd2hpY2ggSSBvZnRlbiB1c2UuIFdlIGhhdmUgYElQX1ZTX1dMQ2AgLSBXZWlnaHRlZCBMZWFzdCBDb25uZWN0aW9ucy4gSXQncyBhIHNvbGlkIGNob2ljZSBmb3IgYmFsYW5jaW5nIGxvYWQgYmFzZWQgb24gc2VydmVyIGNhcGFjaXR5IGFuZCBjb25uZWN0aW9uIGNvdW50LiBgSVBfVlNfRk9gLCB0aGF0J3MgdGhlIFwiZmFzdGVzdCBvbmVcIiB0aGF0IGlzIHJhcmVseSB1c2VkLiBMZXQncyBzZWUuLi4gYElQX1ZTX09WRmAsIEkgaGF2ZW4ndCBuZWVkZWQgdG8gdXNlIHRoYXQgbXVjaC4gVGhlbiwgd2UgZ2V0IGludG8gbW9yZSBhZHZhbmNlZCBjb25zaWRlcmF0aW9uczogYElQX1ZTX0xCTENgLCB0aGUgTG9jYWxpdHktQmFzZWQgTGVhc3QgQ29ubmVjdGlvbnMuIEFuZCwgZmluYWxseSwgYElQX1ZTX0xCTENSYCB3aGljaCBhZGRzIGxvY2FsaXR5IHdpdGggYSByZXBsaWNhdGlvbiBjb21wb25lbnQuIFRpbWUgdG8gY29tcGFyZSB0aGUgZWZmZWN0aXZlbmVzcyBvZiBlYWNoLiBMZXQncyBkaWcgZGVlcGVyIGludG8gdGhlIG51YW5jZXMgb2YgZWFjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU2NjcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjUwOjE4LjA3NzIzMDQ2OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMTpcXHRcXHQgIHNlcnZlciBzZXQuIElmIGFsbCB0aGUgbm9kZSBpbiB0aGUgc2VydmVyIHNldCBhcmUgb3ZlciBsb2FkZWQsXFxuIDIwMjpcXHRcXHQgIGl0IHBpY2tzIHVwIGEgbGVhc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSBjbHVzdGVyIGFuZCBhZGRzIGl0XFxuIDIwMzpcXHRcXHQgIGluIHRoZSBzZXZlciBzZXQgZm9yIHRoZSB0YXJnZXQuIElmIHRoZSBzZXJ2ZXIgc2V0IGhhcyBub3QgYmVlblxcbiAyMDQ6XFx0XFx0ICBtb2RpZmllZCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLCB0aGUgbW9zdCBsb2FkZWQgbm9kZSBpcyByZW1vdmVkXFxuIDIwNTpcXHRcXHQgIGZyb20gdGhlIHNlcnZlciBzZXQsIGluIG9yZGVyIHRvIGF2b2lkIGhpZ2ggZGVncmVlIG9mIHJlcGxpY2F0aW9uLlxcbiAyMDY6XFx0XFxuIDIwNzpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDIwODpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjA5OlxcdFxcbiAyMTA6XFx0Y29uZmlnXFx0SVBfVlNfREhcXG4gMjExOlxcdFxcdHRyaXN0YXRlIFxcXCJkZXN0aW5hdGlvbiBoYXNoaW5nIHNjaGVkdWxpbmdcXFwiXFxuIDIxMjpcXHRcXHRoZWxwXFxuIDIxMzpcXHRcXHQgIFRoZSBkZXN0aW5hdGlvbiBoYXNoaW5nIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFzc2lnbnMgbmV0d29ya1xcbiAyMTQ6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVycyB0aHJvdWdoIGxvb2tpbmcgdXAgYSBzdGF0aWNhbGx5IGFzc2lnbmVkXFxuIDIxNTpcXHRcXHQgIGhhc2ggdGFibGUgYnkgdGhlaXIgZGVzdGluYXRpb24gSVAgYWRkcmVzc2VzLlxcbiAyMTY6XFx0XFxuIDIxNzpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDIxODpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjE5OlxcdFxcbiAyMjA6XFx0Y29uZmlnXFx0SVBfVlNfU0hcXG4gMjIxOlxcdFxcdHRyaXN0YXRlIFxcXCJzb3VyY2UgaGFzaGluZyBzY2hlZHVsaW5nXFxcIlxcbiAyMjI6XFx0XFx0aGVscFxcbiAyMjM6XFx0XFx0ICBUaGUgc291cmNlIGhhc2hpbmcgc2NoZWR1bGluZyBhbGdvcml0aG0gYXNzaWducyBuZXR3b3JrXFxuIDIyNDpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXJzIHRocm91Z2ggbG9va2luZyB1cCBhIHN0YXRpY2FsbHkgYXNzaWduZWRcXG4gMjI1OlxcdFxcdCAgaGFzaCB0YWJsZSBieSB0aGVpciBzb3VyY2UgSVAgYWRkcmVzc2VzLlxcbiAyMjY6XFx0XFxuIDIyNzpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDIyODpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjI5OlxcdFxcbiAyMzA6XFx0Y29uZmlnXFx0SVBfVlNfTUhcXG4gMjMxOlxcdFxcdHRyaXN0YXRlIFxcXCJtYWdsZXYgaGFzaGluZyBzY2hlZHVsaW5nXFxcIlxcbiAyMzI6XFx0XFx0aGVscFxcbiAyMzM6XFx0XFx0ICBUaGUgbWFnbGV2IGNvbnNpc3RlbnQgaGFzaGluZyBzY2hlZHVsaW5nIGFsZ29yaXRobSBwcm92aWRlcyB0aGVcXG4gMjM0OlxcdFxcdCAgR29vZ2xlJ3MgTWFnbGV2IGhhc2hpbmcgYWxnb3JpdGhtIGFzIGEgSVBWUyBzY2hlZHVsZXIuIEl0IGFzc2lnbnNcXG4gMjM1OlxcdFxcdCAgbmV0d29yayBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVycyB0aHJvdWdoIGxvb2tpbmcgdXAgYSBzdGF0aWNhbGx5XFxuIDIzNjpcXHRcXHQgIGFzc2lnbmVkIHNwZWNpYWwgaGFzaCB0YWJsZSBjYWxsZWQgdGhlIGxvb2t1cCB0YWJsZS4gTWFnbGV2IGhhc2hpbmdcXG4gMjM3OlxcdFxcdCAgaXMgdG8gYXNzaWduIGEgcHJlZmVyZW5jZSBsaXN0IG9mIGFsbCB0aGUgbG9va3VwIHRhYmxlIHBvc2l0aW9uc1xcbiAyMzg6XFx0XFx0ICB0byBlYWNoIGRlc3RpbmF0aW9uLlxcbiAyMzk6XFx0XFxuIDI0MDpcXHRcXHQgIFRocm91Z2ggdGhpcyBvcGVyYXRpb24sIFRoZSBtYWdsZXYgaGFzaGluZyBnaXZlcyBhbiBhbG1vc3QgZXF1YWxcXG4gMjQxOlxcdFxcdCAgc2hhcmUgb2YgdGhlIGxvb2t1cCB0YWJsZSB0byBlYWNoIG9mIHRoZSBkZXN0aW5hdGlvbnMgYW5kIHByb3ZpZGVzXFxuIDI0MjpcXHRcXHQgIG1pbmltYWwgZGlzcnVwdGlvbiBieSB1c2luZyB0aGUgbG9va3VwIHRhYmxlLiBXaGVuIHRoZSBzZXQgb2ZcXG4gMjQzOlxcdFxcdCAgZGVzdGluYXRpb25zIGNoYW5nZXMsIGEgY29ubmVjdGlvbiB3aWxsIGxpa2VseSBiZSBzZW50IHRvIHRoZSBzYW1lXFxuIDI0NDpcXHRcXHQgIGRlc3RpbmF0aW9uIGFzIGl0IHdhcyBiZWZvcmUuXFxuIDI0NTpcXHRcXG4gMjQ2OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMjQ3OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAyNDg6XFx0XFxuIDI0OTpcXHRjb25maWdcXHRJUF9WU19TRURcXG4gMjUwOlxcdFxcdHRyaXN0YXRlIFxcXCJzaG9ydGVzdCBleHBlY3RlZCBkZWxheSBzY2hlZHVsaW5nXFxcIlxcbiAyNTE6XFx0XFx0aGVscFxcbiAyNTI6XFx0XFx0ICBUaGUgc2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkgc2NoZWR1bGluZyBhbGdvcml0aG0gYXNzaWducyBuZXR3b3JrXFxuIDI1MzpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgc2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkuIFRoZSBcXG4gMjU0OlxcdFxcdCAgZXhwZWN0ZWQgZGVsYXkgdGhhdCB0aGUgam9iIHdpbGwgZXhwZXJpZW5jZSBpcyAoQ2kgKyAxKSAvIFVpIGlmIFxcbiAyNTU6XFx0XFx0ICBzZW50IHRvIHRoZSBpdGggc2VydmVyLCBpbiB3aGljaCBDaSBpcyB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zXFxuIDI1NjpcXHRcXHQgIG9uIHRoZSBpdGggc2VydmVyIGFuZCBVaSBpcyB0aGUgZml4ZWQgc2VydmljZSByYXRlICh3ZWlnaHQpXFxuIDI1NzpcXHRcXHQgIG9mIHRoZSBpdGggc2VydmVyLlxcbiAyNTg6XFx0XFxuIDI1OTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDI2MDpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjYxOlxcdFxcbiAyNjI6XFx0Y29uZmlnXFx0SVBfVlNfTlFcXG4gMjYzOlxcdFxcdHRyaXN0YXRlIFxcXCJuZXZlciBxdWV1ZSBzY2hlZHVsaW5nXFxcIlxcbiAyNjQ6XFx0XFx0aGVscFxcbiAyNjU6XFx0XFx0ICBUaGUgbmV2ZXIgcXVldWUgc2NoZWR1bGluZyBhbGdvcml0aG0gYWRvcHRzIGEgdHdvLXNwZWVkIG1vZGVsLlxcbiAyNjY6XFx0XFx0ICBXaGVuIHRoZXJlIGlzIGFuIGlkbGUgc2VydmVyIGF2YWlsYWJsZSwgdGhlIGpvYiB3aWxsIGJlIHNlbnQgdG9cXG4gMjY3OlxcdFxcdCAgdGhlIGlkbGUgc2VydmVyLCBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGEgZmFzdCBvbmUuIFdoZW4gdGhlcmVcXG4gMjY4OlxcdFxcdCAgaXMgbm8gaWRsZSBzZXJ2ZXIgYXZhaWxhYmxlLCB0aGUgam9iIHdpbGwgYmUgc2VudCB0byB0aGUgc2VydmVyXFxuIDI2OTpcXHRcXHQgIHRoYXQgbWluaW1pemUgaXRzIGV4cGVjdGVkIGRlbGF5IChUaGUgU2hvcnRlc3QgRXhwZWN0ZWQgRGVsYXlcXG4gMjcwOlxcdFxcdCAgc2NoZWR1bGluZyBhbGdvcml0aG0pLlxcbiAyNzE6XFx0XFxuIDI3MjpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDI3MzpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjc0OlxcdFxcbiAyNzU6XFx0Y29uZmlnXFx0SVBfVlNfVFdPU1xcbiAyNzY6XFx0XFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIHJhbmRvbSB0d29zIGNob2ljZSBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuIDI3NzpcXHRcXHRoZWxwXFxuIDI3ODpcXHRcXHQgIFRoZSB3ZWlnaHRlZCByYW5kb20gdHdvcyBjaG9pY2UgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxuIDI3OTpcXHRcXHQgIGFsZ29yaXRobSBwaWNrcyB0d28gcmFuZG9tIHJlYWwgc2VydmVycyBhbmQgZGlyZWN0cyBuZXR3b3JrXFxuIDI4MDpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgYWN0aXZlIGNvbm5lY3Rpb25zXFxuIDI4MTpcXHRcXHQgIG5vcm1hbGl6ZWQgYnkgdGhlIHNlcnZlciB3ZWlnaHQuXFxuIDI4MjpcXHRcXG4gMjgzOlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMjg0OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAyODU6XFx0XFxuIDI4NjpcXHRjb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG4gMjg3OlxcdFxcbiAyODg6XFx0Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxuIDI4OTpcXHRcXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4gMjkwOlxcdFxcdHJhbmdlIDQgMjBcXG4gMjkxOlxcdFxcdGRlZmF1bHQgOFxcbiAyOTI6XFx0XFx0aGVscFxcbiAyOTM6XFx0XFx0ICBUaGUgc291cmNlIGhhc2hpbmcgc2NoZWR1bGVyIG1hcHMgc291cmNlIElQcyB0byBkZXN0aW5hdGlvbnNcXG4gMjk0OlxcdFxcdCAgc3RvcmVkIGluIGEgaGFzaCB0YWJsZS4gVGhpcyB0YWJsZSBpcyB0aWxlZCBieSBlYWNoIGRlc3RpbmF0aW9uXFxuIDI5NTpcXHRcXHQgIHVudGlsIGFsbCBzbG90cyBpbiB0aGUgdGFibGUgYXJlIGZpbGxlZC4gV2hlbiB1c2luZyB3ZWlnaHRzIHRvXFxuIDI5NjpcXHRcXHQgIGFsbG93IGRlc3RpbmF0aW9ucyB0byByZWNlaXZlIG1vcmUgY29ubmVjdGlvbnMsIHRoZSB0YWJsZSBpc1xcbiAyOTc6XFx0XFx0ICB0aWxlZCBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSB3ZWlnaHRzIHNwZWNpZmllZC4gVGhlIHRhYmxlXFxuIDI5ODpcXHRcXHQgIG5lZWRzIHRvIGJlIGxhcmdlIGVub3VnaCB0byBlZmZlY3RpdmVseSBmaXQgYWxsIHRoZSBkZXN0aW5hdGlvbnNcXG4gMjk5OlxcdFxcdCAgbXVsdGlwbGllZCBieSB0aGVpciByZXNwZWN0aXZlIHdlaWdodHMuXFxuIDMwMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NTA6MTguMDc3MzYxMTg5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMjc5NzA5OTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBJUFZTIFNjaGVkdWxlciBNb2RpZmljYXRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgYSBjb21wcmVoZW5zaXZlIG1vZGlmaWNhdGlvbiB0b3VjaGluZyBhbG1vc3QgZXZlcnkgSVBWUyBzY2hlZHVsZXIgd2UndmUgZ290OiBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLiBUaGUgcGF0Y2ggaXMgY2hhbmdpbmcgYSBsYXJnZSBzd2F0aGUgb2YgY29kZSwgdG91Y2hpbmcgYGlwX3ZzX2Nvbm4uY2AsIGBpcF92c19jdGwuY2AsIGFuZCBhbGwgdGhlIHNjaGVkdWxlci1zcGVjaWZpYyBmaWxlcyB0aGVtc2VsdmVzLiBUaGlzIGltcGxpZXMgYSBzaWduaWZpY2FudCBpbXBhY3QgYWNyb3NzIHRoZSBlbnRpcmUgbG9hZCBiYWxhbmNpbmcgaW5mcmFzdHJ1Y3R1cmUuIE5hdHVyYWxseSwgdGhpcyBtZWFucyB3ZSBzaG91bGQgZW5zdXJlIHRoYXQgYElQX1ZTYCBhbmQgYWxsIG9mIHRoZXNlIHNjaGVkdWxlcnMgYXJlIGVuYWJsZWQgZHVyaW5nIGJ1aWxkIHRpbWUuXG5cbk15IGF0dGVudGlvbiBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGUgY29yZSBJUFZTIGZ1bmN0aW9ucyB0aGF0IGFyZSB0aGUgYmVkcm9jayBvZiBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50OiBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLCBgaXBfdnNfYmluZF9kZXN0YCwgYGlwX3ZzX3VuYmluZF9kZXN0YCwgYGlwX3ZzX2FkZF9kZXN0YCwgYW5kIGBpcF92c19lZGl0X2Rlc3RgLCBhbG9uZyB3aXRoIHRoZSByZWxhdGVkIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YC4gVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBwaWVjZXMgdGhhdCB3b3VsZCBiZSBhZmZlY3RlZCBieSBzdWNoIGEgYnJvYWQgY2hhbmdlLlxuXG5TcGVjaWZpY2FsbHksIEknbSBub3cgemVyb2luZyBpbiBvbiBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLiBJJ20gY29uY2VybmVkIGFib3V0IHRoZSBpbmxpbmUgZGVjbGFyYXRpb24sIHdoaWNoIGlzIHNob3duIGluIHRoZSBwYXRjaC4gSSB3YXMgaW5pdGlhbGx5IHRocm93biBieSB0aGUgYF9fYWx3YXlzX2lubGluZWAgZGVjbGFyYXRpb24gaW4gYGlwX3ZzX2Nvbm4uY2AgYW5kIGl0cyBwcmVzZW5jZSBpbiBgaW5jbHVkZS9uZXQvaXBfdnMuaGAuIElmIGl0J3MgaW5saW5lLCBob3cgY2FuIG90aGVyIG1vZHVsZXMgbGlrZSBgaXBfdnNfY3RsLmNgIGRpcmVjdGx5IGNhbGwgaXQ/IFRoYXQncyBhIHRleHRib29rIHNvdXJjZSBvZiBsaW5rZXIgZXJyb3JzIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4gSG93ZXZlciwgYSBxdWljayBzY2FuIG9mIHRoZSBwYXRjaCByZXZlYWxzIHRoZSBmdW5jdGlvbiBpdHNlbGYgaW4gYGlwX3ZzX2Nvbm4uY2AuIFRoZSBjb21tZW50IGV4cGxhaW5zIGl0cyBwdXJwb3NlOiBtYW5hZ2luZyB0aGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBkZXN0aW5hdGlvbiBjb25uZWN0aW9uIGNvdW50cyBhbmQgdGhyZXNob2xkcy4gVGhlIGxvZ2ljIGlzIGNsZWFybHkgZGVmaW5lZC5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogKmRvZXMgdGhpcyBidWlsZD8qIFRoZSBwcm9tcHQgc3RhdGVzIHRoZSBjaGFuZ2VzIGFyZSBhbHJlYWR5IGFwcGxpZWQsIHNvIGFueSBwb3RlbnRpYWwgYnVpbGQgZXJyb3JzIHNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0LiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYGlwX3ZzX2Nvbm4uY2AgYW5kIGBpcF92c19jdGwuY2AgYnVpbGQgY29ycmVjdGx5LCBidXQgdGhpcyBpcyB0aGUgZmlyc3QgdGhpbmcgSSdkIGxvb2sgZm9yLiBBIG1pc3NpbmcgaW5jbHVkZSBvciBpbmNvcnJlY3QgdXNlIG9mIHRoZSBpbmxpbmUga2V5d29yZCB3b3VsZCBiZSBhIHNlcmlvdXMgcmVkIGZsYWcuIEkgd2FudCB0byBjb25maXJtIHRoYXQgYGlwX3ZzX2N0bC5jYCBjYW4gaW5kZWVkIGNhbGwgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYC4gVGhpcyBpcyBhIGNsYXNzaWMgcG90ZW50aWFsIGdvdGNoYSwgYW5kIGl0IGlzIHNvbWV0aGluZyB0byBlbnN1cmUgaXMgY29ycmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc2NjEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5ODAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo1MDozMS4zNTcwNzQwNDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjE0ODg5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaXBfdnMuaD0xOTEyPXN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19kZXN0X3B1dF9hbmRfZnJlZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX3ZzLmgtMTkxNy1cXG5pbmNsdWRlL25ldC9pcF92cy5oOjE5MTg6dm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCk7XFxuaW5jbHVkZS9uZXQvaXBfdnMuaC0xOTE5LVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz05ODg9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05OTgtICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo5OTk6X19hbHdheXNfaW5saW5lIHZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDAwLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTAyNz1pcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA4My1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwODQ6XFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDg1LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTE0NT1zdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTc4LVxcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExNzk6XFx0XFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTgwLVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTEzMTE9X19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMzc2LVxcdFxcdFdSSVRFX09OQ0UoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQsIHVkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjEzNzc6XFx0XFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTEzNzgtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo1MDozMy4zNzg1NjgxMzVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzExNTg3MzgzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBDcm9zcy1GaWxlIEZ1bmN0aW9uIENhbGwgSXNzdWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBzb21ldGhpbmcncyBub3QgcXVpdGUgcmlnaHQuIEkgc2VlIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgYW5kIHRoZSBkZWZpbml0aW9uIGluIGBpcF92c19jb25uLmNgLiBUaGUga2lja2VyIGlzLCBpdCdzIGRlZmluZWQgYXMgYF9fYWx3YXlzX2lubGluZWAuIElmIGl0J3MgKmFsd2F5cyogaW5saW5lZCB3aXRoaW4gdGhhdCBgLmNgIGZpbGUsIHRoZXJlJ3Mgbm8gd2F5IGl0J3MgZGlyZWN0bHkgY2FsbGFibGUgZnJvbSBhbm90aGVyIGAuY2AgZmlsZSwgbGlrZSBgaXBfdnNfY3RsLmNgLiBUaGF0IGp1c3Qgd291bGRuJ3Qgd29yay4gXG5cbk5vdywgYSBmbGVldGluZyB0aG91Z2h0Li4uIGNvdWxkIGBfX2Fsd2F5c19pbmxpbmVgIGp1c3QgYmUgYSBjb21waWxlciBoaW50LCBhbmQgbWF5YmUgaXQgKnN0aWxsKiBnZW5lcmF0ZXMgYW4gb3V0LW9mLWxpbmUgY29weT8gVGhhdCBzZWVtcyB1bmxpa2VseSwgdGhvdWdoLiBVc3VhbGx5LCBgX19hbHdheXNfaW5saW5lYCBwcmV0dHkgbXVjaCBmb3JjZXMgdGhlIGZ1bmN0aW9uIHRvIGJlIGlubGluZWQsIGFuZCBpdCB1c3VhbGx5IGltcGxpZXMgYGlubGluZWAuIElmIGl0IHdhc24ndCBgc3RhdGljYCwgaXQgKm1pZ2h0KiBnZW5lcmF0ZSBhbiBleHRlcm5hbCBzeW1ib2wsIGJ1dCBob25lc3RseSwgYF9fYWx3YXlzX2lubGluZWAgd2l0aG91dCBgc3RhdGljYCBpcyBqdXN0IHN0cmFuZ2UuIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgYGlwX3ZzX2Nvbm4uY2AgdG8gc2VlIGlmIGl0J3MgZXhwbGljaXRseSBleHBvcnRlZCBzb21laG93LCBvciBpZiB0aGVyZSdzIHNvbWUgb3RoZXIgdHJpY2tlcnkgZ29pbmcgb24uIE5lZWQgdG8gdmVyaWZ5IHRoaXMgcXVpY2tseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk5NzYsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NTA6NDAuNDk0NDQ1MjAxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODY1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk5MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDk5MDpcXHRcXHRyZXR1cm4gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKVxcbiA5OTE6XFx0XFx0XFx0KyBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlaW5hY3Rjb25ucyk7XFxuIDk5MjpcXHR9XFxuIDk5MzpcXHRcXG4gOTk0OlxcdC8qIFVwZGF0ZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIG51bWJlciBvZiBkZXN0IGNvbm5zIGFuZCBsb3dlci91cHBlclxcbiA5OTU6XFx0ICogY29ubmVjdGlvbiB0aHJlc2hvbGRzOlxcbiA5OTY6XFx0ICogLSBjb25ucyByZWFjaCB1X3RocmVzaG9sZCBhbmQgZXhjZWVkIGl0OiBzZXQgdGhlIGZsYWdcXG4gOTk3OlxcdCAqIC0gY29ubnMgZ28gYmVsb3cgbF90aHJlc2hvbGQgKG9yIDc1JSBvZiB1X3RocmVzaG9sZCk6IGNsZWFyIHRoZSBmbGFnXFxuIDk5ODpcXHQgKi9cXG4gOTk5OlxcdF9fYWx3YXlzX2lubGluZSB2b2lkIGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbjEwMDA6XFx0e1xcbjEwMDE6XFx0XFx0aW50IGNvbm5zO1xcbjEwMDI6XFx0XFx0dTMyIGwsIHU7XFxuMTAwMzpcXHRcXG4xMDA0OlxcdFxcdHUgPSBSRUFEX09OQ0UoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpO1xcbjEwMDU6XFx0XFx0aWYgKCF1KVxcbjEwMDY6XFx0XFx0XFx0Z290byB1bnNldDtcXG4xMDA3OlxcdFxcdGNvbm5zID0gaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpO1xcbjEwMDg6XFx0XFx0aWYgKGNvbm5zIFxcdTAwM2U9IHUpIHtcXG4xMDA5OlxcdFxcdFxcdHNldF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjUwOjQwLjQ5NDU2NTRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQwOTY5NTk2OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBhIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBgX19hbHdheXNfaW5saW5lYCB3aXRob3V0IGBzdGF0aWNgIGluIEdDQy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGl0IHdvdWxkIGJlIGlubGluZWQgZXZlcnl3aGVyZSBidXQgYWxzbyBoYXZlIGFuIGV4dGVybmFsIGRlZmluaXRpb24uIFRoZW4gSSByZW1lbWJlcmVkIEM5OSdzIGBpbmxpbmVgIGJlaGF2aW9yOiB3aXRob3V0IGBzdGF0aWNgLCBubyBleHRlcm5hbCBkZWZpbml0aW9uIGlzIGVtaXR0ZWQgdW5sZXNzIGBleHRlcm4gaW5saW5lYCBpcyB1c2VkLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBpZiB0aGlzIGlubGluZWQgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGlwX3ZzX2N0bC5jYCwgdGhlcmUgbWlnaHQgYmUgYW4gdW5kZWZpbmVkIHJlZmVyZW5jZSBpZiBubyBleHRlcm5hbCBkZWZpbml0aW9uIGV4aXN0cy4gQWN0dWFsbHksIG5vIG5lZWQgdG8gY29tcGlsZSwgSSdtIGp1c3QgYWZ0ZXIgdGhlIHJlc3VsdHMuXG5cblRoZSBwYXRjaCB0b3VjaGVzIGBpcF92c19jb25uLmNgLCBgaXBfdnNfY3RsLmNgLCBhbmQgdGhlIHNjaGVkdWxlcnMsIHNvIEkgbmVlZCB0byBob25lIGluIG9uIHRoZSByZWxldmFudCBzeW1ib2xzLiBUaGUga2V5IGZ1bmN0aW9ucyB0byB3YXRjaCBhcmUsIHdpdGhvdXQgYSBkb3VidCwgdGhlc2U6IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAsIGBpcF92c19iaW5kX2Rlc3RgLCBgaXBfdnNfdW5iaW5kX2Rlc3RgLCBgX19pcF92c191cGRhdGVfZGVzdGAsIGBpcF92c19hZGRfZGVzdGAsIGFuZCBgaXBfdnNfZWRpdF9kZXN0YC5cblxuTGV0J3MgYWxzbyBjYXN0IGEgd2lkZXIgbmV0IGFuZCBsb29rIGF0IG90aGVyIGZ1bmN0aW9ucyBhZmZlY3RlZC4gVGhlIHNjaGVkdWxlcnMgY2xlYXJseSBtYXR0ZXIgdG9vLCBzbyBJJ2xsIGFsc28gYWRkIHRoZXNlIHRvIHRoZSBtZW50YWwgY2hlY2tsaXN0OiBgaXBfdnNfZm9fc2NoZWR1bGVgLCBgX19pcF92c19sYmxjX3NjaGVkdWxlYCwgYF9faXBfdnNfbGJsY3Jfc2NoZWR1bGVgLCBgaXBfdnNfbGNfc2NoZWR1bGVgLCBgaXBfdnNfbWhfc2NoZWR1bGVgIChhbmQgbm90ZSB0aGF0IGl0IG1vZGlmaWVzIGBpc191bmF2YWlsYWJsZWAgaW4gYGlwX3ZzX21oLmNgKSwgYGlwX3ZzX25xX3NjaGVkdWxlYCwgYGlwX3ZzX292Zl9zY2hlZHVsZWAsIGBpcF92c19ycl9zY2hlZHVsZWAsIGBpcF92c19zZWRfc2NoZWR1bGVgLCBgaXNfdW5hdmFpbGFibGVgIGluIGBpcF92c19zaC5jYCwgYGlwX3ZzX3R3b3Nfc2NoZWR1bGVgLCBgaXBfdnNfd2xjX3NjaGVkdWxlYCwgYGlwX3ZzX3dycl9zY2hlZHVsZWAuXG5cbkZvciB0aGUgRm9jdXNTeW1ib2xzLCBJIHNob3VsZCBjb25zb2xpZGF0ZSB0aGUgZm9sbG93aW5nLCBlbnN1cmluZyBhIGdvb2QgYmFsYW5jZSBvZiBjb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIHNjaGVkdWxlciBiZWhhdmlvcnMsIGxpa2UgdGhpczpcbmBpcF92c19iaW5kX2Rlc3RgXG5gaXBfdnNfdW5iaW5kX2Rlc3RgXG5gX19pcF92c191cGRhdGVfZGVzdGBcbmBpcF92c19hZGRfZGVzdGBcbmBpcF92c19lZGl0X2Rlc3RgXG5gaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgXG5cbkFuZCwgb2YgY291cnNlLCB0aGUgY29uZmlndXJhdGlvbnMgYXJlIGNlbnRyYWwgdG8gdGhpcyB0b28uIEknbGwgbmVlZCB0aGVzZTogYElQX1ZTYCwgYElQX1ZTX1JSYCwgYElQX1ZTX1dSUmAsIGBJUF9WU19MQ2AsIGBJUF9WU19XTENgLCBgSVBfVlNfRk9gLCBgSVBfVlNfT1ZGYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgLCBgSVBfVlNfREhgLCBgSVBfVlNfU0hgLCBgSVBfVlNfTUhgLCBgSVBfVlNfU0VEYCwgYElQX1ZTX05RYCwgYW5kIGBJUF9WU19UV09TYC5cblxuQSBxdWljayBzYW5pdHkgY2hlY2sgYWdhaW5zdCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHdpbGwgY29uZmlybSB0aG9zZSBjb25maWcgbmFtZXMgYXJlIGNvcnJlY3QuIFllcCwgYWxsIGNsZWFyLlxuXG5BbHJpZ2h0LCB3aXRoIHRoYXQgY29uZmlybWVkLCBJJ2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzk1LCJPdXRwdXRUb2tlbnMiOjI4MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjUwOjU0LjU5MTUyNzExOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MjU5MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfUlJcIixcbiAgICBcIklQX1ZTX1dSUlwiLFxuICAgIFwiSVBfVlNfTENcIixcbiAgICBcIklQX1ZTX1dMQ1wiLFxuICAgIFwiSVBfVlNfRk9cIixcbiAgICBcIklQX1ZTX09WRlwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19TSFwiLFxuICAgIFwiSVBfVlNfTUhcIixcbiAgICBcIklQX1ZTX1NFRFwiLFxuICAgIFwiSVBfVlNfTlFcIixcbiAgICBcIklQX1ZTX1RXT1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZFwiLFxuICAgIFwiaXBfdnNfYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c191bmJpbmRfZGVzdFwiLFxuICAgIFwiX19pcF92c191cGRhdGVfZGVzdFwiLFxuICAgIFwiaXBfdnNfYWRkX2Rlc3RcIixcbiAgICBcImlwX3ZzX2VkaXRfZGVzdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIGxvYWQgYmFsYW5jaW5nIGxvZ2ljIG9mIElQVlMgYnkgY2hhbmdpbmcgaG93IHRoZSBkZXN0aW5hdGlvbiBvdmVybG9hZCBmbGFnIGlzIHVwZGF0ZWQgYW5kIGNoZWNrZWQuIEl0IGludHJvZHVjZXMgYSBuZXcgYGZsYWdzMmAgZmllbGQgYW5kIHVwZGF0ZXMgbXVsdGlwbGUgSVBWUyBzY2hlZHVsZXJzIHRvIHVzZSBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfUlJcIixcbiAgICBcIklQX1ZTX1dSUlwiLFxuICAgIFwiSVBfVlNfTENcIixcbiAgICBcIklQX1ZTX1dMQ1wiLFxuICAgIFwiSVBfVlNfRk9cIixcbiAgICBcIklQX1ZTX09WRlwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19TSFwiLFxuICAgIFwiSVBfVlNfTUhcIixcbiAgICBcIklQX1ZTX1NFRFwiLFxuICAgIFwiSVBfVlNfTlFcIixcbiAgICBcIklQX1ZTX1RXT1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZFwiLFxuICAgIFwiaXBfdnNfYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c191bmJpbmRfZGVzdFwiLFxuICAgIFwiX19pcF92c191cGRhdGVfZGVzdFwiLFxuICAgIFwiaXBfdnNfYWRkX2Rlc3RcIixcbiAgICBcImlwX3ZzX2VkaXRfZGVzdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIGxvYWQgYmFsYW5jaW5nIGxvZ2ljIG9mIElQVlMgYnkgY2hhbmdpbmcgaG93IHRoZSBkZXN0aW5hdGlvbiBvdmVybG9hZCBmbGFnIGlzIHVwZGF0ZWQgYW5kIGNoZWNrZWQuIEl0IGludHJvZHVjZXMgYSBuZXcgYGZsYWdzMmAgZmllbGQgYW5kIHVwZGF0ZXMgbXVsdGlwbGUgSVBWUyBzY2hlZHVsZXJzIHRvIHVzZSBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow2qr2w[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 12:38:10 +0000 UTC FinishedAt: 2026-07-13 12:50:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "2c7c88a412aa6d09cd04b414211b4ef8553b5309", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_RR", "IP_VS_WRR", "IP_VS_LC", "IP_VS_WLC", "IP_VS_FO", "IP_VS_OVF", "IP_VS_LBLC", "IP_VS_LBLCR", "IP_VS_DH", "IP_VS_SH", "IP_VS_MH", "IP_VS_SED", "IP_VS_NQ", "IP_VS_TWOS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "2c7c88a412aa6d09cd04b414211b4ef8553b5309", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_RR", "IP_VS_WRR", "IP_VS_LC", "IP_VS_WLC", "IP_VS_FO", "IP_VS_OVF", "IP_VS_LBLC", "IP_VS_LBLCR", "IP_VS_DH", "IP_VS_SH", "IP_VS_MH", "IP_VS_SED", "IP_VS_NQ", "IP_VS_TWOS" ], "series_id": "f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_dest_update_overload", "ip_vs_bind_dest", "ip_vs_unbind_dest", "__ip_vs_update_dest", "ip_vs_add_dest", "ip_vs_edit_dest" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dSUiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQyYjMzQ7LAogICAgJiMzNDtJUF9WU19XTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfRk8mIzM0OywKICAgICYjMzQ7SVBfVlNfT1ZGJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQ1ImIzM0OywKICAgICYjMzQ7SVBfVlNfREgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0gmIzM0OywKICAgICYjMzQ7SVBfVlNfTUgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0VEJiMzNDssCiAgICAmIzM0O0lQX1ZTX05RJiMzNDssCiAgICAmIzM0O0lQX1ZTX1RXT1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZCYjMzQ7LAogICAgJiMzNDtpcF92c19iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfdW5iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7X19pcF92c191cGRhdGVfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19hZGRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19lZGl0X2Rlc3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcgbG9naWMgb2YgSVBWUyBieSBjaGFuZ2luZyBob3cgdGhlIGRlc3RpbmF0aW9uIG92ZXJsb2FkIGZsYWcgaXMgdXBkYXRlZCBhbmQgY2hlY2tlZC4gSXQgaW50cm9kdWNlcyBhIG5ldyBgZmxhZ3MyYCBmaWVsZCBhbmQgdXBkYXRlcyBtdWx0aXBsZSBJUFZTIHNjaGVkdWxlcnMgdG8gdXNlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWYxMzZiNzM1ZDgxYmZjMGU0ZjM5MzBiZDAwOGVhYmQ4Y2Q2ZmVmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDEyOjQ5OjM4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX3ZzLmggYi9pbmNsdWRlL25ldC9pcF92cy5oXG5pbmRleCA0MTdmZjUxZjYyZmM4ZS4uNWU4ZTU1ZjgyYjA0NDAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9pcF92cy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9pcF92cy5oXG5AQCAtMzYsNiAmIzQzOzM2LDEzIEBAXG4gI2RlZmluZSBJUF9WU19IRFJfSU5WRVJTRVx0MVxuICNkZWZpbmUgSVBfVlNfSERSX0lDTVBcdFx0MlxuIFxuJiM0MzsvKiBEZXN0aW5hdGlvbiBTZXJ2ZXIgRmxhZ3MgKi9cbiYjNDM7I2RlZmluZSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFXHQweDAwMDFcdFx0Lyogc2VydmVyIGlzIGF2YWlsYWJsZSAqL1xuJiM0MztcbiYjNDM7ZW51bSB7XG4mIzQzO1x0SVBfVlNfREVTVF9GTF9PVkVSTE9BRCxcbiYjNDM7fTtcbiYjNDM7XG4gLyogY29ubl90YWIgbGltaXRzIChhcyBwZXIgS2NvbmZpZykgKi9cbiAjZGVmaW5lIElQX1ZTX0NPTk5fVEFCX01JTl9CSVRTXHQ4XG4gI2lmIEJJVFNfUEVSX0xPTkcgXHUwMDNlIDMyXG5AQCAtOTc2LDYgJiM0Mzs5ODMsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XG4gXHR2b2xhdGlsZSB1bnNpZ25lZCBpbnRcdGZsYWdzO1x0XHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xuIFx0YXRvbWljX3RcdFx0Y29ubl9mbGFncztcdC8qIGZsYWdzIHRvIGNvcHkgdG8gY29ubiAqL1xuIFx0YXRvbWljX3RcdFx0d2VpZ2h0O1x0XHQvKiBzZXJ2ZXIgd2VpZ2h0ICovXG4mIzQzO1x0dW5zaWduZWQgbG9uZ1x0XHRmbGFnczI7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRsYXN0X3dlaWdodDtcdC8qIHNlcnZlciBsYXRlc3Qgd2VpZ2h0ICovXG4gXHRfX3UxNlx0XHRcdHR1bl90eXBlO1x0LyogdHVubmVsIHR5cGUgKi9cbiBcdF9fYmUxNlx0XHRcdHR1bl9wb3J0O1x0LyogdHVubmVsIHBvcnQgKi9cbkBAIC0xOTA3LDYgJiM0MzsxOTE1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2Rlc3RfcHV0X2FuZF9mcmVlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHRrZnJlZShkZXN0KTtcbiB9XG4gXG4mIzQzO3ZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpO1xuJiM0MztcbiAvKiBJUFZTIHN5bmMgZGFlbW9uIGRhdGEgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXNcbiAgKiAoZnJvbSBpcF92c19zeW5jLmMpXG4gICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxuaW5kZXggMWVkMjM0ZTdmMjUxMzYuLjJjMzdjNmFjNzUyNWE1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oXG5AQCAtMjgsMTIgJiM0MzsyOCw2IEBAXG4gI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9GQUxMQkFDS1x0SVBfVlNfU1ZDX0ZfU0NIRUQxIC8qIFNIIGZhbGxiYWNrICovXG4gI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9QT1JUXHRJUF9WU19TVkNfRl9TQ0hFRDIgLyogU0ggdXNlIHBvcnQgKi9cbiBcbi0vKlxuLSAqICAgICAgRGVzdGluYXRpb24gU2VydmVyIEZsYWdzXG4tICovXG4tI2RlZmluZSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFXHQweDAwMDFcdFx0Lyogc2VydmVyIGlzIGF2YWlsYWJsZSAqL1xuLSNkZWZpbmUgSVBfVlNfREVTVF9GX09WRVJMT0FEXHQweDAwMDJcdFx0Lyogc2VydmVyIGlzIG92ZXJsb2FkZWQgKi9cbi1cbiAvKlxuICAqICAgICAgSVBWUyBzeW5jIGRhZW1vbiBzdGF0ZXNcbiAgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggNmVkMjYyMjM2M2YwZDYuLjI1OTFmNGUxNDNmODRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTk5MSw2ICYjNDM7OTkxLDM0IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcdFx0JiM0MzsgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiB9XG4gXG4mIzQzOy8qIFVwZGF0ZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIG51bWJlciBvZiBkZXN0IGNvbm5zIGFuZCBsb3dlci91cHBlclxuJiM0MzsgKiBjb25uZWN0aW9uIHRocmVzaG9sZHM6XG4mIzQzOyAqIC0gY29ubnMgcmVhY2ggdV90aHJlc2hvbGQgYW5kIGV4Y2VlZCBpdDogc2V0IHRoZSBmbGFnXG4mIzQzOyAqIC0gY29ubnMgZ28gYmVsb3cgbF90aHJlc2hvbGQgKG9yIDc1JSBvZiB1X3RocmVzaG9sZCk6IGNsZWFyIHRoZSBmbGFnXG4mIzQzOyAqL1xuJiM0MztfX2Fsd2F5c19pbmxpbmUgdm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiYjNDM7e1xuJiM0MztcdGludCBjb25ucztcbiYjNDM7XHR1MzIgbCwgdTtcbiYjNDM7XG4mIzQzO1x0dSA9IFJFQURfT05DRShkZXN0LVx1MDAzZXVfdGhyZXNob2xkKTtcbiYjNDM7XHRpZiAoIXUpXG4mIzQzO1x0XHRnb3RvIHVuc2V0O1xuJiM0MztcdGNvbm5zID0gaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpO1xuJiM0MztcdGlmIChjb25ucyBcdTAwM2U9IHUpIHtcbiYjNDM7XHRcdHNldF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XHQvKiBMb3cgdGhyZXNob2xkIGRlZmF1bHRzIHRvIDc1JSBvZiB1cHBlciB0aHJlc2hvbGQgKi9cbiYjNDM7XHRsID0gUkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpID8gOiAodSAtICh1IFx1MDAzZVx1MDAzZSAyKSk7XG4mIzQzO1x0aWYgKGNvbm5zIFx1MDAzZT0gbClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO3Vuc2V0OlxuJiM0MztcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikpXG4mIzQzO1x0XHRjbGVhcl9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpO1xuJiM0Mzt9XG4mIzQzO1xuIC8qXG4gICpcdEJpbmQgYSBjb25uZWN0aW9uIGVudHJ5IHdpdGggYSB2aXJ0dWFsIHNlcnZpY2UgZGVzdGluYXRpb25cbiAgKlx0Q2FsbGVkIGp1c3QgYWZ0ZXIgYSBuZXcgY29ubmVjdGlvbiBlbnRyeSBpcyBjcmVhdGVkLlxuQEAgLTEwNTMsOSAmIzQzOzEwODEsNyBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZXBlcnNpc3Rjb25ucyk7XG4gXHR9XG4gXG4tXHRpZiAoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCAhPSAwIFx1MDAyNlx1MDAyNlxuLVx0ICAgIGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2U9IGRlc3QtXHUwMDNldV90aHJlc2hvbGQpXG4tXHRcdGRlc3QtXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuJiM0MztcdGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QpO1xuIH1cbiBcbiBcbkBAIC0xMTQ5LDE2ICYjNDM7MTE3NSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c191bmJpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4gXHRcdGF0b21pY19kZWMoXHUwMDI2ZGVzdC1cdTAwM2VwZXJzaXN0Y29ubnMpO1xuIFx0fVxuIFxuLVx0aWYgKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQgIT0gMCkge1xuLVx0XHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFx1MDAzYyBkZXN0LVx1MDAzZWxfdGhyZXNob2xkKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuLVx0fSBlbHNlIGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDApIHtcbi1cdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgXHUwMDNjIGRlc3QtXHUwMDNldV90aHJlc2hvbGQgKiAzKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuLVx0fSBlbHNlIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbi1cdH1cbiYjNDM7XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuJiM0MztcdFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XG4gXG4gXHRpcF92c19kZXN0X3B1dChkZXN0KTtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjJmNzNkODkyZjk3YzkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuQEAgLTEzNzAsMTAgJiM0MzsxMzcwLDEyIEBAIF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHQvKiBzZXQgdGhlIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRkZXN0LVx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEU7XG4gXG4tXHRpZiAodWRlc3QtXHUwMDNldV90aHJlc2hvbGQgPT0gMCB8fCB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2UgZGVzdC1cdTAwM2V1X3RocmVzaG9sZClcbi1cdFx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4tXHRkZXN0LVx1MDAzZXVfdGhyZXNob2xkID0gdWRlc3QtXHUwMDNldV90aHJlc2hvbGQ7XG4tXHRkZXN0LVx1MDAzZWxfdGhyZXNob2xkID0gdWRlc3QtXHUwMDNlbF90aHJlc2hvbGQ7XG4mIzQzO1x0aWYgKFJFQURfT05DRShkZXN0LVx1MDAzZXVfdGhyZXNob2xkKSAhPSB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCB8fFxuJiM0MztcdCAgICBSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkgIT0gdWRlc3QtXHUwMDNlbF90aHJlc2hvbGQpIHtcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQpO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXN0LVx1MDAzZWxfdGhyZXNob2xkLCB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZCk7XG4mIzQzO1x0XHRpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0KTtcbiYjNDM7XHR9XG4gXG4gXHRkZXN0LVx1MDAzZWFmID0gdWRlc3QtXHUwMDNlYWY7XG4gXG5AQCAtMTQ4Niw2ICYjNDM7MTQ4OCw5IEBAIGlwX3ZzX2FkZF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4gXHRcdHJldHVybiAtRVJBTkdFO1xuIFx0fVxuIFxuJiM0MztcdGlmICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2UgSU5UX01BWClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdGlmICh1ZGVzdC1cdTAwM2V0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7XG4gXHRcdGlmICh1ZGVzdC1cdTAwM2V0dW5fcG9ydCA9PSAwKSB7XG4gXHRcdFx0cHJfZXJyKFwmIzM0OyVzKCk6IHR1bm5lbCBwb3J0IGlzIHplcm9cXG5cJiMzNDssIF9fZnVuY19fKTtcbkBAIC0xNTU5LDYgJiM0MzsxNTY0LDkgQEAgaXBfdnNfZWRpdF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0X3VzZXJfa2VybiAqdWRlc3QpXG4gXHRcdHJldHVybiAtRVJBTkdFO1xuIFx0fVxuIFxuJiM0MztcdGlmICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2UgSU5UX01BWClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdGlmICh1ZGVzdC1cdTAwM2V0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7XG4gXHRcdGlmICh1ZGVzdC1cdTAwM2V0dW5fcG9ydCA9PSAwKSB7XG4gXHRcdFx0cHJfZXJyKFwmIzM0OyVzKCk6IHR1bm5lbCBwb3J0IGlzIHplcm9cXG5cJiMzNDssIF9fZnVuY19fKTtcbkBAIC0zNjY3LDggJiM0MzszNjc1LDggQEAgX19pcF92c19nZXRfZGVzdF9lbnRyaWVzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBjb25zdCBzdHJ1Y3QgaXBfdnNfZ2V0X2Rlc3RzICpcbiBcdFx0XHRlbnRyeS5wb3J0ID0gZGVzdC1cdTAwM2Vwb3J0O1xuIFx0XHRcdGVudHJ5LmNvbm5fZmxhZ3MgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWNvbm5fZmxhZ3MpO1xuIFx0XHRcdGVudHJ5LndlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbi1cdFx0XHRlbnRyeS51X3RocmVzaG9sZCA9IGRlc3QtXHUwMDNldV90aHJlc2hvbGQ7XG4tXHRcdFx0ZW50cnkubF90aHJlc2hvbGQgPSBkZXN0LVx1MDAzZWxfdGhyZXNob2xkO1xuJiM0MztcdFx0XHRlbnRyeS51X3RocmVzaG9sZCA9IFJFQURfT05DRShkZXN0LVx1MDAzZXVfdGhyZXNob2xkKTtcbiYjNDM7XHRcdFx0ZW50cnkubF90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCk7XG4gXHRcdFx0ZW50cnkuYWN0aXZlY29ubnMgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbiBcdFx0XHRlbnRyeS5pbmFjdGNvbm5zID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiBcdFx0XHRlbnRyeS5wZXJzaXN0Y29ubnMgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXBlcnNpc3Rjb25ucyk7XG5AQCAtNDI3Nyw4ICYjNDM7NDI4NSwxMCBAQCBzdGF0aWMgaW50IGlwX3ZzX2dlbmxfZmlsbF9kZXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHRcdCBkZXN0LVx1MDAzZXR1bl9wb3J0KSB8fFxuIFx0ICAgIG5sYV9wdXRfdTE2KHNrYiwgSVBWU19ERVNUX0FUVFJfVFVOX0ZMQUdTLFxuIFx0XHRcdGRlc3QtXHUwMDNldHVuX2ZsYWdzKSB8fFxuLVx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfVV9USFJFU0gsIGRlc3QtXHUwMDNldV90aHJlc2hvbGQpIHx8XG4tXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9MX1RIUkVTSCwgZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9VX1RIUkVTSCxcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpKSB8fFxuJiM0MztcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILFxuJiM0MztcdFx0XHRSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9BQ1RJVkVfQ09OTlMsXG4gXHRcdFx0YXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VhY3RpdmVjb25ucykpIHx8XG4gXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9JTkFDVF9DT05OUyxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG5pbmRleCBlMWY2MmY2YjI1ZTIxMS4uMzY0YWNiNjM0MmUyZmUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbkBAIC0xOTYsMTIgJiM0MzsxOTYsMTIgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiBcbiBcbiAvKlxuLSAqICAgICAgSWYgdGhlIGRlc3QgZmxhZ3MgaXMgc2V0IHdpdGggSVBfVlNfREVTVF9GX09WRVJMT0FELFxuJiM0MzsgKiAgICAgIElmIHRoZSBkZXN0IGZsYWdzIGlzIHNldCB3aXRoIElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsXG4gICogICAgICBjb25zaWRlciB0aGF0IHRoZSBzZXJ2ZXIgaXMgb3ZlcmxvYWRlZCBoZXJlLlxuICAqL1xuIHN0YXRpYyBpbmxpbmUgaW50IGlzX292ZXJsb2FkZWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuLVx0cmV0dXJuIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiYjNDM7XHRyZXR1cm4gdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpO1xuIH1cbiBcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXG5pbmRleCBkNjU3YjQ3YzY1MTFmZi4uYTU5YWY2YzExODlhY2EgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcbkBAIC0yOSw3ICYjNDM7MjksNyBAQCBpcF92c19mb19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICogRmluZCB2aXJ0dWFsIHNlcnZlciB3aXRoIGhpZ2hlc3Qgd2VpZ2h0IGFuZCBzZW5kIGl0IHRyYWZmaWNcbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgaHcpIHtcbiBcdFx0XHRod2VpZ2h0ID0gZGVzdDtcbiBcdFx0XHRodyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xuaW5kZXggMTVjY2IyYjJmYTFmNGEuLmVlMjZiZTNlYjg2MDZmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xuQEAgLTQxNCw3ICYjNDM7NDE0LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKiBuZXcgY29ubmVjdGlvbi5cbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuQEAgLTQyOSw3ICYjNDM7NDI5LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbmluZGV4IGM5MGVhODk3YzNmNzU2Li4yODg1OGU0NDIyNWE2YyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuQEAgLTE2Niw3ICYjNDM7MTY2LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxuIFx0Lyogc2VsZWN0IHRoZSBmaXJzdCBkZXN0aW5hdGlvbiBzZXJ2ZXIsIHdob3NlIHdlaWdodCBcdTAwM2UgMCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZSwgXHUwMDI2c2V0LVx1MDAzZWxpc3QsIGxpc3QpIHtcbiBcdFx0bGVhc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmxlYXN0LVx1MDAzZWZsYWdzMikpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMClcbkBAIC0xODEsNyAmIzQzOzE4MSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGUsIFx1MDAyNnNldC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4gXHRcdGRlc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5AQCAtNTc3LDcgJiM0Mzs1NzcsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKiBuZXcgY29ubmVjdGlvbi5cbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG5AQCAtNTkzLDcgJiM0Mzs1OTMsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbmluZGV4IDM4Y2MzOGM1ZDhiYmQ5Li5jNGU0ZTkxZTNlNmQ3ZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuQEAgLTM4LDcgJiM0MzszOCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiYjNDM7XHRcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xuaW5kZXggMDIwODYzMDQ3NTYyZDMuLjIzZmZjNTFjYTA4OGYwIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXG5AQCAtODAsNyAmIzQzOzgwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdlbmVyYXRlX2hhc2hfc2VjcmV0KGhzaXBoYXNoX2tleV90ICpoYXNoMSxcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuIFx0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2M9IDAgfHxcbi1cdCAgICAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0ICAgICAgIHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKTtcbiB9XG4gXG4gLyogUmV0dXJucyBoYXNoIHZhbHVlIGZvciBJUFZTIE1IIGVudHJ5ICovXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xuaW5kZXggYWRhMTU4YzYxMGNlMTEuLmQ2ZmJiOWU1MGU0YjQ0IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXG5AQCAtNzIsNyAmIzQzOzcyLDcgQEAgaXBfdnNfbnFfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuIFxuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEIHx8XG4mIzQzO1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIHx8XG4gXHRcdCAgICAhYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xuaW5kZXggYzVjNjdkZjgwYTBiM2MuLjEwNGRlOGMyNGE0ZjY1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcbkBAIC0zMyw3ICYjNDM7MzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcdFx0dyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4mIzQzO1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIHx8XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKSBcdTAwM2UgdyB8fFxuIFx0XHQgICAgdyA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcbmluZGV4IDQxMjVlZTU2MWNkYzM2Li5jMzhiZWU5ODdkMTQzMiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xuQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIGlwX3ZzX3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4gXHRcdFx0XHQvKiBISVQgKi9cbiBcdFx0XHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xuaW5kZXggMjQ1YTMyM2M4NGNkMzIuLjBjZTQyNWY5NzQ4YWY3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcbkBAIC03NSw3ICYjNDM7NzUsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkge1xuIFx0XHRcdGxlYXN0ID0gZGVzdDtcbiBcdFx0XHRsb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChsZWFzdCk7XG5AQCAtOTAsNyAmIzQzOzkwLDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcbmluZGV4IGNkNjcwNjZlM2IyNjEyLi5iYmRiNjgzYjhlODYwMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xuQEAgLTczLDcgJiM0Mzs3Myw3IEBAIHN0cnVjdCBpcF92c19zaF9zdGF0ZSB7XG4gc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbiBcdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNjPSAwIHx8XG4tXHQgICAgICAgZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuJiM0MztcdCAgICAgICB0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMik7XG4gfVxuIFxuIC8qXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcbmluZGV4IGRiYjdmNWZkNDY4OGE0Li5jZTU2MThmMDJlN2RmNCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcbkBAIC01Miw3ICYjNDM7NTIsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiBcbiBcdC8qIEdlbmVyYXRlIGEgcmFuZG9tIHdlaWdodCBiZXR3ZWVuIFswLHN1bSBvZiBhbGwgd2VpZ2h0cykgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpKSB7XG4mIzQzO1x0XHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSkge1xuIFx0XHRcdHdlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbiBcdFx0XHRpZiAod2VpZ2h0IFx1MDAzZSAwKSB7XG4gXHRcdFx0XHR0b3RhbF93ZWlnaHQgJiM0Mzs9IHdlaWdodDtcbkBAIC03NSw3ICYjNDM7NzUsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiBcbiBcdC8qIFBpY2sgdHdvIHdlaWdodGVkIHNlcnZlcnMgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0d2VpZ2h0ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xuaW5kZXggOWRhNDQ1Y2EwOWExNGMuLjYyYTRjODE0OTE5MjcyIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcbkBAIC00Nyw3ICYjNDM7NDcsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkge1xuIFx0XHRcdGxlYXN0ID0gZGVzdDtcbiBcdFx0XHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xuQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gICBuZXh0c3RhZ2U6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbiBcdFx0aWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXG5pbmRleCAyZGNmZjEwNDBkYTUyMS4uYjk5Y2JjMWQxMzAyOWQgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xuQEAgLTE3Niw3ICYjNDM7MTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlPSBtYXJrLVx1MDAzZWN3KVxuIFx0XHRcdFx0Z290byBmb3VuZDtcbiBcdFx0XHRpZiAoZGVzdCA9PSBzdG9wKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dSUiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQyYjMzQ7LAogICAgJiMzNDtJUF9WU19XTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfRk8mIzM0OywKICAgICYjMzQ7SVBfVlNfT1ZGJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQ1ImIzM0OywKICAgICYjMzQ7SVBfVlNfREgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0gmIzM0OywKICAgICYjMzQ7SVBfVlNfTUgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0VEJiMzNDssCiAgICAmIzM0O0lQX1ZTX05RJiMzNDssCiAgICAmIzM0O0lQX1ZTX1RXT1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZCYjMzQ7LAogICAgJiMzNDtpcF92c19iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfdW5iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7X19pcF92c191cGRhdGVfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19hZGRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19lZGl0X2Rlc3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcgbG9naWMgb2YgSVBWUyBieSBjaGFuZ2luZyBob3cgdGhlIGRlc3RpbmF0aW9uIG92ZXJsb2FkIGZsYWcgaXMgdXBkYXRlZCBhbmQgY2hlY2tlZC4gSXQgaW50cm9kdWNlcyBhIG5ldyBgZmxhZ3MyYCBmaWVsZCBhbmQgdXBkYXRlcyBtdWx0aXBsZSBJUFZTIHNjaGVkdWxlcnMgdG8gdXNlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhZjEzNmI3MzVkODFiZmMwZTRmMzkzMGJkMDA4ZWFiZDhjZDZmZWY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMTMgMTI6NDk6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcF92cy5oIGIvaW5jbHVkZS9uZXQvaXBfdnMuaAppbmRleCA0MTdmZjUxZjYyZmM4ZS4uNWU4ZTU1ZjgyYjA0NDAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lwX3ZzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvaXBfdnMuaApAQCAtMzYsNiAmIzQzOzM2LDEzIEBACiAjZGVmaW5lIElQX1ZTX0hEUl9JTlZFUlNFCTEKICNkZWZpbmUgSVBfVlNfSERSX0lDTVAJCTIKIAomIzQzOy8qIERlc3RpbmF0aW9uIFNlcnZlciBGbGFncyAqLwomIzQzOyNkZWZpbmUgSVBfVlNfREVTVF9GX0FWQUlMQUJMRQkweDAwMDEJCS8qIHNlcnZlciBpcyBhdmFpbGFibGUgKi8KJiM0MzsKJiM0MztlbnVtIHsKJiM0MzsJSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwKJiM0Mzt9OwomIzQzOwogLyogY29ubl90YWIgbGltaXRzIChhcyBwZXIgS2NvbmZpZykgKi8KICNkZWZpbmUgSVBfVlNfQ09OTl9UQUJfTUlOX0JJVFMJOAogI2lmIEJJVFNfUEVSX0xPTkcgJmd0OyAzMgpAQCAtOTc2LDYgJiM0Mzs5ODMsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7CiAJdm9sYXRpbGUgdW5zaWduZWQgaW50CWZsYWdzOwkJLyogZGVzdCBzdGF0dXMgZmxhZ3MgKi8KIAlhdG9taWNfdAkJY29ubl9mbGFnczsJLyogZmxhZ3MgdG8gY29weSB0byBjb25uICovCiAJYXRvbWljX3QJCXdlaWdodDsJCS8qIHNlcnZlciB3ZWlnaHQgKi8KJiM0MzsJdW5zaWduZWQgbG9uZwkJZmxhZ3MyOwkJLyogZGVzdCBzdGF0dXMgZmxhZ3MgKi8KIAlhdG9taWNfdAkJbGFzdF93ZWlnaHQ7CS8qIHNlcnZlciBsYXRlc3Qgd2VpZ2h0ICovCiAJX191MTYJCQl0dW5fdHlwZTsJLyogdHVubmVsIHR5cGUgKi8KIAlfX2JlMTYJCQl0dW5fcG9ydDsJLyogdHVubmVsIHBvcnQgKi8KQEAgLTE5MDcsNiAmIzQzOzE5MTUsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfZGVzdF9wdXRfYW5kX2ZyZWUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpCiAJCWtmcmVlKGRlc3QpOwogfQogCiYjNDM7dm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCk7CiYjNDM7CiAvKiBJUFZTIHN5bmMgZGFlbW9uIGRhdGEgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAqIChmcm9tIGlwX3ZzX3N5bmMuYykKICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaAppbmRleCAxZWQyMzRlN2YyNTEzNi4uMmMzN2M2YWM3NTI1YTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oCkBAIC0yOCwxMiAmIzQzOzI4LDYgQEAKICNkZWZpbmUgSVBfVlNfU1ZDX0ZfU0NIRURfU0hfRkFMTEJBQ0sJSVBfVlNfU1ZDX0ZfU0NIRUQxIC8qIFNIIGZhbGxiYWNrICovCiAjZGVmaW5lIElQX1ZTX1NWQ19GX1NDSEVEX1NIX1BPUlQJSVBfVlNfU1ZDX0ZfU0NIRUQyIC8qIFNIIHVzZSBwb3J0ICovCiAKLS8qCi0gKiAgICAgIERlc3RpbmF0aW9uIFNlcnZlciBGbGFncwotICovCi0jZGVmaW5lIElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUJMHgwMDAxCQkvKiBzZXJ2ZXIgaXMgYXZhaWxhYmxlICovCi0jZGVmaW5lIElQX1ZTX0RFU1RfRl9PVkVSTE9BRAkweDAwMDIJCS8qIHNlcnZlciBpcyBvdmVybG9hZGVkICovCi0KIC8qCiAgKiAgICAgIElQVlMgc3luYyBkYWVtb24gc3RhdGVzCiAgKi8KZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCmluZGV4IDZlZDI2MjIzNjNmMGQ2Li4yNTkxZjRlMTQzZjg0YyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCkBAIC05OTEsNiAmIzQzOzk5MSwzNCBAQCBzdGF0aWMgaW5saW5lIGludCBpcF92c19kZXN0X3RvdGFsY29ubnMoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpCiAJCSYjNDM7IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7aW5hY3Rjb25ucyk7CiB9CiAKJiM0MzsvKiBVcGRhdGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBudW1iZXIgb2YgZGVzdCBjb25ucyBhbmQgbG93ZXIvdXBwZXIKJiM0MzsgKiBjb25uZWN0aW9uIHRocmVzaG9sZHM6CiYjNDM7ICogLSBjb25ucyByZWFjaCB1X3RocmVzaG9sZCBhbmQgZXhjZWVkIGl0OiBzZXQgdGhlIGZsYWcKJiM0MzsgKiAtIGNvbm5zIGdvIGJlbG93IGxfdGhyZXNob2xkIChvciA3NSUgb2YgdV90aHJlc2hvbGQpOiBjbGVhciB0aGUgZmxhZwomIzQzOyAqLwomIzQzO19fYWx3YXlzX2lubGluZSB2b2lkIGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQomIzQzO3sKJiM0MzsJaW50IGNvbm5zOwomIzQzOwl1MzIgbCwgdTsKJiM0MzsKJiM0MzsJdSA9IFJFQURfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCk7CiYjNDM7CWlmICghdSkKJiM0MzsJCWdvdG8gdW5zZXQ7CiYjNDM7CWNvbm5zID0gaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpOwomIzQzOwlpZiAoY29ubnMgJmd0Oz0gdSkgewomIzQzOwkJc2V0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMik7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsJLyogTG93IHRocmVzaG9sZCBkZWZhdWx0cyB0byA3NSUgb2YgdXBwZXIgdGhyZXNob2xkICovCiYjNDM7CWwgPSBSRUFEX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGQpID8gOiAodSAtICh1ICZndDsmZ3Q7IDIpKTsKJiM0MzsJaWYgKGNvbm5zICZndDs9IGwpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7dW5zZXQ6CiYjNDM7CWlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikpCiYjNDM7CQljbGVhcl9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpOwomIzQzO30KJiM0MzsKIC8qCiAgKglCaW5kIGEgY29ubmVjdGlvbiBlbnRyeSB3aXRoIGEgdmlydHVhbCBzZXJ2aWNlIGRlc3RpbmF0aW9uCiAgKglDYWxsZWQganVzdCBhZnRlciBhIG5ldyBjb25uZWN0aW9uIGVudHJ5IGlzIGNyZWF0ZWQuCkBAIC0xMDUzLDkgJiM0MzsxMDgxLDcgQEAgaXBfdnNfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpCiAJCWF0b21pY19pbmMoJmFtcDtkZXN0LSZndDtwZXJzaXN0Y29ubnMpOwogCX0KIAotCWlmIChkZXN0LSZndDt1X3RocmVzaG9sZCAhPSAwICZhbXA7JmFtcDsKLQkgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICZndDs9IGRlc3QtJmd0O3VfdGhyZXNob2xkKQotCQlkZXN0LSZndDtmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CWlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QpOwogfQogCiAKQEAgLTExNDksMTYgJiM0MzsxMTc1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcCkKIAkJYXRvbWljX2RlYygmYW1wO2Rlc3QtJmd0O3BlcnNpc3Rjb25ucyk7CiAJfQogCi0JaWYgKGRlc3QtJmd0O2xfdGhyZXNob2xkICE9IDApIHsKLQkJaWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAmbHQ7IGRlc3QtJmd0O2xfdGhyZXNob2xkKQotCQkJZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDs9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7Ci0JfSBlbHNlIGlmIChkZXN0LSZndDt1X3RocmVzaG9sZCAhPSAwKSB7Ci0JCWlmIChpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgKiA0ICZsdDsgZGVzdC0mZ3Q7dV90aHJlc2hvbGQgKiAzKQotCQkJZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDs9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7Ci0JfSBlbHNlIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKLQkJCWRlc3QtJmd0O2ZsYWdzICZhbXA7PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEOwotCX0KJiM0MzsJaWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSkKJiM0MzsJCWlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QpOwogCiAJaXBfdnNfZGVzdF9wdXQoZGVzdCk7CiB9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKaW5kZXggYmNmNDBiOGM0MWNmMjYuLjYyZjczZDg5MmY5N2M5IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCkBAIC0xMzcwLDEwICYjNDM7MTM3MCwxMiBAQCBfX2lwX3ZzX3VwZGF0ZV9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LAogCS8qIHNldCB0aGUgZGVzdCBzdGF0dXMgZmxhZ3MgKi8KIAlkZXN0LSZndDtmbGFncyB8PSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFOwogCi0JaWYgKHVkZXN0LSZndDt1X3RocmVzaG9sZCA9PSAwIHx8IHVkZXN0LSZndDt1X3RocmVzaG9sZCAmZ3Q7IGRlc3QtJmd0O3VfdGhyZXNob2xkKQotCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKLQlkZXN0LSZndDt1X3RocmVzaG9sZCA9IHVkZXN0LSZndDt1X3RocmVzaG9sZDsKLQlkZXN0LSZndDtsX3RocmVzaG9sZCA9IHVkZXN0LSZndDtsX3RocmVzaG9sZDsKJiM0MzsJaWYgKFJFQURfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCkgIT0gdWRlc3QtJmd0O3VfdGhyZXNob2xkIHx8CiYjNDM7CSAgICBSRUFEX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGQpICE9IHVkZXN0LSZndDtsX3RocmVzaG9sZCkgewomIzQzOwkJV1JJVEVfT05DRShkZXN0LSZndDt1X3RocmVzaG9sZCwgdWRlc3QtJmd0O3VfdGhyZXNob2xkKTsKJiM0MzsJCVdSSVRFX09OQ0UoZGVzdC0mZ3Q7bF90aHJlc2hvbGQsIHVkZXN0LSZndDtsX3RocmVzaG9sZCk7CiYjNDM7CQlpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0KTsKJiM0MzsJfQogCiAJZGVzdC0mZ3Q7YWYgPSB1ZGVzdC0mZ3Q7YWY7CiAKQEAgLTE0ODYsNiAmIzQzOzE0ODgsOSBAQCBpcF92c19hZGRfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KQogCQlyZXR1cm4gLUVSQU5HRTsKIAl9CiAKJiM0MzsJaWYgKHVkZXN0LSZndDt1X3RocmVzaG9sZCAmZ3Q7IElOVF9NQVgpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAlpZiAodWRlc3QtJmd0O3R1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHsKIAkJaWYgKHVkZXN0LSZndDt0dW5fcG9ydCA9PSAwKSB7CiAJCQlwcl9lcnIoJiMzNDslcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXG4mIzM0OywgX19mdW5jX18pOwpAQCAtMTU1OSw2ICYjNDM7MTU2NCw5IEBAIGlwX3ZzX2VkaXRfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KQogCQlyZXR1cm4gLUVSQU5HRTsKIAl9CiAKJiM0MzsJaWYgKHVkZXN0LSZndDt1X3RocmVzaG9sZCAmZ3Q7IElOVF9NQVgpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAlpZiAodWRlc3QtJmd0O3R1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHsKIAkJaWYgKHVkZXN0LSZndDt0dW5fcG9ydCA9PSAwKSB7CiAJCQlwcl9lcnIoJiMzNDslcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXG4mIzM0OywgX19mdW5jX18pOwpAQCAtMzY2Nyw4ICYjNDM7MzY3NSw4IEBAIF9faXBfdnNfZ2V0X2Rlc3RfZW50cmllcyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgY29uc3Qgc3RydWN0IGlwX3ZzX2dldF9kZXN0cyAqCiAJCQllbnRyeS5wb3J0ID0gZGVzdC0mZ3Q7cG9ydDsKIAkJCWVudHJ5LmNvbm5fZmxhZ3MgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2Nvbm5fZmxhZ3MpOwogCQkJZW50cnkud2VpZ2h0ID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpOwotCQkJZW50cnkudV90aHJlc2hvbGQgPSBkZXN0LSZndDt1X3RocmVzaG9sZDsKLQkJCWVudHJ5LmxfdGhyZXNob2xkID0gZGVzdC0mZ3Q7bF90aHJlc2hvbGQ7CiYjNDM7CQkJZW50cnkudV90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC0mZ3Q7dV90aHJlc2hvbGQpOwomIzQzOwkJCWVudHJ5LmxfdGhyZXNob2xkID0gUkVBRF9PTkNFKGRlc3QtJmd0O2xfdGhyZXNob2xkKTsKIAkJCWVudHJ5LmFjdGl2ZWNvbm5zID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucyk7CiAJCQllbnRyeS5pbmFjdGNvbm5zID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtpbmFjdGNvbm5zKTsKIAkJCWVudHJ5LnBlcnNpc3Rjb25ucyA9IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7cGVyc2lzdGNvbm5zKTsKQEAgLTQyNzcsOCAmIzQzOzQyODUsMTAgQEAgc3RhdGljIGludCBpcF92c19nZW5sX2ZpbGxfZGVzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIAkJCSBkZXN0LSZndDt0dW5fcG9ydCkgfHwKIAkgICAgbmxhX3B1dF91MTYoc2tiLCBJUFZTX0RFU1RfQVRUUl9UVU5fRkxBR1MsCiAJCQlkZXN0LSZndDt0dW5fZmxhZ3MpIHx8Ci0JICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfVV9USFJFU0gsIGRlc3QtJmd0O3VfdGhyZXNob2xkKSB8fAotCSAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILCBkZXN0LSZndDtsX3RocmVzaG9sZCkgfHwKJiM0MzsJICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfVV9USFJFU0gsCiYjNDM7CQkJUkVBRF9PTkNFKGRlc3QtJmd0O3VfdGhyZXNob2xkKSkgfHwKJiM0MzsJICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfTF9USFJFU0gsCiYjNDM7CQkJUkVBRF9PTkNFKGRlc3QtJmd0O2xfdGhyZXNob2xkKSkgfHwKIAkgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9BQ1RJVkVfQ09OTlMsCiAJCQlhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2FjdGl2ZWNvbm5zKSkgfHwKIAkgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9JTkFDVF9DT05OUywKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMKaW5kZXggZTFmNjJmNmIyNWUyMTEuLjM2NGFjYjYzNDJlMmZlIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYwpAQCAtMTk2LDEyICYjNDM7MTk2LDEyIEBAIHN0YXRpYyBpbnQgaXBfdnNfZGhfZGVzdF9jaGFuZ2VkKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAKIAogLyoKLSAqICAgICAgSWYgdGhlIGRlc3QgZmxhZ3MgaXMgc2V0IHdpdGggSVBfVlNfREVTVF9GX09WRVJMT0FELAomIzQzOyAqICAgICAgSWYgdGhlIGRlc3QgZmxhZ3MgaXMgc2V0IHdpdGggSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwKICAqICAgICAgY29uc2lkZXIgdGhhdCB0aGUgc2VydmVyIGlzIG92ZXJsb2FkZWQgaGVyZS4KICAqLwogc3RhdGljIGlubGluZSBpbnQgaXNfb3ZlcmxvYWRlZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIHsKLQlyZXR1cm4gZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwlyZXR1cm4gdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpOwogfQogCiAKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmMKaW5kZXggZDY1N2I0N2M2NTExZmYuLmE1OWFmNmMxMTg5YWNhIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYwpAQCAtMjksNyAmIzQzOzI5LDcgQEAgaXBfdnNfZm9fc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpYwogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpICZhbXA7JmFtcDsKJiM0MzsJCWlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpICZhbXA7JmFtcDsKIAkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IGh3KSB7CiAJCQlod2VpZ2h0ID0gZGVzdDsKIAkJCWh3ID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKaW5kZXggMTVjY2IyYjJmYTFmNGEuLmVlMjZiZTNlYjg2MDZmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKQEAgLTQxNCw3ICYjNDM7NDE0LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpCiAJICogbmV3IGNvbm5lY3Rpb24uCiAJICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpKQogCQkJY29udGludWU7CiAJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CiAJCQlsZWFzdCA9IGRlc3Q7CkBAIC00MjksNyAmIzQzOzQyOSw3IEBAIF9faXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKQogCSAqLwogICBuZXh0c3RhZ2U6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpKQogCQkJY29udGludWU7CiAKIAkJZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYwppbmRleCBjOTBlYTg5N2MzZjc1Ni4uMjg4NThlNDQyMjVhNmMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCkBAIC0xNjYsNyAmIzQzOzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCkKIAkvKiBzZWxlY3QgdGhlIGZpcnN0IGRlc3RpbmF0aW9uIHNlcnZlciwgd2hvc2Ugd2VpZ2h0ICZndDsgMCAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGUsICZhbXA7c2V0LSZndDtsaXN0LCBsaXN0KSB7CiAJCWxlYXN0ID0gZS0mZ3Q7ZGVzdDsKLQkJaWYgKGxlYXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtsZWFzdC0mZ3Q7ZmxhZ3MyKSkKIAkJCWNvbnRpbnVlOwogCiAJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IDApCkBAIC0xODEsNyAmIzQzOzE4MSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCkKICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGUsICZhbXA7c2V0LSZndDtsaXN0LCBsaXN0KSB7CiAJCWRlc3QgPSBlLSZndDtkZXN0OwotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSkKIAkJCWNvbnRpbnVlOwogCiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKQEAgLTU3Nyw3ICYjNDM7NTc3LDcgQEAgX19pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKQogCSAqIG5ldyBjb25uZWN0aW9uLgogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSkKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CkBAIC01OTMsNyAmIzQzOzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YykKIAkgKi8KICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSkKIAkJCWNvbnRpbnVlOwogCiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMKaW5kZXggMzhjYzM4YzVkOGJiZDkuLmM0ZTRlOTFlM2U2ZDdkIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYwpAQCAtMzgsNyAmIzQzOzM4LDcgQEAgaXBfdnNfbGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHwKJiM0MzsJCWlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikgfHwKIAkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSA9PSAwKQogCQkJY29udGludWU7CiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMKaW5kZXggMDIwODYzMDQ3NTYyZDMuLjIzZmZjNTFjYTA4OGYwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYwpAQCAtODAsNyAmIzQzOzgwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdlbmVyYXRlX2hhc2hfc2VjcmV0KGhzaXBoYXNoX2tleV90ICpoYXNoMSwKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc191bmF2YWlsYWJsZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIHsKIAlyZXR1cm4gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZsdDs9IDAgfHwKLQkgICAgICAgZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwkgICAgICAgdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpOwogfQogCiAvKiBSZXR1cm5zIGhhc2ggdmFsdWUgZm9yIElQVlMgTUggZW50cnkgKi8KZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmMKaW5kZXggYWRhMTU4YzYxMGNlMTEuLmQ2ZmJiOWU1MGU0YjQ0IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYwpAQCAtNzIsNyAmIzQzOzcyLDcgQEAgaXBfdnNfbnFfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewogCi0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQgfHwKJiM0MzsJCWlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikgfHwKIAkJICAgICFhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkpCiAJCQljb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jCmluZGV4IGM1YzY3ZGY4MGEwYjNjLi4xMDRkZThjMjRhNGY2NSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuYwpAQCAtMzMsNyAmIzQzOzMzLDcgQEAgaXBfdnNfb3ZmX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKIAkJdyA9IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KTsKLQkJaWYgKChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8CiYjNDM7CQlpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpIHx8CiAJCSAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2FjdGl2ZWNvbm5zKSAmZ3Q7IHcgfHwKIAkJICAgIHcgPT0gMCkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuYwppbmRleCA0MTI1ZWU1NjFjZGMzNi4uYzM4YmVlOTg3ZDE0MzIgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jCkBAIC02Niw3ICYjNDM7NjYsNyBAQCBpcF92c19ycl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LAogCQkJCQkJICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsCiAJCQkJCQkgbl9saXN0KSB7Ci0JCQlpZiAoIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpICZhbXA7JmFtcDsKJiM0MzsJCQlpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSAmYW1wOyZhbXA7CiAJCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkKIAkJCQkvKiBISVQgKi8KIAkJCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYwppbmRleCAyNDVhMzIzYzg0Y2QzMi4uMGNlNDI1Zjk3NDhhZjcgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmMKQEAgLTc1LDcgJiM0Mzs3NSw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmICghKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwomIzQzOwkJaWYgKCF0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikgJmFtcDsmYW1wOwogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkgewogCQkJbGVhc3QgPSBkZXN0OwogCQkJbG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQobGVhc3QpOwpAQCAtOTAsNyAmIzQzOzkwLDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJICovCiAgIG5leHRzdGFnZToKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikpCiAJCQljb250aW51ZTsKIAkJZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7CiAJCWlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMKaW5kZXggY2Q2NzA2NmUzYjI2MTIuLmJiZGI2ODNiOGU4NjAxIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYwpAQCAtNzMsNyAmIzQzOzczLDcgQEAgc3RydWN0IGlwX3ZzX3NoX3N0YXRlIHsKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc191bmF2YWlsYWJsZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIHsKIAlyZXR1cm4gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZsdDs9IDAgfHwKLQkgICAgICAgZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwkgICAgICAgdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMKaW5kZXggZGJiN2Y1ZmQ0Njg4YTQuLmNlNTYxOGYwMmU3ZGY0IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMKQEAgLTUyLDcgJiM0Mzs1Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLAogCiAJLyogR2VuZXJhdGUgYSByYW5kb20gd2VpZ2h0IGJldHdlZW4gWzAsc3VtIG9mIGFsbCB3ZWlnaHRzKSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpKSB7CiYjNDM7CQlpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSkgewogCQkJd2VpZ2h0ID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpOwogCQkJaWYgKHdlaWdodCAmZ3Q7IDApIHsKIAkJCQl0b3RhbF93ZWlnaHQgJiM0Mzs9IHdlaWdodDsKQEAgLTc1LDcgJiM0Mzs3NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLAogCiAJLyogUGljayB0d28gd2VpZ2h0ZWQgc2VydmVycyAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MyKSkKIAkJCWNvbnRpbnVlOwogCiAJCXdlaWdodCA9IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuYwppbmRleCA5ZGE0NDVjYTA5YTE0Yy4uNjJhNGM4MTQ5MTkyNzIgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMKQEAgLTQ3LDcgJiM0Mzs0Nyw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmICghKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwomIzQzOwkJaWYgKCF0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikgJmFtcDsmYW1wOwogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkgewogCQkJbGVhc3QgPSBkZXN0OwogCQkJbG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTsKQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogICBuZXh0c3RhZ2U6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFnczIpKQogCQkJY29udGludWU7CiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKIAkJaWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jCmluZGV4IDJkY2ZmMTA0MGRhNTIxLi5iOTljYmMxZDEzMDI5ZCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYwpAQCAtMTc2LDcgJiM0MzsxNzYsNyBAQCBpcF92c193cnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwKIAkJCQkJCSAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLAogCQkJCQkJIG5fbGlzdCkgewotCQkJaWYgKCEoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiYjNDM7CQkJaWYgKCF0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzMikgJmFtcDsmYW1wOwogCQkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7PSBtYXJrLSZndDtjdykKIAkJCQlnb3RvIGZvdW5kOwogCQkJaWYgKGRlc3QgPT0gc3RvcCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMzNAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDI3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIElQVlMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBhIGZ1bmRhbWVudGFsIGNoYW5nZSB0byB0aGUgSVBWUyBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgYW5kIHNwZWNpZmljYWxseSwgaG93IGl0IGhhbmRsZXMgb3ZlcmxvYWQgY29uZGl0aW9ucyBmb3IgZGVzdGluYXRpb25zLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIG1vdmluZyBhd2F5IGZyb20gdGhlIG9sZCBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCBmbGFnIGFuZCBpbnRyb2R1Y2luZyBhIG1vcmUgcmVmaW5lZCBhcHByb2FjaCB3aXRoIGBmbGFnczJgIGFuZCBhIGRlZGljYXRlZCBgSVBfVlNfREVTVF9GTF9PVkVSTE9BRGAgZW51bS4gVGhpcyBhbHNvIGluY2x1ZGVzIGEgbmV3IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgZnVuY3Rpb24sIHdoaWNoIEkgcHJlc3VtZSB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBkeW5hbWljYWxseSBzZXR0aW5nIHRoaXMgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBjb25uZWN0aW9uIGNvdW50cyBhbmQgcHJlLWRlZmluZWQgdGhyZXNob2xkcy4KClRoZSBmYWN0IHRoYXQgdGhleSYjMzk7cmUgbW9kaWZ5aW5nIGFsbCB0aG9zZSBzY2hlZHVsZXIgYWxnb3JpdGhtcyDigJMgYGZvYCwgYGxibGNgLCBgbGJsY3JgLCBgbGNgLCBgbWhgLCBgbnFgLCBgb3ZmYCwgYHJyYCwgYHNlZGAsIGBzaGAsIGB0d29zYCwgYHdsY2AsIGB3cnJgIOKAkyB0byB1c2UgdGhlIG5ldyBgdGVzdF9iaXRgIGFwcHJvYWNoIGluc3RlYWQgb2YgdGhlIG9sZCBiaXR3aXNlIEFORCBzdWdnZXN0cyBhIHNpZ25pZmljYW50IHJlZmFjdG9yIGluIGhvdyB0aGVzZSBhbGdvcml0aG1zIGludGVycHJldCBhbmQgcmVhY3QgdG8gZGVzdGluYXRpb24gb3ZlcmxvYWQuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGNvcmUgbG9naWMgY2hhbmdlIHJlbGF0ZWQgdG8gY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcsIGFuZCBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgYnVncyBpbiBzdWNoIGEgc2Vuc2l0aXZlIGFyZWEsIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQgKiphYnNvbHV0ZWx5IG5lZWRzIHRvIGJlIGZ1enplZC4qKgoKTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gdGhlIHByYWN0aWNhbGl0aWVzLiBUaGUgb2J2aW91cyBlbnRyeSBwb2ludCBmb3IgZGV0ZXJtaW5pbmcgdGhlIGFmZmVjdGVkIGNvbmZpZ3VyYXRpb25zIGlzIGBDT05GSUdfSVBfVlNgLCBzbyB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBzaG91bGQgcHJvYmFibHkgZGlnIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZmlsZSBvciBzb21ldGhpbmcgc2ltaWxhciB0byBwaW5wb2ludCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI1MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHRob3VnaHQgaXM6CgoqKkNoZWNraW5nIFNjaGVkdWxlciBDb25maWd1cmF0aW9uIE5lZWRzKioKClJpZ2h0LCBiZWZvcmUgSSBnZXQgc3RhcnRlZCBvbiBhbnl0aGluZywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGtub3cgdGhlICpleGFjdCogY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIG5lY2Vzc2FyeSBmb3IgdGhlc2Ugc2NoZWR1bGVycy4gSSBjYW4mIzM5O3QganVzdCBqdW1wIGluIGFuZCBzdGFydCBjb2Rpbmcgd2l0aG91dCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGlucHV0cyBhbmQgcGFyYW1ldGVycy4gV2hhdCBhcmUgdGhlIGtleSBzZXR0aW5ncz8gV2hhdCBhcmUgdGhlIGRlZmF1bHRzPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnM/IFRoaXMgaXNuJiMzOTt0IGEgJiMzNDtvbmUtc2l6ZS1maXRzLWFsbCYjMzQ7IHNjZW5hcmlvLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGFsbCB0aGUgcG9zc2liaWxpdGllcyBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIE9ubHkgdGhlbiBjYW4gSSBkZXRlcm1pbmUgdGhlIGJlc3QgYXBwcm9hY2ggZm9yIGltcGxlbWVudGF0aW9uLiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG92ZXJsb29rIGFueXRoaW5nIGNydWNpYWwuIEkmIzM5O2xsIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgYW55IHJlbGV2YW50IGRlc2lnbiBzcGVjcyB3aXRoIGEgZmluZS10b290aGVkIGNvbWIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTXy4qJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2OTMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0OgoKKipEaXZpbmcgRGVlcGVyIGludG8gU2NoZWR1bGVyIENvbmZpZ3VyYXRpb25zKioKCkFscmlnaHQsIEkmIzM5O20gYXQgYSBwb2ludCBpbiB0aGUgcHJvY2VzcyB3aGVyZSBJIG5lZWQgdG8gbW92ZSBiZXlvbmQgZ2VuZXJhbCBwcmluY2lwbGVzLiBJIG5lZWQgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHNjaGVkdWxlcnMsIGFuZCB3aGlsZSBJIHVuZGVyc3RhbmQgdGhlIGhpZ2gtbGV2ZWwgY29uY2VwdHMsIEkgY2FuJiMzOTt0IHJlYWxseSBtYWtlIGFueSBpbmZvcm1lZCBkZWNpc2lvbnMgYWJvdXQgb3B0aW1pemF0aW9uIG9yIGZpbmUtdHVuaW5nIHdpdGhvdXQgc2VlaW5nIHRoZSAqYWN0dWFsKiBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEl0JiMzOTtzIHRpbWUgdG8gc3RvcCB0aGVvcml6aW5nIGFuZCBzdGFydCBsb29raW5nIGF0IHRoZSBzcGVjaWZpY3MuIFdoYXQgcGFyYW1ldGVycyBhcmUgYXZhaWxhYmxlPyBXaGF0IGFyZSB0aGVpciBkZWZhdWx0IHZhbHVlcz8gV2hhdCBraW5kIG9mIGtub2JzIGRvIEkgaGF2ZSB0byB0dXJuIHRvIGdldCB0aGUgcGVyZm9ybWFuY2UgSSYjMzk7bSBsb29raW5nIGZvcj8gSSYjMzk7bSBub3QgZ29pbmcgdG8gZ2V0IGJvZ2dlZCBkb3duIGluIHRoZSBnZW5lcmljLCBhYnN0cmFjdCBleHBsYW5hdGlvbnMgYW55bW9yZS4gR2l2ZSBtZSB0aGUgY29uY3JldGUgc3R1ZmYgLSB0aGUgY29uZmlndXJhdGlvbiBmaWxlcywgdGhlIEFQSSBkb2N1bWVudGF0aW9uLCB3aGF0ZXZlciBpdCB0YWtlcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBudXRzIGFuZCBib2x0cyBvZiB0aGUgc2NoZWR1bGVyIGltcGxlbWVudGF0aW9ucyB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGVpciBwb3RlbnRpYWwuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7cmUgYWN0dWFsbHkgd29ya2luZyB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjM0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIERpcmVjdCBBcHByb2FjaCoqCgpBbHJpZ2h0LCB0aGUgb2JqZWN0aXZlIGlzIHByZXR0eSBjbGVhci4gTm8gbmVlZCB0byBvdmVydGhpbmsgdGhpcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGp1c3QgcmVhZCB0aGUgZmlsZS4mIzM0OyBJJiMzOTttIGN1dHRpbmcgdGhyb3VnaCBhbnkgcHJlbGltaW5hcnkgYXNzdW1wdGlvbnMgb3Igc3RyYXRlZ2ljIGNvbnNpZGVyYXRpb25zLiBJdCYjMzk7cyBhIHNpbXBsZSwgZGlyZWN0LCBhbmQgb2Z0ZW4gdGhlIG1vc3QgZWZmaWNpZW50IHN0YXJ0aW5nIHBvaW50LiBXZSYjMzk7cmUgbm90IGVuZ2FnaW5nIGluIGNvbXBsZXggbW9kZWxpbmcgb3IgcmlzayBhc3Nlc3NtZW50cyBhdCB0aGlzIHN0YWdlOyByYXRoZXIsIHdlIG5lZWQgdG8gZXN0YWJsaXNoIGEgYmFzZSBsZXZlbCB1bmRlcnN0YW5kaW5nLiBUaGUgZmlsZSBpdHNlbGYgaXMgdGhlIHByaW1hcnkgc291cmNlIG9mIGluZm9ybWF0aW9uLCBhbmQgdGhlIG1vc3QgZXhwZWRpZW50IG1ldGhvZCBpcyB0byBzaW1wbHkgYmVnaW4gcHJvY2Vzc2luZyBpdHMgY29udGVudHMuIFdlJiMzOTtsbCBzdGFydCBhdCB0aGUgbW9zdCBlbGVtZW50YXJ5IGxldmVsLCBhbmQgYmVnaW4gcHJvY2Vzc2luZyB0aGUgZGF0YSB0byBsYXkgdGhlIGZvdW5kYXRpb25zIGZvciBkZWVwZXIgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15jb25maWcgSVBfVlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2NTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gSHVudGluZyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgSVBWUyAoSVAgVmlydHVhbCBTZXJ2ZXIpIGlzIGNvbmZpZ3VyZWQgaW4gdGhpcyBrZXJuZWwuICBSYXRoZXIgdGhhbiBtYW51YWxseSBzaWZ0aW5nIHRocm91Z2ggdGhlIHNwcmF3bGluZyBgLmNvbmZpZ2AgZmlsZSwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgZ3JlcGAuIEkgd2FudCB0byBiZSBzcGVjaWZpYywgc28gSSYjMzk7bSB1c2luZyBgZ3JlcGAgd2l0aCB0aGUgZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uIG9wdGlvbiAoYC1FYCkuIFRoYXQgd2F5IEkgY2FuIHVzZSB0aGUgYW5jaG9yIHRvIG1ha2Ugc3VyZSB0aGF0IEkgb25seSBnZXQgcmVzdWx0cyBmcm9tIHRoZSBzdGFydCBvZiBhIGxpbmUuIEkmIzM5O2xsIHNlYXJjaCBmb3IgdGhlIGBjb25maWcgSVBfVlNgIHN0cmluZy4gVGhhdCBzaG91bGQgemVybyBpbiBwcmVjaXNlbHkgb24gdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBsaW5lIGFuZCBpZ25vcmUgYW55IG90aGVyIGluc3RhbmNlcyBvZiBgSVBfVlNgIGVsc2V3aGVyZSB3aXRoaW4gdGhlIGNvbmZpZyBmaWxlLiAgVGhpcyBpcyB0aGUgZmFzdGVzdCwgY2xlYW5lc3Qgd2F5IHRvIGdldCBhIHllcy9ubyBvbiBJUFZTLiBTaW1wbGUgYW5kIGVmZmljaWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmNvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA5NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4KCioqSW5pdGlhbCBDb25mdXNpb24gYW5kIEludmVzdGlnYXRpb24gQmVnaW5zKioKCldhaXQgYSBzZWNvbmQuLi4gd2h5IGFyZSAqdGhvc2Ugc3BlY2lmaWMqIHN5bWJvbGljIGNvbnN0YW50cywgYElQX1ZTX1NIX1RBQl9CSVRTYCBhbmQgYElQX1ZTX01IX1RBQl9JTkRFWGAsIHRoZSBvbmx5IG9uZXMgc2hvd2luZyB1cD8gVGhhdCYjMzk7cyBub3Qgd2hhdCBJIGV4cGVjdGVkLiBUaGVyZSBtdXN0IGJlIGEgcmVhc29uIGZvciB0aGlzIG5hcnJvd2VkIHNjb3BlLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuIFRoZSBiZXN0IHdheSB0byBjbGFyaWZ5IHRoaXMgd291bGQgYmUgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gVGltZSB0byBkaWcgaW50byB0aGUgZmlsZSBhbmQgZ2V0IHNvbWUgY29udGV4dC4gTGV0IG1lIHJlYWQgdGhlIHNvdXJjZSBmaWxlIGl0c2VsZi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB0aGVyZSBhbmQgdGhlbiBJIGNhbiBidWlsZCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIGZyb20gZmlyc3QgcHJpbmNpcGxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBJUCBWaXJ0dWFsIFNlcnZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdG1lbnVjb25maWcgSVBfVlNcbiAgIDY6XHRcdHRyaXN0YXRlIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcJiMzNDtcbiAgIDc6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG4gICA4Olx0XHRkZXBlbmRzIG9uIChORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLPW4pXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIElQIFZpcnR1YWwgU2VydmVyIHN1cHBvcnQgd2lsbCBsZXQgeW91IGJ1aWxkIGEgaGlnaC1wZXJmb3JtYW5jZVxuICAxMTpcdFx0ICB2aXJ0dWFsIHNlcnZlciBiYXNlZCBvbiBjbHVzdGVyIG9mIHR3byBvciBtb3JlIHJlYWwgc2VydmVycy4gVGhpc1xuICAxMjpcdFx0ICBvcHRpb24gbXVzdCBiZSBlbmFibGVkIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlIGNsdXN0ZXJlZCBjb21wdXRlcnNcbiAgMTM6XHRcdCAgdGhhdCB3aWxsIHRha2UgY2FyZSBvZiBpbnRlcmNlcHRpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYVxuICAxNDpcdFx0ICBzaW5nbGUgSVAgYWRkcmVzcyBhbmQgc2NoZWR1bGluZyB0aGVtIHRvIHJlYWwgc2VydmVycy5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgVGhyZWUgcmVxdWVzdCBkaXNwYXRjaGluZyB0ZWNobmlxdWVzIGFyZSBpbXBsZW1lbnRlZCwgdGhleSBhcmVcbiAgMTc6XHRcdCAgdmlydHVhbCBzZXJ2ZXIgdmlhIE5BVCwgdmlydHVhbCBzZXJ2ZXIgdmlhIHR1bm5lbGluZyBhbmQgdmlydHVhbFxuICAxODpcdFx0ICBzZXJ2ZXIgdmlhIGRpcmVjdCByb3V0aW5nLiBUaGUgc2V2ZXJhbCBzY2hlZHVsaW5nIGFsZ29yaXRobXMgY2FuXG4gIDE5Olx0XHQgIGJlIHVzZWQgdG8gY2hvb3NlIHdoaWNoIHNlcnZlciB0aGUgY29ubmVjdGlvbiBpcyBkaXJlY3RlZCB0byxcbiAgMjA6XHRcdCAgdGh1cyBsb2FkIGJhbGFuY2luZyBjYW4gYmUgYWNoaWV2ZWQgYW1vbmcgdGhlIHNlcnZlcnMuICBGb3IgbW9yZVxuICAyMTpcdFx0ICBpbmZvcm1hdGlvbiBhbmQgaXRzIGFkbWluaXN0cmF0aW9uIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB0aGVcbiAgMjI6XHRcdCAgZm9sbG93aW5nIFVSTDogXHUwMDNjaHR0cDovL3d3dy5saW51eHZpcnR1YWxzZXJ2ZXIub3JnL1x1MDAzZS5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAgMjU6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuICAyNjpcdFxuICAyNzpcdGlmIElQX1ZTXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnXHRJUF9WU19JUFY2XG4gIDMwOlx0XHRib29sIFwmIzM0O0lQdjYgc3VwcG9ydCBmb3IgSVBWU1wmIzM0O1xuICAzMTpcdFx0ZGVwZW5kcyBvbiBJUFY2ID0geSB8fCBJUF9WUyA9IElQVjZcbiAgMzI6XHRcdHNlbGVjdCBORl9ERUZSQUdfSVBWNlxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBBZGQgSVB2NiBzdXBwb3J0IHRvIElQVlMuXG4gIDM1Olx0XG4gIDM2Olx0XHQgIFNheSBZIGlmIHVuc3VyZS5cbiAgMzc6XHRcbiAgMzg6XHRjb25maWdcdElQX1ZTX0RFQlVHXG4gIDM5Olx0XHRib29sIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIGRlYnVnZ2luZ1wmIzM0O1xuICA0MDpcdFx0aGVscFxuICA0MTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGdldCBhZGRpdGlvbmFsIG1lc3NhZ2VzIHVzZWZ1bCBpblxuICA0MjpcdFx0ICBkZWJ1Z2dpbmcgdGhlIElQIHZpcnR1YWwgc2VydmVyIGNvZGUuIFlvdSBjYW4gY2hhbmdlIHRoZSBkZWJ1Z1xuICA0MzpcdFx0ICBsZXZlbCBpbiAvcHJvYy9zeXMvbmV0L2lwdjQvdnMvZGVidWdfbGV2ZWxcbiAgNDQ6XHRcbiAgNDU6XHRjb25maWdcdElQX1ZTX1RBQl9CSVRTXG4gIDQ2Olx0XHRpbnQgXCYjMzQ7SVBWUyBjb25uZWN0aW9uIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbiAgNDc6XHRcdHJhbmdlIDggMjAgaWYgITY0QklUXG4gIDQ4Olx0XHRyYW5nZSA4IDI3IGlmIDY0QklUXG4gIDQ5Olx0XHRkZWZhdWx0IDEyXG4gIDUwOlx0XHRoZWxwXG4gIDUxOlx0XHQgIFRoZSBJUFZTIGNvbm5lY3Rpb24gaGFzaCB0YWJsZSB1c2VzIHRoZSBjaGFpbmluZyBzY2hlbWUgdG8gaGFuZGxlXG4gIDUyOlx0XHQgIGhhc2ggY29sbGlzaW9ucy4gVXNpbmcgYSBiaWcgSVBWUyBjb25uZWN0aW9uIGhhc2ggdGFibGUgd2lsbCBncmVhdGx5XG4gIDUzOlx0XHQgIHJlZHVjZSBjb25mbGljdHMgd2hlbiB0aGVyZSBhcmUgaHVuZHJlZHMgb2YgdGhvdXNhbmRzIG9mIGNvbm5lY3Rpb25zXG4gIDU0Olx0XHQgIGluIHRoZSBoYXNoIHRhYmxlLlxuICA1NTpcdFxuICA1NjpcdFx0ICBOb3RlIHRoZSB0YWJsZSBzaXplIG11c3QgYmUgcG93ZXIgb2YgMi4gVGhlIHRhYmxlIHNpemUgd2lsbCBiZSB0aGVcbiAgNTc6XHRcdCAgdmFsdWUgb2YgMiB0byB0aGUgeW91ciBpbnB1dCBudW1iZXIgcG93ZXIuIFRoZSBudW1iZXIgdG8gY2hvb3NlIGlzXG4gIDU4Olx0XHQgIGZyb20gOCB0byAyNyBmb3IgNjRCSVQoMjAgb3RoZXJ3aXNlKSwgdGhlIGRlZmF1bHQgbnVtYmVyIGlzIDEyLFxuICA1OTpcdFx0ICB3aGljaCBtZWFucyB0aGUgdGFibGUgc2l6ZSBpcyA0MDk2LiBEb24mIzM5O3QgaW5wdXQgdGhlIG51bWJlciB0b29cbiAgNjA6XHRcdCAgc21hbGwsIG90aGVyd2lzZSB5b3Ugd2lsbCBsb3NlIHBlcmZvcm1hbmNlIG9uIGl0LiBZb3UgY2FuIGFkYXB0IHRoZVxuICA2MTpcdFx0ICB0YWJsZSBzaXplIHlvdXJzZWxmLCBhY2NvcmRpbmcgdG8geW91ciB2aXJ0dWFsIHNlcnZlciBhcHBsaWNhdGlvbi5cbiAgNjI6XHRcdCAgSXQgaXMgZ29vZCB0byBzZXQgdGhlIHRhYmxlIHNpemUgbm90IGZhciBsZXNzIHRoYW4gdGhlIG51bWJlciBvZlxuICA2MzpcdFx0ICBjb25uZWN0aW9ucyBwZXIgc2Vjb25kIG11bHRpcGx5aW5nIGF2ZXJhZ2UgbGFzdGluZyB0aW1lIG9mXG4gIDY0Olx0XHQgIGNvbm5lY3Rpb24gaW4gdGhlIHRhYmxlLiAgRm9yIGV4YW1wbGUsIHlvdXIgdmlydHVhbCBzZXJ2ZXIgZ2V0cyAyMDBcbiAgNjU6XHRcdCAgY29ubmVjdGlvbnMgcGVyIHNlY29uZCwgdGhlIGNvbm5lY3Rpb24gbGFzdHMgZm9yIDIwMCBzZWNvbmRzIGluXG4gIDY2Olx0XHQgIGF2ZXJhZ2UgaW4gdGhlIGNvbm5lY3Rpb24gdGFibGUsIHRoZSB0YWJsZSBzaXplIHNob3VsZCBiZSBub3QgZmFyXG4gIDY3Olx0XHQgIGxlc3MgdGhhbiAyMDB4MjAwLCBpdCBpcyBnb29kIHRvIHNldCB0aGUgdGFibGUgc2l6ZSAzMjc2OCAoMioqMTUpLlxuICA2ODpcdFxuICA2OTpcdFx0ICBBbm90aGVyIG5vdGUgdGhhdCBlYWNoIGNvbm5lY3Rpb24gb2NjdXBpZXMgMTI4IGJ5dGVzIGVmZmVjdGl2ZWx5IGFuZFxuICA3MDpcdFx0ICBlYWNoIGhhc2ggZW50cnkgdXNlcyA4IGJ5dGVzLCBzbyB5b3UgY2FuIGVzdGltYXRlIGhvdyBtdWNoIG1lbW9yeSBpc1xuICA3MTpcdFx0ICBuZWVkZWQgZm9yIHlvdXIgYm94LlxuICA3MjpcdFxuICA3MzpcdFx0ICBZb3UgY2FuIG92ZXJ3cml0ZSB0aGlzIG51bWJlciBzZXR0aW5nIGNvbm5fdGFiX2JpdHMgbW9kdWxlIHBhcmFtZXRlclxuICA3NDpcdFx0ICBvciBieSBhcHBlbmRpbmcgaXBfdnMuY29ubl90YWJfYml0cz0/IHRvIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIGlmXG4gIDc1Olx0XHQgIElQIFZTIHdhcyBjb21waWxlZCBidWlsdC1pbi5cbiAgNzY6XHRcbiAgNzc6XHRjb21tZW50IFwmIzM0O0lQVlMgdHJhbnNwb3J0IHByb3RvY29sIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbiAgNzg6XHRcbiAgNzk6XHRjb25maWdcdElQX1ZTX1BST1RPX1RDUFxuICA4MDpcdFx0Ym9vbCBcJiMzNDtUQ1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuICA4MTpcdFx0aGVscFxuICA4MjpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIFRDUCB0cmFuc3BvcnRcbiAgODM6XHRcdCAgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cbiAgODQ6XHRcbiAgODU6XHRjb25maWdcdElQX1ZTX1BST1RPX1VEUFxuICA4NjpcdFx0Ym9vbCBcJiMzNDtVRFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuICA4NzpcdFx0aGVscFxuICA4ODpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIFVEUCB0cmFuc3BvcnRcbiAgODk6XHRcdCAgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cbiAgOTA6XHRcbiAgOTE6XHRjb25maWdcdElQX1ZTX1BST1RPX0FIX0VTUFxuICA5MjpcdFx0ZGVmX2Jvb2wgSVBfVlNfUFJPVE9fRVNQIHx8IElQX1ZTX1BST1RPX0FIXG4gIDkzOlx0XG4gIDk0Olx0Y29uZmlnXHRJUF9WU19QUk9UT19FU1BcbiAgOTU6XHRcdGJvb2wgXCYjMzQ7RVNQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbiAgOTY6XHRcdGhlbHBcbiAgOTc6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBFU1AgKEVuY2Fwc3VsYXRpb25cbiAgOTg6XHRcdCAgU2VjdXJpdHkgUGF5bG9hZCkgdHJhbnNwb3J0IHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXG4gIDk5Olx0XG4gMTAwOlx0Y29uZmlnXHRJUF9WU19QUk9UT19BSFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzgzMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gUXVhbmRhcnkqKgoKUmlnaHQsIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIGtlcm5lbCBjb25maWcgZmlsZXMgYWdhaW4sIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGxvYWQgYmFsYW5jaW5nIHNjaGVkdWxlcnMuIE15IGluaXRpYWwgaHVuY2gsIGFuZCBpdCYjMzk7cyBhIHByZXR0eSBzdHJvbmcgb25lIGdpdmVuIG15IGV4cGVyaWVuY2UsIGlzIHRoYXQgdGhlIGRlZmluaXRpb25zIGZvciB0aGluZ3MgbGlrZSBSb3VuZCBSb2JpbiAoYElQX1ZTX1JSYCkgYW5kIFdlaWdodGVkIFJvdW5kIFJvYmluIChgSVBfVlNfV1JSYCkgYXJlIGxpa2VseSBuZXN0ZWQgd2l0aGluIHRob3NlIGBjb25maWdgIGRpcmVjdGl2ZXMuIEkmIzM5O3ZlIHNlZW4gdGhhdCBwYXR0ZXJuIGNvdW50bGVzcyB0aW1lcyBiZWZvcmUgaW4gdGhpcyBzb3J0IG9mIGNvZGUuIFRoZXJlZm9yZSwgbGV0JiMzOTtzIGNvbmZpcm0gbXkgc3VzcGljaW9ucyBieSBleGFtaW5pbmcgdGhlIG5leHQgMTAwIGxpbmVzLiBUaGlzIHNob3VsZCBnaXZlIG1lIGVub3VnaCBjb250ZXh0IHRvIHNlZSBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgZGVmaW5lZCwgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsbHkgaG93IHRoZXkmIzM5O3JlIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBgaXBfdnNgIGZyYW1ld29yay4gSSBleHBlY3QgdG8gYmUgbG9va2luZyBmb3IgYXNzb2NpYXRlZCBkZWZpbmVzLCBkb2N1bWVudGF0aW9uIGNvbW1lbnRzLCBhbmQgYW55IGxvZ2ljIHRpZWQgdG8gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoZXNlIHNjaGVkdWxlcnMuIEl0JiMzOTtzIGEgZmFpcmx5IHN0YW5kYXJkIGFwcHJvYWNoIHRvIHBpbnBvaW50aW5nIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMTpcdFx0Ym9vbCBcJiMzNDtBSCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4gMTAyOlx0XHRoZWxwXG4gMTAzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgQUggKEF1dGhlbnRpY2F0aW9uXG4gMTA0Olx0XHQgIEhlYWRlcikgdHJhbnNwb3J0IHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXG4gMTA1Olx0XG4gMTA2Olx0Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXG4gMTA3Olx0XHRib29sIFwmIzM0O1NDVFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuIDEwODpcdFx0c2VsZWN0IE5FVF9DUkMzMkNcbiAxMDk6XHRcdGhlbHBcbiAxMTA6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBTQ1RQIHRyYW5zcG9ydFxuIDExMTpcdFx0ICBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxuIDExMjpcdFxuIDExMzpcdGNvbW1lbnQgXCYjMzQ7SVBWUyBzY2hlZHVsZXJcJiMzNDtcbiAxMTQ6XHRcbiAxMTU6XHRjb25maWdcdElQX1ZTX1JSXG4gMTE2Olx0XHR0cmlzdGF0ZSBcJiMzNDtyb3VuZC1yb2JpbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTE3Olx0XHRoZWxwXG4gMTE4Olx0XHQgIFRoZSByb2Jpbi1yb2JpbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBzaW1wbHkgZGlyZWN0cyBuZXR3b3JrXG4gMTE5Olx0XHQgIGNvbm5lY3Rpb25zIHRvIGRpZmZlcmVudCByZWFsIHNlcnZlcnMgaW4gYSByb3VuZC1yb2JpbiBtYW5uZXIuXG4gMTIwOlx0XG4gMTIxOlx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTIyOlx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxMjM6XHQgXG4gMTI0Olx0Y29uZmlnXHRJUF9WU19XUlJcbiAxMjU6XHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcJiMzNDtcbiAxMjY6XHRcdGhlbHBcbiAxMjc6XHRcdCAgVGhlIHdlaWdodGVkIHJvYmluLXJvYmluIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xuIDEyODpcdFx0ICBjb25uZWN0aW9ucyB0byBkaWZmZXJlbnQgcmVhbCBzZXJ2ZXJzIGJhc2VkIG9uIHNlcnZlciB3ZWlnaHRzXG4gMTI5Olx0XHQgIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLiBTZXJ2ZXJzIHdpdGggaGlnaGVyIHdlaWdodHMgcmVjZWl2ZVxuIDEzMDpcdFx0ICBuZXcgY29ubmVjdGlvbnMgZmlyc3QgdGhhbiB0aG9zZSB3aXRoIGxlc3Mgd2VpZ2h0cywgYW5kIHNlcnZlcnNcbiAxMzE6XHRcdCAgd2l0aCBoaWdoZXIgd2VpZ2h0cyBnZXQgbW9yZSBjb25uZWN0aW9ucyB0aGFuIHRob3NlIHdpdGggbGVzc1xuIDEzMjpcdFx0ICB3ZWlnaHRzIGFuZCBzZXJ2ZXJzIHdpdGggZXF1YWwgd2VpZ2h0cyBnZXQgZXF1YWwgY29ubmVjdGlvbnMuXG4gMTMzOlx0XG4gMTM0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTM1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxMzY6XHRcbiAxMzc6XHRjb25maWdcdElQX1ZTX0xDXG4gMTM4Olx0XHR0cmlzdGF0ZSBcJiMzNDtsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbiAxMzk6XHRcdGhlbHBcbiAxNDA6XHRcdCAgVGhlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXG4gMTQxOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgbnVtYmVyIG9mIGFjdGl2ZSBcbiAxNDI6XHRcdCAgY29ubmVjdGlvbnMuXG4gMTQzOlx0XG4gMTQ0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTQ1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxNDY6XHRcbiAxNDc6XHRjb25maWdcdElQX1ZTX1dMQ1xuIDE0ODpcdFx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTQ5Olx0XHRoZWxwXG4gMTUwOlx0XHQgIFRoZSB3ZWlnaHRlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xuIDE1MTpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IGFjdGl2ZSBjb25uZWN0aW9uc1xuIDE1MjpcdFx0ICBub3JtYWxpemVkIGJ5IHRoZSBzZXJ2ZXIgd2VpZ2h0LlxuIDE1MzpcdFxuIDE1NDpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDE1NTpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMTU2Olx0XG4gMTU3Olx0Y29uZmlnICBJUF9WU19GT1xuIDE1ODpcdFx0XHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXCYjMzQ7XG4gMTU5Olx0XHRoZWxwXG4gMTYwOlx0XHQgIFRoZSB3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcbiAxNjE6XHRcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBoaWdoZXN0IHdlaWdodCB0aGF0IGlzXG4gMTYyOlx0XHQgIGN1cnJlbnRseSBhdmFpbGFibGUuXG4gMTYzOlx0XG4gMTY0Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTY1Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxNjY6XHRcbiAxNjc6XHRjb25maWcgIElQX1ZTX09WRlxuIDE2ODpcdFx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZ1wmIzM0O1xuIDE2OTpcdFx0aGVscFxuIDE3MDpcdFx0ICBUaGUgd2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXG4gMTcxOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgaGlnaGVzdCB3ZWlnaHQgdGhhdCBpc1xuIDE3MjpcdFx0ICBjdXJyZW50bHkgYXZhaWxhYmxlIGFuZCBvdmVyZmxvd3MgdG8gdGhlIG5leHQgd2hlbiBhY3RpdmVcbiAxNzM6XHRcdCAgY29ubmVjdGlvbnMgZXhjZWVkIHRoZSBub2RlJiMzOTtzIHdlaWdodC5cbiAxNzQ6XHRcbiAxNzU6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAxNzY6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDE3NzpcdFxuIDE3ODpcdGNvbmZpZ1x0SVBfVlNfTEJMQ1xuIDE3OTpcdFx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4gMTgwOlx0XHRoZWxwXG4gMTgxOlx0XHQgIFRoZSBsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGlzIGZvclxuIDE4MjpcdFx0ICBkZXN0aW5hdGlvbiBJUCBsb2FkIGJhbGFuY2luZy4gSXQgaXMgdXN1YWxseSB1c2VkIGluIGNhY2hlIGNsdXN0ZXIuXG4gMTgzOlx0XHQgIFRoaXMgYWxnb3JpdGhtIHVzdWFsbHkgZGlyZWN0cyBwYWNrZXQgZGVzdGluZWQgZm9yIGFuIElQIGFkZHJlc3MgdG9cbiAxODQ6XHRcdCAgaXRzIHNlcnZlciBpZiB0aGUgc2VydmVyIGlzIGFsaXZlIGFuZCB1bmRlciBsb2FkLiBJZiB0aGUgc2VydmVyIGlzXG4gMTg1Olx0XHQgIG92ZXJsb2FkZWQgKGl0cyBhY3RpdmUgY29ubmVjdGlvbiBudW1iZXJzIGlzIGxhcmdlciB0aGFuIGl0cyB3ZWlnaHQpXG4gMTg2Olx0XHQgIGFuZCB0aGVyZSBpcyBhIHNlcnZlciBpbiBpdHMgaGFsZiBsb2FkLCB0aGVuIGFsbG9jYXRlIHRoZSB3ZWlnaHRlZFxuIDE4NzpcdFx0ICBsZWFzdC1jb25uZWN0aW9uIHNlcnZlciB0byB0aGlzIElQIGFkZHJlc3MuXG4gMTg4Olx0XG4gMTg5Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMTkwOlx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAxOTE6XHRcbiAxOTI6XHRjb25maWcgIElQX1ZTX0xCTENSXG4gMTkzOlx0XHR0cmlzdGF0ZSBcJiMzNDtsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1wmIzM0O1xuIDE5NDpcdFx0aGVscFxuIDE5NTpcdFx0ICBUaGUgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcbiAxOTY6XHRcdCAgYWxnb3JpdGhtIGlzIGFsc28gZm9yIGRlc3RpbmF0aW9uIElQIGxvYWQgYmFsYW5jaW5nLiBJdCBpcyBcbiAxOTc6XHRcdCAgdXN1YWxseSB1c2VkIGluIGNhY2hlIGNsdXN0ZXIuIEl0IGRpZmZlcnMgZnJvbSB0aGUgTEJMQyBzY2hlZHVsaW5nXG4gMTk4Olx0XHQgIGFzIGZvbGxvd3M6IHRoZSBsb2FkIGJhbGFuY2VyIG1haW50YWlucyBtYXBwaW5ncyBmcm9tIGEgdGFyZ2V0XG4gMTk5Olx0XHQgIHRvIGEgc2V0IG9mIHNlcnZlciBub2RlcyB0aGF0IGNhbiBzZXJ2ZSB0aGUgdGFyZ2V0LiBSZXF1ZXN0cyBmb3JcbiAyMDA6XHRcdCAgYSB0YXJnZXQgYXJlIGFzc2lnbmVkIHRvIHRoZSBsZWFzdC1jb25uZWN0aW9uIG5vZGUgaW4gdGhlIHRhcmdldCYjMzk7c1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTY2NwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgSVBWUyBzY2hlZHVsaW5nIG1ldGhvZHM6CgoqKkFuYWx5emluZyBJUFZTIFNjaGVkdWxpbmcgQWxnb3JpdGhtcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIGxpc3Qgb2YgSVBWUyBzY2hlZHVsaW5nIGFsZ29yaXRobXMuIFdlIGhhdmUgdGhlIHVzdWFsIHN1c3BlY3RzLCBzdGFydGluZyB3aXRoIHRoZSBiYXNlIGBJUF9WU2AgLSB0aGUgZm91bmRhdGlvbmFsIHJvdW5kLXJvYmluIHNjaGVtZS4gVGhlbiB0aGVyZSYjMzk7cyBgSVBfVlNfUlJgLCB3aGljaCBpcyBjbGFzc2ljLCBidXQgbGV0JiMzOTtzIGRpdmUgaW50byBzb21lIG1vcmUgYWR2YW5jZWQgb3B0aW9ucy4gYElQX1ZTX1dSUmAgc2lnbmlmaWVzIFdlaWdodGVkIFJvdW5kIFJvYmluLCBnaXZpbmcgbW9yZSB3ZWlnaHQgdG8gY2VydGFpbiByZWFsIHNlcnZlcnMgYmFzZWQgb24gY2FwYWNpdHkgb3IgcHJpb3JpdHksIHRoYXQmIzM5O3MgdXNlZnVsLiBOZXh0IGlzIGBJUF9WU19MQ2AsIExlYXN0IENvbm5lY3Rpb25zIHdoaWNoIEkgb2Z0ZW4gdXNlLiBXZSBoYXZlIGBJUF9WU19XTENgIC0gV2VpZ2h0ZWQgTGVhc3QgQ29ubmVjdGlvbnMuIEl0JiMzOTtzIGEgc29saWQgY2hvaWNlIGZvciBiYWxhbmNpbmcgbG9hZCBiYXNlZCBvbiBzZXJ2ZXIgY2FwYWNpdHkgYW5kIGNvbm5lY3Rpb24gY291bnQuIGBJUF9WU19GT2AsIHRoYXQmIzM5O3MgdGhlICYjMzQ7ZmFzdGVzdCBvbmUmIzM0OyB0aGF0IGlzIHJhcmVseSB1c2VkLiBMZXQmIzM5O3Mgc2VlLi4uIGBJUF9WU19PVkZgLCBJIGhhdmVuJiMzOTt0IG5lZWRlZCB0byB1c2UgdGhhdCBtdWNoLiBUaGVuLCB3ZSBnZXQgaW50byBtb3JlIGFkdmFuY2VkIGNvbnNpZGVyYXRpb25zOiBgSVBfVlNfTEJMQ2AsIHRoZSBMb2NhbGl0eS1CYXNlZCBMZWFzdCBDb25uZWN0aW9ucy4gQW5kLCBmaW5hbGx5LCBgSVBfVlNfTEJMQ1JgIHdoaWNoIGFkZHMgbG9jYWxpdHkgd2l0aCBhIHJlcGxpY2F0aW9uIGNvbXBvbmVudC4gVGltZSB0byBjb21wYXJlIHRoZSBlZmZlY3RpdmVuZXNzIG9mIGVhY2guIExldCYjMzk7cyBkaWcgZGVlcGVyIGludG8gdGhlIG51YW5jZXMgb2YgZWFjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMTpcdFx0ICBzZXJ2ZXIgc2V0LiBJZiBhbGwgdGhlIG5vZGUgaW4gdGhlIHNlcnZlciBzZXQgYXJlIG92ZXIgbG9hZGVkLFxuIDIwMjpcdFx0ICBpdCBwaWNrcyB1cCBhIGxlYXN0LWNvbm5lY3Rpb24gbm9kZSBpbiB0aGUgY2x1c3RlciBhbmQgYWRkcyBpdFxuIDIwMzpcdFx0ICBpbiB0aGUgc2V2ZXIgc2V0IGZvciB0aGUgdGFyZ2V0LiBJZiB0aGUgc2VydmVyIHNldCBoYXMgbm90IGJlZW5cbiAyMDQ6XHRcdCAgbW9kaWZpZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGltZSwgdGhlIG1vc3QgbG9hZGVkIG5vZGUgaXMgcmVtb3ZlZFxuIDIwNTpcdFx0ICBmcm9tIHRoZSBzZXJ2ZXIgc2V0LCBpbiBvcmRlciB0byBhdm9pZCBoaWdoIGRlZ3JlZSBvZiByZXBsaWNhdGlvbi5cbiAyMDY6XHRcbiAyMDc6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAyMDg6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDIwOTpcdFxuIDIxMDpcdGNvbmZpZ1x0SVBfVlNfREhcbiAyMTE6XHRcdHRyaXN0YXRlIFwmIzM0O2Rlc3RpbmF0aW9uIGhhc2hpbmcgc2NoZWR1bGluZ1wmIzM0O1xuIDIxMjpcdFx0aGVscFxuIDIxMzpcdFx0ICBUaGUgZGVzdGluYXRpb24gaGFzaGluZyBzY2hlZHVsaW5nIGFsZ29yaXRobSBhc3NpZ25zIG5ldHdvcmtcbiAyMTQ6XHRcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlcnMgdGhyb3VnaCBsb29raW5nIHVwIGEgc3RhdGljYWxseSBhc3NpZ25lZFxuIDIxNTpcdFx0ICBoYXNoIHRhYmxlIGJ5IHRoZWlyIGRlc3RpbmF0aW9uIElQIGFkZHJlc3Nlcy5cbiAyMTY6XHRcbiAyMTc6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAyMTg6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDIxOTpcdFxuIDIyMDpcdGNvbmZpZ1x0SVBfVlNfU0hcbiAyMjE6XHRcdHRyaXN0YXRlIFwmIzM0O3NvdXJjZSBoYXNoaW5nIHNjaGVkdWxpbmdcJiMzNDtcbiAyMjI6XHRcdGhlbHBcbiAyMjM6XHRcdCAgVGhlIHNvdXJjZSBoYXNoaW5nIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFzc2lnbnMgbmV0d29ya1xuIDIyNDpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVycyB0aHJvdWdoIGxvb2tpbmcgdXAgYSBzdGF0aWNhbGx5IGFzc2lnbmVkXG4gMjI1Olx0XHQgIGhhc2ggdGFibGUgYnkgdGhlaXIgc291cmNlIElQIGFkZHJlc3Nlcy5cbiAyMjY6XHRcbiAyMjc6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAyMjg6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDIyOTpcdFxuIDIzMDpcdGNvbmZpZ1x0SVBfVlNfTUhcbiAyMzE6XHRcdHRyaXN0YXRlIFwmIzM0O21hZ2xldiBoYXNoaW5nIHNjaGVkdWxpbmdcJiMzNDtcbiAyMzI6XHRcdGhlbHBcbiAyMzM6XHRcdCAgVGhlIG1hZ2xldiBjb25zaXN0ZW50IGhhc2hpbmcgc2NoZWR1bGluZyBhbGdvcml0aG0gcHJvdmlkZXMgdGhlXG4gMjM0Olx0XHQgIEdvb2dsZSYjMzk7cyBNYWdsZXYgaGFzaGluZyBhbGdvcml0aG0gYXMgYSBJUFZTIHNjaGVkdWxlci4gSXQgYXNzaWduc1xuIDIzNTpcdFx0ICBuZXR3b3JrIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXJzIHRocm91Z2ggbG9va2luZyB1cCBhIHN0YXRpY2FsbHlcbiAyMzY6XHRcdCAgYXNzaWduZWQgc3BlY2lhbCBoYXNoIHRhYmxlIGNhbGxlZCB0aGUgbG9va3VwIHRhYmxlLiBNYWdsZXYgaGFzaGluZ1xuIDIzNzpcdFx0ICBpcyB0byBhc3NpZ24gYSBwcmVmZXJlbmNlIGxpc3Qgb2YgYWxsIHRoZSBsb29rdXAgdGFibGUgcG9zaXRpb25zXG4gMjM4Olx0XHQgIHRvIGVhY2ggZGVzdGluYXRpb24uXG4gMjM5Olx0XG4gMjQwOlx0XHQgIFRocm91Z2ggdGhpcyBvcGVyYXRpb24sIFRoZSBtYWdsZXYgaGFzaGluZyBnaXZlcyBhbiBhbG1vc3QgZXF1YWxcbiAyNDE6XHRcdCAgc2hhcmUgb2YgdGhlIGxvb2t1cCB0YWJsZSB0byBlYWNoIG9mIHRoZSBkZXN0aW5hdGlvbnMgYW5kIHByb3ZpZGVzXG4gMjQyOlx0XHQgIG1pbmltYWwgZGlzcnVwdGlvbiBieSB1c2luZyB0aGUgbG9va3VwIHRhYmxlLiBXaGVuIHRoZSBzZXQgb2ZcbiAyNDM6XHRcdCAgZGVzdGluYXRpb25zIGNoYW5nZXMsIGEgY29ubmVjdGlvbiB3aWxsIGxpa2VseSBiZSBzZW50IHRvIHRoZSBzYW1lXG4gMjQ0Olx0XHQgIGRlc3RpbmF0aW9uIGFzIGl0IHdhcyBiZWZvcmUuXG4gMjQ1Olx0XG4gMjQ2Olx0XHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXG4gMjQ3Olx0XHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cbiAyNDg6XHRcbiAyNDk6XHRjb25maWdcdElQX1ZTX1NFRFxuIDI1MDpcdFx0dHJpc3RhdGUgXCYjMzQ7c2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkgc2NoZWR1bGluZ1wmIzM0O1xuIDI1MTpcdFx0aGVscFxuIDI1MjpcdFx0ICBUaGUgc2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkgc2NoZWR1bGluZyBhbGdvcml0aG0gYXNzaWducyBuZXR3b3JrXG4gMjUzOlx0XHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgc2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkuIFRoZSBcbiAyNTQ6XHRcdCAgZXhwZWN0ZWQgZGVsYXkgdGhhdCB0aGUgam9iIHdpbGwgZXhwZXJpZW5jZSBpcyAoQ2kgJiM0MzsgMSkgLyBVaSBpZiBcbiAyNTU6XHRcdCAgc2VudCB0byB0aGUgaXRoIHNlcnZlciwgaW4gd2hpY2ggQ2kgaXMgdGhlIG51bWJlciBvZiBjb25uZWN0aW9uc1xuIDI1NjpcdFx0ICBvbiB0aGUgaXRoIHNlcnZlciBhbmQgVWkgaXMgdGhlIGZpeGVkIHNlcnZpY2UgcmF0ZSAod2VpZ2h0KVxuIDI1NzpcdFx0ICBvZiB0aGUgaXRoIHNlcnZlci5cbiAyNTg6XHRcbiAyNTk6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAyNjA6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDI2MTpcdFxuIDI2MjpcdGNvbmZpZ1x0SVBfVlNfTlFcbiAyNjM6XHRcdHRyaXN0YXRlIFwmIzM0O25ldmVyIHF1ZXVlIHNjaGVkdWxpbmdcJiMzNDtcbiAyNjQ6XHRcdGhlbHBcbiAyNjU6XHRcdCAgVGhlIG5ldmVyIHF1ZXVlIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFkb3B0cyBhIHR3by1zcGVlZCBtb2RlbC5cbiAyNjY6XHRcdCAgV2hlbiB0aGVyZSBpcyBhbiBpZGxlIHNlcnZlciBhdmFpbGFibGUsIHRoZSBqb2Igd2lsbCBiZSBzZW50IHRvXG4gMjY3Olx0XHQgIHRoZSBpZGxlIHNlcnZlciwgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBhIGZhc3Qgb25lLiBXaGVuIHRoZXJlXG4gMjY4Olx0XHQgIGlzIG5vIGlkbGUgc2VydmVyIGF2YWlsYWJsZSwgdGhlIGpvYiB3aWxsIGJlIHNlbnQgdG8gdGhlIHNlcnZlclxuIDI2OTpcdFx0ICB0aGF0IG1pbmltaXplIGl0cyBleHBlY3RlZCBkZWxheSAoVGhlIFNob3J0ZXN0IEV4cGVjdGVkIERlbGF5XG4gMjcwOlx0XHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtKS5cbiAyNzE6XHRcbiAyNzI6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAyNzM6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuIDI3NDpcdFxuIDI3NTpcdGNvbmZpZ1x0SVBfVlNfVFdPU1xuIDI3NjpcdFx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgcmFuZG9tIHR3b3MgY2hvaWNlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1wmIzM0O1xuIDI3NzpcdFx0aGVscFxuIDI3ODpcdFx0ICBUaGUgd2VpZ2h0ZWQgcmFuZG9tIHR3b3MgY2hvaWNlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1xuIDI3OTpcdFx0ICBhbGdvcml0aG0gcGlja3MgdHdvIHJhbmRvbSByZWFsIHNlcnZlcnMgYW5kIGRpcmVjdHMgbmV0d29ya1xuIDI4MDpcdFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IGFjdGl2ZSBjb25uZWN0aW9uc1xuIDI4MTpcdFx0ICBub3JtYWxpemVkIGJ5IHRoZSBzZXJ2ZXIgd2VpZ2h0LlxuIDI4MjpcdFxuIDI4MzpcdFx0ICBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0IGluIGtlcm5lbCwgc2F5IFkuIFRvIGNvbXBpbGUgaXQgYXMgYVxuIDI4NDpcdFx0ICBtb2R1bGUsIGNob29zZSBNIGhlcmUuIElmIHVuc3VyZSwgc2F5IE4uXG4gMjg1Olx0XG4gMjg2Olx0Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbiAyODc6XHRcbiAyODg6XHRjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbiAyODk6XHRcdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbiAyOTA6XHRcdHJhbmdlIDQgMjBcbiAyOTE6XHRcdGRlZmF1bHQgOFxuIDI5MjpcdFx0aGVscFxuIDI5MzpcdFx0ICBUaGUgc291cmNlIGhhc2hpbmcgc2NoZWR1bGVyIG1hcHMgc291cmNlIElQcyB0byBkZXN0aW5hdGlvbnNcbiAyOTQ6XHRcdCAgc3RvcmVkIGluIGEgaGFzaCB0YWJsZS4gVGhpcyB0YWJsZSBpcyB0aWxlZCBieSBlYWNoIGRlc3RpbmF0aW9uXG4gMjk1Olx0XHQgIHVudGlsIGFsbCBzbG90cyBpbiB0aGUgdGFibGUgYXJlIGZpbGxlZC4gV2hlbiB1c2luZyB3ZWlnaHRzIHRvXG4gMjk2Olx0XHQgIGFsbG93IGRlc3RpbmF0aW9ucyB0byByZWNlaXZlIG1vcmUgY29ubmVjdGlvbnMsIHRoZSB0YWJsZSBpc1xuIDI5NzpcdFx0ICB0aWxlZCBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSB3ZWlnaHRzIHNwZWNpZmllZC4gVGhlIHRhYmxlXG4gMjk4Olx0XHQgIG5lZWRzIHRvIGJlIGxhcmdlIGVub3VnaCB0byBlZmZlY3RpdmVseSBmaXQgYWxsIHRoZSBkZXN0aW5hdGlvbnNcbiAyOTk6XHRcdCAgbXVsdGlwbGllZCBieSB0aGVpciByZXNwZWN0aXZlIHdlaWdodHMuXG4gMzAwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NjYxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogOTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBJUFZTIFNjaGVkdWxlciBNb2RpZmljYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBhIGNvbXByZWhlbnNpdmUgbW9kaWZpY2F0aW9uIHRvdWNoaW5nIGFsbW9zdCBldmVyeSBJUFZTIHNjaGVkdWxlciB3ZSYjMzk7dmUgZ290OiBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLiBUaGUgcGF0Y2ggaXMgY2hhbmdpbmcgYSBsYXJnZSBzd2F0aGUgb2YgY29kZSwgdG91Y2hpbmcgYGlwX3ZzX2Nvbm4uY2AsIGBpcF92c19jdGwuY2AsIGFuZCBhbGwgdGhlIHNjaGVkdWxlci1zcGVjaWZpYyBmaWxlcyB0aGVtc2VsdmVzLiBUaGlzIGltcGxpZXMgYSBzaWduaWZpY2FudCBpbXBhY3QgYWNyb3NzIHRoZSBlbnRpcmUgbG9hZCBiYWxhbmNpbmcgaW5mcmFzdHJ1Y3R1cmUuIE5hdHVyYWxseSwgdGhpcyBtZWFucyB3ZSBzaG91bGQgZW5zdXJlIHRoYXQgYElQX1ZTYCBhbmQgYWxsIG9mIHRoZXNlIHNjaGVkdWxlcnMgYXJlIGVuYWJsZWQgZHVyaW5nIGJ1aWxkIHRpbWUuCgpNeSBhdHRlbnRpb24gaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gdGhlIGNvcmUgSVBWUyBmdW5jdGlvbnMgdGhhdCBhcmUgdGhlIGJlZHJvY2sgb2YgZGVzdGluYXRpb24gbWFuYWdlbWVudDogYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCwgYGlwX3ZzX2JpbmRfZGVzdGAsIGBpcF92c191bmJpbmRfZGVzdGAsIGBpcF92c19hZGRfZGVzdGAsIGFuZCBgaXBfdnNfZWRpdF9kZXN0YCwgYWxvbmcgd2l0aCB0aGUgcmVsYXRlZCBgX19pcF92c191cGRhdGVfZGVzdGAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgcGllY2VzIHRoYXQgd291bGQgYmUgYWZmZWN0ZWQgYnkgc3VjaCBhIGJyb2FkIGNoYW5nZS4KClNwZWNpZmljYWxseSwgSSYjMzk7bSBub3cgemVyb2luZyBpbiBvbiBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLiBJJiMzOTttIGNvbmNlcm5lZCBhYm91dCB0aGUgaW5saW5lIGRlY2xhcmF0aW9uLCB3aGljaCBpcyBzaG93biBpbiB0aGUgcGF0Y2guIEkgd2FzIGluaXRpYWxseSB0aHJvd24gYnkgdGhlIGBfX2Fsd2F5c19pbmxpbmVgIGRlY2xhcmF0aW9uIGluIGBpcF92c19jb25uLmNgIGFuZCBpdHMgcHJlc2VuY2UgaW4gYGluY2x1ZGUvbmV0L2lwX3ZzLmhgLiBJZiBpdCYjMzk7cyBpbmxpbmUsIGhvdyBjYW4gb3RoZXIgbW9kdWxlcyBsaWtlIGBpcF92c19jdGwuY2AgZGlyZWN0bHkgY2FsbCBpdD8gVGhhdCYjMzk7cyBhIHRleHRib29rIHNvdXJjZSBvZiBsaW5rZXIgZXJyb3JzIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4gSG93ZXZlciwgYSBxdWljayBzY2FuIG9mIHRoZSBwYXRjaCByZXZlYWxzIHRoZSBmdW5jdGlvbiBpdHNlbGYgaW4gYGlwX3ZzX2Nvbm4uY2AuIFRoZSBjb21tZW50IGV4cGxhaW5zIGl0cyBwdXJwb3NlOiBtYW5hZ2luZyB0aGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBkZXN0aW5hdGlvbiBjb25uZWN0aW9uIGNvdW50cyBhbmQgdGhyZXNob2xkcy4gVGhlIGxvZ2ljIGlzIGNsZWFybHkgZGVmaW5lZC4KClRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXM6ICpkb2VzIHRoaXMgYnVpbGQ/KiBUaGUgcHJvbXB0IHN0YXRlcyB0aGUgY2hhbmdlcyBhcmUgYWxyZWFkeSBhcHBsaWVkLCBzbyBhbnkgcG90ZW50aWFsIGJ1aWxkIGVycm9ycyBzaG91bGQgaGF2ZSBiZWVuIGNhdWdodC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgaXBfdnNfY29ubi5jYCBhbmQgYGlwX3ZzX2N0bC5jYCBidWlsZCBjb3JyZWN0bHksIGJ1dCB0aGlzIGlzIHRoZSBmaXJzdCB0aGluZyBJJiMzOTtkIGxvb2sgZm9yLiBBIG1pc3NpbmcgaW5jbHVkZSBvciBpbmNvcnJlY3QgdXNlIG9mIHRoZSBpbmxpbmUga2V5d29yZCB3b3VsZCBiZSBhIHNlcmlvdXMgcmVkIGZsYWcuIEkgd2FudCB0byBjb25maXJtIHRoYXQgYGlwX3ZzX2N0bC5jYCBjYW4gaW5kZWVkIGNhbGwgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYC4gVGhpcyBpcyBhIGNsYXNzaWMgcG90ZW50aWFsIGdvdGNoYSwgYW5kIGl0IGlzIHNvbWV0aGluZyB0byBlbnN1cmUgaXMgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaXBfdnMuaD0xOTEyPXN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19kZXN0X3B1dF9hbmRfZnJlZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbi0tXG5pbmNsdWRlL25ldC9pcF92cy5oLTE5MTctXG5pbmNsdWRlL25ldC9pcF92cy5oOjE5MTg6dm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCk7XG5pbmNsdWRlL25ldC9pcF92cy5oLTE5MTktXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz05ODg9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTk4LSAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo5OTk6X19hbHdheXNfaW5saW5lIHZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwMDAte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTAyNz1pcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwODMtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwODQ6XHRpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0KTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA4NS19XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMTQ1PXN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c191bmJpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTc4LVx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTE3OTpcdFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExODAtXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTEzMTE9X19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTM3Ni1cdFx0V1JJVEVfT05DRShkZXN0LVx1MDAzZWxfdGhyZXNob2xkLCB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTM3NzpcdFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTM3OC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5NzYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgQ3Jvc3MtRmlsZSBGdW5jdGlvbiBDYWxsIElzc3VlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBzb21ldGhpbmcmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LiBJIHNlZSBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIGFuZCB0aGUgZGVmaW5pdGlvbiBpbiBgaXBfdnNfY29ubi5jYC4gVGhlIGtpY2tlciBpcywgaXQmIzM5O3MgZGVmaW5lZCBhcyBgX19hbHdheXNfaW5saW5lYC4gSWYgaXQmIzM5O3MgKmFsd2F5cyogaW5saW5lZCB3aXRoaW4gdGhhdCBgLmNgIGZpbGUsIHRoZXJlJiMzOTtzIG5vIHdheSBpdCYjMzk7cyBkaXJlY3RseSBjYWxsYWJsZSBmcm9tIGFub3RoZXIgYC5jYCBmaWxlLCBsaWtlIGBpcF92c19jdGwuY2AuIFRoYXQganVzdCB3b3VsZG4mIzM5O3Qgd29yay4gCgpOb3csIGEgZmxlZXRpbmcgdGhvdWdodC4uLiBjb3VsZCBgX19hbHdheXNfaW5saW5lYCBqdXN0IGJlIGEgY29tcGlsZXIgaGludCwgYW5kIG1heWJlIGl0ICpzdGlsbCogZ2VuZXJhdGVzIGFuIG91dC1vZi1saW5lIGNvcHk/IFRoYXQgc2VlbXMgdW5saWtlbHksIHRob3VnaC4gVXN1YWxseSwgYF9fYWx3YXlzX2lubGluZWAgcHJldHR5IG11Y2ggZm9yY2VzIHRoZSBmdW5jdGlvbiB0byBiZSBpbmxpbmVkLCBhbmQgaXQgdXN1YWxseSBpbXBsaWVzIGBpbmxpbmVgLiBJZiBpdCB3YXNuJiMzOTt0IGBzdGF0aWNgLCBpdCAqbWlnaHQqIGdlbmVyYXRlIGFuIGV4dGVybmFsIHN5bWJvbCwgYnV0IGhvbmVzdGx5LCBgX19hbHdheXNfaW5saW5lYCB3aXRob3V0IGBzdGF0aWNgIGlzIGp1c3Qgc3RyYW5nZS4gSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgYGlwX3ZzX2Nvbm4uY2AgdG8gc2VlIGlmIGl0JiMzOTtzIGV4cGxpY2l0bHkgZXhwb3J0ZWQgc29tZWhvdywgb3IgaWYgdGhlcmUmIzM5O3Mgc29tZSBvdGhlciB0cmlja2VyeSBnb2luZyBvbi4gTmVlZCB0byB2ZXJpZnkgdGhpcyBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5OTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDk5MDpcdFx0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpXG4gOTkxOlx0XHRcdCYjNDM7IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4gOTkyOlx0fVxuIDk5MzpcdFxuIDk5NDpcdC8qIFVwZGF0ZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIG51bWJlciBvZiBkZXN0IGNvbm5zIGFuZCBsb3dlci91cHBlclxuIDk5NTpcdCAqIGNvbm5lY3Rpb24gdGhyZXNob2xkczpcbiA5OTY6XHQgKiAtIGNvbm5zIHJlYWNoIHVfdGhyZXNob2xkIGFuZCBleGNlZWQgaXQ6IHNldCB0aGUgZmxhZ1xuIDk5NzpcdCAqIC0gY29ubnMgZ28gYmVsb3cgbF90aHJlc2hvbGQgKG9yIDc1JSBvZiB1X3RocmVzaG9sZCk6IGNsZWFyIHRoZSBmbGFnXG4gOTk4Olx0ICovXG4gOTk5Olx0X19hbHdheXNfaW5saW5lIHZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4xMDAwOlx0e1xuMTAwMTpcdFx0aW50IGNvbm5zO1xuMTAwMjpcdFx0dTMyIGwsIHU7XG4xMDAzOlx0XG4xMDA0Olx0XHR1ID0gUkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpO1xuMTAwNTpcdFx0aWYgKCF1KVxuMTAwNjpcdFx0XHRnb3RvIHVuc2V0O1xuMTAwNzpcdFx0Y29ubnMgPSBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCk7XG4xMDA4Olx0XHRpZiAoY29ubnMgXHUwMDNlPSB1KSB7XG4xMDA5Olx0XHRcdHNldF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDc5NQoJCQkJCQkJb3V0cHV0OiAyODIKCQkJCQkJCXRob3VnaHRzOiA4MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBhIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGBfX2Fsd2F5c19pbmxpbmVgIHdpdGhvdXQgYHN0YXRpY2AgaW4gR0NDLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgaXQgd291bGQgYmUgaW5saW5lZCBldmVyeXdoZXJlIGJ1dCBhbHNvIGhhdmUgYW4gZXh0ZXJuYWwgZGVmaW5pdGlvbi4gVGhlbiBJIHJlbWVtYmVyZWQgQzk5JiMzOTtzIGBpbmxpbmVgIGJlaGF2aW9yOiB3aXRob3V0IGBzdGF0aWNgLCBubyBleHRlcm5hbCBkZWZpbml0aW9uIGlzIGVtaXR0ZWQgdW5sZXNzIGBleHRlcm4gaW5saW5lYCBpcyB1c2VkLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBpZiB0aGlzIGlubGluZWQgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGlwX3ZzX2N0bC5jYCwgdGhlcmUgbWlnaHQgYmUgYW4gdW5kZWZpbmVkIHJlZmVyZW5jZSBpZiBubyBleHRlcm5hbCBkZWZpbml0aW9uIGV4aXN0cy4gQWN0dWFsbHksIG5vIG5lZWQgdG8gY29tcGlsZSwgSSYjMzk7bSBqdXN0IGFmdGVyIHRoZSByZXN1bHRzLgoKVGhlIHBhdGNoIHRvdWNoZXMgYGlwX3ZzX2Nvbm4uY2AsIGBpcF92c19jdGwuY2AsIGFuZCB0aGUgc2NoZWR1bGVycywgc28gSSBuZWVkIHRvIGhvbmUgaW4gb24gdGhlIHJlbGV2YW50IHN5bWJvbHMuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIHdhdGNoIGFyZSwgd2l0aG91dCBhIGRvdWJ0LCB0aGVzZTogYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYCwgYGlwX3ZzX2JpbmRfZGVzdGAsIGBpcF92c191bmJpbmRfZGVzdGAsIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYGlwX3ZzX2FkZF9kZXN0YCwgYW5kIGBpcF92c19lZGl0X2Rlc3RgLgoKTGV0JiMzOTtzIGFsc28gY2FzdCBhIHdpZGVyIG5ldCBhbmQgbG9vayBhdCBvdGhlciBmdW5jdGlvbnMgYWZmZWN0ZWQuIFRoZSBzY2hlZHVsZXJzIGNsZWFybHkgbWF0dGVyIHRvbywgc28gSSYjMzk7bGwgYWxzbyBhZGQgdGhlc2UgdG8gdGhlIG1lbnRhbCBjaGVja2xpc3Q6IGBpcF92c19mb19zY2hlZHVsZWAsIGBfX2lwX3ZzX2xibGNfc2NoZWR1bGVgLCBgX19pcF92c19sYmxjcl9zY2hlZHVsZWAsIGBpcF92c19sY19zY2hlZHVsZWAsIGBpcF92c19taF9zY2hlZHVsZWAgKGFuZCBub3RlIHRoYXQgaXQgbW9kaWZpZXMgYGlzX3VuYXZhaWxhYmxlYCBpbiBgaXBfdnNfbWguY2ApLCBgaXBfdnNfbnFfc2NoZWR1bGVgLCBgaXBfdnNfb3ZmX3NjaGVkdWxlYCwgYGlwX3ZzX3JyX3NjaGVkdWxlYCwgYGlwX3ZzX3NlZF9zY2hlZHVsZWAsIGBpc191bmF2YWlsYWJsZWAgaW4gYGlwX3ZzX3NoLmNgLCBgaXBfdnNfdHdvc19zY2hlZHVsZWAsIGBpcF92c193bGNfc2NoZWR1bGVgLCBgaXBfdnNfd3JyX3NjaGVkdWxlYC4KCkZvciB0aGUgRm9jdXNTeW1ib2xzLCBJIHNob3VsZCBjb25zb2xpZGF0ZSB0aGUgZm9sbG93aW5nLCBlbnN1cmluZyBhIGdvb2QgYmFsYW5jZSBvZiBjb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIHNjaGVkdWxlciBiZWhhdmlvcnMsIGxpa2UgdGhpczoKYGlwX3ZzX2JpbmRfZGVzdGAKYGlwX3ZzX3VuYmluZF9kZXN0YApgX19pcF92c191cGRhdGVfZGVzdGAKYGlwX3ZzX2FkZF9kZXN0YApgaXBfdnNfZWRpdF9kZXN0YApgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgCgpBbmQsIG9mIGNvdXJzZSwgdGhlIGNvbmZpZ3VyYXRpb25zIGFyZSBjZW50cmFsIHRvIHRoaXMgdG9vLiBJJiMzOTtsbCBuZWVkIHRoZXNlOiBgSVBfVlNgLCBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLgoKQSBxdWljayBzYW5pdHkgY2hlY2sgYWdhaW5zdCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHdpbGwgY29uZmlybSB0aG9zZSBjb25maWcgbmFtZXMgYXJlIGNvcnJlY3QuIFllcCwgYWxsIGNsZWFyLgoKQWxyaWdodCwgd2l0aCB0aGF0IGNvbmZpcm1lZCwgSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHNldCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dSUiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQyYjMzQ7LAogICAgJiMzNDtJUF9WU19XTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfRk8mIzM0OywKICAgICYjMzQ7SVBfVlNfT1ZGJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQ1ImIzM0OywKICAgICYjMzQ7SVBfVlNfREgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0gmIzM0OywKICAgICYjMzQ7SVBfVlNfTUgmIzM0OywKICAgICYjMzQ7SVBfVlNfU0VEJiMzNDssCiAgICAmIzM0O0lQX1ZTX05RJiMzNDssCiAgICAmIzM0O0lQX1ZTX1RXT1MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZCYjMzQ7LAogICAgJiMzNDtpcF92c19iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfdW5iaW5kX2Rlc3QmIzM0OywKICAgICYjMzQ7X19pcF92c191cGRhdGVfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19hZGRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19lZGl0X2Rlc3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcgbG9naWMgb2YgSVBWUyBieSBjaGFuZ2luZyBob3cgdGhlIGRlc3RpbmF0aW9uIG92ZXJsb2FkIGZsYWcgaXMgdXBkYXRlZCBhbmQgY2hlY2tlZC4gSXQgaW50cm9kdWNlcyBhIG5ldyBgZmxhZ3MyYCBmaWVsZCBhbmQgdXBkYXRlcyBtdWx0aXBsZSBJUFZTIHNjaGVkdWxlcnMgdG8gdXNlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtJUF9WU19SUiYjMzQ7LAogICAgJiMzNDtJUF9WU19XUlImIzM0OywKICAgICYjMzQ7SVBfVlNfTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfV0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0ZPJiMzNDssCiAgICAmIzM0O0lQX1ZTX09WRiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0RIJiMzNDssCiAgICAmIzM0O0lQX1ZTX1NIJiMzNDssCiAgICAmIzM0O0lQX1ZTX01IJiMzNDssCiAgICAmIzM0O0lQX1ZTX1NFRCYjMzQ7LAogICAgJiMzNDtJUF9WU19OUSYjMzQ7LAogICAgJiMzNDtJUF9WU19UV09TJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQmIzM0OywKICAgICYjMzQ7aXBfdnNfYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX3VuYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O19faXBfdnNfdXBkYXRlX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfYWRkX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfZWRpdF9kZXN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIGxvYWQgYmFsYW5jaW5nIGxvZ2ljIG9mIElQVlMgYnkgY2hhbmdpbmcgaG93IHRoZSBkZXN0aW5hdGlvbiBvdmVybG9hZCBmbGFnIGlzIHVwZGF0ZWQgYW5kIGNoZWNrZWQuIEl0IGludHJvZHVjZXMgYSBuZXcgYGZsYWdzMmAgZmllbGQgYW5kIHVwZGF0ZXMgbXVsdGlwbGUgSVBWUyBzY2hlZHVsZXJzIHRvIHVzZSBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjQ5OjM5LjQ4Njk1Nzk0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MTg4ODQ0MzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19SUlwiLFxuICAgIFwiSVBfVlNfV1JSXCIsXG4gICAgXCJJUF9WU19MQ1wiLFxuICAgIFwiSVBfVlNfV0xDXCIsXG4gICAgXCJJUF9WU19GT1wiLFxuICAgIFwiSVBfVlNfT1ZGXCIsXG4gICAgXCJJUF9WU19MQkxDXCIsXG4gICAgXCJJUF9WU19MQkxDUlwiLFxuICAgIFwiSVBfVlNfREhcIixcbiAgICBcIklQX1ZTX1NIXCIsXG4gICAgXCJJUF9WU19NSFwiLFxuICAgIFwiSVBfVlNfU0VEXCIsXG4gICAgXCJJUF9WU19OUVwiLFxuICAgIFwiSVBfVlNfVFdPU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkXCIsXG4gICAgXCJpcF92c19iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX3VuYmluZF9kZXN0XCIsXG4gICAgXCJfX2lwX3ZzX3VwZGF0ZV9kZXN0XCIsXG4gICAgXCJpcF92c19hZGRfZGVzdFwiLFxuICAgIFwiaXBfdnNfZWRpdF9kZXN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbG9hZCBiYWxhbmNpbmcgbG9naWMgb2YgSVBWUyBieSBjaGFuZ2luZyBob3cgdGhlIGRlc3RpbmF0aW9uIG92ZXJsb2FkIGZsYWcgaXMgdXBkYXRlZCBhbmQgY2hlY2tlZC4gSXQgaW50cm9kdWNlcyBhIG5ldyBgZmxhZ3MyYCBmaWVsZCBhbmQgdXBkYXRlcyBtdWx0aXBsZSBJUFZTIHNjaGVkdWxlcnMgdG8gdXNlIGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo0OTozOS40ODY5NjM4MjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjYyOTkwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFmMTM2YjczNWQ4MWJmYzBlNGYzOTMwYmQwMDhlYWJkOGNkNmZlZjdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMTMgMTI6NDk6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcXG5pbmRleCA0MTdmZjUxZjYyZmM4ZS4uNWU4ZTU1ZjgyYjA0NDAgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcXG5AQCAtMzYsNiArMzYsMTMgQEBcXG4gI2RlZmluZSBJUF9WU19IRFJfSU5WRVJTRVxcdDFcXG4gI2RlZmluZSBJUF9WU19IRFJfSUNNUFxcdFxcdDJcXG4gXFxuKy8qIERlc3RpbmF0aW9uIFNlcnZlciBGbGFncyAqL1xcbisjZGVmaW5lIElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVcXHQweDAwMDFcXHRcXHQvKiBzZXJ2ZXIgaXMgYXZhaWxhYmxlICovXFxuK1xcbitlbnVtIHtcXG4rXFx0SVBfVlNfREVTVF9GTF9PVkVSTE9BRCxcXG4rfTtcXG4rXFxuIC8qIGNvbm5fdGFiIGxpbWl0cyAoYXMgcGVyIEtjb25maWcpICovXFxuICNkZWZpbmUgSVBfVlNfQ09OTl9UQUJfTUlOX0JJVFNcXHQ4XFxuICNpZiBCSVRTX1BFUl9MT05HIFxcdTAwM2UgMzJcXG5AQCAtOTc2LDYgKzk4Myw3IEBAIHN0cnVjdCBpcF92c19kZXN0IHtcXG4gXFx0dm9sYXRpbGUgdW5zaWduZWQgaW50XFx0ZmxhZ3M7XFx0XFx0LyogZGVzdCBzdGF0dXMgZmxhZ3MgKi9cXG4gXFx0YXRvbWljX3RcXHRcXHRjb25uX2ZsYWdzO1xcdC8qIGZsYWdzIHRvIGNvcHkgdG8gY29ubiAqL1xcbiBcXHRhdG9taWNfdFxcdFxcdHdlaWdodDtcXHRcXHQvKiBzZXJ2ZXIgd2VpZ2h0ICovXFxuK1xcdHVuc2lnbmVkIGxvbmdcXHRcXHRmbGFnczI7XFx0XFx0LyogZGVzdCBzdGF0dXMgZmxhZ3MgKi9cXG4gXFx0YXRvbWljX3RcXHRcXHRsYXN0X3dlaWdodDtcXHQvKiBzZXJ2ZXIgbGF0ZXN0IHdlaWdodCAqL1xcbiBcXHRfX3UxNlxcdFxcdFxcdHR1bl90eXBlO1xcdC8qIHR1bm5lbCB0eXBlICovXFxuIFxcdF9fYmUxNlxcdFxcdFxcdHR1bl9wb3J0O1xcdC8qIHR1bm5lbCBwb3J0ICovXFxuQEAgLTE5MDcsNiArMTkxNSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19kZXN0X3B1dF9hbmRfZnJlZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4gXFx0XFx0a2ZyZWUoZGVzdCk7XFxuIH1cXG4gXFxuK3ZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpO1xcbitcXG4gLyogSVBWUyBzeW5jIGRhZW1vbiBkYXRhIGFuZCBmdW5jdGlvbiBwcm90b3R5cGVzXFxuICAqIChmcm9tIGlwX3ZzX3N5bmMuYylcXG4gICovXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcXG5pbmRleCAxZWQyMzRlN2YyNTEzNi4uMmMzN2M2YWM3NTI1YTUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxcbkBAIC0yOCwxMiArMjgsNiBAQFxcbiAjZGVmaW5lIElQX1ZTX1NWQ19GX1NDSEVEX1NIX0ZBTExCQUNLXFx0SVBfVlNfU1ZDX0ZfU0NIRUQxIC8qIFNIIGZhbGxiYWNrICovXFxuICNkZWZpbmUgSVBfVlNfU1ZDX0ZfU0NIRURfU0hfUE9SVFxcdElQX1ZTX1NWQ19GX1NDSEVEMiAvKiBTSCB1c2UgcG9ydCAqL1xcbiBcXG4tLypcXG4tICogICAgICBEZXN0aW5hdGlvbiBTZXJ2ZXIgRmxhZ3NcXG4tICovXFxuLSNkZWZpbmUgSVBfVlNfREVTVF9GX0FWQUlMQUJMRVxcdDB4MDAwMVxcdFxcdC8qIHNlcnZlciBpcyBhdmFpbGFibGUgKi9cXG4tI2RlZmluZSBJUF9WU19ERVNUX0ZfT1ZFUkxPQURcXHQweDAwMDJcXHRcXHQvKiBzZXJ2ZXIgaXMgb3ZlcmxvYWRlZCAqL1xcbi1cXG4gLypcXG4gICogICAgICBJUFZTIHN5bmMgZGFlbW9uIHN0YXRlc1xcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG5pbmRleCA2ZWQyNjIyMzYzZjBkNi4uMjU5MWY0ZTE0M2Y4NGMgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG5AQCAtOTkxLDYgKzk5MSwzNCBAQCBzdGF0aWMgaW5saW5lIGludCBpcF92c19kZXN0X3RvdGFsY29ubnMoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIFxcdFxcdCsgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWluYWN0Y29ubnMpO1xcbiB9XFxuIFxcbisvKiBVcGRhdGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBudW1iZXIgb2YgZGVzdCBjb25ucyBhbmQgbG93ZXIvdXBwZXJcXG4rICogY29ubmVjdGlvbiB0aHJlc2hvbGRzOlxcbisgKiAtIGNvbm5zIHJlYWNoIHVfdGhyZXNob2xkIGFuZCBleGNlZWQgaXQ6IHNldCB0aGUgZmxhZ1xcbisgKiAtIGNvbm5zIGdvIGJlbG93IGxfdGhyZXNob2xkIChvciA3NSUgb2YgdV90aHJlc2hvbGQpOiBjbGVhciB0aGUgZmxhZ1xcbisgKi9cXG4rX19hbHdheXNfaW5saW5lIHZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuK3tcXG4rXFx0aW50IGNvbm5zO1xcbitcXHR1MzIgbCwgdTtcXG4rXFxuK1xcdHUgPSBSRUFEX09OQ0UoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpO1xcbitcXHRpZiAoIXUpXFxuK1xcdFxcdGdvdG8gdW5zZXQ7XFxuK1xcdGNvbm5zID0gaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpO1xcbitcXHRpZiAoY29ubnMgXFx1MDAzZT0gdSkge1xcbitcXHRcXHRzZXRfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFx0LyogTG93IHRocmVzaG9sZCBkZWZhdWx0cyB0byA3NSUgb2YgdXBwZXIgdGhyZXNob2xkICovXFxuK1xcdGwgPSBSRUFEX09OQ0UoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQpID8gOiAodSAtICh1IFxcdTAwM2VcXHUwMDNlIDIpKTtcXG4rXFx0aWYgKGNvbm5zIFxcdTAwM2U9IGwpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK3Vuc2V0OlxcbitcXHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMikpXFxuK1xcdFxcdGNsZWFyX2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKTtcXG4rfVxcbitcXG4gLypcXG4gICpcXHRCaW5kIGEgY29ubmVjdGlvbiBlbnRyeSB3aXRoIGEgdmlydHVhbCBzZXJ2aWNlIGRlc3RpbmF0aW9uXFxuICAqXFx0Q2FsbGVkIGp1c3QgYWZ0ZXIgYSBuZXcgY29ubmVjdGlvbiBlbnRyeSBpcyBjcmVhdGVkLlxcbkBAIC0xMDUzLDkgKzEwODEsNyBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4gXFx0XFx0YXRvbWljX2luYyhcXHUwMDI2ZGVzdC1cXHUwMDNlcGVyc2lzdGNvbm5zKTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkICE9IDAgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcXHUwMDNlPSBkZXN0LVxcdTAwM2V1X3RocmVzaG9sZClcXG4tXFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHRpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0KTtcXG4gfVxcbiBcXG4gXFxuQEAgLTExNDksMTYgKzExNzUsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbiBcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZkZXN0LVxcdTAwM2VwZXJzaXN0Y29ubnMpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQgIT0gMCkge1xcbi1cXHRcXHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFxcdTAwM2MgZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQpXFxuLVxcdFxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuLVxcdH0gZWxzZSBpZiAoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgIT0gMCkge1xcbi1cXHRcXHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICogNCBcXHUwMDNjIGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkICogMylcXG4tXFx0XFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbi1cXHRcXHRcXHRkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbi1cXHR9XFxuK1xcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSlcXG4rXFx0XFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XFxuIFxcbiBcXHRpcF92c19kZXN0X3B1dChkZXN0KTtcXG4gfVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjJmNzNkODkyZjk3YzkgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuQEAgLTEzNzAsMTAgKzEzNzAsMTIgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4gXFx0Lyogc2V0IHRoZSBkZXN0IHN0YXR1cyBmbGFncyAqL1xcbiBcXHRkZXN0LVxcdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xcbiBcXG4tXFx0aWYgKHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCA9PSAwIHx8IHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCBcXHUwMDNlIGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkKVxcbi1cXHRcXHRkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbi1cXHRkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCA9IHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZDtcXG4tXFx0ZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQgPSB1ZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQ7XFxuK1xcdGlmIChSRUFEX09OQ0UoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpICE9IHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCB8fFxcbitcXHQgICAgUkVBRF9PTkNFKGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkKSAhPSB1ZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQpIHtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCwgdWRlc3QtXFx1MDAzZXVfdGhyZXNob2xkKTtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCwgdWRlc3QtXFx1MDAzZWxfdGhyZXNob2xkKTtcXG4rXFx0XFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XFxuK1xcdH1cXG4gXFxuIFxcdGRlc3QtXFx1MDAzZWFmID0gdWRlc3QtXFx1MDAzZWFmO1xcbiBcXG5AQCAtMTQ4Niw2ICsxNDg4LDkgQEAgaXBfdnNfYWRkX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcXG4gXFx0XFx0cmV0dXJuIC1FUkFOR0U7XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh1ZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgXFx1MDAzZSBJTlRfTUFYKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdGlmICh1ZGVzdC1cXHUwMDNldHVuX3R5cGUgPT0gSVBfVlNfQ09OTl9GX1RVTk5FTF9UWVBFX0dVRSkge1xcbiBcXHRcXHRpZiAodWRlc3QtXFx1MDAzZXR1bl9wb3J0ID09IDApIHtcXG4gXFx0XFx0XFx0cHJfZXJyKFxcXCIlcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuQEAgLTE1NTksNiArMTU2NCw5IEBAIGlwX3ZzX2VkaXRfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KVxcbiBcXHRcXHRyZXR1cm4gLUVSQU5HRTtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCBcXHUwMDNlIElOVF9NQVgpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0aWYgKHVkZXN0LVxcdTAwM2V0dW5fdHlwZSA9PSBJUF9WU19DT05OX0ZfVFVOTkVMX1RZUEVfR1VFKSB7XFxuIFxcdFxcdGlmICh1ZGVzdC1cXHUwMDNldHVuX3BvcnQgPT0gMCkge1xcbiBcXHRcXHRcXHRwcl9lcnIoXFxcIiVzKCk6IHR1bm5lbCBwb3J0IGlzIHplcm9cXFxcblxcXCIsIF9fZnVuY19fKTtcXG5AQCAtMzY2Nyw4ICszNjc1LDggQEAgX19pcF92c19nZXRfZGVzdF9lbnRyaWVzKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBjb25zdCBzdHJ1Y3QgaXBfdnNfZ2V0X2Rlc3RzICpcXG4gXFx0XFx0XFx0ZW50cnkucG9ydCA9IGRlc3QtXFx1MDAzZXBvcnQ7XFxuIFxcdFxcdFxcdGVudHJ5LmNvbm5fZmxhZ3MgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlY29ubl9mbGFncyk7XFxuIFxcdFxcdFxcdGVudHJ5LndlaWdodCA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbi1cXHRcXHRcXHRlbnRyeS51X3RocmVzaG9sZCA9IGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkO1xcbi1cXHRcXHRcXHRlbnRyeS5sX3RocmVzaG9sZCA9IGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkO1xcbitcXHRcXHRcXHRlbnRyeS51X3RocmVzaG9sZCA9IFJFQURfT05DRShkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCk7XFxuK1xcdFxcdFxcdGVudHJ5LmxfdGhyZXNob2xkID0gUkVBRF9PTkNFKGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkKTtcXG4gXFx0XFx0XFx0ZW50cnkuYWN0aXZlY29ubnMgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpO1xcbiBcXHRcXHRcXHRlbnRyeS5pbmFjdGNvbm5zID0gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWluYWN0Y29ubnMpO1xcbiBcXHRcXHRcXHRlbnRyeS5wZXJzaXN0Y29ubnMgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlcGVyc2lzdGNvbm5zKTtcXG5AQCAtNDI3Nyw4ICs0Mjg1LDEwIEBAIHN0YXRpYyBpbnQgaXBfdnNfZ2VubF9maWxsX2Rlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIFxcdFxcdFxcdCBkZXN0LVxcdTAwM2V0dW5fcG9ydCkgfHxcXG4gXFx0ICAgIG5sYV9wdXRfdTE2KHNrYiwgSVBWU19ERVNUX0FUVFJfVFVOX0ZMQUdTLFxcbiBcXHRcXHRcXHRkZXN0LVxcdTAwM2V0dW5fZmxhZ3MpIHx8XFxuLVxcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX1VfVEhSRVNILCBkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCkgfHxcXG4tXFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfTF9USFJFU0gsIGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkKSB8fFxcbitcXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9VX1RIUkVTSCxcXG4rXFx0XFx0XFx0UkVBRF9PTkNFKGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkKSkgfHxcXG4rXFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfTF9USFJFU0gsXFxuK1xcdFxcdFxcdFJFQURfT05DRShkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCkpIHx8XFxuIFxcdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0FDVElWRV9DT05OUyxcXG4gXFx0XFx0XFx0YXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKSkgfHxcXG4gXFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfSU5BQ1RfQ09OTlMsXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcXG5pbmRleCBlMWY2MmY2YjI1ZTIxMS4uMzY0YWNiNjM0MmUyZmUgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xcbkBAIC0xOTYsMTIgKzE5NiwxMiBAQCBzdGF0aWMgaW50IGlwX3ZzX2RoX2Rlc3RfY2hhbmdlZChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxcbiBcXG4gXFxuIC8qXFxuLSAqICAgICAgSWYgdGhlIGRlc3QgZmxhZ3MgaXMgc2V0IHdpdGggSVBfVlNfREVTVF9GX09WRVJMT0FELFxcbisgKiAgICAgIElmIHRoZSBkZXN0IGZsYWdzIGlzIHNldCB3aXRoIElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsXFxuICAqICAgICAgY29uc2lkZXIgdGhhdCB0aGUgc2VydmVyIGlzIG92ZXJsb2FkZWQgaGVyZS5cXG4gICovXFxuIHN0YXRpYyBpbmxpbmUgaW50IGlzX292ZXJsb2FkZWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIHtcXG4tXFx0cmV0dXJuIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHRyZXR1cm4gdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMik7XFxuIH1cXG4gXFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXFxuaW5kZXggZDY1N2I0N2M2NTExZmYuLmE1OWFmNmMxMTg5YWNhIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcXG5AQCAtMjksNyArMjksNyBAQCBpcF92c19mb19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpY1xcbiBcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgaHcpIHtcXG4gXFx0XFx0XFx0aHdlaWdodCA9IGRlc3Q7XFxuIFxcdFxcdFxcdGh3ID0gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCk7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXFxuaW5kZXggMTVjY2IyYjJmYTFmNGEuLmVlMjZiZTNlYjg2MDZmIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXFxuQEAgLTQxNCw3ICs0MTQsNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG4gXFx0ICogbmV3IGNvbm5lY3Rpb24uXFxuIFxcdCAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbkBAIC00MjksNyArNDI5LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqL1xcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMikpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuaW5kZXggYzkwZWE4OTdjM2Y3NTYuLjI4ODU4ZTQ0MjI1YTZjIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcXG5AQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcXG4gXFx0Lyogc2VsZWN0IHRoZSBmaXJzdCBkZXN0aW5hdGlvbiBzZXJ2ZXIsIHdob3NlIHdlaWdodCBcXHUwMDNlIDAgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZSwgXFx1MDAyNnNldC1cXHUwMDNlbGlzdCwgbGlzdCkge1xcbiBcXHRcXHRsZWFzdCA9IGUtXFx1MDAzZWRlc3Q7XFxuLVxcdFxcdGlmIChsZWFzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2bGVhc3QtXFx1MDAzZWZsYWdzMikpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0aWYgKChhdG9taWNfcmVhZChcXHUwMDI2bGVhc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZSAwKVxcbkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZSwgXFx1MDAyNnNldC1cXHUwMDNlbGlzdCwgbGlzdCkge1xcbiBcXHRcXHRkZXN0ID0gZS1cXHUwMDNlZGVzdDtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMikpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbkBAIC01NzcsNyArNTc3LDcgQEAgX19pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxcbiBcXHQgKiBuZXcgY29ubmVjdGlvbi5cXG4gXFx0ICovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmIChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG5AQCAtNTkzLDcgKzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcXG4gXFx0ICovXFxuICAgbmV4dHN0YWdlOlxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcXG5pbmRleCAzOGNjMzhjNWQ4YmJkOS4uYzRlNGU5MWUzZTZkN2QgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xcbkBAIC0zOCw3ICszOCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCAqL1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcXG4rXFx0XFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpIHx8XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSA9PSAwKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXFxuaW5kZXggMDIwODYzMDQ3NTYyZDMuLjIzZmZjNTFjYTA4OGYwIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcXG5AQCAtODAsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLFxcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIHtcXG4gXFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2M9IDAgfHxcXG4tXFx0ICAgICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHQgICAgICAgdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMik7XFxuIH1cXG4gXFxuIC8qIFJldHVybnMgaGFzaCB2YWx1ZSBmb3IgSVBWUyBNSCBlbnRyeSAqL1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXFxuaW5kZXggYWRhMTU4YzYxMGNlMTEuLmQ2ZmJiOWU1MGU0YjQ0IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcXG5AQCAtNzIsNyArNzIsNyBAQCBpcF92c19ucV9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4gXFxuLVxcdFxcdGlmIChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxcbitcXHRcXHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMikgfHxcXG4gXFx0XFx0ICAgICFhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcXG5pbmRleCBjNWM2N2RmODBhMGIzYy4uMTA0ZGU4YzI0YTRmNjUgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXFxuQEAgLTMzLDcgKzMzLDcgQEAgaXBfdnNfb3ZmX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuIFxcdFxcdHcgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KTtcXG4tXFx0XFx0aWYgKChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcXG4rXFx0XFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpIHx8XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpIFxcdTAwM2UgdyB8fFxcbiBcXHRcXHQgICAgdyA9PSAwKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xcbmluZGV4IDQxMjVlZTU2MWNkYzM2Li5jMzhiZWU5ODdkMTQzMiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXFxuQEAgLTY2LDcgKzY2LDcgQEAgaXBfdnNfcnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucyxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IG5fbGlzdCkge1xcbi1cXHRcXHRcXHRpZiAoIShkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0aWYgKCF0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZSAwKVxcbiBcXHRcXHRcXHRcXHQvKiBISVQgKi9cXG4gXFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xcbmluZGV4IDI0NWEzMjNjODRjZDMyLi4wY2U0MjVmOTc0OGFmNyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcXG5AQCAtNzUsNyArNzUsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICovXFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoIShkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0aWYgKCF0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdFxcdGxlYXN0ID0gZGVzdDtcXG4gXFx0XFx0XFx0bG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQobGVhc3QpO1xcbkBAIC05MCw3ICs5MCw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKi9cXG4gICBuZXh0c3RhZ2U6XFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmIChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XFxuIFxcdFxcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXFxuaW5kZXggY2Q2NzA2NmUzYjI2MTIuLmJiZGI2ODNiOGU4NjAxIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcXG5AQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3QgaXBfdnNfc2hfc3RhdGUge1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxuIHtcXG4gXFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2M9IDAgfHxcXG4tXFx0ICAgICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHQgICAgICAgdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMik7XFxuIH1cXG4gXFxuIC8qXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXFxuaW5kZXggZGJiN2Y1ZmQ0Njg4YTQuLmNlNTYxOGYwMmU3ZGY0IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXFxuQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXFxuIFxcbiBcXHQvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmICghKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xcbitcXHRcXHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpKSB7XFxuIFxcdFxcdFxcdHdlaWdodCA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbiBcXHRcXHRcXHRpZiAod2VpZ2h0IFxcdTAwM2UgMCkge1xcbiBcXHRcXHRcXHRcXHR0b3RhbF93ZWlnaHQgKz0gd2VpZ2h0O1xcbkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxcbiBcXG4gXFx0LyogUGljayB0d28gd2VpZ2h0ZWQgc2VydmVycyAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHR3ZWlnaHQgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXFxuaW5kZXggOWRhNDQ1Y2EwOWExNGMuLjYyYTRjODE0OTE5MjcyIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xcbkBAIC00Nyw3ICs0Nyw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKi9cXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmICghKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbiBcXHRcXHRcXHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xcbkBAIC02Miw3ICs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKi9cXG4gICBuZXh0c3RhZ2U6XFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmIChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFnczIpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbiBcXHRcXHRpZiAoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXFxuaW5kZXggMmRjZmYxMDQwZGE1MjEuLmI5OWNiYzFkMTMwMjlkIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xcbkBAIC0xNzYsNyArMTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBuX2xpc3QpIHtcXG4tXFx0XFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2U9IG1hcmstXFx1MDAzZWN3KVxcbiBcXHRcXHRcXHRcXHRnb3RvIGZvdW5kO1xcbiBcXHRcXHRcXHRpZiAoZGVzdCA9PSBzdG9wKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo0OTozOS45NDQzNjEyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ3MzE0MzA5ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIklQX1ZTX1JSXCIsXG4gICAgXCJJUF9WU19XUlJcIixcbiAgICBcIklQX1ZTX0xDXCIsXG4gICAgXCJJUF9WU19XTENcIixcbiAgICBcIklQX1ZTX0ZPXCIsXG4gICAgXCJJUF9WU19PVkZcIixcbiAgICBcIklQX1ZTX0xCTENcIixcbiAgICBcIklQX1ZTX0xCTENSXCIsXG4gICAgXCJJUF9WU19ESFwiLFxuICAgIFwiSVBfVlNfU0hcIixcbiAgICBcIklQX1ZTX01IXCIsXG4gICAgXCJJUF9WU19TRURcIixcbiAgICBcIklQX1ZTX05RXCIsXG4gICAgXCJJUF9WU19UV09TXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRcIixcbiAgICBcImlwX3ZzX2JpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfdW5iaW5kX2Rlc3RcIixcbiAgICBcIl9faXBfdnNfdXBkYXRlX2Rlc3RcIixcbiAgICBcImlwX3ZzX2FkZF9kZXN0XCIsXG4gICAgXCJpcF92c19lZGl0X2Rlc3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBsb2FkIGJhbGFuY2luZyBsb2dpYyBvZiBJUFZTIGJ5IGNoYW5naW5nIGhvdyB0aGUgZGVzdGluYXRpb24gb3ZlcmxvYWQgZmxhZyBpcyB1cGRhdGVkIGFuZCBjaGVja2VkLiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGBmbGFnczJgIGZpZWxkIGFuZCB1cGRhdGVzIG11bHRpcGxlIElQVlMgc2NoZWR1bGVycyB0byB1c2UgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWYxMzZiNzM1ZDgxYmZjMGU0ZjM5MzBiZDAwOGVhYmQ4Y2Q2ZmVmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDEyOjQ5OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbmluZGV4IDQxN2ZmNTFmNjJmYzhlLi41ZThlNTVmODJiMDQ0MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbisrKyBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbkBAIC0zNiw2ICszNiwxMyBAQFxuICNkZWZpbmUgSVBfVlNfSERSX0lOVkVSU0VcdDFcbiAjZGVmaW5lIElQX1ZTX0hEUl9JQ01QXHRcdDJcbiBcbisvKiBEZXN0aW5hdGlvbiBTZXJ2ZXIgRmxhZ3MgKi9cbisjZGVmaW5lIElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVcdDB4MDAwMVx0XHQvKiBzZXJ2ZXIgaXMgYXZhaWxhYmxlICovXG4rXG4rZW51bSB7XG4rXHRJUF9WU19ERVNUX0ZMX09WRVJMT0FELFxuK307XG4rXG4gLyogY29ubl90YWIgbGltaXRzIChhcyBwZXIgS2NvbmZpZykgKi9cbiAjZGVmaW5lIElQX1ZTX0NPTk5fVEFCX01JTl9CSVRTXHQ4XG4gI2lmIEJJVFNfUEVSX0xPTkcgXHUwMDNlIDMyXG5AQCAtOTc2LDYgKzk4Myw3IEBAIHN0cnVjdCBpcF92c19kZXN0IHtcbiBcdHZvbGF0aWxlIHVuc2lnbmVkIGludFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRjb25uX2ZsYWdzO1x0LyogZmxhZ3MgdG8gY29weSB0byBjb25uICovXG4gXHRhdG9taWNfdFx0XHR3ZWlnaHQ7XHRcdC8qIHNlcnZlciB3ZWlnaHQgKi9cbitcdHVuc2lnbmVkIGxvbmdcdFx0ZmxhZ3MyO1x0XHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xuIFx0YXRvbWljX3RcdFx0bGFzdF93ZWlnaHQ7XHQvKiBzZXJ2ZXIgbGF0ZXN0IHdlaWdodCAqL1xuIFx0X191MTZcdFx0XHR0dW5fdHlwZTtcdC8qIHR1bm5lbCB0eXBlICovXG4gXHRfX2JlMTZcdFx0XHR0dW5fcG9ydDtcdC8qIHR1bm5lbCBwb3J0ICovXG5AQCAtMTkwNyw2ICsxOTE1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2Rlc3RfcHV0X2FuZF9mcmVlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHRrZnJlZShkZXN0KTtcbiB9XG4gXG4rdm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCk7XG4rXG4gLyogSVBWUyBzeW5jIGRhZW1vbiBkYXRhIGFuZCBmdW5jdGlvbiBwcm90b3R5cGVzXG4gICogKGZyb20gaXBfdnNfc3luYy5jKVxuICAqL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lwX3ZzLmhcbmluZGV4IDFlZDIzNGU3ZjI1MTM2Li4yYzM3YzZhYzc1MjVhNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pcF92cy5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaFxuQEAgLTI4LDEyICsyOCw2IEBAXG4gI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9GQUxMQkFDS1x0SVBfVlNfU1ZDX0ZfU0NIRUQxIC8qIFNIIGZhbGxiYWNrICovXG4gI2RlZmluZSBJUF9WU19TVkNfRl9TQ0hFRF9TSF9QT1JUXHRJUF9WU19TVkNfRl9TQ0hFRDIgLyogU0ggdXNlIHBvcnQgKi9cbiBcbi0vKlxuLSAqICAgICAgRGVzdGluYXRpb24gU2VydmVyIEZsYWdzXG4tICovXG4tI2RlZmluZSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFXHQweDAwMDFcdFx0Lyogc2VydmVyIGlzIGF2YWlsYWJsZSAqL1xuLSNkZWZpbmUgSVBfVlNfREVTVF9GX09WRVJMT0FEXHQweDAwMDJcdFx0Lyogc2VydmVyIGlzIG92ZXJsb2FkZWQgKi9cbi1cbiAvKlxuICAqICAgICAgSVBWUyBzeW5jIGRhZW1vbiBzdGF0ZXNcbiAgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggNmVkMjYyMjM2M2YwZDYuLjI1OTFmNGUxNDNmODRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTk5MSw2ICs5OTEsMzQgQEAgc3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHQrIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlaW5hY3Rjb25ucyk7XG4gfVxuIFxuKy8qIFVwZGF0ZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIG51bWJlciBvZiBkZXN0IGNvbm5zIGFuZCBsb3dlci91cHBlclxuKyAqIGNvbm5lY3Rpb24gdGhyZXNob2xkczpcbisgKiAtIGNvbm5zIHJlYWNoIHVfdGhyZXNob2xkIGFuZCBleGNlZWQgaXQ6IHNldCB0aGUgZmxhZ1xuKyAqIC0gY29ubnMgZ28gYmVsb3cgbF90aHJlc2hvbGQgKG9yIDc1JSBvZiB1X3RocmVzaG9sZCk6IGNsZWFyIHRoZSBmbGFnXG4rICovXG4rX19hbHdheXNfaW5saW5lIHZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4re1xuK1x0aW50IGNvbm5zO1xuK1x0dTMyIGwsIHU7XG4rXG4rXHR1ID0gUkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpO1xuK1x0aWYgKCF1KVxuK1x0XHRnb3RvIHVuc2V0O1xuK1x0Y29ubnMgPSBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCk7XG4rXHRpZiAoY29ubnMgXHUwMDNlPSB1KSB7XG4rXHRcdHNldF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXHQvKiBMb3cgdGhyZXNob2xkIGRlZmF1bHRzIHRvIDc1JSBvZiB1cHBlciB0aHJlc2hvbGQgKi9cbitcdGwgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCkgPyA6ICh1IC0gKHUgXHUwMDNlXHUwMDNlIDIpKTtcbitcdGlmIChjb25ucyBcdTAwM2U9IGwpXG4rXHRcdHJldHVybjtcbitcbit1bnNldDpcbitcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikpXG4rXHRcdGNsZWFyX2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMik7XG4rfVxuK1xuIC8qXG4gICpcdEJpbmQgYSBjb25uZWN0aW9uIGVudHJ5IHdpdGggYSB2aXJ0dWFsIHNlcnZpY2UgZGVzdGluYXRpb25cbiAgKlx0Q2FsbGVkIGp1c3QgYWZ0ZXIgYSBuZXcgY29ubmVjdGlvbiBlbnRyeSBpcyBjcmVhdGVkLlxuQEAgLTEwNTMsOSArMTA4MSw3IEBAIGlwX3ZzX2JpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFx0XHRhdG9taWNfaW5jKFx1MDAyNmRlc3QtXHUwMDNlcGVyc2lzdGNvbm5zKTtcbiBcdH1cbiBcbi1cdGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDAgXHUwMDI2XHUwMDI2XG4tXHQgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFx1MDAzZT0gZGVzdC1cdTAwM2V1X3RocmVzaG9sZClcbi1cdFx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHRpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChkZXN0KTtcbiB9XG4gXG4gXG5AQCAtMTE0OSwxNiArMTE3NSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c191bmJpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4gXHRcdGF0b21pY19kZWMoXHUwMDI2ZGVzdC1cdTAwM2VwZXJzaXN0Y29ubnMpO1xuIFx0fVxuIFxuLVx0aWYgKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQgIT0gMCkge1xuLVx0XHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFx1MDAzYyBkZXN0LVx1MDAzZWxfdGhyZXNob2xkKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuLVx0fSBlbHNlIGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDApIHtcbi1cdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgXHUwMDNjIGRlc3QtXHUwMDNldV90aHJlc2hvbGQgKiAzKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuLVx0fSBlbHNlIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbi1cdH1cbitcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikpXG4rXHRcdGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKGRlc3QpO1xuIFxuIFx0aXBfdnNfZGVzdF9wdXQoZGVzdCk7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuaW5kZXggYmNmNDBiOGM0MWNmMjYuLjYyZjczZDg5MmY5N2M5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbkBAIC0xMzcwLDEwICsxMzcwLDEyIEBAIF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHQvKiBzZXQgdGhlIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRkZXN0LVx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEU7XG4gXG4tXHRpZiAodWRlc3QtXHUwMDNldV90aHJlc2hvbGQgPT0gMCB8fCB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCBcdTAwM2UgZGVzdC1cdTAwM2V1X3RocmVzaG9sZClcbi1cdFx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4tXHRkZXN0LVx1MDAzZXVfdGhyZXNob2xkID0gdWRlc3QtXHUwMDNldV90aHJlc2hvbGQ7XG4tXHRkZXN0LVx1MDAzZWxfdGhyZXNob2xkID0gdWRlc3QtXHUwMDNlbF90aHJlc2hvbGQ7XG4rXHRpZiAoUkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpICE9IHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIHx8XG4rXHQgICAgUkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpICE9IHVkZXN0LVx1MDAzZWxfdGhyZXNob2xkKSB7XG4rXHRcdFdSSVRFX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQpO1xuK1x0XHRXUklURV9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQsIHVkZXN0LVx1MDAzZWxfdGhyZXNob2xkKTtcbitcdFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XG4rXHR9XG4gXG4gXHRkZXN0LVx1MDAzZWFmID0gdWRlc3QtXHUwMDNlYWY7XG4gXG5AQCAtMTQ4Niw2ICsxNDg4LDkgQEAgaXBfdnNfYWRkX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcbiBcdFx0cmV0dXJuIC1FUkFOR0U7XG4gXHR9XG4gXG4rXHRpZiAodWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIElOVF9NQVgpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0aWYgKHVkZXN0LVx1MDAzZXR1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHtcbiBcdFx0aWYgKHVkZXN0LVx1MDAzZXR1bl9wb3J0ID09IDApIHtcbiBcdFx0XHRwcl9lcnIoXCIlcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXFxuXCIsIF9fZnVuY19fKTtcbkBAIC0xNTU5LDYgKzE1NjQsOSBAQCBpcF92c19lZGl0X2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcbiBcdFx0cmV0dXJuIC1FUkFOR0U7XG4gXHR9XG4gXG4rXHRpZiAodWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIElOVF9NQVgpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0aWYgKHVkZXN0LVx1MDAzZXR1bl90eXBlID09IElQX1ZTX0NPTk5fRl9UVU5ORUxfVFlQRV9HVUUpIHtcbiBcdFx0aWYgKHVkZXN0LVx1MDAzZXR1bl9wb3J0ID09IDApIHtcbiBcdFx0XHRwcl9lcnIoXCIlcygpOiB0dW5uZWwgcG9ydCBpcyB6ZXJvXFxuXCIsIF9fZnVuY19fKTtcbkBAIC0zNjY3LDggKzM2NzUsOCBAQCBfX2lwX3ZzX2dldF9kZXN0X2VudHJpZXMoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGNvbnN0IHN0cnVjdCBpcF92c19nZXRfZGVzdHMgKlxuIFx0XHRcdGVudHJ5LnBvcnQgPSBkZXN0LVx1MDAzZXBvcnQ7XG4gXHRcdFx0ZW50cnkuY29ubl9mbGFncyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlY29ubl9mbGFncyk7XG4gXHRcdFx0ZW50cnkud2VpZ2h0ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuLVx0XHRcdGVudHJ5LnVfdGhyZXNob2xkID0gZGVzdC1cdTAwM2V1X3RocmVzaG9sZDtcbi1cdFx0XHRlbnRyeS5sX3RocmVzaG9sZCA9IGRlc3QtXHUwMDNlbF90aHJlc2hvbGQ7XG4rXHRcdFx0ZW50cnkudV90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCk7XG4rXHRcdFx0ZW50cnkubF90aHJlc2hvbGQgPSBSRUFEX09OQ0UoZGVzdC1cdTAwM2VsX3RocmVzaG9sZCk7XG4gXHRcdFx0ZW50cnkuYWN0aXZlY29ubnMgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbiBcdFx0XHRlbnRyeS5pbmFjdGNvbm5zID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VpbmFjdGNvbm5zKTtcbiBcdFx0XHRlbnRyeS5wZXJzaXN0Y29ubnMgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXBlcnNpc3Rjb25ucyk7XG5AQCAtNDI3Nyw4ICs0Mjg1LDEwIEBAIHN0YXRpYyBpbnQgaXBfdnNfZ2VubF9maWxsX2Rlc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4gXHRcdFx0IGRlc3QtXHUwMDNldHVuX3BvcnQpIHx8XG4gXHQgICAgbmxhX3B1dF91MTYoc2tiLCBJUFZTX0RFU1RfQVRUUl9UVU5fRkxBR1MsXG4gXHRcdFx0ZGVzdC1cdTAwM2V0dW5fZmxhZ3MpIHx8XG4tXHQgICAgbmxhX3B1dF91MzIoc2tiLCBJUFZTX0RFU1RfQVRUUl9VX1RIUkVTSCwgZGVzdC1cdTAwM2V1X3RocmVzaG9sZCkgfHxcbi1cdCAgICBubGFfcHV0X3UzMihza2IsIElQVlNfREVTVF9BVFRSX0xfVEhSRVNILCBkZXN0LVx1MDAzZWxfdGhyZXNob2xkKSB8fFxuK1x0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfVV9USFJFU0gsXG4rXHRcdFx0UkVBRF9PTkNFKGRlc3QtXHUwMDNldV90aHJlc2hvbGQpKSB8fFxuK1x0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfTF9USFJFU0gsXG4rXHRcdFx0UkVBRF9PTkNFKGRlc3QtXHUwMDNlbF90aHJlc2hvbGQpKSB8fFxuIFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfQUNUSVZFX0NPTk5TLFxuIFx0XHRcdGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpKSB8fFxuIFx0ICAgIG5sYV9wdXRfdTMyKHNrYiwgSVBWU19ERVNUX0FUVFJfSU5BQ1RfQ09OTlMsXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuaW5kZXggZTFmNjJmNmIyNWUyMTEuLjM2NGFjYjYzNDJlMmZlIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG5AQCAtMTk2LDEyICsxOTYsMTIgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiBcbiBcbiAvKlxuLSAqICAgICAgSWYgdGhlIGRlc3QgZmxhZ3MgaXMgc2V0IHdpdGggSVBfVlNfREVTVF9GX09WRVJMT0FELFxuKyAqICAgICAgSWYgdGhlIGRlc3QgZmxhZ3MgaXMgc2V0IHdpdGggSVBfVlNfREVTVF9GTF9PVkVSTE9BRCxcbiAgKiAgICAgIGNvbnNpZGVyIHRoYXQgdGhlIHNlcnZlciBpcyBvdmVybG9hZGVkIGhlcmUuXG4gICovXG4gc3RhdGljIGlubGluZSBpbnQgaXNfb3ZlcmxvYWRlZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiB7XG4tXHRyZXR1cm4gZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuK1x0cmV0dXJuIHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKTtcbiB9XG4gXG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uY1xuaW5kZXggZDY1N2I0N2M2NTExZmYuLmE1OWFmNmMxMTg5YWNhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXG5AQCAtMjksNyArMjksNyBAQCBpcF92c19mb19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICogRmluZCB2aXJ0dWFsIHNlcnZlciB3aXRoIGhpZ2hlc3Qgd2VpZ2h0IGFuZCBzZW5kIGl0IHRyYWZmaWNcbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSBodykge1xuIFx0XHRcdGh3ZWlnaHQgPSBkZXN0O1xuIFx0XHRcdGh3ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG5pbmRleCAxNWNjYjJiMmZhMWY0YS4uZWUyNmJlM2ViODYwNmYgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG5AQCAtNDE0LDcgKzQxNCw3IEBAIF9faXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxuIFx0ICogbmV3IGNvbm5lY3Rpb24uXG4gXHQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuQEAgLTQyOSw3ICs0MjksNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5pbmRleCBjOTBlYTg5N2MzZjc1Ni4uMjg4NThlNDQyMjVhNmMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxuIFx0Lyogc2VsZWN0IHRoZSBmaXJzdCBkZXN0aW5hdGlvbiBzZXJ2ZXIsIHdob3NlIHdlaWdodCBcdTAwM2UgMCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZSwgXHUwMDI2c2V0LVx1MDAzZWxpc3QsIGxpc3QpIHtcbiBcdFx0bGVhc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2bGVhc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0aWYgKChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKVxuQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG4gICBuZXh0c3RhZ2U6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShlLCBcdTAwMjZzZXQtXHUwMDNlbGlzdCwgbGlzdCkge1xuIFx0XHRkZXN0ID0gZS1cdTAwM2VkZXN0O1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5AQCAtNTc3LDcgKzU3Nyw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqIG5ldyBjb25uZWN0aW9uLlxuIFx0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkge1xuQEAgLTU5Myw3ICs1OTMsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuaW5kZXggMzhjYzM4YzVkOGJiZDkuLmM0ZTRlOTFlM2U2ZDdkIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG5AQCAtMzgsNyArMzgsNyBAQCBpcF92c19sY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4rXHRcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xuaW5kZXggMDIwODYzMDQ3NTYyZDMuLjIzZmZjNTFjYTA4OGYwIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXG5AQCAtODAsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBpc191bmF2YWlsYWJsZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiB7XG4gXHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMCB8fFxuLVx0ICAgICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdCAgICAgICB0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMik7XG4gfVxuIFxuIC8qIFJldHVybnMgaGFzaCB2YWx1ZSBmb3IgSVBWUyBNSCBlbnRyeSAqL1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcbmluZGV4IGFkYTE1OGM2MTBjZTExLi5kNmZiYjllNTBlNGI0NCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xuQEAgLTcyLDcgKzcyLDcgQEAgaXBfdnNfbnFfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuIFxuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEIHx8XG4rXHRcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikgfHxcbiBcdFx0ICAgICFhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkpXG4gXHRcdFx0Y29udGludWU7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXG5pbmRleCBjNWM2N2RmODBhMGIzYy4uMTA0ZGU4YzI0YTRmNjUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xuQEAgLTMzLDcgKzMzLDcgQEAgaXBfdnNfb3ZmX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4gXHRcdHcgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG4tXHRcdGlmICgoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fFxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIHx8XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKSBcdTAwM2UgdyB8fFxuIFx0XHQgICAgdyA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcbmluZGV4IDQxMjVlZTU2MWNkYzM2Li5jMzhiZWU5ODdkMTQzMiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xuQEAgLTY2LDcgKzY2LDcgQEAgaXBfdnNfcnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCxcbiBcdFx0XHRcdFx0XHQgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucyxcbiBcdFx0XHRcdFx0XHQgbl9saXN0KSB7XG4tXHRcdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbitcdFx0XHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKVxuIFx0XHRcdFx0LyogSElUICovXG4gXHRcdFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcbmluZGV4IDI0NWEzMjNjODRjZDMyLi4wY2U0MjVmOTc0OGFmNyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXG5AQCAtNzUsNyArNzUsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGlwX3ZzX3NlZF9kZXN0X292ZXJoZWFkKGxlYXN0KTtcbkBAIC05MCw3ICs5MCw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gICBuZXh0c3RhZ2U6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKHRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcbmluZGV4IGNkNjcwNjZlM2IyNjEyLi5iYmRiNjgzYjhlODYwMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xuQEAgLTczLDcgKzczLDcgQEAgc3RydWN0IGlwX3ZzX3NoX3N0YXRlIHtcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuIFx0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2M9IDAgfHxcbi1cdCAgICAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHQgICAgICAgdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpO1xuIH1cbiBcbiAvKlxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXG5pbmRleCBkYmI3ZjVmZDQ2ODhhNC4uY2U1NjE4ZjAyZTdkZjQgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXG5AQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiBcbiBcdC8qIEdlbmVyYXRlIGEgcmFuZG9tIHdlaWdodCBiZXR3ZWVuIFswLHN1bSBvZiBhbGwgd2VpZ2h0cykgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpKSB7XG4rXHRcdGlmICghdGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKSB7XG4gXHRcdFx0d2VpZ2h0ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuIFx0XHRcdGlmICh3ZWlnaHQgXHUwMDNlIDApIHtcbiBcdFx0XHRcdHRvdGFsX3dlaWdodCArPSB3ZWlnaHQ7XG5AQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiBcbiBcdC8qIFBpY2sgdHdvIHdlaWdodGVkIHNlcnZlcnMgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHR3ZWlnaHQgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXG5pbmRleCA5ZGE0NDVjYTA5YTE0Yy4uNjJhNGM4MTQ5MTkyNzIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xuQEAgLTQ3LDcgKzQ3LDcgQEAgaXBfdnNfd2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuK1x0XHRpZiAoIXRlc3RfYml0KElQX1ZTX0RFU1RfRkxfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MyKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkge1xuIFx0XHRcdGxlYXN0ID0gZGVzdDtcbiBcdFx0XHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xuQEAgLTYyLDcgKzYyLDcgQEAgaXBfdnNfd2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAodGVzdF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFnczIpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xuaW5kZXggMmRjZmYxMDQwZGE1MjEuLmI5OWNiYzFkMTMwMjlkIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcbkBAIC0xNzYsNyArMTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0aWYgKCF0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzMikgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2U9IG1hcmstXHUwMDNlY3cpXG4gXHRcdFx0XHRnb3RvIGZvdW5kO1xuIFx0XHRcdGlmIChkZXN0ID09IHN0b3ApXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo0OTozOS45NDQzNjM0MzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTUyNzM5ODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgSVBWUyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSB0aGF0J3MgbWFraW5nIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRvIHRoZSBJUFZTIGltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgTGludXgga2VybmVsLCBhbmQgc3BlY2lmaWNhbGx5LCBob3cgaXQgaGFuZGxlcyBvdmVybG9hZCBjb25kaXRpb25zIGZvciBkZXN0aW5hdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBtb3ZpbmcgYXdheSBmcm9tIHRoZSBvbGQgYElQX1ZTX0RFU1RfRl9PVkVSTE9BRGAgZmxhZyBhbmQgaW50cm9kdWNpbmcgYSBtb3JlIHJlZmluZWQgYXBwcm9hY2ggd2l0aCBgZmxhZ3MyYCBhbmQgYSBkZWRpY2F0ZWQgYElQX1ZTX0RFU1RfRkxfT1ZFUkxPQURgIGVudW0uIFRoaXMgYWxzbyBpbmNsdWRlcyBhIG5ldyBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgIGZ1bmN0aW9uLCB3aGljaCBJIHByZXN1bWUgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgZHluYW1pY2FsbHkgc2V0dGluZyB0aGlzIG92ZXJsb2FkIGZsYWcgYmFzZWQgb24gY29ubmVjdGlvbiBjb3VudHMgYW5kIHByZS1kZWZpbmVkIHRocmVzaG9sZHMuXG5cblRoZSBmYWN0IHRoYXQgdGhleSdyZSBtb2RpZnlpbmcgYWxsIHRob3NlIHNjaGVkdWxlciBhbGdvcml0aG1zIOKAkyBgZm9gLCBgbGJsY2AsIGBsYmxjcmAsIGBsY2AsIGBtaGAsIGBucWAsIGBvdmZgLCBgcnJgLCBgc2VkYCwgYHNoYCwgYHR3b3NgLCBgd2xjYCwgYHdycmAg4oCTIHRvIHVzZSB0aGUgbmV3IGB0ZXN0X2JpdGAgYXBwcm9hY2ggaW5zdGVhZCBvZiB0aGUgb2xkIGJpdHdpc2UgQU5EIHN1Z2dlc3RzIGEgc2lnbmlmaWNhbnQgcmVmYWN0b3IgaW4gaG93IHRoZXNlIGFsZ29yaXRobXMgaW50ZXJwcmV0IGFuZCByZWFjdCB0byBkZXN0aW5hdGlvbiBvdmVybG9hZC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgY29yZSBsb2dpYyBjaGFuZ2UgcmVsYXRlZCB0byBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBsb2FkIGJhbGFuY2luZywgYW5kIGdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHN1YnRsZSBidWdzIGluIHN1Y2ggYSBzZW5zaXRpdmUgYXJlYSwgdGhpcyBpcyBzb21ldGhpbmcgdGhhdCAqKmFic29sdXRlbHkgbmVlZHMgdG8gYmUgZnV6emVkLioqXG5cbk5vdywgbGV0J3MgZ2V0IGRvd24gdG8gdGhlIHByYWN0aWNhbGl0aWVzLiBUaGUgb2J2aW91cyBlbnRyeSBwb2ludCBmb3IgZGV0ZXJtaW5pbmcgdGhlIGFmZmVjdGVkIGNvbmZpZ3VyYXRpb25zIGlzIGBDT05GSUdfSVBfVlNgLCBzbyB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnYCBmaWxlIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRvIHBpbnBvaW50IGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhlIGJlaGF2aW9yIG9mIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMzQsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo0OTo0Ny4wOTcxMDUyNjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1NDU1OTU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NDk6NDkuNDUxNjY5OTQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYyNTg5MTU3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IHRob3VnaHQgaXM6XG5cbioqQ2hlY2tpbmcgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24gTmVlZHMqKlxuXG5SaWdodCwgYmVmb3JlIEkgZ2V0IHN0YXJ0ZWQgb24gYW55dGhpbmcsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBrbm93IHRoZSAqZXhhY3QqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSBuZWNlc3NhcnkgZm9yIHRoZXNlIHNjaGVkdWxlcnMuIEkgY2FuJ3QganVzdCBqdW1wIGluIGFuZCBzdGFydCBjb2Rpbmcgd2l0aG91dCBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGlucHV0cyBhbmQgcGFyYW1ldGVycy4gV2hhdCBhcmUgdGhlIGtleSBzZXR0aW5ncz8gV2hhdCBhcmUgdGhlIGRlZmF1bHRzPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnM/IFRoaXMgaXNuJ3QgYSBcIm9uZS1zaXplLWZpdHMtYWxsXCIgc2NlbmFyaW8uIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgYWxsIHRoZSBwb3NzaWJpbGl0aWVzIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gT25seSB0aGVuIGNhbiBJIGRldGVybWluZSB0aGUgYmVzdCBhcHByb2FjaCBmb3IgaW1wbGVtZW50YXRpb24uIExldCdzIG1ha2Ugc3VyZSBJIGRvbid0IG92ZXJsb29rIGFueXRoaW5nIGNydWNpYWwuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBhbnkgcmVsZXZhbnQgZGVzaWduIHNwZWNzIHdpdGggYSBmaW5lLXRvb3RoZWQgY29tYi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNTEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo0OTo1My4wNzc1NjMxNzZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY1NTg1NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1ZTXy4qXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NDk6NTMuMTc0MTMxNTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQ2OTYzNjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIHRoZSB1c2VyIGlzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gU2NoZWR1bGVyIENvbmZpZ3VyYXRpb25zKipcblxuQWxyaWdodCwgSSdtIGF0IGEgcG9pbnQgaW4gdGhlIHByb2Nlc3Mgd2hlcmUgSSBuZWVkIHRvIG1vdmUgYmV5b25kIGdlbmVyYWwgcHJpbmNpcGxlcy4gSSBuZWVkIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHNjaGVkdWxlcnMsIGFuZCB3aGlsZSBJIHVuZGVyc3RhbmQgdGhlIGhpZ2gtbGV2ZWwgY29uY2VwdHMsIEkgY2FuJ3QgcmVhbGx5IG1ha2UgYW55IGluZm9ybWVkIGRlY2lzaW9ucyBhYm91dCBvcHRpbWl6YXRpb24gb3IgZmluZS10dW5pbmcgd2l0aG91dCBzZWVpbmcgdGhlICphY3R1YWwqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQncyB0aW1lIHRvIHN0b3AgdGhlb3JpemluZyBhbmQgc3RhcnQgbG9va2luZyBhdCB0aGUgc3BlY2lmaWNzLiBXaGF0IHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZT8gV2hhdCBhcmUgdGhlaXIgZGVmYXVsdCB2YWx1ZXM/IFdoYXQga2luZCBvZiBrbm9icyBkbyBJIGhhdmUgdG8gdHVybiB0byBnZXQgdGhlIHBlcmZvcm1hbmNlIEknbSBsb29raW5nIGZvcj8gSSdtIG5vdCBnb2luZyB0byBnZXQgYm9nZ2VkIGRvd24gaW4gdGhlIGdlbmVyaWMsIGFic3RyYWN0IGV4cGxhbmF0aW9ucyBhbnltb3JlLiBHaXZlIG1lIHRoZSBjb25jcmV0ZSBzdHVmZiAtIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLCB0aGUgQVBJIGRvY3VtZW50YXRpb24sIHdoYXRldmVyIGl0IHRha2VzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIG51dHMgYW5kIGJvbHRzIG9mIHRoZSBzY2hlZHVsZXIgaW1wbGVtZW50YXRpb25zIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZWlyIHBvdGVudGlhbC4gTGV0J3Mgc2VlIHdoYXQgd2UncmUgYWN0dWFsbHkgd29ya2luZyB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY5MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjQ5OjU3LjEyMTA5ODIzM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzIyODQxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NDk6NTcuMTc4MzMxMjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ1NzQyMjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBBIERpcmVjdCBBcHByb2FjaCoqXG5cbkFscmlnaHQsIHRoZSBvYmplY3RpdmUgaXMgcHJldHR5IGNsZWFyLiBObyBuZWVkIHRvIG92ZXJ0aGluayB0aGlzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJMZXQncyBqdXN0IHJlYWQgdGhlIGZpbGUuXCIgSSdtIGN1dHRpbmcgdGhyb3VnaCBhbnkgcHJlbGltaW5hcnkgYXNzdW1wdGlvbnMgb3Igc3RyYXRlZ2ljIGNvbnNpZGVyYXRpb25zLiBJdCdzIGEgc2ltcGxlLCBkaXJlY3QsIGFuZCBvZnRlbiB0aGUgbW9zdCBlZmZpY2llbnQgc3RhcnRpbmcgcG9pbnQuIFdlJ3JlIG5vdCBlbmdhZ2luZyBpbiBjb21wbGV4IG1vZGVsaW5nIG9yIHJpc2sgYXNzZXNzbWVudHMgYXQgdGhpcyBzdGFnZTsgcmF0aGVyLCB3ZSBuZWVkIHRvIGVzdGFibGlzaCBhIGJhc2UgbGV2ZWwgdW5kZXJzdGFuZGluZy4gVGhlIGZpbGUgaXRzZWxmIGlzIHRoZSBwcmltYXJ5IHNvdXJjZSBvZiBpbmZvcm1hdGlvbiwgYW5kIHRoZSBtb3N0IGV4cGVkaWVudCBtZXRob2QgaXMgdG8gc2ltcGx5IGJlZ2luIHByb2Nlc3NpbmcgaXRzIGNvbnRlbnRzLiBXZSdsbCBzdGFydCBhdCB0aGUgbW9zdCBlbGVtZW50YXJ5IGxldmVsLCBhbmQgYmVnaW4gcHJvY2Vzc2luZyB0aGUgZGF0YSB0byBsYXkgdGhlIGZvdW5kYXRpb25zIGZvciBkZWVwZXIgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjM0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo1MDowMC45MjQwNzU1ODZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NTEzODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5jb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo1MDowMC45ODE1OTc1NTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMDA5MjM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIEh1bnRpbmcqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgSVBWUyAoSVAgVmlydHVhbCBTZXJ2ZXIpIGlzIGNvbmZpZ3VyZWQgaW4gdGhpcyBrZXJuZWwuICBSYXRoZXIgdGhhbiBtYW51YWxseSBzaWZ0aW5nIHRocm91Z2ggdGhlIHNwcmF3bGluZyBgLmNvbmZpZ2AgZmlsZSwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgZ3JlcGAuIEkgd2FudCB0byBiZSBzcGVjaWZpYywgc28gSSdtIHVzaW5nIGBncmVwYCB3aXRoIHRoZSBleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb24gb3B0aW9uIChgLUVgKS4gVGhhdCB3YXkgSSBjYW4gdXNlIHRoZSBhbmNob3IgdG8gbWFrZSBzdXJlIHRoYXQgSSBvbmx5IGdldCByZXN1bHRzIGZyb20gdGhlIHN0YXJ0IG9mIGEgbGluZS4gSSdsbCBzZWFyY2ggZm9yIHRoZSBgY29uZmlnIElQX1ZTYCBzdHJpbmcuIFRoYXQgc2hvdWxkIHplcm8gaW4gcHJlY2lzZWx5IG9uIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmcgbGluZSBhbmQgaWdub3JlIGFueSBvdGhlciBpbnN0YW5jZXMgb2YgYElQX1ZTYCBlbHNld2hlcmUgd2l0aGluIHRoZSBjb25maWcgZmlsZS4gIFRoaXMgaXMgdGhlIGZhc3Rlc3QsIGNsZWFuZXN0IHdheSB0byBnZXQgYSB5ZXMvbm8gb24gSVBWUy4gU2ltcGxlIGFuZCBlZmZpY2llbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjUzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NTA6MDQuNDExNjkyMjA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzI5MzYxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeY29uZmlnIElQX1ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NTA6MDQuNDY5MDEyNDgzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTkyMjY1NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaGVyZS5cblxuKipJbml0aWFsIENvbmZ1c2lvbiBhbmQgSW52ZXN0aWdhdGlvbiBCZWdpbnMqKlxuXG5XYWl0IGEgc2Vjb25kLi4uIHdoeSBhcmUgKnRob3NlIHNwZWNpZmljKiBzeW1ib2xpYyBjb25zdGFudHMsIGBJUF9WU19TSF9UQUJfQklUU2AgYW5kIGBJUF9WU19NSF9UQUJfSU5ERVhgLCB0aGUgb25seSBvbmVzIHNob3dpbmcgdXA/IFRoYXQncyBub3Qgd2hhdCBJIGV4cGVjdGVkLiBUaGVyZSBtdXN0IGJlIGEgcmVhc29uIGZvciB0aGlzIG5hcnJvd2VkIHNjb3BlLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCdzIGhhcHBlbmluZy4gVGhlIGJlc3Qgd2F5IHRvIGNsYXJpZnkgdGhpcyB3b3VsZCBiZSB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBmaWxlIGFuZCBnZXQgc29tZSBjb250ZXh0LiBMZXQgbWUgcmVhZCB0aGUgc291cmNlIGZpbGUgaXRzZWxmLiBJJ20gZ29pbmcgdG8gc3RhcnQgdGhlcmUgYW5kIHRoZW4gSSBjYW4gYnVpbGQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBmcm9tIGZpcnN0IHByaW5jaXBsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDk1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NTA6MDguNjY4MjQyNzAyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgSVAgVmlydHVhbCBTZXJ2ZXIgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0bWVudWNvbmZpZyBJUF9WU1xcbiAgIDY6XFx0XFx0dHJpc3RhdGUgXFxcIklQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIChORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLPW4pXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIElQIFZpcnR1YWwgU2VydmVyIHN1cHBvcnQgd2lsbCBsZXQgeW91IGJ1aWxkIGEgaGlnaC1wZXJmb3JtYW5jZVxcbiAgMTE6XFx0XFx0ICB2aXJ0dWFsIHNlcnZlciBiYXNlZCBvbiBjbHVzdGVyIG9mIHR3byBvciBtb3JlIHJlYWwgc2VydmVycy4gVGhpc1xcbiAgMTI6XFx0XFx0ICBvcHRpb24gbXVzdCBiZSBlbmFibGVkIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlIGNsdXN0ZXJlZCBjb21wdXRlcnNcXG4gIDEzOlxcdFxcdCAgdGhhdCB3aWxsIHRha2UgY2FyZSBvZiBpbnRlcmNlcHRpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYVxcbiAgMTQ6XFx0XFx0ICBzaW5nbGUgSVAgYWRkcmVzcyBhbmQgc2NoZWR1bGluZyB0aGVtIHRvIHJlYWwgc2VydmVycy5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0ICBUaHJlZSByZXF1ZXN0IGRpc3BhdGNoaW5nIHRlY2huaXF1ZXMgYXJlIGltcGxlbWVudGVkLCB0aGV5IGFyZVxcbiAgMTc6XFx0XFx0ICB2aXJ0dWFsIHNlcnZlciB2aWEgTkFULCB2aXJ0dWFsIHNlcnZlciB2aWEgdHVubmVsaW5nIGFuZCB2aXJ0dWFsXFxuICAxODpcXHRcXHQgIHNlcnZlciB2aWEgZGlyZWN0IHJvdXRpbmcuIFRoZSBzZXZlcmFsIHNjaGVkdWxpbmcgYWxnb3JpdGhtcyBjYW5cXG4gIDE5OlxcdFxcdCAgYmUgdXNlZCB0byBjaG9vc2Ugd2hpY2ggc2VydmVyIHRoZSBjb25uZWN0aW9uIGlzIGRpcmVjdGVkIHRvLFxcbiAgMjA6XFx0XFx0ICB0aHVzIGxvYWQgYmFsYW5jaW5nIGNhbiBiZSBhY2hpZXZlZCBhbW9uZyB0aGUgc2VydmVycy4gIEZvciBtb3JlXFxuICAyMTpcXHRcXHQgIGluZm9ybWF0aW9uIGFuZCBpdHMgYWRtaW5pc3RyYXRpb24gcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHRoZVxcbiAgMjI6XFx0XFx0ICBmb2xsb3dpbmcgVVJMOiBcXHUwMDNjaHR0cDovL3d3dy5saW51eHZpcnR1YWxzZXJ2ZXIub3JnL1xcdTAwM2UuXFxuICAyMzpcXHRcXG4gIDI0OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gIDI1OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMjY6XFx0XFxuICAyNzpcXHRpZiBJUF9WU1xcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWdcXHRJUF9WU19JUFY2XFxuICAzMDpcXHRcXHRib29sIFxcXCJJUHY2IHN1cHBvcnQgZm9yIElQVlNcXFwiXFxuICAzMTpcXHRcXHRkZXBlbmRzIG9uIElQVjYgPSB5IHx8IElQX1ZTID0gSVBWNlxcbiAgMzI6XFx0XFx0c2VsZWN0IE5GX0RFRlJBR19JUFY2XFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIEFkZCBJUHY2IHN1cHBvcnQgdG8gSVBWUy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0ICBTYXkgWSBpZiB1bnN1cmUuXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZ1xcdElQX1ZTX0RFQlVHXFxuICAzOTpcXHRcXHRib29sIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBkZWJ1Z2dpbmdcXFwiXFxuICA0MDpcXHRcXHRoZWxwXFxuICA0MTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZ2V0IGFkZGl0aW9uYWwgbWVzc2FnZXMgdXNlZnVsIGluXFxuICA0MjpcXHRcXHQgIGRlYnVnZ2luZyB0aGUgSVAgdmlydHVhbCBzZXJ2ZXIgY29kZS4gWW91IGNhbiBjaGFuZ2UgdGhlIGRlYnVnXFxuICA0MzpcXHRcXHQgIGxldmVsIGluIC9wcm9jL3N5cy9uZXQvaXB2NC92cy9kZWJ1Z19sZXZlbFxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWdcXHRJUF9WU19UQUJfQklUU1xcbiAgNDY6XFx0XFx0aW50IFxcXCJJUFZTIGNvbm5lY3Rpb24gdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4gIDQ3OlxcdFxcdHJhbmdlIDggMjAgaWYgITY0QklUXFxuICA0ODpcXHRcXHRyYW5nZSA4IDI3IGlmIDY0QklUXFxuICA0OTpcXHRcXHRkZWZhdWx0IDEyXFxuICA1MDpcXHRcXHRoZWxwXFxuICA1MTpcXHRcXHQgIFRoZSBJUFZTIGNvbm5lY3Rpb24gaGFzaCB0YWJsZSB1c2VzIHRoZSBjaGFpbmluZyBzY2hlbWUgdG8gaGFuZGxlXFxuICA1MjpcXHRcXHQgIGhhc2ggY29sbGlzaW9ucy4gVXNpbmcgYSBiaWcgSVBWUyBjb25uZWN0aW9uIGhhc2ggdGFibGUgd2lsbCBncmVhdGx5XFxuICA1MzpcXHRcXHQgIHJlZHVjZSBjb25mbGljdHMgd2hlbiB0aGVyZSBhcmUgaHVuZHJlZHMgb2YgdGhvdXNhbmRzIG9mIGNvbm5lY3Rpb25zXFxuICA1NDpcXHRcXHQgIGluIHRoZSBoYXNoIHRhYmxlLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRcXHQgIE5vdGUgdGhlIHRhYmxlIHNpemUgbXVzdCBiZSBwb3dlciBvZiAyLiBUaGUgdGFibGUgc2l6ZSB3aWxsIGJlIHRoZVxcbiAgNTc6XFx0XFx0ICB2YWx1ZSBvZiAyIHRvIHRoZSB5b3VyIGlucHV0IG51bWJlciBwb3dlci4gVGhlIG51bWJlciB0byBjaG9vc2UgaXNcXG4gIDU4OlxcdFxcdCAgZnJvbSA4IHRvIDI3IGZvciA2NEJJVCgyMCBvdGhlcndpc2UpLCB0aGUgZGVmYXVsdCBudW1iZXIgaXMgMTIsXFxuICA1OTpcXHRcXHQgIHdoaWNoIG1lYW5zIHRoZSB0YWJsZSBzaXplIGlzIDQwOTYuIERvbid0IGlucHV0IHRoZSBudW1iZXIgdG9vXFxuICA2MDpcXHRcXHQgIHNtYWxsLCBvdGhlcndpc2UgeW91IHdpbGwgbG9zZSBwZXJmb3JtYW5jZSBvbiBpdC4gWW91IGNhbiBhZGFwdCB0aGVcXG4gIDYxOlxcdFxcdCAgdGFibGUgc2l6ZSB5b3Vyc2VsZiwgYWNjb3JkaW5nIHRvIHlvdXIgdmlydHVhbCBzZXJ2ZXIgYXBwbGljYXRpb24uXFxuICA2MjpcXHRcXHQgIEl0IGlzIGdvb2QgdG8gc2V0IHRoZSB0YWJsZSBzaXplIG5vdCBmYXIgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2ZcXG4gIDYzOlxcdFxcdCAgY29ubmVjdGlvbnMgcGVyIHNlY29uZCBtdWx0aXBseWluZyBhdmVyYWdlIGxhc3RpbmcgdGltZSBvZlxcbiAgNjQ6XFx0XFx0ICBjb25uZWN0aW9uIGluIHRoZSB0YWJsZS4gIEZvciBleGFtcGxlLCB5b3VyIHZpcnR1YWwgc2VydmVyIGdldHMgMjAwXFxuICA2NTpcXHRcXHQgIGNvbm5lY3Rpb25zIHBlciBzZWNvbmQsIHRoZSBjb25uZWN0aW9uIGxhc3RzIGZvciAyMDAgc2Vjb25kcyBpblxcbiAgNjY6XFx0XFx0ICBhdmVyYWdlIGluIHRoZSBjb25uZWN0aW9uIHRhYmxlLCB0aGUgdGFibGUgc2l6ZSBzaG91bGQgYmUgbm90IGZhclxcbiAgNjc6XFx0XFx0ICBsZXNzIHRoYW4gMjAweDIwMCwgaXQgaXMgZ29vZCB0byBzZXQgdGhlIHRhYmxlIHNpemUgMzI3NjggKDIqKjE1KS5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0ICBBbm90aGVyIG5vdGUgdGhhdCBlYWNoIGNvbm5lY3Rpb24gb2NjdXBpZXMgMTI4IGJ5dGVzIGVmZmVjdGl2ZWx5IGFuZFxcbiAgNzA6XFx0XFx0ICBlYWNoIGhhc2ggZW50cnkgdXNlcyA4IGJ5dGVzLCBzbyB5b3UgY2FuIGVzdGltYXRlIGhvdyBtdWNoIG1lbW9yeSBpc1xcbiAgNzE6XFx0XFx0ICBuZWVkZWQgZm9yIHlvdXIgYm94LlxcbiAgNzI6XFx0XFxuICA3MzpcXHRcXHQgIFlvdSBjYW4gb3ZlcndyaXRlIHRoaXMgbnVtYmVyIHNldHRpbmcgY29ubl90YWJfYml0cyBtb2R1bGUgcGFyYW1ldGVyXFxuICA3NDpcXHRcXHQgIG9yIGJ5IGFwcGVuZGluZyBpcF92cy5jb25uX3RhYl9iaXRzPT8gdG8gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgaWZcXG4gIDc1OlxcdFxcdCAgSVAgVlMgd2FzIGNvbXBpbGVkIGJ1aWx0LWluLlxcbiAgNzY6XFx0XFxuICA3NzpcXHRjb21tZW50IFxcXCJJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAgNzg6XFx0XFxuICA3OTpcXHRjb25maWdcXHRJUF9WU19QUk9UT19UQ1BcXG4gIDgwOlxcdFxcdGJvb2wgXFxcIlRDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbiAgODE6XFx0XFx0aGVscFxcbiAgODI6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIFRDUCB0cmFuc3BvcnRcXG4gIDgzOlxcdFxcdCAgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cXG4gIDg0OlxcdFxcbiAgODU6XFx0Y29uZmlnXFx0SVBfVlNfUFJPVE9fVURQXFxuICA4NjpcXHRcXHRib29sIFxcXCJVRFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4gIDg3OlxcdFxcdGhlbHBcXG4gIDg4OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBVRFAgdHJhbnNwb3J0XFxuICA4OTpcXHRcXHQgIHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXFxuICA5MDpcXHRcXG4gIDkxOlxcdGNvbmZpZ1xcdElQX1ZTX1BST1RPX0FIX0VTUFxcbiAgOTI6XFx0XFx0ZGVmX2Jvb2wgSVBfVlNfUFJPVE9fRVNQIHx8IElQX1ZTX1BST1RPX0FIXFxuICA5MzpcXHRcXG4gIDk0OlxcdGNvbmZpZ1xcdElQX1ZTX1BST1RPX0VTUFxcbiAgOTU6XFx0XFx0Ym9vbCBcXFwiRVNQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuICA5NjpcXHRcXHRoZWxwXFxuICA5NzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgbG9hZCBiYWxhbmNpbmcgRVNQIChFbmNhcHN1bGF0aW9uXFxuICA5ODpcXHRcXHQgIFNlY3VyaXR5IFBheWxvYWQpIHRyYW5zcG9ydCBwcm90b2NvbC4gU2F5IFkgaWYgdW5zdXJlLlxcbiAgOTk6XFx0XFxuIDEwMDpcXHRjb25maWdcXHRJUF9WU19QUk9UT19BSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo1MDowOC42NjgzNjY2MzJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzMDI0Nzc4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBRdWFuZGFyeSoqXG5cblJpZ2h0LCBzbyBJJ20gZGl2aW5nIGludG8gdGhlIGtlcm5lbCBjb25maWcgZmlsZXMgYWdhaW4sIHNwZWNpZmljYWxseSBsb29raW5nIGF0IGxvYWQgYmFsYW5jaW5nIHNjaGVkdWxlcnMuIE15IGluaXRpYWwgaHVuY2gsIGFuZCBpdCdzIGEgcHJldHR5IHN0cm9uZyBvbmUgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgdGhhdCB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoaW5ncyBsaWtlIFJvdW5kIFJvYmluIChgSVBfVlNfUlJgKSBhbmQgV2VpZ2h0ZWQgUm91bmQgUm9iaW4gKGBJUF9WU19XUlJgKSBhcmUgbGlrZWx5IG5lc3RlZCB3aXRoaW4gdGhvc2UgYGNvbmZpZ2AgZGlyZWN0aXZlcy4gSSd2ZSBzZWVuIHRoYXQgcGF0dGVybiBjb3VudGxlc3MgdGltZXMgYmVmb3JlIGluIHRoaXMgc29ydCBvZiBjb2RlLiBUaGVyZWZvcmUsIGxldCdzIGNvbmZpcm0gbXkgc3VzcGljaW9ucyBieSBleGFtaW5pbmcgdGhlIG5leHQgMTAwIGxpbmVzLiBUaGlzIHNob3VsZCBnaXZlIG1lIGVub3VnaCBjb250ZXh0IHRvIHNlZSBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgZGVmaW5lZCwgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsbHkgaG93IHRoZXkncmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBvdmVyYWxsIGBpcF92c2AgZnJhbWV3b3JrLiBJIGV4cGVjdCB0byBiZSBsb29raW5nIGZvciBhc3NvY2lhdGVkIGRlZmluZXMsIGRvY3VtZW50YXRpb24gY29tbWVudHMsIGFuZCBhbnkgbG9naWMgdGllZCB0byBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhlc2Ugc2NoZWR1bGVycy4gSXQncyBhIGZhaXJseSBzdGFuZGFyZCBhcHByb2FjaCB0byBwaW5wb2ludGluZyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODMyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo1MDoxMy41OTg2MjA5OTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMDE6XFx0XFx0Ym9vbCBcXFwiQUggbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4gMTAyOlxcdFxcdGhlbHBcXG4gMTAzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBsb2FkIGJhbGFuY2luZyBBSCAoQXV0aGVudGljYXRpb25cXG4gMTA0OlxcdFxcdCAgSGVhZGVyKSB0cmFuc3BvcnQgcHJvdG9jb2wuIFNheSBZIGlmIHVuc3VyZS5cXG4gMTA1OlxcdFxcbiAxMDY6XFx0Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXFxuIDEwNzpcXHRcXHRib29sIFxcXCJTQ1RQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuIDEwODpcXHRcXHRzZWxlY3QgTkVUX0NSQzMyQ1xcbiAxMDk6XFx0XFx0aGVscFxcbiAxMTA6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIGxvYWQgYmFsYW5jaW5nIFNDVFAgdHJhbnNwb3J0XFxuIDExMTpcXHRcXHQgIHByb3RvY29sLiBTYXkgWSBpZiB1bnN1cmUuXFxuIDExMjpcXHRcXG4gMTEzOlxcdGNvbW1lbnQgXFxcIklQVlMgc2NoZWR1bGVyXFxcIlxcbiAxMTQ6XFx0XFxuIDExNTpcXHRjb25maWdcXHRJUF9WU19SUlxcbiAxMTY6XFx0XFx0dHJpc3RhdGUgXFxcInJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuIDExNzpcXHRcXHRoZWxwXFxuIDExODpcXHRcXHQgIFRoZSByb2Jpbi1yb2JpbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBzaW1wbHkgZGlyZWN0cyBuZXR3b3JrXFxuIDExOTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIGRpZmZlcmVudCByZWFsIHNlcnZlcnMgaW4gYSByb3VuZC1yb2JpbiBtYW5uZXIuXFxuIDEyMDpcXHRcXG4gMTIxOlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMTIyOlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAxMjM6XFx0IFxcbiAxMjQ6XFx0Y29uZmlnXFx0SVBfVlNfV1JSXFxuIDEyNTpcXHRcXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgcm91bmQtcm9iaW4gc2NoZWR1bGluZ1xcXCJcXG4gMTI2OlxcdFxcdGhlbHBcXG4gMTI3OlxcdFxcdCAgVGhlIHdlaWdodGVkIHJvYmluLXJvYmluIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xcbiAxMjg6XFx0XFx0ICBjb25uZWN0aW9ucyB0byBkaWZmZXJlbnQgcmVhbCBzZXJ2ZXJzIGJhc2VkIG9uIHNlcnZlciB3ZWlnaHRzXFxuIDEyOTpcXHRcXHQgIGluIGEgcm91bmQtcm9iaW4gbWFubmVyLiBTZXJ2ZXJzIHdpdGggaGlnaGVyIHdlaWdodHMgcmVjZWl2ZVxcbiAxMzA6XFx0XFx0ICBuZXcgY29ubmVjdGlvbnMgZmlyc3QgdGhhbiB0aG9zZSB3aXRoIGxlc3Mgd2VpZ2h0cywgYW5kIHNlcnZlcnNcXG4gMTMxOlxcdFxcdCAgd2l0aCBoaWdoZXIgd2VpZ2h0cyBnZXQgbW9yZSBjb25uZWN0aW9ucyB0aGFuIHRob3NlIHdpdGggbGVzc1xcbiAxMzI6XFx0XFx0ICB3ZWlnaHRzIGFuZCBzZXJ2ZXJzIHdpdGggZXF1YWwgd2VpZ2h0cyBnZXQgZXF1YWwgY29ubmVjdGlvbnMuXFxuIDEzMzpcXHRcXG4gMTM0OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMTM1OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAxMzY6XFx0XFxuIDEzNzpcXHRjb25maWdcXHRJUF9WU19MQ1xcbiAxMzg6XFx0XFx0dHJpc3RhdGUgXFxcImxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1xcXCJcXG4gMTM5OlxcdFxcdGhlbHBcXG4gMTQwOlxcdFxcdCAgVGhlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZyBhbGdvcml0aG0gZGlyZWN0cyBuZXR3b3JrXFxuIDE0MTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgbnVtYmVyIG9mIGFjdGl2ZSBcXG4gMTQyOlxcdFxcdCAgY29ubmVjdGlvbnMuXFxuIDE0MzpcXHRcXG4gMTQ0OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMTQ1OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAxNDY6XFx0XFxuIDE0NzpcXHRjb25maWdcXHRJUF9WU19XTENcXG4gMTQ4OlxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuIDE0OTpcXHRcXHRoZWxwXFxuIDE1MDpcXHRcXHQgIFRoZSB3ZWlnaHRlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGRpcmVjdHMgbmV0d29ya1xcbiAxNTE6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVyIHdpdGggdGhlIGxlYXN0IGFjdGl2ZSBjb25uZWN0aW9uc1xcbiAxNTI6XFx0XFx0ICBub3JtYWxpemVkIGJ5IHRoZSBzZXJ2ZXIgd2VpZ2h0LlxcbiAxNTM6XFx0XFxuIDE1NDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE1NTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTU2OlxcdFxcbiAxNTc6XFx0Y29uZmlnICBJUF9WU19GT1xcbiAxNTg6XFx0XFx0XFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIGZhaWxvdmVyIHNjaGVkdWxpbmdcXFwiXFxuIDE1OTpcXHRcXHRoZWxwXFxuIDE2MDpcXHRcXHQgIFRoZSB3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcXG4gMTYxOlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBoaWdoZXN0IHdlaWdodCB0aGF0IGlzXFxuIDE2MjpcXHRcXHQgIGN1cnJlbnRseSBhdmFpbGFibGUuXFxuIDE2MzpcXHRcXG4gMTY0OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMTY1OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAxNjY6XFx0XFxuIDE2NzpcXHRjb25maWcgIElQX1ZTX09WRlxcbiAxNjg6XFx0XFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmdcXFwiXFxuIDE2OTpcXHRcXHRoZWxwXFxuIDE3MDpcXHRcXHQgIFRoZSB3ZWlnaHRlZCBvdmVyZmxvdyBzY2hlZHVsaW5nIGFsZ29yaXRobSBkaXJlY3RzIG5ldHdvcmtcXG4gMTcxOlxcdFxcdCAgY29ubmVjdGlvbnMgdG8gdGhlIHNlcnZlciB3aXRoIHRoZSBoaWdoZXN0IHdlaWdodCB0aGF0IGlzXFxuIDE3MjpcXHRcXHQgIGN1cnJlbnRseSBhdmFpbGFibGUgYW5kIG92ZXJmbG93cyB0byB0aGUgbmV4dCB3aGVuIGFjdGl2ZVxcbiAxNzM6XFx0XFx0ICBjb25uZWN0aW9ucyBleGNlZWQgdGhlIG5vZGUncyB3ZWlnaHQuXFxuIDE3NDpcXHRcXG4gMTc1OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMTc2OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAxNzc6XFx0XFxuIDE3ODpcXHRjb25maWdcXHRJUF9WU19MQkxDXFxuIDE3OTpcXHRcXHR0cmlzdGF0ZSBcXFwibG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbiAxODA6XFx0XFx0aGVscFxcbiAxODE6XFx0XFx0ICBUaGUgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nIGFsZ29yaXRobSBpcyBmb3JcXG4gMTgyOlxcdFxcdCAgZGVzdGluYXRpb24gSVAgbG9hZCBiYWxhbmNpbmcuIEl0IGlzIHVzdWFsbHkgdXNlZCBpbiBjYWNoZSBjbHVzdGVyLlxcbiAxODM6XFx0XFx0ICBUaGlzIGFsZ29yaXRobSB1c3VhbGx5IGRpcmVjdHMgcGFja2V0IGRlc3RpbmVkIGZvciBhbiBJUCBhZGRyZXNzIHRvXFxuIDE4NDpcXHRcXHQgIGl0cyBzZXJ2ZXIgaWYgdGhlIHNlcnZlciBpcyBhbGl2ZSBhbmQgdW5kZXIgbG9hZC4gSWYgdGhlIHNlcnZlciBpc1xcbiAxODU6XFx0XFx0ICBvdmVybG9hZGVkIChpdHMgYWN0aXZlIGNvbm5lY3Rpb24gbnVtYmVycyBpcyBsYXJnZXIgdGhhbiBpdHMgd2VpZ2h0KVxcbiAxODY6XFx0XFx0ICBhbmQgdGhlcmUgaXMgYSBzZXJ2ZXIgaW4gaXRzIGhhbGYgbG9hZCwgdGhlbiBhbGxvY2F0ZSB0aGUgd2VpZ2h0ZWRcXG4gMTg3OlxcdFxcdCAgbGVhc3QtY29ubmVjdGlvbiBzZXJ2ZXIgdG8gdGhpcyBJUCBhZGRyZXNzLlxcbiAxODg6XFx0XFxuIDE4OTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDE5MDpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTkxOlxcdFxcbiAxOTI6XFx0Y29uZmlnICBJUF9WU19MQkxDUlxcbiAxOTM6XFx0XFx0dHJpc3RhdGUgXFxcImxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxcIlxcbiAxOTQ6XFx0XFx0aGVscFxcbiAxOTU6XFx0XFx0ICBUaGUgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcXG4gMTk2OlxcdFxcdCAgYWxnb3JpdGhtIGlzIGFsc28gZm9yIGRlc3RpbmF0aW9uIElQIGxvYWQgYmFsYW5jaW5nLiBJdCBpcyBcXG4gMTk3OlxcdFxcdCAgdXN1YWxseSB1c2VkIGluIGNhY2hlIGNsdXN0ZXIuIEl0IGRpZmZlcnMgZnJvbSB0aGUgTEJMQyBzY2hlZHVsaW5nXFxuIDE5ODpcXHRcXHQgIGFzIGZvbGxvd3M6IHRoZSBsb2FkIGJhbGFuY2VyIG1haW50YWlucyBtYXBwaW5ncyBmcm9tIGEgdGFyZ2V0XFxuIDE5OTpcXHRcXHQgIHRvIGEgc2V0IG9mIHNlcnZlciBub2RlcyB0aGF0IGNhbiBzZXJ2ZSB0aGUgdGFyZ2V0LiBSZXF1ZXN0cyBmb3JcXG4gMjAwOlxcdFxcdCAgYSB0YXJnZXQgYXJlIGFzc2lnbmVkIHRvIHRoZSBsZWFzdC1jb25uZWN0aW9uIG5vZGUgaW4gdGhlIHRhcmdldCdzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjUwOjEzLjU5ODcyNjA0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDc4NTAyMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBJUFZTIHNjaGVkdWxpbmcgbWV0aG9kczpcblxuKipBbmFseXppbmcgSVBWUyBTY2hlZHVsaW5nIEFsZ29yaXRobXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayBkb3duIHRoaXMgbGlzdCBvZiBJUFZTIHNjaGVkdWxpbmcgYWxnb3JpdGhtcy4gV2UgaGF2ZSB0aGUgdXN1YWwgc3VzcGVjdHMsIHN0YXJ0aW5nIHdpdGggdGhlIGJhc2UgYElQX1ZTYCAtIHRoZSBmb3VuZGF0aW9uYWwgcm91bmQtcm9iaW4gc2NoZW1lLiBUaGVuIHRoZXJlJ3MgYElQX1ZTX1JSYCwgd2hpY2ggaXMgY2xhc3NpYywgYnV0IGxldCdzIGRpdmUgaW50byBzb21lIG1vcmUgYWR2YW5jZWQgb3B0aW9ucy4gYElQX1ZTX1dSUmAgc2lnbmlmaWVzIFdlaWdodGVkIFJvdW5kIFJvYmluLCBnaXZpbmcgbW9yZSB3ZWlnaHQgdG8gY2VydGFpbiByZWFsIHNlcnZlcnMgYmFzZWQgb24gY2FwYWNpdHkgb3IgcHJpb3JpdHksIHRoYXQncyB1c2VmdWwuIE5leHQgaXMgYElQX1ZTX0xDYCwgTGVhc3QgQ29ubmVjdGlvbnMgd2hpY2ggSSBvZnRlbiB1c2UuIFdlIGhhdmUgYElQX1ZTX1dMQ2AgLSBXZWlnaHRlZCBMZWFzdCBDb25uZWN0aW9ucy4gSXQncyBhIHNvbGlkIGNob2ljZSBmb3IgYmFsYW5jaW5nIGxvYWQgYmFzZWQgb24gc2VydmVyIGNhcGFjaXR5IGFuZCBjb25uZWN0aW9uIGNvdW50LiBgSVBfVlNfRk9gLCB0aGF0J3MgdGhlIFwiZmFzdGVzdCBvbmVcIiB0aGF0IGlzIHJhcmVseSB1c2VkLiBMZXQncyBzZWUuLi4gYElQX1ZTX09WRmAsIEkgaGF2ZW4ndCBuZWVkZWQgdG8gdXNlIHRoYXQgbXVjaC4gVGhlbiwgd2UgZ2V0IGludG8gbW9yZSBhZHZhbmNlZCBjb25zaWRlcmF0aW9uczogYElQX1ZTX0xCTENgLCB0aGUgTG9jYWxpdHktQmFzZWQgTGVhc3QgQ29ubmVjdGlvbnMuIEFuZCwgZmluYWxseSwgYElQX1ZTX0xCTENSYCB3aGljaCBhZGRzIGxvY2FsaXR5IHdpdGggYSByZXBsaWNhdGlvbiBjb21wb25lbnQuIFRpbWUgdG8gY29tcGFyZSB0aGUgZWZmZWN0aXZlbmVzcyBvZiBlYWNoLiBMZXQncyBkaWcgZGVlcGVyIGludG8gdGhlIG51YW5jZXMgb2YgZWFjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU2NjcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjUwOjE4LjA3NzIzMDQ2OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMTpcXHRcXHQgIHNlcnZlciBzZXQuIElmIGFsbCB0aGUgbm9kZSBpbiB0aGUgc2VydmVyIHNldCBhcmUgb3ZlciBsb2FkZWQsXFxuIDIwMjpcXHRcXHQgIGl0IHBpY2tzIHVwIGEgbGVhc3QtY29ubmVjdGlvbiBub2RlIGluIHRoZSBjbHVzdGVyIGFuZCBhZGRzIGl0XFxuIDIwMzpcXHRcXHQgIGluIHRoZSBzZXZlciBzZXQgZm9yIHRoZSB0YXJnZXQuIElmIHRoZSBzZXJ2ZXIgc2V0IGhhcyBub3QgYmVlblxcbiAyMDQ6XFx0XFx0ICBtb2RpZmllZCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLCB0aGUgbW9zdCBsb2FkZWQgbm9kZSBpcyByZW1vdmVkXFxuIDIwNTpcXHRcXHQgIGZyb20gdGhlIHNlcnZlciBzZXQsIGluIG9yZGVyIHRvIGF2b2lkIGhpZ2ggZGVncmVlIG9mIHJlcGxpY2F0aW9uLlxcbiAyMDY6XFx0XFxuIDIwNzpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDIwODpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjA5OlxcdFxcbiAyMTA6XFx0Y29uZmlnXFx0SVBfVlNfREhcXG4gMjExOlxcdFxcdHRyaXN0YXRlIFxcXCJkZXN0aW5hdGlvbiBoYXNoaW5nIHNjaGVkdWxpbmdcXFwiXFxuIDIxMjpcXHRcXHRoZWxwXFxuIDIxMzpcXHRcXHQgIFRoZSBkZXN0aW5hdGlvbiBoYXNoaW5nIHNjaGVkdWxpbmcgYWxnb3JpdGhtIGFzc2lnbnMgbmV0d29ya1xcbiAyMTQ6XFx0XFx0ICBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVycyB0aHJvdWdoIGxvb2tpbmcgdXAgYSBzdGF0aWNhbGx5IGFzc2lnbmVkXFxuIDIxNTpcXHRcXHQgIGhhc2ggdGFibGUgYnkgdGhlaXIgZGVzdGluYXRpb24gSVAgYWRkcmVzc2VzLlxcbiAyMTY6XFx0XFxuIDIxNzpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDIxODpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjE5OlxcdFxcbiAyMjA6XFx0Y29uZmlnXFx0SVBfVlNfU0hcXG4gMjIxOlxcdFxcdHRyaXN0YXRlIFxcXCJzb3VyY2UgaGFzaGluZyBzY2hlZHVsaW5nXFxcIlxcbiAyMjI6XFx0XFx0aGVscFxcbiAyMjM6XFx0XFx0ICBUaGUgc291cmNlIGhhc2hpbmcgc2NoZWR1bGluZyBhbGdvcml0aG0gYXNzaWducyBuZXR3b3JrXFxuIDIyNDpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXJzIHRocm91Z2ggbG9va2luZyB1cCBhIHN0YXRpY2FsbHkgYXNzaWduZWRcXG4gMjI1OlxcdFxcdCAgaGFzaCB0YWJsZSBieSB0aGVpciBzb3VyY2UgSVAgYWRkcmVzc2VzLlxcbiAyMjY6XFx0XFxuIDIyNzpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDIyODpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjI5OlxcdFxcbiAyMzA6XFx0Y29uZmlnXFx0SVBfVlNfTUhcXG4gMjMxOlxcdFxcdHRyaXN0YXRlIFxcXCJtYWdsZXYgaGFzaGluZyBzY2hlZHVsaW5nXFxcIlxcbiAyMzI6XFx0XFx0aGVscFxcbiAyMzM6XFx0XFx0ICBUaGUgbWFnbGV2IGNvbnNpc3RlbnQgaGFzaGluZyBzY2hlZHVsaW5nIGFsZ29yaXRobSBwcm92aWRlcyB0aGVcXG4gMjM0OlxcdFxcdCAgR29vZ2xlJ3MgTWFnbGV2IGhhc2hpbmcgYWxnb3JpdGhtIGFzIGEgSVBWUyBzY2hlZHVsZXIuIEl0IGFzc2lnbnNcXG4gMjM1OlxcdFxcdCAgbmV0d29yayBjb25uZWN0aW9ucyB0byB0aGUgc2VydmVycyB0aHJvdWdoIGxvb2tpbmcgdXAgYSBzdGF0aWNhbGx5XFxuIDIzNjpcXHRcXHQgIGFzc2lnbmVkIHNwZWNpYWwgaGFzaCB0YWJsZSBjYWxsZWQgdGhlIGxvb2t1cCB0YWJsZS4gTWFnbGV2IGhhc2hpbmdcXG4gMjM3OlxcdFxcdCAgaXMgdG8gYXNzaWduIGEgcHJlZmVyZW5jZSBsaXN0IG9mIGFsbCB0aGUgbG9va3VwIHRhYmxlIHBvc2l0aW9uc1xcbiAyMzg6XFx0XFx0ICB0byBlYWNoIGRlc3RpbmF0aW9uLlxcbiAyMzk6XFx0XFxuIDI0MDpcXHRcXHQgIFRocm91Z2ggdGhpcyBvcGVyYXRpb24sIFRoZSBtYWdsZXYgaGFzaGluZyBnaXZlcyBhbiBhbG1vc3QgZXF1YWxcXG4gMjQxOlxcdFxcdCAgc2hhcmUgb2YgdGhlIGxvb2t1cCB0YWJsZSB0byBlYWNoIG9mIHRoZSBkZXN0aW5hdGlvbnMgYW5kIHByb3ZpZGVzXFxuIDI0MjpcXHRcXHQgIG1pbmltYWwgZGlzcnVwdGlvbiBieSB1c2luZyB0aGUgbG9va3VwIHRhYmxlLiBXaGVuIHRoZSBzZXQgb2ZcXG4gMjQzOlxcdFxcdCAgZGVzdGluYXRpb25zIGNoYW5nZXMsIGEgY29ubmVjdGlvbiB3aWxsIGxpa2VseSBiZSBzZW50IHRvIHRoZSBzYW1lXFxuIDI0NDpcXHRcXHQgIGRlc3RpbmF0aW9uIGFzIGl0IHdhcyBiZWZvcmUuXFxuIDI0NTpcXHRcXG4gMjQ2OlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMjQ3OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAyNDg6XFx0XFxuIDI0OTpcXHRjb25maWdcXHRJUF9WU19TRURcXG4gMjUwOlxcdFxcdHRyaXN0YXRlIFxcXCJzaG9ydGVzdCBleHBlY3RlZCBkZWxheSBzY2hlZHVsaW5nXFxcIlxcbiAyNTE6XFx0XFx0aGVscFxcbiAyNTI6XFx0XFx0ICBUaGUgc2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkgc2NoZWR1bGluZyBhbGdvcml0aG0gYXNzaWducyBuZXR3b3JrXFxuIDI1MzpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgc2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkuIFRoZSBcXG4gMjU0OlxcdFxcdCAgZXhwZWN0ZWQgZGVsYXkgdGhhdCB0aGUgam9iIHdpbGwgZXhwZXJpZW5jZSBpcyAoQ2kgKyAxKSAvIFVpIGlmIFxcbiAyNTU6XFx0XFx0ICBzZW50IHRvIHRoZSBpdGggc2VydmVyLCBpbiB3aGljaCBDaSBpcyB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zXFxuIDI1NjpcXHRcXHQgIG9uIHRoZSBpdGggc2VydmVyIGFuZCBVaSBpcyB0aGUgZml4ZWQgc2VydmljZSByYXRlICh3ZWlnaHQpXFxuIDI1NzpcXHRcXHQgIG9mIHRoZSBpdGggc2VydmVyLlxcbiAyNTg6XFx0XFxuIDI1OTpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDI2MDpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjYxOlxcdFxcbiAyNjI6XFx0Y29uZmlnXFx0SVBfVlNfTlFcXG4gMjYzOlxcdFxcdHRyaXN0YXRlIFxcXCJuZXZlciBxdWV1ZSBzY2hlZHVsaW5nXFxcIlxcbiAyNjQ6XFx0XFx0aGVscFxcbiAyNjU6XFx0XFx0ICBUaGUgbmV2ZXIgcXVldWUgc2NoZWR1bGluZyBhbGdvcml0aG0gYWRvcHRzIGEgdHdvLXNwZWVkIG1vZGVsLlxcbiAyNjY6XFx0XFx0ICBXaGVuIHRoZXJlIGlzIGFuIGlkbGUgc2VydmVyIGF2YWlsYWJsZSwgdGhlIGpvYiB3aWxsIGJlIHNlbnQgdG9cXG4gMjY3OlxcdFxcdCAgdGhlIGlkbGUgc2VydmVyLCBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGEgZmFzdCBvbmUuIFdoZW4gdGhlcmVcXG4gMjY4OlxcdFxcdCAgaXMgbm8gaWRsZSBzZXJ2ZXIgYXZhaWxhYmxlLCB0aGUgam9iIHdpbGwgYmUgc2VudCB0byB0aGUgc2VydmVyXFxuIDI2OTpcXHRcXHQgIHRoYXQgbWluaW1pemUgaXRzIGV4cGVjdGVkIGRlbGF5IChUaGUgU2hvcnRlc3QgRXhwZWN0ZWQgRGVsYXlcXG4gMjcwOlxcdFxcdCAgc2NoZWR1bGluZyBhbGdvcml0aG0pLlxcbiAyNzE6XFx0XFxuIDI3MjpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuIDI3MzpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gMjc0OlxcdFxcbiAyNzU6XFx0Y29uZmlnXFx0SVBfVlNfVFdPU1xcbiAyNzY6XFx0XFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIHJhbmRvbSB0d29zIGNob2ljZSBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuIDI3NzpcXHRcXHRoZWxwXFxuIDI3ODpcXHRcXHQgIFRoZSB3ZWlnaHRlZCByYW5kb20gdHdvcyBjaG9pY2UgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxuIDI3OTpcXHRcXHQgIGFsZ29yaXRobSBwaWNrcyB0d28gcmFuZG9tIHJlYWwgc2VydmVycyBhbmQgZGlyZWN0cyBuZXR3b3JrXFxuIDI4MDpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgbGVhc3QgYWN0aXZlIGNvbm5lY3Rpb25zXFxuIDI4MTpcXHRcXHQgIG5vcm1hbGl6ZWQgYnkgdGhlIHNlcnZlciB3ZWlnaHQuXFxuIDI4MjpcXHRcXG4gMjgzOlxcdFxcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcXG4gMjg0OlxcdFxcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAyODU6XFx0XFxuIDI4NjpcXHRjb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG4gMjg3OlxcdFxcbiAyODg6XFx0Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxuIDI4OTpcXHRcXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4gMjkwOlxcdFxcdHJhbmdlIDQgMjBcXG4gMjkxOlxcdFxcdGRlZmF1bHQgOFxcbiAyOTI6XFx0XFx0aGVscFxcbiAyOTM6XFx0XFx0ICBUaGUgc291cmNlIGhhc2hpbmcgc2NoZWR1bGVyIG1hcHMgc291cmNlIElQcyB0byBkZXN0aW5hdGlvbnNcXG4gMjk0OlxcdFxcdCAgc3RvcmVkIGluIGEgaGFzaCB0YWJsZS4gVGhpcyB0YWJsZSBpcyB0aWxlZCBieSBlYWNoIGRlc3RpbmF0aW9uXFxuIDI5NTpcXHRcXHQgIHVudGlsIGFsbCBzbG90cyBpbiB0aGUgdGFibGUgYXJlIGZpbGxlZC4gV2hlbiB1c2luZyB3ZWlnaHRzIHRvXFxuIDI5NjpcXHRcXHQgIGFsbG93IGRlc3RpbmF0aW9ucyB0byByZWNlaXZlIG1vcmUgY29ubmVjdGlvbnMsIHRoZSB0YWJsZSBpc1xcbiAyOTc6XFx0XFx0ICB0aWxlZCBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSB3ZWlnaHRzIHNwZWNpZmllZC4gVGhlIHRhYmxlXFxuIDI5ODpcXHRcXHQgIG5lZWRzIHRvIGJlIGxhcmdlIGVub3VnaCB0byBlZmZlY3RpdmVseSBmaXQgYWxsIHRoZSBkZXN0aW5hdGlvbnNcXG4gMjk5OlxcdFxcdCAgbXVsdGlwbGllZCBieSB0aGVpciByZXNwZWN0aXZlIHdlaWdodHMuXFxuIDMwMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NTA6MTguMDc3MzYxMTg5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMjc5NzA5OTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBJUFZTIFNjaGVkdWxlciBNb2RpZmljYXRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgYSBjb21wcmVoZW5zaXZlIG1vZGlmaWNhdGlvbiB0b3VjaGluZyBhbG1vc3QgZXZlcnkgSVBWUyBzY2hlZHVsZXIgd2UndmUgZ290OiBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLiBUaGUgcGF0Y2ggaXMgY2hhbmdpbmcgYSBsYXJnZSBzd2F0aGUgb2YgY29kZSwgdG91Y2hpbmcgYGlwX3ZzX2Nvbm4uY2AsIGBpcF92c19jdGwuY2AsIGFuZCBhbGwgdGhlIHNjaGVkdWxlci1zcGVjaWZpYyBmaWxlcyB0aGVtc2VsdmVzLiBUaGlzIGltcGxpZXMgYSBzaWduaWZpY2FudCBpbXBhY3QgYWNyb3NzIHRoZSBlbnRpcmUgbG9hZCBiYWxhbmNpbmcgaW5mcmFzdHJ1Y3R1cmUuIE5hdHVyYWxseSwgdGhpcyBtZWFucyB3ZSBzaG91bGQgZW5zdXJlIHRoYXQgYElQX1ZTYCBhbmQgYWxsIG9mIHRoZXNlIHNjaGVkdWxlcnMgYXJlIGVuYWJsZWQgZHVyaW5nIGJ1aWxkIHRpbWUuXG5cbk15IGF0dGVudGlvbiBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGUgY29yZSBJUFZTIGZ1bmN0aW9ucyB0aGF0IGFyZSB0aGUgYmVkcm9jayBvZiBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50OiBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLCBgaXBfdnNfYmluZF9kZXN0YCwgYGlwX3ZzX3VuYmluZF9kZXN0YCwgYGlwX3ZzX2FkZF9kZXN0YCwgYW5kIGBpcF92c19lZGl0X2Rlc3RgLCBhbG9uZyB3aXRoIHRoZSByZWxhdGVkIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YC4gVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBwaWVjZXMgdGhhdCB3b3VsZCBiZSBhZmZlY3RlZCBieSBzdWNoIGEgYnJvYWQgY2hhbmdlLlxuXG5TcGVjaWZpY2FsbHksIEknbSBub3cgemVyb2luZyBpbiBvbiBgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgLiBJJ20gY29uY2VybmVkIGFib3V0IHRoZSBpbmxpbmUgZGVjbGFyYXRpb24sIHdoaWNoIGlzIHNob3duIGluIHRoZSBwYXRjaC4gSSB3YXMgaW5pdGlhbGx5IHRocm93biBieSB0aGUgYF9fYWx3YXlzX2lubGluZWAgZGVjbGFyYXRpb24gaW4gYGlwX3ZzX2Nvbm4uY2AgYW5kIGl0cyBwcmVzZW5jZSBpbiBgaW5jbHVkZS9uZXQvaXBfdnMuaGAuIElmIGl0J3MgaW5saW5lLCBob3cgY2FuIG90aGVyIG1vZHVsZXMgbGlrZSBgaXBfdnNfY3RsLmNgIGRpcmVjdGx5IGNhbGwgaXQ/IFRoYXQncyBhIHRleHRib29rIHNvdXJjZSBvZiBsaW5rZXIgZXJyb3JzIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4gSG93ZXZlciwgYSBxdWljayBzY2FuIG9mIHRoZSBwYXRjaCByZXZlYWxzIHRoZSBmdW5jdGlvbiBpdHNlbGYgaW4gYGlwX3ZzX2Nvbm4uY2AuIFRoZSBjb21tZW50IGV4cGxhaW5zIGl0cyBwdXJwb3NlOiBtYW5hZ2luZyB0aGUgb3ZlcmxvYWQgZmxhZyBiYXNlZCBvbiBkZXN0aW5hdGlvbiBjb25uZWN0aW9uIGNvdW50cyBhbmQgdGhyZXNob2xkcy4gVGhlIGxvZ2ljIGlzIGNsZWFybHkgZGVmaW5lZC5cblxuVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogKmRvZXMgdGhpcyBidWlsZD8qIFRoZSBwcm9tcHQgc3RhdGVzIHRoZSBjaGFuZ2VzIGFyZSBhbHJlYWR5IGFwcGxpZWQsIHNvIGFueSBwb3RlbnRpYWwgYnVpbGQgZXJyb3JzIHNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0LiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYGlwX3ZzX2Nvbm4uY2AgYW5kIGBpcF92c19jdGwuY2AgYnVpbGQgY29ycmVjdGx5LCBidXQgdGhpcyBpcyB0aGUgZmlyc3QgdGhpbmcgSSdkIGxvb2sgZm9yLiBBIG1pc3NpbmcgaW5jbHVkZSBvciBpbmNvcnJlY3QgdXNlIG9mIHRoZSBpbmxpbmUga2V5d29yZCB3b3VsZCBiZSBhIHNlcmlvdXMgcmVkIGZsYWcuIEkgd2FudCB0byBjb25maXJtIHRoYXQgYGlwX3ZzX2N0bC5jYCBjYW4gaW5kZWVkIGNhbGwgYGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkYC4gVGhpcyBpcyBhIGNsYXNzaWMgcG90ZW50aWFsIGdvdGNoYSwgYW5kIGl0IGlzIHNvbWV0aGluZyB0byBlbnN1cmUgaXMgY29ycmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc2NjEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5ODAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo1MDozMS4zNTcwNzQwNDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjE0ODg5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaXBfdnMuaD0xOTEyPXN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19kZXN0X3B1dF9hbmRfZnJlZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX3ZzLmgtMTkxNy1cXG5pbmNsdWRlL25ldC9pcF92cy5oOjE5MTg6dm9pZCBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCk7XFxuaW5jbHVkZS9uZXQvaXBfdnMuaC0xOTE5LVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz05ODg9c3RhdGljIGlubGluZSBpbnQgaXBfdnNfZGVzdF90b3RhbGNvbm5zKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05OTgtICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo5OTk6X19hbHdheXNfaW5saW5lIHZvaWQgaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDAwLXtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTAyNz1pcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA4My1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwODQ6XFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDg1LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTE0NT1zdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTc4LVxcdGlmICh0ZXN0X2JpdChJUF9WU19ERVNUX0ZMX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MyKSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExNzk6XFx0XFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTgwLVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTEzMTE9X19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMzc2LVxcdFxcdFdSSVRFX09OQ0UoZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQsIHVkZXN0LVxcdTAwM2VsX3RocmVzaG9sZCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjEzNzc6XFx0XFx0aXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWQoZGVzdCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTEzNzgtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjo1MDozMy4zNzg1NjgxMzVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzExNTg3MzgzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBDcm9zcy1GaWxlIEZ1bmN0aW9uIENhbGwgSXNzdWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBzb21ldGhpbmcncyBub3QgcXVpdGUgcmlnaHQuIEkgc2VlIGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAgYW5kIHRoZSBkZWZpbml0aW9uIGluIGBpcF92c19jb25uLmNgLiBUaGUga2lja2VyIGlzLCBpdCdzIGRlZmluZWQgYXMgYF9fYWx3YXlzX2lubGluZWAuIElmIGl0J3MgKmFsd2F5cyogaW5saW5lZCB3aXRoaW4gdGhhdCBgLmNgIGZpbGUsIHRoZXJlJ3Mgbm8gd2F5IGl0J3MgZGlyZWN0bHkgY2FsbGFibGUgZnJvbSBhbm90aGVyIGAuY2AgZmlsZSwgbGlrZSBgaXBfdnNfY3RsLmNgLiBUaGF0IGp1c3Qgd291bGRuJ3Qgd29yay4gXG5cbk5vdywgYSBmbGVldGluZyB0aG91Z2h0Li4uIGNvdWxkIGBfX2Fsd2F5c19pbmxpbmVgIGp1c3QgYmUgYSBjb21waWxlciBoaW50LCBhbmQgbWF5YmUgaXQgKnN0aWxsKiBnZW5lcmF0ZXMgYW4gb3V0LW9mLWxpbmUgY29weT8gVGhhdCBzZWVtcyB1bmxpa2VseSwgdGhvdWdoLiBVc3VhbGx5LCBgX19hbHdheXNfaW5saW5lYCBwcmV0dHkgbXVjaCBmb3JjZXMgdGhlIGZ1bmN0aW9uIHRvIGJlIGlubGluZWQsIGFuZCBpdCB1c3VhbGx5IGltcGxpZXMgYGlubGluZWAuIElmIGl0IHdhc24ndCBgc3RhdGljYCwgaXQgKm1pZ2h0KiBnZW5lcmF0ZSBhbiBleHRlcm5hbCBzeW1ib2wsIGJ1dCBob25lc3RseSwgYF9fYWx3YXlzX2lubGluZWAgd2l0aG91dCBgc3RhdGljYCBpcyBqdXN0IHN0cmFuZ2UuIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgYGlwX3ZzX2Nvbm4uY2AgdG8gc2VlIGlmIGl0J3MgZXhwbGljaXRseSBleHBvcnRlZCBzb21laG93LCBvciBpZiB0aGVyZSdzIHNvbWUgb3RoZXIgdHJpY2tlcnkgZ29pbmcgb24uIE5lZWQgdG8gdmVyaWZ5IHRoaXMgcXVpY2tseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk5NzYsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6NTA6NDAuNDk0NDQ1MjAxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODY1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk5MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDk5MDpcXHRcXHRyZXR1cm4gYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKVxcbiA5OTE6XFx0XFx0XFx0KyBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlaW5hY3Rjb25ucyk7XFxuIDk5MjpcXHR9XFxuIDk5MzpcXHRcXG4gOTk0OlxcdC8qIFVwZGF0ZSBvdmVybG9hZCBmbGFnIGJhc2VkIG9uIG51bWJlciBvZiBkZXN0IGNvbm5zIGFuZCBsb3dlci91cHBlclxcbiA5OTU6XFx0ICogY29ubmVjdGlvbiB0aHJlc2hvbGRzOlxcbiA5OTY6XFx0ICogLSBjb25ucyByZWFjaCB1X3RocmVzaG9sZCBhbmQgZXhjZWVkIGl0OiBzZXQgdGhlIGZsYWdcXG4gOTk3OlxcdCAqIC0gY29ubnMgZ28gYmVsb3cgbF90aHJlc2hvbGQgKG9yIDc1JSBvZiB1X3RocmVzaG9sZCk6IGNsZWFyIHRoZSBmbGFnXFxuIDk5ODpcXHQgKi9cXG4gOTk5OlxcdF9fYWx3YXlzX2lubGluZSB2b2lkIGlwX3ZzX2Rlc3RfdXBkYXRlX292ZXJsb2FkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbjEwMDA6XFx0e1xcbjEwMDE6XFx0XFx0aW50IGNvbm5zO1xcbjEwMDI6XFx0XFx0dTMyIGwsIHU7XFxuMTAwMzpcXHRcXG4xMDA0OlxcdFxcdHUgPSBSRUFEX09OQ0UoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQpO1xcbjEwMDU6XFx0XFx0aWYgKCF1KVxcbjEwMDY6XFx0XFx0XFx0Z290byB1bnNldDtcXG4xMDA3OlxcdFxcdGNvbm5zID0gaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpO1xcbjEwMDg6XFx0XFx0aWYgKGNvbm5zIFxcdTAwM2U9IHUpIHtcXG4xMDA5OlxcdFxcdFxcdHNldF9iaXQoSVBfVlNfREVTVF9GTF9PVkVSTE9BRCwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzMik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjUwOjQwLjQ5NDU2NTRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQwOTY5NTk2OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBhIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBgX19hbHdheXNfaW5saW5lYCB3aXRob3V0IGBzdGF0aWNgIGluIEdDQy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGl0IHdvdWxkIGJlIGlubGluZWQgZXZlcnl3aGVyZSBidXQgYWxzbyBoYXZlIGFuIGV4dGVybmFsIGRlZmluaXRpb24uIFRoZW4gSSByZW1lbWJlcmVkIEM5OSdzIGBpbmxpbmVgIGJlaGF2aW9yOiB3aXRob3V0IGBzdGF0aWNgLCBubyBleHRlcm5hbCBkZWZpbml0aW9uIGlzIGVtaXR0ZWQgdW5sZXNzIGBleHRlcm4gaW5saW5lYCBpcyB1c2VkLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBpZiB0aGlzIGlubGluZWQgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGlwX3ZzX2N0bC5jYCwgdGhlcmUgbWlnaHQgYmUgYW4gdW5kZWZpbmVkIHJlZmVyZW5jZSBpZiBubyBleHRlcm5hbCBkZWZpbml0aW9uIGV4aXN0cy4gQWN0dWFsbHksIG5vIG5lZWQgdG8gY29tcGlsZSwgSSdtIGp1c3QgYWZ0ZXIgdGhlIHJlc3VsdHMuXG5cblRoZSBwYXRjaCB0b3VjaGVzIGBpcF92c19jb25uLmNgLCBgaXBfdnNfY3RsLmNgLCBhbmQgdGhlIHNjaGVkdWxlcnMsIHNvIEkgbmVlZCB0byBob25lIGluIG9uIHRoZSByZWxldmFudCBzeW1ib2xzLiBUaGUga2V5IGZ1bmN0aW9ucyB0byB3YXRjaCBhcmUsIHdpdGhvdXQgYSBkb3VidCwgdGhlc2U6IGBpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZGAsIGBpcF92c19iaW5kX2Rlc3RgLCBgaXBfdnNfdW5iaW5kX2Rlc3RgLCBgX19pcF92c191cGRhdGVfZGVzdGAsIGBpcF92c19hZGRfZGVzdGAsIGFuZCBgaXBfdnNfZWRpdF9kZXN0YC5cblxuTGV0J3MgYWxzbyBjYXN0IGEgd2lkZXIgbmV0IGFuZCBsb29rIGF0IG90aGVyIGZ1bmN0aW9ucyBhZmZlY3RlZC4gVGhlIHNjaGVkdWxlcnMgY2xlYXJseSBtYXR0ZXIgdG9vLCBzbyBJJ2xsIGFsc28gYWRkIHRoZXNlIHRvIHRoZSBtZW50YWwgY2hlY2tsaXN0OiBgaXBfdnNfZm9fc2NoZWR1bGVgLCBgX19pcF92c19sYmxjX3NjaGVkdWxlYCwgYF9faXBfdnNfbGJsY3Jfc2NoZWR1bGVgLCBgaXBfdnNfbGNfc2NoZWR1bGVgLCBgaXBfdnNfbWhfc2NoZWR1bGVgIChhbmQgbm90ZSB0aGF0IGl0IG1vZGlmaWVzIGBpc191bmF2YWlsYWJsZWAgaW4gYGlwX3ZzX21oLmNgKSwgYGlwX3ZzX25xX3NjaGVkdWxlYCwgYGlwX3ZzX292Zl9zY2hlZHVsZWAsIGBpcF92c19ycl9zY2hlZHVsZWAsIGBpcF92c19zZWRfc2NoZWR1bGVgLCBgaXNfdW5hdmFpbGFibGVgIGluIGBpcF92c19zaC5jYCwgYGlwX3ZzX3R3b3Nfc2NoZWR1bGVgLCBgaXBfdnNfd2xjX3NjaGVkdWxlYCwgYGlwX3ZzX3dycl9zY2hlZHVsZWAuXG5cbkZvciB0aGUgRm9jdXNTeW1ib2xzLCBJIHNob3VsZCBjb25zb2xpZGF0ZSB0aGUgZm9sbG93aW5nLCBlbnN1cmluZyBhIGdvb2QgYmFsYW5jZSBvZiBjb3JlIGZ1bmN0aW9uYWxpdHkgYW5kIHNjaGVkdWxlciBiZWhhdmlvcnMsIGxpa2UgdGhpczpcbmBpcF92c19iaW5kX2Rlc3RgXG5gaXBfdnNfdW5iaW5kX2Rlc3RgXG5gX19pcF92c191cGRhdGVfZGVzdGBcbmBpcF92c19hZGRfZGVzdGBcbmBpcF92c19lZGl0X2Rlc3RgXG5gaXBfdnNfZGVzdF91cGRhdGVfb3ZlcmxvYWRgXG5cbkFuZCwgb2YgY291cnNlLCB0aGUgY29uZmlndXJhdGlvbnMgYXJlIGNlbnRyYWwgdG8gdGhpcyB0b28uIEknbGwgbmVlZCB0aGVzZTogYElQX1ZTYCwgYElQX1ZTX1JSYCwgYElQX1ZTX1dSUmAsIGBJUF9WU19MQ2AsIGBJUF9WU19XTENgLCBgSVBfVlNfRk9gLCBgSVBfVlNfT1ZGYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgLCBgSVBfVlNfREhgLCBgSVBfVlNfU0hgLCBgSVBfVlNfTUhgLCBgSVBfVlNfU0VEYCwgYElQX1ZTX05RYCwgYW5kIGBJUF9WU19UV09TYC5cblxuQSBxdWljayBzYW5pdHkgY2hlY2sgYWdhaW5zdCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHdpbGwgY29uZmlybSB0aG9zZSBjb25maWcgbmFtZXMgYXJlIGNvcnJlY3QuIFllcCwgYWxsIGNsZWFyLlxuXG5BbHJpZ2h0LCB3aXRoIHRoYXQgY29uZmlybWVkLCBJJ2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzk1LCJPdXRwdXRUb2tlbnMiOjI4MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjUwOjU0LjU5MTUyNzExOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MjU5MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfUlJcIixcbiAgICBcIklQX1ZTX1dSUlwiLFxuICAgIFwiSVBfVlNfTENcIixcbiAgICBcIklQX1ZTX1dMQ1wiLFxuICAgIFwiSVBfVlNfRk9cIixcbiAgICBcIklQX1ZTX09WRlwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19TSFwiLFxuICAgIFwiSVBfVlNfTUhcIixcbiAgICBcIklQX1ZTX1NFRFwiLFxuICAgIFwiSVBfVlNfTlFcIixcbiAgICBcIklQX1ZTX1RXT1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZFwiLFxuICAgIFwiaXBfdnNfYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c191bmJpbmRfZGVzdFwiLFxuICAgIFwiX19pcF92c191cGRhdGVfZGVzdFwiLFxuICAgIFwiaXBfdnNfYWRkX2Rlc3RcIixcbiAgICBcImlwX3ZzX2VkaXRfZGVzdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIGxvYWQgYmFsYW5jaW5nIGxvZ2ljIG9mIElQVlMgYnkgY2hhbmdpbmcgaG93IHRoZSBkZXN0aW5hdGlvbiBvdmVybG9hZCBmbGFnIGlzIHVwZGF0ZWQgYW5kIGNoZWNrZWQuIEl0IGludHJvZHVjZXMgYSBuZXcgYGZsYWdzMmAgZmllbGQgYW5kIHVwZGF0ZXMgbXVsdGlwbGUgSVBWUyBzY2hlZHVsZXJzIHRvIHVzZSBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfUlJcIixcbiAgICBcIklQX1ZTX1dSUlwiLFxuICAgIFwiSVBfVlNfTENcIixcbiAgICBcIklQX1ZTX1dMQ1wiLFxuICAgIFwiSVBfVlNfRk9cIixcbiAgICBcIklQX1ZTX09WRlwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19TSFwiLFxuICAgIFwiSVBfVlNfTUhcIixcbiAgICBcIklQX1ZTX1NFRFwiLFxuICAgIFwiSVBfVlNfTlFcIixcbiAgICBcIklQX1ZTX1RXT1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19kZXN0X3VwZGF0ZV9vdmVybG9hZFwiLFxuICAgIFwiaXBfdnNfYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c191bmJpbmRfZGVzdFwiLFxuICAgIFwiX19pcF92c191cGRhdGVfZGVzdFwiLFxuICAgIFwiaXBfdnNfYWRkX2Rlc3RcIixcbiAgICBcImlwX3ZzX2VkaXRfZGVzdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGNvbm5lY3Rpb24gdHJhY2tpbmcgYW5kIGxvYWQgYmFsYW5jaW5nIGxvZ2ljIG9mIElQVlMgYnkgY2hhbmdpbmcgaG93IHRoZSBkZXN0aW5hdGlvbiBvdmVybG9hZCBmbGFnIGlzIHVwZGF0ZWQgYW5kIGNoZWNrZWQuIEl0IGludHJvZHVjZXMgYSBuZXcgYGZsYWdzMmAgZmllbGQgYW5kIHVwZGF0ZXMgbXVsdGlwbGUgSVBWUyBzY2hlZHVsZXJzIHRvIHVzZSBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow2qr2w[1] Phase: Succeeded StartedAt: 2026-07-13 12:51:06 +0000 UTC FinishedAt: 2026-07-13 12:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-13 12:51:06 +0000 UTC FinishedAt: 2026-07-13 12:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2] Phase: Succeeded StartedAt: 2026-07-13 12:51:06 +0000 UTC FinishedAt: 2026-07-13 17:05:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-13 12:51:06 +0000 UTC FinishedAt: 2026-07-13 17:05:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-13 12:51:06 +0000 UTC FinishedAt: 2026-07-13 12:51:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-13 12:51:06 +0000 UTC FinishedAt: 2026-07-13 12:51:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflow2qr2w/series-workflow2qr2w-convert-artifact-4041996957/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-13 12:51:27 +0000 UTC FinishedAt: 2026-07-13 13:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-13 12:51:27 +0000 UTC FinishedAt: 2026-07-13 13:17:56 +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:*36bc0380-0f02-4326-9fbb-2e13fe1c5d74,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-workflow2qr2w/series-workflow2qr2w-convert-artifact-4041996957/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": "f519031d-8599-4c16-baa7-79132ac26469", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2qr2w/series-workflow2qr2w-build-action-4053822419/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-13 12:51:27 +0000 UTC FinishedAt: 2026-07-13 13:17:46 +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:*36bc0380-0f02-4326-9fbb-2e13fe1c5d74,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-workflow2qr2w/series-workflow2qr2w-convert-artifact-4041996957/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": "f519031d-8599-4c16-baa7-79132ac26469", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2qr2w/series-workflow2qr2w-build-action-4053822419/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-13 13:17:56 +0000 UTC FinishedAt: 2026-07-13 13:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-13 13:17:56 +0000 UTC FinishedAt: 2026-07-13 13:17:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-13 13:17:56 +0000 UTC FinishedAt: 2026-07-13 13:18:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-13 13:17:56 +0000 UTC FinishedAt: 2026-07-13 13:18:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflow2qr2w/series-workflow2qr2w-convert-artifact-235636600/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-13 13:18:07 +0000 UTC FinishedAt: 2026-07-13 13:20:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-13 13:18:07 +0000 UTC FinishedAt: 2026-07-13 13:19:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f519031d-8599-4c16-baa7-79132ac26469,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2qr2w/series-workflow2qr2w-build-action-4053822419/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-13 13:20:06 +0000 UTC FinishedAt: 2026-07-13 13:20:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-13 13:20:06 +0000 UTC FinishedAt: 2026-07-13 13:20:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-13 13:20:06 +0000 UTC FinishedAt: 2026-07-13 13:59:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-13 13:20:06 +0000 UTC FinishedAt: 2026-07-13 13:59:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*36bc0380-0f02-4326-9fbb-2e13fe1c5d74,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-workflow2qr2w/series-workflow2qr2w-convert-artifact-235636600/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": "8ffe47f2-f8f3-4c65-8204-0d004f7a53aa", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2qr2w/series-workflow2qr2w-build-action-2545232996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-13 13:20:06 +0000 UTC FinishedAt: 2026-07-13 13:56:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*36bc0380-0f02-4326-9fbb-2e13fe1c5d74,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-workflow2qr2w/series-workflow2qr2w-convert-artifact-235636600/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": "8ffe47f2-f8f3-4c65-8204-0d004f7a53aa", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2qr2w/series-workflow2qr2w-build-action-2545232996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-13 13:59:44 +0000 UTC FinishedAt: 2026-07-13 13:59:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-13 13:59:44 +0000 UTC FinishedAt: 2026-07-13 13:59:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-13 13:59:44 +0000 UTC FinishedAt: 2026-07-13 14:01:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-13 13:59:44 +0000 UTC FinishedAt: 2026-07-13 14:01:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8ffe47f2-f8f3-4c65-8204-0d004f7a53aa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2qr2w/series-workflow2qr2w-build-action-2545232996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-13 14:01:43 +0000 UTC FinishedAt: 2026-07-13 14:01:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-13 14:01:44 +0000 UTC FinishedAt: 2026-07-13 17:05:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-13 14:01:44 +0000 UTC FinishedAt: 2026-07-13 17:05:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*f519031d-8599-4c16-baa7-79132ac26469,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8ffe47f2-f8f3-4c65-8204-0d004f7a53aa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2qr2w/series-workflow2qr2w-build-action-4053822419/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2qr2w/series-workflow2qr2w-build-action-2545232996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-13 14:01:44 +0000 UTC FinishedAt: 2026-07-13 14:02:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-13 14:01:44 +0000 UTC FinishedAt: 2026-07-13 14:02:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2qr2w/series-workflow2qr2w-convert-artifact-2807974609/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-13 14:01:44 +0000 UTC FinishedAt: 2026-07-13 14:01:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-13 14:01:44 +0000 UTC FinishedAt: 2026-07-13 14:01:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-13 14:02:38 +0000 UTC FinishedAt: 2026-07-13 17:05:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2qr2w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_dest_update_overload","ip_vs_bind_dest","ip_vs_unbind_dest","__ip_vs_update_dest","ip_vs_add_dest","ip_vs_edit_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_RR","IP_VS_WRR","IP_VS_LC","IP_VS_WLC","IP_VS_FO","IP_VS_OVF","IP_VS_LBLC","IP_VS_LBLCR","IP_VS_DH","IP_VS_SH","IP_VS_MH","IP_VS_SED","IP_VS_NQ","IP_VS_TWOS"],"series_id":"f0e2cfd3-08e5-4f10-94b2-ab1ddd5d556a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-13 14:02:38 +0000 UTC FinishedAt: 2026-07-13 17:05:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f519031d-8599-4c16-baa7-79132ac26469,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8ffe47f2-f8f3-4c65-8204-0d004f7a53aa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2qr2w/series-workflow2qr2w-build-action-4053822419/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2qr2w/series-workflow2qr2w-build-action-2545232996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2qr2w/series-workflow2qr2w-convert-artifact-2807974609/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}