Name: series-workflowsrt6p Phase: Succeeded StartedAt: 2026-07-08 16:20:21 +0000 UTC FinishedAt: 2026-07-08 21:25:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[0] Phase: Succeeded StartedAt: 2026-07-08 16:20:21 +0000 UTC FinishedAt: 2026-07-08 16:57:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 16:20:21 +0000 UTC FinishedAt: 2026-07-08 16:57:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_PROTO_TCP", "IP_VS_PROTO_UDP", "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": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_PROTO_TCP", "IP_VS_PROTO_UDP", "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": "61f874a3-31f1-4f21-a250-ebef11728d1f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_dh_schedule", "ip_vs_fo_schedule", "__ip_vs_lblc_schedule", "ip_vs_lblc_schedule", "__ip_vs_lblcr_schedule", "ip_vs_lc_schedule", "ip_vs_mh_schedule", "ip_vs_nq_schedule", "ip_vs_ovf_schedule", "ip_vs_rr_schedule", "ip_vs_sed_schedule", "ip_vs_sh_schedule", "ip_vs_twos_schedule", "ip_vs_wlc_schedule", "ip_vs_wrr_schedule", "__ip_vs_update_dest", "__ip_vs_unlink_dest", "ip_vs_bind_dest", "ip_vs_unbind_dest", "ip_vs_check_template" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX1BST1RPX1RDUCYjMzQ7LAogICAgJiMzNDtJUF9WU19QUk9UT19VRFAmIzM0OywKICAgICYjMzQ7SVBfVlNfUlImIzM0OywKICAgICYjMzQ7SVBfVlNfV1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19GTyYjMzQ7LAogICAgJiMzNDtJUF9WU19PVkYmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19TSCYjMzQ7LAogICAgJiMzNDtJUF9WU19NSCYjMzQ7LAogICAgJiMzNDtJUF9WU19TRUQmIzM0OywKICAgICYjMzQ7SVBfVlNfTlEmIzM0OywKICAgICYjMzQ7SVBfVlNfVFdPUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2RoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2ZvX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O19faXBfdnNfbGJsY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sYmxjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O19faXBfdnNfbGJsY3Jfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbWhfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbnFfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfb3ZmX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3JyX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NlZF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19zaF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c190d29zX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dsY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c193cnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c191cGRhdGVfZGVzdCYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VubGlua19kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c191bmJpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGBkZXN0LVx1MDAzZWZsYWdzYCBpbiBgc3RydWN0IGlwX3ZzX2Rlc3RgIHRvIGBhdG9taWNfdGAgYW5kIHVwZGF0ZXMgYWxsIGJpdHdpc2Ugb3BlcmF0aW9ucyB0byB1c2UgYXRvbWljIG9wZXJhdGlvbnMgKGBhdG9taWNfb3JgLCBgYXRvbWljX2FuZGAsIGBhdG9taWNfcmVhZGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBwb3RlbnRpYWwgZGF0YSByYWNlcyBpbiB0aGUgSVBWUyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiBob3cgZGVzdGluYXRpb24gZmxhZ3MgbGlrZSBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCBhbmQgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFyZSByZWFkIGFuZCB1cGRhdGVkIGNvbmN1cnJlbnRseSBieSB2YXJpb3VzIHNjaGVkdWxlcnMgYW5kIGNvbnRyb2wgcGF0aHMuIEZ1enppbmcgdGhlIElQVlMgc2NoZWR1bGVycyBhbmQgZGVzdGluYXRpb24gbWFuYWdlbWVudCBmdW5jdGlvbnMgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSBhdG9taWMgb3BlcmF0aW9ucyBhcmUgY29ycmVjdGx5IGltcGxlbWVudGVkIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTAwZDAyNDM4N2M2ODI5ZDA3YmZiZGIyNTdhNWYxMjNkNDJkNDNjMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTY6NDk6NTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbmluZGV4IDQ5Mjk3ZmVjNDQ4YTgyLi5iYjk2OTczOGVkNzMyNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbkBAIC05NzIsNyAmIzQzOzk3Miw3IEBAIHN0cnVjdCBpcF92c19kZXN0IHtcbiBcdHUxNlx0XHRcdGFmO1x0XHQvKiBhZGRyZXNzIGZhbWlseSAqL1xuIFx0X19iZTE2XHRcdFx0cG9ydDtcdFx0LyogcG9ydCBudW1iZXIgb2YgdGhlIHNlcnZlciAqL1xuIFx0dW5pb24gbmZfaW5ldF9hZGRyXHRhZGRyO1x0XHQvKiBJUCBhZGRyZXNzIG9mIHRoZSBzZXJ2ZXIgKi9cbi1cdHZvbGF0aWxlIHVuc2lnbmVkIGludFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4mIzQzO1x0YXRvbWljX3RcdFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRjb25uX2ZsYWdzO1x0LyogZmxhZ3MgdG8gY29weSB0byBjb25uICovXG4gXHRhdG9taWNfdFx0XHR3ZWlnaHQ7XHRcdC8qIHNlcnZlciB3ZWlnaHQgKi9cbiBcdGF0b21pY190XHRcdGxhc3Rfd2VpZ2h0O1x0Lyogc2VydmVyIGxhdGVzdCB3ZWlnaHQgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjUzOWY2MDNmMzhiNzQ1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTEwNTUsNyAmIzQzOzEwNTUsNyBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcbiBcdGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDAgXHUwMDI2XHUwMDI2XG4gXHQgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFx1MDAzZT0gZGVzdC1cdTAwM2V1X3RocmVzaG9sZClcbi1cdFx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0XHRhdG9taWNfb3IoSVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gXG5AQCAtMTE1MSwxMyAmIzQzOzExNTEsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcbiBcbiBcdGlmIChkZXN0LVx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcbiBcdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2MgZGVzdC1cdTAwM2VsX3RocmVzaG9sZClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiYjNDM7XHRcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdH0gZWxzZSBpZiAoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCAhPSAwKSB7XG4gXHRcdGlmIChpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgKiA0IFx1MDAzYyBkZXN0LVx1MDAzZXVfdGhyZXNob2xkICogMylcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiYjNDM7XHRcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4tXHRcdFx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdH1cbiBcbiBcdGlwX3ZzX2Rlc3RfcHV0KGRlc3QpO1xuQEAgLTExODgsNyAmIzQzOzExODgsNyBAQCBpbnQgaXBfdnNfY2hlY2tfdGVtcGxhdGUoc3RydWN0IGlwX3ZzX2Nvbm4gKmN0LCBzdHJ1Y3QgaXBfdnNfZGVzdCAqY2Rlc3QpXG4gXHQgKiBDaGVja2luZyB0aGUgZGVzdCBzZXJ2ZXIgc3RhdHVzLlxuIFx0ICovXG4gXHRpZiAoKGRlc3QgPT0gTlVMTCkgfHxcbi1cdCAgICAhKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4mIzQzO1x0ICAgICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4gXHQgICAgZXhwaXJlX3F1aWVzY2VudF90ZW1wbGF0ZShpcHZzLCBkZXN0KSB8fFxuIFx0ICAgIChjZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xuIFx0XHRJUF9WU19EQkdfQlVGKDksIFwmIzM0O2NoZWNrX3RlbXBsYXRlOiBkZXN0IG5vdCBhdmFpbGFibGUgZm9yIFwmIzM0O1xuQEAgLTE5MjksNyAmIzQzOzE5MjksNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiBcdFx0XHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcbiBcdFx0XHRyZXNjaGVkX3Njb3JlJiM0MzsmIzQzOztcbiBcdFx0XHRkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbi1cdFx0XHRpZiAoIWRlc3QgfHwgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKVxuJiM0MztcdFx0XHRpZiAoIWRlc3QgfHwgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjcC1cdTAwM2VuX2NvbnRyb2wpKVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5pbmRleCBkNDBiNDA0YzFiZjY0Ni4uY2E3Nzg5MzdmYWNmMzkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMzAyLDcgJiM0MzszMDIsNyBAQCBpcF92c19pbl9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiBcdFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcbiBcdFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcbiBcbkBAIC0zMzgsNyAmIzQzOzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiBcdFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcbiBcdFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcbiBcbkBAIC0yMjA0LDcgJiM0MzsyMjA0LDcgQEAgaXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGVcbiBcdH1cbiBcbiBcdC8qIENoZWNrIHRoZSBzZXJ2ZXIgc3RhdHVzICovXG4tXHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoY3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiYjNDM7XHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoYXRvbWljX3JlYWQoXHUwMDI2Y3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdC8qIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xuIFx0XHRpZiAoc3lzY3RsX2V4cGlyZV9ub2Rlc3RfY29ubihpcHZzKSkge1xuIFx0XHRcdGJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjg1YjI2NzViNmUwM2EgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuQEAgLTEzNjgsMTAgJiM0MzsxMzY4LDEwIEBAIF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHR9XG4gXG4gXHQvKiBzZXQgdGhlIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4tXHRkZXN0LVx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEU7XG4mIzQzO1x0YXRvbWljX29yKElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpO1xuIFxuIFx0aWYgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIGRlc3QtXHUwMDNldV90aHJlc2hvbGQpXG4tXHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuJiM0MztcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdGRlc3QtXHUwMDNldV90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZDtcbiBcdGRlc3QtXHUwMDNlbF90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZDtcbiBcbkBAIC0xNjEzLDcgJiM0MzsxNjEzLDcgQEAgc3RhdGljIHZvaWQgX19pcF92c191bmxpbmtfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuIFx0XHRcdFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHRcdFx0XHRpbnQgc3ZjdXBkKVxuIHtcbi1cdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcbiYjNDM7XHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFLCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbiBcdF9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbmluZGV4IGUxZjYyZjZiMjVlMjExLi44MjQ5MmU4MjRmMDI2MSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuQEAgLTIwMSw3ICYjNDM7MjAxLDcgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiAgKi9cbiBzdGF0aWMgaW5saW5lIGludCBpc19vdmVybG9hZGVkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbi1cdHJldHVybiBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4gfVxuIFxuIFxuQEAgLTIxOSwxMCAmIzQzOzIxOSwxMCBAQCBpcF92c19kaF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0cyA9IChzdHJ1Y3QgaXBfdnNfZGhfc3RhdGUgKikgc3ZjLVx1MDAzZXNjaGVkX2RhdGE7XG4gXHRkZXN0ID0gaXBfdnNfZGhfZ2V0KHN2Yy1cdTAwM2VhZiwgcywgXHUwMDI2aXBoLVx1MDAzZWRhZGRyKTtcbi1cdGlmICghZGVzdFxuLVx0ICAgIHx8ICEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcbi1cdCAgICB8fCBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNjPSAwXG4tXHQgICAgfHwgaXNfb3ZlcmxvYWRlZChkZXN0KSkge1xuJiM0MztcdGlmICghZGVzdCB8fFxuJiM0MztcdCAgICAhKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fFxuJiM0MztcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNjPSAwIHx8XG4mIzQzO1x0ICAgIGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcbiBcdFx0aXBfdnNfc2NoZWR1bGVyX2VycihzdmMsIFwmIzM0O25vIGRlc3RpbmF0aW9uIGF2YWlsYWJsZVwmIzM0Oyk7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcbmluZGV4IGQ2NTdiNDdjNjUxMWZmLi41MjMxZTUxOGMwN2MwMyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uY1xuQEAgLTI5LDcgJiM0MzsyOSw3IEBAIGlwX3ZzX2ZvX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpY1xuIFx0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSBodykge1xuIFx0XHRcdGh3ZWlnaHQgPSBkZXN0O1xuIFx0XHRcdGh3ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG5pbmRleCAxNWNjYjJiMmZhMWY0YS4uZDJlYjVkZGE1YjY4NmYgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG5AQCAtNDE0LDcgJiM0Mzs0MTQsNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqIG5ldyBjb25uZWN0aW9uLlxuIFx0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuQEAgLTQyOSw3ICYjNDM7NDI5LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbkBAIC01MDIsNyAmIzQzOzUwMiw3IEBAIGlwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ICovXG4gXG4gXHRcdGRlc3QgPSBlbi1cdTAwM2VkZXN0O1xuLVx0XHRpZiAoKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0aWYgKChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDAgXHUwMDI2XHUwMDI2ICFpc19vdmVybG9hZGVkKGRlc3QsIHN2YykpXG4gXHRcdFx0Z290byBvdXQ7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuaW5kZXggYzkwZWE4OTdjM2Y3NTYuLjQ4ZjAyNDUzYTViZTQ5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5AQCAtMTY2LDExICYjNDM7MTY2LDExIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcbiBcdC8qIHNlbGVjdCB0aGUgZmlyc3QgZGVzdGluYXRpb24gc2VydmVyLCB3aG9zZSB3ZWlnaHQgXHUwMDNlIDAgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGUsIFx1MDAyNnNldC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4gXHRcdGxlYXN0ID0gZS1cdTAwM2VkZXN0O1xuLVx0XHRpZiAobGVhc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0aWYgKChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKVxuLVx0XHQgICAgXHUwMDI2XHUwMDI2IChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiYjNDM7XHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiBcdFx0XHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xuIFx0XHRcdGdvdG8gbmV4dHN0YWdlO1xuIFx0XHR9XG5AQCAtMTgxLDEzICYjNDM7MTgxLDEzIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGUsIFx1MDAyNnNldC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4gXHRcdGRlc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xuIFx0XHRpZiAoKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlXG4tXHRcdCAgICAgKF9fczY0KWRvaCAqIGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZXdlaWdodCkpXG4tXHRcdCAgICBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0XHQgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGRvaDtcbiBcdFx0fVxuQEAgLTU3Nyw3ICYjNDM7NTc3LDcgQEAgX19pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxuIFx0ICogbmV3IGNvbm5lY3Rpb24uXG4gXHQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApIHtcbkBAIC01OTMsNyAmIzQzOzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbmluZGV4IDM4Y2MzOGM1ZDhiYmQ5Li42YWNiM2M5MDRhZjU3ZSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuQEAgLTM4LDcgJiM0MzszOCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiYjNDM7XHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xuaW5kZXggMDIwODYzMDQ3NTYyZDMuLmMzMjJlZDE3NTRiN2Y2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXG5AQCAtODAsNyAmIzQzOzgwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdlbmVyYXRlX2hhc2hfc2VjcmV0KGhzaXBoYXNoX2tleV90ICpoYXNoMSxcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuIFx0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2M9IDAgfHxcbi1cdCAgICAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0ICAgICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4gfVxuIFxuIC8qIFJldHVybnMgaGFzaCB2YWx1ZSBmb3IgSVBWUyBNSCBlbnRyeSAqL1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcbmluZGV4IGFkYTE1OGM2MTBjZTExLi5mZmE0YmZlYjIxZDlkNyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xuQEAgLTcyLDcgJiM0Mzs3Miw3IEBAIGlwX3ZzX25xX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQgfHxcbiBcdFx0ICAgICFhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkpXG4gXHRcdFx0Y29udGludWU7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXG5pbmRleCBjNWM2N2RmODBhMGIzYy4uZjdmMTdkZGRiYjA1YTUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xuQEAgLTMzLDcgJiM0MzszMyw3IEBAIGlwX3ZzX292Zl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0Ki9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuIFx0XHR3ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuLVx0XHRpZiAoKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiYjNDM7XHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpIFx1MDAzZSB3IHx8XG4gXHRcdCAgICB3ID09IDApXG4gXHRcdFx0Y29udGludWU7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xuaW5kZXggNDEyNWVlNTYxY2RjMzYuLjk4NDUzZDIwNWQ2ZmFkIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXG5AQCAtNjYsNyAmIzQzOzY2LDcgQEAgaXBfdnNfcnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCxcbiBcdFx0XHRcdFx0XHQgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucyxcbiBcdFx0XHRcdFx0XHQgbl9saXN0KSB7XG4tXHRcdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMClcbiBcdFx0XHRcdC8qIEhJVCAqL1xuIFx0XHRcdFx0Z290byBvdXQ7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXG5pbmRleCAyNDVhMzIzYzg0Y2QzMi4uMDI0OTA2MmQxMzYwNTcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xuQEAgLTc1LDcgJiM0Mzs3NSw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGlwX3ZzX3NlZF9kZXN0X292ZXJoZWFkKGxlYXN0KTtcbkBAIC05MCw3ICYjNDM7OTAsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcbmluZGV4IGNkNjcwNjZlM2IyNjEyLi4zNDM3ODBiODJjOTVmMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xuQEAgLTczLDcgJiM0Mzs3Myw3IEBAIHN0cnVjdCBpcF92c19zaF9zdGF0ZSB7XG4gc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbiBcdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNjPSAwIHx8XG4tXHQgICAgICAgZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuJiM0MztcdCAgICAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuIH1cbiBcbiAvKlxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXG5pbmRleCBkYmI3ZjVmZDQ2ODhhNC4uMzVmYTRjNmRjNWNmNGMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXG5AQCAtNTIsNyAmIzQzOzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXG4gXHQvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xuJiM0MztcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkpIHtcbiBcdFx0XHR3ZWlnaHQgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG4gXHRcdFx0aWYgKHdlaWdodCBcdTAwM2UgMCkge1xuIFx0XHRcdFx0dG90YWxfd2VpZ2h0ICYjNDM7PSB3ZWlnaHQ7XG5AQCAtNzUsNyAmIzQzOzc1LDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXG4gXHQvKiBQaWNrIHR3byB3ZWlnaHRlZCBzZXJ2ZXJzICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHR3ZWlnaHQgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXG5pbmRleCA5ZGE0NDVjYTA5YTE0Yy4uYzJkMDlhYzk2ZmU4NGMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xuQEAgLTQ3LDcgJiM0Mzs0Nyw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChsZWFzdCk7XG5AQCAtNjIsNyAmIzQzOzYyLDcgQEAgaXBfdnNfd2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbiBcdFx0aWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXG5pbmRleCAyZGNmZjEwNDBkYTUyMS4uZjIxYTc1Mjg0OTcxZTUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xuQEAgLTE3Niw3ICYjNDM7MTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlPSBtYXJrLVx1MDAzZWN3KVxuIFx0XHRcdFx0Z290byBmb3VuZDtcbiBcdFx0XHRpZiAoZGVzdCA9PSBzdG9wKVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXG5pbmRleCBjZTU0MmVkNGIwMTNjOC4uMzdiOTY3MWU0OTYwMDEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXG5AQCAtMzUxLDcgJiM0MzszNTEsNyBAQCBfX2lwX3ZzX2dldF9vdXRfcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICogc3RvcmVkIGluIGRlc3RfdHJhc2guXG4gXHRcdFx0ICovXG4gXHRcdFx0aWYgKCFydF9kZXZfaXNfZG93bihkc3RfZGV2X3JjdShcdTAwMjZydC1cdTAwM2Vkc3QpKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcbiYjNDM7XHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIDApO1xuIFx0XHRcdGVsc2VcbiBcdFx0XHRcdG5vcmVmID0gMDtcbkBAIC01MzAsNyAmIzQzOzUzMCw3IEBAIF9faXBfdnNfZ2V0X291dF9ydF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgKiBzdG9yZWQgaW4gZGVzdF90cmFzaC5cbiBcdFx0XHQgKi9cbiBcdFx0XHRpZiAoIXJ0X2Rldl9pc19kb3duKGRzdF9kZXZfcmN1KFx1MDAyNnJ0LVx1MDAzZWRzdCkpIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuJiM0MztcdFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4gXHRcdFx0XHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFx1MDAyNnJ0LVx1MDAzZWRzdCwgY29va2llKTtcbiBcdFx0XHRlbHNlXG4gXHRcdFx0XHRub3JlZiA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OywKICAgICYjMzQ7SVBfVlNfUFJPVE9fVENQJiMzNDssCiAgICAmIzM0O0lQX1ZTX1BST1RPX1VEUCYjMzQ7LAogICAgJiMzNDtJUF9WU19SUiYjMzQ7LAogICAgJiMzNDtJUF9WU19XUlImIzM0OywKICAgICYjMzQ7SVBfVlNfTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfV0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0ZPJiMzNDssCiAgICAmIzM0O0lQX1ZTX09WRiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0RIJiMzNDssCiAgICAmIzM0O0lQX1ZTX1NIJiMzNDssCiAgICAmIzM0O0lQX1ZTX01IJiMzNDssCiAgICAmIzM0O0lQX1ZTX1NFRCYjMzQ7LAogICAgJiMzNDtJUF9WU19OUSYjMzQ7LAogICAgJiMzNDtJUF9WU19UV09TJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfZGhfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfZm9fc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2xibGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjcl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19taF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19ucV9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19vdmZfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfcnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfc2VkX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3R3b3Nfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfd2xjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dycl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VwZGF0ZV9kZXN0JiMzNDssCiAgICAmIzM0O19faXBfdnNfdW5saW5rX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX3VuYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2NoZWNrX3RlbXBsYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGRlc3QtXHUwMDNlZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgdXBkYXRlcyBhbGwgYml0d2lzZSBvcGVyYXRpb25zIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY19vcmAsIGBhdG9taWNfYW5kYCwgYGF0b21pY19yZWFkYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIHBvdGVudGlhbCBkYXRhIHJhY2VzIGluIHRoZSBJUFZTIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGhvdyBkZXN0aW5hdGlvbiBmbGFncyBsaWtlIGBJUF9WU19ERVNUX0ZfT1ZFUkxPQURgIGFuZCBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgY29uY3VycmVudGx5IGJ5IHZhcmlvdXMgc2NoZWR1bGVycyBhbmQgY29udHJvbCBwYXRocy4gRnV6emluZyB0aGUgSVBWUyBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIGF0b21pYyBvcGVyYXRpb25zIGFyZSBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkwMGQwMjQzODdjNjgyOWQwN2JmYmRiMjU3YTVmMTIzZDQyZDQzYzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCA4IDE2OjQ5OjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmgKaW5kZXggNDkyOTdmZWM0NDhhODIuLmJiOTY5NzM4ZWQ3MzI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pcF92cy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2lwX3ZzLmgKQEAgLTk3Miw3ICYjNDM7OTcyLDcgQEAgc3RydWN0IGlwX3ZzX2Rlc3QgewogCXUxNgkJCWFmOwkJLyogYWRkcmVzcyBmYW1pbHkgKi8KIAlfX2JlMTYJCQlwb3J0OwkJLyogcG9ydCBudW1iZXIgb2YgdGhlIHNlcnZlciAqLwogCXVuaW9uIG5mX2luZXRfYWRkcglhZGRyOwkJLyogSVAgYWRkcmVzcyBvZiB0aGUgc2VydmVyICovCi0Jdm9sYXRpbGUgdW5zaWduZWQgaW50CWZsYWdzOwkJLyogZGVzdCBzdGF0dXMgZmxhZ3MgKi8KJiM0MzsJYXRvbWljX3QJCWZsYWdzOwkJLyogZGVzdCBzdGF0dXMgZmxhZ3MgKi8KIAlhdG9taWNfdAkJY29ubl9mbGFnczsJLyogZmxhZ3MgdG8gY29weSB0byBjb25uICovCiAJYXRvbWljX3QJCXdlaWdodDsJCS8qIHNlcnZlciB3ZWlnaHQgKi8KIAlhdG9taWNfdAkJbGFzdF93ZWlnaHQ7CS8qIHNlcnZlciBsYXRlc3Qgd2VpZ2h0ICovCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwppbmRleCBjYjM2NjQxZjhkMWNjMS4uNTM5ZjYwM2YzOGI3NDUgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwpAQCAtMTA1NSw3ICYjNDM7MTA1NSw3IEBAIGlwX3ZzX2JpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQogCiAJaWYgKGRlc3QtJmd0O3VfdGhyZXNob2xkICE9IDAgJmFtcDsmYW1wOwogCSAgICBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgJmd0Oz0gZGVzdC0mZ3Q7dV90aHJlc2hvbGQpCi0JCWRlc3QtJmd0O2ZsYWdzIHw9IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKJiM0MzsJCWF0b21pY19vcihJUF9WU19ERVNUX0ZfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpOwogfQogCiAKQEAgLTExNTEsMTMgJiM0MzsxMTUxLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c191bmJpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApCiAKIAlpZiAoZGVzdC0mZ3Q7bF90aHJlc2hvbGQgIT0gMCkgewogCQlpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICZsdDsgZGVzdC0mZ3Q7bF90aHJlc2hvbGQpCi0JCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKJiM0MzsJCQlhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpOwogCX0gZWxzZSBpZiAoZGVzdC0mZ3Q7dV90aHJlc2hvbGQgIT0gMCkgewogCQlpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICogNCAmbHQ7IGRlc3QtJmd0O3VfdGhyZXNob2xkICogMykKLQkJCWRlc3QtJmd0O2ZsYWdzICZhbXA7PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwkJCWF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFncyk7CiAJfSBlbHNlIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKLQkJCWRlc3QtJmd0O2ZsYWdzICZhbXA7PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCQlhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpOwogCX0KIAogCWlwX3ZzX2Rlc3RfcHV0KGRlc3QpOwpAQCAtMTE4OCw3ICYjNDM7MTE4OCw3IEBAIGludCBpcF92c19jaGVja190ZW1wbGF0ZShzdHJ1Y3QgaXBfdnNfY29ubiAqY3QsIHN0cnVjdCBpcF92c19kZXN0ICpjZGVzdCkKIAkgKiBDaGVja2luZyB0aGUgZGVzdCBzZXJ2ZXIgc3RhdHVzLgogCSAqLwogCWlmICgoZGVzdCA9PSBOVUxMKSB8fAotCSAgICAhKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8CiYjNDM7CSAgICAhKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8CiAJICAgIGV4cGlyZV9xdWllc2NlbnRfdGVtcGxhdGUoaXB2cywgZGVzdCkgfHwKIAkgICAgKGNkZXN0ICZhbXA7JmFtcDsgKGRlc3QgIT0gY2Rlc3QpKSkgewogCQlJUF9WU19EQkdfQlVGKDksICYjMzQ7Y2hlY2tfdGVtcGxhdGU6IGRlc3Qgbm90IGF2YWlsYWJsZSBmb3IgJiMzNDsKQEAgLTE5MjksNyAmIzQzOzE5MjksNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cykKIAkJCWNwID0gaXBfdnNfaG4wX3RvX2Nvbm4oaG4pOwogCQkJcmVzY2hlZF9zY29yZSYjNDM7JiM0Mzs7CiAJCQlkZXN0ID0gY3AtJmd0O2Rlc3Q7Ci0JCQlpZiAoIWRlc3QgfHwgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKQomIzQzOwkJCWlmICghZGVzdCB8fCAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpCiAJCQkJY29udGludWU7CiAKIAkJCWlmIChhdG9taWNfcmVhZCgmYW1wO2NwLSZndDtuX2NvbnRyb2wpKQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKaW5kZXggZDQwYjQwNGMxYmY2NDYuLmNhNzc4OTM3ZmFjZjM5IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKQEAgLTMwMiw3ICYjNDM7MzAyLDcgQEAgaXBfdnNfaW5fc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtJmd0O2Rlc3Q7CiAJc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBjcC0mZ3Q7aXB2czsKIAotCWlmIChkZXN0ICZhbXA7JmFtcDsgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CWlmIChkZXN0ICZhbXA7JmFtcDsgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiAJCXN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7CiAJCXN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7CiAKQEAgLTMzOCw3ICYjNDM7MzM4LDcgQEAgaXBfdnNfb3V0X3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLSZndDtkZXN0OwogCXN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtJmd0O2lwdnM7CiAKLQlpZiAoZGVzdCAmYW1wOyZhbXA7IChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewomIzQzOwlpZiAoZGVzdCAmYW1wOyZhbXA7IChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewogCQlzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzOwogCQlzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjOwogCkBAIC0yMjA0LDcgJiM0MzsyMjA0LDcgQEAgaXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUKIAl9CiAKIAkvKiBDaGVjayB0aGUgc2VydmVyIHN0YXR1cyAqLwotCWlmIChjcCAmYW1wOyZhbXA7IGNwLSZndDtkZXN0ICZhbXA7JmFtcDsgIShjcC0mZ3Q7ZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKJiM0MzsJaWYgKGNwICZhbXA7JmFtcDsgY3AtJmd0O2Rlc3QgJmFtcDsmYW1wOyAhKGF0b21pY19yZWFkKCZhbXA7Y3AtJmd0O2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewogCQkvKiB0aGUgZGVzdGluYXRpb24gc2VydmVyIGlzIG5vdCBhdmFpbGFibGUgKi8KIAkJaWYgKHN5c2N0bF9leHBpcmVfbm9kZXN0X2Nvbm4oaXB2cykpIHsKIAkJCWJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKaW5kZXggYmNmNDBiOGM0MWNmMjYuLjY4NWIyNjc1YjZlMDNhIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCkBAIC0xMzY4LDEwICYjNDM7MTM2OCwxMCBAQCBfX2lwX3ZzX3VwZGF0ZV9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LAogCX0KIAogCS8qIHNldCB0aGUgZGVzdCBzdGF0dXMgZmxhZ3MgKi8KLQlkZXN0LSZndDtmbGFncyB8PSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFOwomIzQzOwlhdG9taWNfb3IoSVBfVlNfREVTVF9GX0FWQUlMQUJMRSwgJmFtcDtkZXN0LSZndDtmbGFncyk7CiAKIAlpZiAodWRlc3QtJmd0O3VfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtJmd0O3VfdGhyZXNob2xkICZndDsgZGVzdC0mZ3Q7dV90aHJlc2hvbGQpCi0JCWRlc3QtJmd0O2ZsYWdzICZhbXA7PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwkJYXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzKTsKIAlkZXN0LSZndDt1X3RocmVzaG9sZCA9IHVkZXN0LSZndDt1X3RocmVzaG9sZDsKIAlkZXN0LSZndDtsX3RocmVzaG9sZCA9IHVkZXN0LSZndDtsX3RocmVzaG9sZDsKIApAQCAtMTYxMyw3ICYjNDM7MTYxMyw3IEBAIHN0YXRpYyB2b2lkIF9faXBfdnNfdW5saW5rX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywKIAkJCQlzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwKIAkJCQlpbnQgc3ZjdXBkKQogewotCWRlc3QtJmd0O2ZsYWdzICZhbXA7PSB+SVBfVlNfREVTVF9GX0FWQUlMQUJMRTsKJiM0MzsJYXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX0FWQUlMQUJMRSwgJmFtcDtkZXN0LSZndDtmbGFncyk7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtkZXN0LSZndDtkc3RfbG9jayk7CiAJX19pcF92c19kc3RfY2FjaGVfcmVzZXQoZGVzdCk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jCmluZGV4IGUxZjYyZjZiMjVlMjExLi44MjQ5MmU4MjRmMDI2MSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMKQEAgLTIwMSw3ICYjNDM7MjAxLDcgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywKICAqLwogc3RhdGljIGlubGluZSBpbnQgaXNfb3ZlcmxvYWRlZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIHsKLQlyZXR1cm4gZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwlyZXR1cm4gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEOwogfQogCiAKQEAgLTIxOSwxMCAmIzQzOzIxOSwxMCBAQCBpcF92c19kaF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJcyA9IChzdHJ1Y3QgaXBfdnNfZGhfc3RhdGUgKikgc3ZjLSZndDtzY2hlZF9kYXRhOwogCWRlc3QgPSBpcF92c19kaF9nZXQoc3ZjLSZndDthZiwgcywgJmFtcDtpcGgtJmd0O2RhZGRyKTsKLQlpZiAoIWRlc3QKLQkgICAgfHwgIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKQotCSAgICB8fCBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmx0Oz0gMAotCSAgICB8fCBpc19vdmVybG9hZGVkKGRlc3QpKSB7CiYjNDM7CWlmICghZGVzdCB8fAomIzQzOwkgICAgIShhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fAomIzQzOwkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZsdDs9IDAgfHwKJiM0MzsJICAgIGlzX292ZXJsb2FkZWQoZGVzdCkpIHsKIAkJaXBfdnNfc2NoZWR1bGVyX2VycihzdmMsICYjMzQ7bm8gZGVzdGluYXRpb24gYXZhaWxhYmxlJiMzNDspOwogCQlyZXR1cm4gTlVMTDsKIAl9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jCmluZGV4IGQ2NTdiNDdjNjUxMWZmLi41MjMxZTUxOGMwN2MwMyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmMKQEAgLTI5LDcgJiM0MzsyOSw3IEBAIGlwX3ZzX2ZvX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJICogRmluZCB2aXJ0dWFsIHNlcnZlciB3aXRoIGhpZ2hlc3Qgd2VpZ2h0IGFuZCBzZW5kIGl0IHRyYWZmaWMKIAkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKLQkJaWYgKCEoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiYjNDM7CQlpZiAoIShhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpICZhbXA7JmFtcDsKIAkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IGh3KSB7CiAJCQlod2VpZ2h0ID0gZGVzdDsKIAkJCWh3ID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKaW5kZXggMTVjY2IyYjJmYTFmNGEuLmQyZWI1ZGRhNWI2ODZmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKQEAgLTQxNCw3ICYjNDM7NDE0LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpCiAJICogbmV3IGNvbm5lY3Rpb24uCiAJICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQogCQkJY29udGludWU7CiAJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CiAJCQlsZWFzdCA9IGRlc3Q7CkBAIC00MjksNyAmIzQzOzQyOSw3IEBAIF9faXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKQogCSAqLwogICBuZXh0c3RhZ2U6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQogCQkJY29udGludWU7CiAKIAkJZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpOwpAQCAtNTAyLDcgJiM0Mzs1MDIsNyBAQCBpcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJCSAqLwogCiAJCWRlc3QgPSBlbi0mZ3Q7ZGVzdDsKLQkJaWYgKChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSAmYW1wOyZhbXA7CiYjNDM7CQlpZiAoKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpICZhbXA7JmFtcDsKIAkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IDAgJmFtcDsmYW1wOyAhaXNfb3ZlcmxvYWRlZChkZXN0LCBzdmMpKQogCQkJZ290byBvdXQ7CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYwppbmRleCBjOTBlYTg5N2MzZjc1Ni4uNDhmMDI0NTNhNWJlNDkgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCkBAIC0xNjYsMTEgJiM0MzsxNjYsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KQogCS8qIHNlbGVjdCB0aGUgZmlyc3QgZGVzdGluYXRpb24gc2VydmVyLCB3aG9zZSB3ZWlnaHQgJmd0OyAwICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZSwgJmFtcDtzZXQtJmd0O2xpc3QsIGxpc3QpIHsKIAkJbGVhc3QgPSBlLSZndDtkZXN0OwotCQlpZiAobGVhc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2xlYXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQogCQkJY29udGludWU7CiAKLQkJaWYgKChhdG9taWNfcmVhZCgmYW1wO2xlYXN0LSZndDt3ZWlnaHQpICZndDsgMCkKLQkJICAgICZhbXA7JmFtcDsgKGxlYXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewomIzQzOwkJaWYgKChhdG9taWNfcmVhZCgmYW1wO2xlYXN0LSZndDt3ZWlnaHQpICZndDsgMCkgJmFtcDsmYW1wOwomIzQzOwkJICAgIChhdG9taWNfcmVhZCgmYW1wO2xlYXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKIAkJCWxvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChsZWFzdCk7CiAJCQlnb3RvIG5leHRzdGFnZTsKIAkJfQpAQCAtMTgxLDEzICYjNDM7MTgxLDEzIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCkKICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGUsICZhbXA7c2V0LSZndDtsaXN0LCBsaXN0KSB7CiAJCWRlc3QgPSBlLSZndDtkZXN0OwotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKIAkJaWYgKCgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsKLQkJICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7d2VpZ2h0KSkKLQkJICAgICZhbXA7JmFtcDsgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CQkgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZCgmYW1wO2xlYXN0LSZndDt3ZWlnaHQpKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiAJCQlsZWFzdCA9IGRlc3Q7CiAJCQlsb2ggPSBkb2g7CiAJCX0KQEAgLTU3Nyw3ICYjNDM7NTc3LDcgQEAgX19pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKQogCSAqIG5ldyBjb25uZWN0aW9uLgogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CkBAIC01OTMsNyAmIzQzOzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YykKIAkgKi8KICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMKaW5kZXggMzhjYzM4YzVkOGJiZDkuLjZhY2IzYzkwNGFmNTdlIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYwpAQCAtMzgsNyAmIzQzOzM4LDcgQEAgaXBfdnNfbGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHwKJiM0MzsJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fAogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpID09IDApCiAJCQljb250aW51ZTsKIAkJZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYwppbmRleCAwMjA4NjMwNDc1NjJkMy4uYzMyMmVkMTc1NGI3ZjYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jCkBAIC04MCw3ICYjNDM7ODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLAogc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQogewogCXJldHVybiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmx0Oz0gMCB8fAotCSAgICAgICBkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CSAgICAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiB9CiAKIC8qIFJldHVybnMgaGFzaCB2YWx1ZSBmb3IgSVBWUyBNSCBlbnRyeSAqLwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYwppbmRleCBhZGExNThjNjEwY2UxMS4uZmZhNGJmZWIyMWQ5ZDcgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jCkBAIC03Miw3ICYjNDM7NzIsNyBAQCBpcF92c19ucV9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7CiAKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fAomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fAogCQkgICAgIWF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSkKIAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMKaW5kZXggYzVjNjdkZjgwYTBiM2MuLmY3ZjE3ZGRkYmIwNWE1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jCkBAIC0zMyw3ICYjNDM7MzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewogCQl3ID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpOwotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHwKJiM0MzsJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fAogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucykgJmd0OyB3IHx8CiAJCSAgICB3ID09IDApCiAJCQljb250aW51ZTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMKaW5kZXggNDEyNWVlNTYxY2RjMzYuLjk4NDUzZDIwNWQ2ZmFkIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuYwpAQCAtNjYsNyAmIzQzOzY2LDcgQEAgaXBfdnNfcnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwKIAkJCQkJCSAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLAogCQkJCQkJIG5fbGlzdCkgewotCQkJaWYgKCEoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiYjNDM7CQkJaWYgKCEoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiAJCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkKIAkJCQkvKiBISVQgKi8KIAkJCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYwppbmRleCAyNDVhMzIzYzg0Y2QzMi4uMDI0OTA2MmQxMzYwNTcgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmMKQEAgLTc1LDcgJiM0Mzs3NSw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmICghKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwomIzQzOwkJaWYgKCEoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiAJCSAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CiAJCQlsZWFzdCA9IGRlc3Q7CiAJCQlsb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChsZWFzdCk7CkBAIC05MCw3ICYjNDM7OTAsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCQlkb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChkZXN0KTsKIAkJaWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYwppbmRleCBjZDY3MDY2ZTNiMjYxMi4uMzQzNzgwYjgyYzk1ZjEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jCkBAIC03Myw3ICYjNDM7NzMsNyBAQCBzdHJ1Y3QgaXBfdnNfc2hfc3RhdGUgewogc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQogewogCXJldHVybiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmx0Oz0gMCB8fAotCSAgICAgICBkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CSAgICAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYwppbmRleCBkYmI3ZjVmZDQ2ODhhNC4uMzVmYTRjNmRjNWNmNGMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYwpAQCAtNTIsNyAmIzQzOzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAKIAkvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmICghKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkpIHsKJiM0MzsJCWlmICghKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkpIHsKIAkJCXdlaWdodCA9IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KTsKIAkJCWlmICh3ZWlnaHQgJmd0OyAwKSB7CiAJCQkJdG90YWxfd2VpZ2h0ICYjNDM7PSB3ZWlnaHQ7CkBAIC03NSw3ICYjNDM7NzUsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywKIAogCS8qIFBpY2sgdHdvIHdlaWdodGVkIHNlcnZlcnMgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiAJCQljb250aW51ZTsKIAogCQl3ZWlnaHQgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMKaW5kZXggOWRhNDQ1Y2EwOWExNGMuLmMyZDA5YWM5NmZlODRjIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jCkBAIC00Nyw3ICYjNDM7NDcsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpICZhbXA7JmFtcDsKJiM0MzsJCWlmICghKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkgewogCQkJbGVhc3QgPSBkZXN0OwogCQkJbG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTsKQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogICBuZXh0c3RhZ2U6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQogCQkJY29udGludWU7CiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKIAkJaWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jCmluZGV4IDJkY2ZmMTA0MGRhNTIxLi5mMjFhNzUyODQ5NzFlNSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYwpAQCAtMTc2LDcgJiM0MzsxNzYsNyBAQCBpcF92c193cnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwKIAkJCQkJCSAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLAogCQkJCQkJIG5fbGlzdCkgewotCQkJaWYgKCEoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiYjNDM7CQkJaWYgKCEoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiAJCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDs9IG1hcmstJmd0O2N3KQogCQkJCWdvdG8gZm91bmQ7CiAJCQlpZiAoZGVzdCA9PSBzdG9wKQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMKaW5kZXggY2U1NDJlZDRiMDEzYzguLjM3Yjk2NzFlNDk2MDAxIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMKQEAgLTM1MSw3ICYjNDM7MzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICogc3RvcmVkIGluIGRlc3RfdHJhc2guCiAJCQkgKi8KIAkJCWlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoJmFtcDtydC0mZ3Q7ZHN0KSkgJmFtcDsmYW1wOwotCQkJICAgIGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiYjNDM7CQkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiAJCQkJX19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCAmYW1wO3J0LSZndDtkc3QsIDApOwogCQkJZWxzZQogCQkJCW5vcmVmID0gMDsKQEAgLTUzMCw3ICYjNDM7NTMwLDcgQEAgX19pcF92c19nZXRfb3V0X3J0X3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICogc3RvcmVkIGluIGRlc3RfdHJhc2guCiAJCQkgKi8KIAkJCWlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoJmFtcDtydC0mZ3Q7ZHN0KSkgJmFtcDsmYW1wOwotCQkJICAgIGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiYjNDM7CQkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiAJCQkJX19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCAmYW1wO3J0LSZndDtkc3QsIGNvb2tpZSk7CiAJCQllbHNlCiAJCQkJbm9yZWYgPSAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTU1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVBWUyBGbGFnIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIElQVlMgc3Vic3lzdGVtIGluIG5ldGZpbHRlci4gSXQgc2VlbXMgbGlrZSBzb21lb25lJiMzOTtzIGZpbmFsbHkgZG9uZSB0aGUgcmlnaHQgdGhpbmcgYW5kIGNoYW5nZWQgdGhlIGBkZXN0LSZndDtmbGFnc2AgZmllbGQgaW4gYHN0cnVjdCBpcF92c19kZXN0YCBmcm9tIGEgcGxhaW4gYHZvbGF0aWxlIHVuc2lnbmVkIGludGAgdG8gYW4gYGF0b21pY190YC4gRXhjZWxsZW50ISBUaGF0JiMzOTtzIGEgaHVnZSBzdGVwIGZvcndhcmQuIFRoZXkmIzM5O3ZlIGFsc28gc3dpdGNoZWQgYWxsIHRoZSBiaXR3aXNlIG9wZXJhdGlvbnMgdG8gdGhlIGFwcHJvcHJpYXRlIGBhdG9taWNfb3JgLCBgYXRvbWljX2FuZGAsIGFuZCBgYXRvbWljX3JlYWRgIGZ1bmN0aW9ucy4gVGhpcyBpcyBhICpzaWduaWZpY2FudCogZnVuY3Rpb25hbCBjaGFuZ2U7IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGZpeGluZyBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzLCBzcGVjaWZpY2FsbHkgZGF0YSByYWNlcywgYnkgdXNpbmcgcHJvcGVyIGF0b21pYyBvcGVyYXRpb25zLiBUaGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBtYWtlcyBtZSByYWlzZSBhbiBleWVicm93IGluIGEgZ29vZCB3YXkuCgpOb3cgdGhhdCB0aGlzIGZvdW5kYXRpb25hbCBjaGFuZ2UgaXMgaW4gcGxhY2UsIHRoaXMgcmVhbGx5IGJlZ3MgdG8gYmUgZnV6emVkLiBDb25jdXJyZW5jeSBidWdzIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gZmluZCwgc28gYSBnb29kIGZ1enppbmcgY2FtcGFpZ24gbWlnaHQgdW5jb3ZlciBzb21lIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgb3IgcHJldmlvdXNseSB1bnNlZW4gaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIHByZXZpb3VzIG5vbi1hdG9taWMgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBhZGQgdGhpcyB0byB0aGUgZnV6emluZyBwaXBlbGluZS4KCkJlZm9yZSBJIGNhbiBkbyBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHksIGhvdyBJUFZTIGlzIGNvbmZpZ3VyZWQuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgY29udHJvbCBpdHMgYWN0aXZhdGlvbiBhbmQgYnVpbGQgb3B0aW9ucy4gSSYjMzk7bGwgc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgbWV0aG9kLCB3aGljaCBpcyB0byBzaW1wbHkgc2VhcmNoIHRocm91Z2ggdGhlIEtjb25maWcgZmlsZXMgZm9yIGFueSBpbnN0YW5jZSBvZiBgSVBfVlNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwYXJ0IG9mIHRoZSBrZXJuZWwgaXMgcHV0IHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzE4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgU2NvcGUgb2YgdGhlIFNjaGVkdWxlciBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlIGlzIGBJUF9WU2AuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgY29yZSBvZiB0aGUgSVAgVmlydHVhbCBTZXJ2ZXIuIEJ1dCwgYmVmb3JlIEkgZGl2ZSBpbnRvIHRlc3RpbmcgdGhlc2UgbW9kaWZpZWQgc2NoZWR1bGVycywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBvdGhlciBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBlbGVtZW50cy4gVGhlc2UgcGF0Y2hlcyBpbXBhY3QgcXVpdGUgYSBmZXcgc2NoZWR1bGVycywgc3BlY2lmaWNhbGx5OiBgaXBfdnNfZGguY2AsIGBpcF92c19mby5jYCwgYGlwX3ZzX2xibGMuY2AsIGBpcF92c19sYmxjci5jYCwgYGlwX3ZzX2xjLmNgLCBgaXBfdnNfbWguY2AsIGBpcF92c19ucS5jYCwgYGlwX3ZzX292Zi5jYCwgYGlwX3ZzX3JyLmNgLCBgaXBfdnNfc2VkLmNgLCBgaXBfdnNfc2guY2AsIGBpcF92c190d29zLmNgLCBgaXBfdnNfd2xjLmNgLCBhbmQgYGlwX3ZzX3dyci5jYC4KCkdpdmVuIHRoYXQsIEkgbmVlZCB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBmb3IgZWFjaCBvZiB0aGVzZSBpbmRpdmlkdWFsIHNjaGVkdWxlcnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgYmFzZXMgY292ZXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlNfLiomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAwOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipRdWljayBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIGxldCBtZSB0YWtlIGEgc3RlcCBiYWNrLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGNvbmZpZ3VyYXRpb24gc3RhdHVzIG9mIGBJUF9WU2Ag4oCTIG9yIG1vcmUgYnJvYWRseSwgdGhlIElQIFZpcnR1YWwgU2VydmVyIGZ1bmN0aW9uYWxpdHkuIE5vIG5lZWQgdG8gc3RhcnQgc2lmdGluZyB0aHJvdWdoIGNvbXBsZXggY29kZSByaWdodCBhd2F5LiBBIHN0cmFpZ2h0Zm9yd2FyZCBncmVwIGlzIGxpa2VseSB0aGUgZmFzdGVzdCByb3V0ZSBoZXJlLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIHRhcmdldCB0aGUgYG5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHNob3VsZCBiZSBkZWZpbmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHdoZXRoZXIgYGNvbmZpZyBJUF9WU2AgKG9yIHJlbGF0ZWQgdmFyaWFibGVzKSBpcyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgYnVpbHQgYXMgYSBtb2R1bGUuIEEgcXVpY2sgY2hlY2sgb2YgdGhhdCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIgSSBuZWVkIHRvIHByb2NlZWQgY29uZmlkZW50bHkuIEkgY2FuIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gdG8gaW5mb3JtIHRoZSByZXN0IG9mIG15IHJlc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15jb25maWcgSVBfVlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ2NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpSaWdodCwgc28gSSBzZWUgYSBgZ3JlcGAgcmVnZXggdGFyZ2V0aW5nIGBeY29uZmlnIElQX1ZTYCBhbmQgaXQmIzM5O3MgcGlja2luZyB1cCBgY29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTYC4gSG1tLCB0aGF0JiMzOTtzIG5vdCBxdWl0ZSB3aGF0IEkgd2FzIGFmdGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpyZWFsbHkqIGNvbnRyb2xsaW5nIHRoZSBjb3JlIElQVlMgZmVhdHVyZXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGRpcmVjdGx5IGludG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIExldCBtZSBlaXRoZXIgcmVhZCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlIG9yIHBlcmZvcm0gYW5vdGhlciBgZ3JlcGAgdGFyZ2V0aW5nIHRoZSBrZXl3b3JkcyBJJiMzOTtkIGV4cGVjdCB0byBiZSBhc3NvY2lhdGVkIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlua2luZyBgdHJpc3RhdGVgIGFuZCBgYm9vbGAgc2hvdWxkIG5hcnJvdyBpdCBkb3duIHNpZ25pZmljYW50bHksIGVzcGVjaWFsbHkgaW4gcHJveGltaXR5IHRvIGBjb25maWcgSVBfVlNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gd2hpY2ggdmFyaWFibGVzIGRyaXZlIHRoZSBkaWZmZXJlbnQgYmVoYXZpb3VycyBhbmQgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIG1pZ2h0IGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteY29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTQ3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byBJUFZTIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIElQVlMgYXJlIHNldCB1cC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgYEtjb25maWdgIGZpbGVzIGFyZSB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIGZvciB0aGlzIGtpbmQgb2YgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGtlcm5lbC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNlYXJjaCBmb3Igb2NjdXJyZW5jZXMgb2YgJiMzNDtjb25maWcgJiMzNDsgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBxdWljayBvdmVydmlldyBvZiB3aGF0JiMzOTtzIGF2YWlsYWJsZSBhbmQgaG93IGl0JiMzOTtzIHN0cnVjdHVyZWQgaW4gdGhlIGJ1aWxkIHN5c3RlbS4gQSBgZ3JlcGAgb24gdGhhdCBmaWxlIGlzIHRoZSBxdWlja2VzdCB3YXkgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCBzZWUgdGhlIGF2YWlsYWJsZSBzeW1ib2xzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteY29uZmlnICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTEwMD1jb25maWdcdElQX1ZTX1BST1RPX0FIXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTA2OmNvbmZpZyAgSVBfVlNfUFJPVE9fU0NUUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA3LVx0Ym9vbCBcJiMzNDtTQ1RQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xNDc9Y29uZmlnXHRJUF9WU19XTENcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNTc6Y29uZmlnICBJUF9WU19GT1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU4LVx0XHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTY2LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTY3OmNvbmZpZyAgSVBfVlNfT1ZGXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNjgtXHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBvdmVyZmxvdyBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTc4PWNvbmZpZ1x0SVBfVlNfTEJMQ1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE5MS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE5Mjpjb25maWcgIElQX1ZTX0xCTENSXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTMtXHR0cmlzdGF0ZSBcJiMzNDtsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM0NT1jb25maWdcdElQX1ZTX1BFX1NJUFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM1MS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1Mjpjb25maWcgR0NPVl9QUk9GSUxFX0lQVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM1My1cdGJvb2wgXCYjMzQ7RW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBJUFZTXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODI3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSVBWUyBDb25maWd1cmF0aW9uIFNjYW4qKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBpdC4gTXkgaW5pdGlhbCBzY2FuIGhhcyBwaWNrZWQgdXAgb24gYSBoYW5kZnVsIG9mIElQVlMgbG9hZCBiYWxhbmNpbmcgbWV0aG9kcyBhbmQgdGhlaXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zOiBgSVBfVlNfV0xDYCwgYElQX1ZTX0ZPYCwgYElQX1ZTX09WRmAsIGBJUF9WU19MQkxDYCwgYW5kIGBJUF9WU19MQkxDUmAuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBtb3N0IGxvZ2ljYWwgbmV4dCBzdGVwOiBhIGRlZXAgZGl2ZSBpbnRvIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGJlLCBhcyBpdCB3aWxsIHJldmVhbCBhbGwgdGhlIGludHJpY2FjaWVzIG9mIGhvdyB0aGVzZSBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIG9mIGVhY2ggZmxhZywgYXMgd2VsbCBhcyB0aGUgYnVpbGQgcHJvY2Vzcy4gSSB3YW50IHRvIHNlZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyByZWxhdGVkIHRvIHRob3NlIHZhcmlvdXMgSVBWUyBzY2hlZHVsaW5nIGFsZ29yaXRobXMsIGFuZCBwcmVjaXNlbHkgaG93IHRoZXkmIzM5O3JlIGV4cG9zZWQgdG8gdGhlIHVzZXIuIEZyb20gdGhlcmUgSSBjYW4gZGV0ZXJtaW5lIGhvdyBlYWNoIGlzIGVuYWJsZWQgYW5kIHVzZWQsIGFuZCBhbnkgcG9zc2libGUgYXJlYXMgb2YgY29uZmxpY3Qgb3Igb3ZlcmxhcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDE5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50IGRvd246CgoqKkludmVzdGlnYXRpbmcgSVBWUyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgc28gSSB3YXMgaW5pdGlhbGx5IHVzaW5nIGBncmVwYCBhbmQgc3BlY2lmaWVkIGBjb25maWcgSVBfVlNgIHRvIGZpbmQgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBJUFZTLCBidXQgaXQmIzM5O3Mgb25seSByZXR1cm5pbmcgYSBsaW1pdGVkIHN1YnNldDogYGNvbmZpZyBJUF9WU19TSF9UQUJfQklUU2AsIGBjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYYCwgYW5kIGBtZW51Y29uZmlnIElQX1ZTYC4gVGhhdCYjMzk7cyBub3QgcmlnaHQ7IHRoZXJlIGhhdmUgdG8gYmUgbW9yZS4gSSYjMzk7bSB1c2VkIHRvIGRlYWxpbmcgd2l0aCBjb21wbGV4IGtlcm5lbCBjb25maWd1cmF0aW9ucywgc28gc29tZXRoaW5nJiMzOTtzIGNsZWFybHkgdXAgaGVyZS4KCkkmIzM5O20gYmV0dGluZyB0aG9zZSBvdGhlciBvcHRpb25zIGFyZSBuZXN0ZWQsIG1vc3QgbGlrZWx5IGluZGVudGVkIG9yIHBlcmhhcHMgdXNpbmcgdGFicywgd2hpY2ggbXkgaW5pdGlhbCBgZ3JlcGAgY29tbWFuZCBpc24mIzM5O3QgYWNjb3VudGluZyBmb3IuIEkgbmVlZCBhIG1vcmUgZ2VuZXJhbCBzZWFyY2guCgpMZXQmIzM5O3MgdHJ5IGEgYnJvYWRlciBzZWFyY2ggdXNpbmcgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBhY2NvdW50cyBmb3IgdGhhdCBpbmRlbnRhdGlvbi4gSSYjMzk7bGwgc2VhcmNoIGZvciBgY29uZmlnLipJUF9WU2Agd2l0aGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AuIFRoYXQgc2hvdWxkIGNhcHR1cmUgYW55IGBjb25maWdgIGxpbmUgZm9sbG93ZWQgYnkgYW55dGhpbmcgYW5kIHRoZW4gYElQX1ZTYC4gVGhpcyBzaG91bGQgY2F0Y2ggdGhlIG1pc3Npbmcgb25lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnLipJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI3PWlmIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yOC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI5OmNvbmZpZ1x0SVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAtXHRib29sIFwmIzM0O0lQdjYgc3VwcG9ydCBmb3IgSVBWU1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mzg6Y29uZmlnXHRJUF9WU19ERUJVR1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzktXHRib29sIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQ0LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NDU6Y29uZmlnXHRJUF9WU19UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNDYtXHRpbnQgXCYjMzQ7SVBWUyBjb25uZWN0aW9uIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03Nz1jb21tZW50IFwmIzM0O0lQVlMgdHJhbnNwb3J0IHByb3RvY29sIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTc4LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Nzk6Y29uZmlnXHRJUF9WU19QUk9UT19UQ1Bcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtUQ1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTg0LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6ODU6Y29uZmlnXHRJUF9WU19QUk9UT19VRFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTg2LVx0Ym9vbCBcJiMzNDtVRFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTkwLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6OTE6Y29uZmlnXHRJUF9WU19QUk9UT19BSF9FU1Bcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTkyLVx0ZGVmX2Jvb2wgSVBfVlNfUFJPVE9fRVNQIHx8IElQX1ZTX1BST1RPX0FIXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05My1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjk0OmNvbmZpZ1x0SVBfVlNfUFJPVE9fRVNQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05NS1cdGJvb2wgXCYjMzQ7RVNQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05OS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwMDpjb25maWdcdElQX1ZTX1BST1RPX0FIXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O0FIIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDUtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMDY6Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXHRib29sIFwmIzM0O1NDVFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTExMz1jb21tZW50IFwmIzM0O0lQVlMgc2NoZWR1bGVyXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMTQtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMTU6Y29uZmlnXHRJUF9WU19SUlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTE2LVx0dHJpc3RhdGUgXCYjMzQ7cm91bmQtcm9iaW4gc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEyMy0gXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMjQ6Y29uZmlnXHRJUF9WU19XUlJcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEyNS1cdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMzYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMzc6Y29uZmlnXHRJUF9WU19MQ1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTM4LVx0dHJpc3RhdGUgXCYjMzQ7bGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTQ2LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTQ3OmNvbmZpZ1x0SVBfVlNfV0xDXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNDgtXHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNTc6Y29uZmlnICBJUF9WU19GT1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU4LVx0XHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTY2LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTY3OmNvbmZpZyAgSVBfVlNfT1ZGXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNjgtXHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBvdmVyZmxvdyBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTc3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTc4OmNvbmZpZ1x0SVBfVlNfTEJMQ1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTc5LVx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTkyOmNvbmZpZyAgSVBfVlNfTEJMQ1Jcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE5My1cdHRyaXN0YXRlIFwmIzM0O2xvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjA5LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjEwOmNvbmZpZ1x0SVBfVlNfREhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O2Rlc3RpbmF0aW9uIGhhc2hpbmcgc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIxOS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjIyMDpjb25maWdcdElQX1ZTX1NIXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMjEtXHR0cmlzdGF0ZSBcJiMzNDtzb3VyY2UgaGFzaGluZyBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjI5LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjMwOmNvbmZpZ1x0SVBfVlNfTUhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIzMS1cdHRyaXN0YXRlIFwmIzM0O21hZ2xldiBoYXNoaW5nIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNDgtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyNDk6Y29uZmlnXHRJUF9WU19TRURcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI1MC1cdHRyaXN0YXRlIFwmIzM0O3Nob3J0ZXN0IGV4cGVjdGVkIGRlbGF5IHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNjEtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyNjI6Y29uZmlnXHRJUF9WU19OUVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjYzLVx0dHJpc3RhdGUgXCYjMzQ7bmV2ZXIgcXVldWUgc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI3NC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI3NTpjb25maWdcdElQX1ZTX1RXT1Ncbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI3Ni1cdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIHJhbmRvbSB0d29zIGNob2ljZSBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMTk9Y29tbWVudCAmIzM5O0lQVlMgYXBwbGljYXRpb24gaGVscGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyMTpjb25maWdcdElQX1ZTX0ZUUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzIyLVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIGhlbHBlclwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMzNi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMzNzpjb25maWdcdElQX1ZTX05GQ1Rcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMzOC1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDQtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDU6Y29uZmlnXHRJUF9WU19QRV9TSVBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0Ni1cdHRyaXN0YXRlIFwmIzM0O1NJUCBwZXJzaXN0ZW5jZSBlbmdpbmVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4OTEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA4ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgU2VsZWN0aW9uIGZvciB0aGUgSVBWUyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGZvciBmdXp6aW5nLiBGaXJzdCwgSSBuZWVkIHRvIGRlZmluZSB0aGUgY29uZmlndXJhdGlvbnMgdG8gZW5hYmxlLiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGUgZm9sbG93aW5nOiBgSVBfVlNgLCBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLiBJJiMzOTtsbCBhZGQgYWxsIG9mIHRoZXNlIHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCB0byBlbnN1cmUgY29tcHJlaGVuc2l2ZSBjb3ZlcmFnZSBvZiB0aGUgSVBWUyBmZWF0dXJlcy4KCk5vdywgZm9yIHRoZSBjcml0aWNhbCBwYXJ0OiBzZWxlY3RpbmcgdGhlIGtleSBmdW5jdGlvbnMgZm9yIGZvY3VzZWQgZnV6emluZywgdGhlIGBGb2N1c1N5bWJvbHNgLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYSBzaWduaWZpY2FudCBudW1iZXIgb2YgZnVuY3Rpb25zLiBJIG5lZWQgdG8gc3RyYXRlZ2ljYWxseSBwaWNrIHRoZSBvbmVzIHRoYXQgYXJlIG1vc3QgbGlrZWx5IHRvIGV4cG9zZSB2dWxuZXJhYmlsaXRpZXMgcmVsYXRlZCB0byB0aGUgY2hhbmdlcyBpbnRyb2R1Y2VkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgc2NoZWR1bGluZyBmdW5jdGlvbnMgYXMgdGhleSBhcmUgdGhlIGNvcmUgbG9naWMgb2YgZWFjaCBzY2hlZHVsZXIgYW5kIGFyZSBkaXJlY3RseSBpbnRlcmFjdGluZyB3aXRoIHBvdGVudGlhbGx5IG1vZGlmaWVkIGBkZXN0LSZndDtmbGFnc2AuIFRoZXNlIGFyZSBzdHJvbmcgc3RhcnRpbmcgcG9pbnRzLiBBZGRpdGlvbmFsbHksIEkgbmVlZCB0byBpbmNsdWRlIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYW5kIGBfX2lwX3ZzX3VubGlua19kZXN0YCBzaW5jZSB0aGV5JiMzOTtyZSBtb2RpZnlpbmcgdGhlIGZsYWdzLiBBbHNvIGBpcF92c19iaW5kX2Rlc3RgIGFuZCBgaXBfdnNfdW5iaW5kX2Rlc3RgIHdoaWNoIGFyZSBhbHNvIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZy4KCkxldCYjMzk7cyBsaXN0IHRoZW0gb3V0OgpgaXBfdnNfZGhfc2NoZWR1bGVgCmBpcF92c19mb19zY2hlZHVsZWAKYF9faXBfdnNfbGJsY19zY2hlZHVsZWAKYGlwX3ZzX2xibGNfc2NoZWR1bGVgCmBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlYApgaXBfdnNfbGNfc2NoZWR1bGVgCmBpcF92c19ucV9zY2hlZHVsZWAKYGlwX3ZzX292Zl9zY2hlZHVsZWAKYGlwX3ZzX3JyX3NjaGVkdWxlYApgaXBfdnNfc2VkX3NjaGVkdWxlYApgaXBfdnNfdHdvc19zY2hlZHVsZWAKYGlwX3ZzX3dsY19zY2hlZHVsZWAKYGlwX3ZzX3dycl9zY2hlZHVsZWAKYF9faXBfdnNfdXBkYXRlX2Rlc3RgCmBfX2lwX3ZzX3VubGlua19kZXN0YApgaXBfdnNfYmluZF9kZXN0YApgaXBfdnNfdW5iaW5kX2Rlc3RgCgpIb2xkIG9uIGEgbWludXRlLCB0aGVyZSYjMzk7cyBhIHN1YnRsZSBwb2ludCB0byBhZGRyZXNzIHJlZ2FyZGluZyBgaXBfdnNfbWhfc2NoZWR1bGVgIGFuZCBgaXBfdnNfc2hfc2NoZWR1bGVgLiBXaGlsZSB0aGVzZSBzY2hlZHVsZXIgZnVuY3Rpb25zIHRoZW1zZWx2ZXMgYXJlbiYjMzk7dCBkaXJlY3RseSBtb2RpZmllZCwgdGhlIHJlbGF0ZWQgYGlzX3VuYXZhaWxhYmxlYCBmdW5jdGlvbnMgd2l0aGluIGBpcF92c19taC5jYCBhbmQgYGlwX3ZzX3NoLmNgIGFyZS4gSSBuZWVkIHRvIGRlY2lkZSBpZiBJIGluY2x1ZGUgdGhlIHNjaGVkdWxlIGZ1bmN0aW9ucyBhcyB3ZWxsLiBBIHF1aWNrIGNoZWNrIHRvIHNlZSBpZiB0aGV5IGV4aXN0IGlzIGluIG9yZGVyIGJlZm9yZSBwcm9jZWVkaW5nLiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIHRvIGVuc3VyZSBJIGNvdmVyIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIG9yIHJlbGF0ZWQgY29kZSBjaGFuZ2VzIHdpdGhpbiB0aG9zZSBtb2R1bGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19taF9zY2hlZHVsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jPTQ3MD1zdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmM6NDcxOmlwX3ZzX21oX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYy00NzItXHRcdCAgc3RydWN0IGlwX3ZzX2lwaGRyICppcGgpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTA3LS8qIElQVlMgTUggU2NoZWR1bGVyIHN0cnVjdHVyZSAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmM6NTA4OnN0YXRpYyBzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyIGlwX3ZzX21oX3NjaGVkdWxlciA9IHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUwOS1cdC5uYW1lID1cdFx0XHRcJiMzNDttaFwmIzM0Oyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYy01MTEtXHQubW9kdWxlID1cdFx0VEhJU19NT0RVTEUsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYzo1MTI6XHQubl9saXN0XHQgPVx0XHRMSVNUX0hFQURfSU5JVChpcF92c19taF9zY2hlZHVsZXIubl9saXN0KSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUxMy1cdC5pbml0X3NlcnZpY2UgPVx0XHRpcF92c19taF9pbml0X3N2Yyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYy01MTctXHQudXBkX2Rlc3QgPVx0XHRpcF92c19taF9kZXN0X2NoYW5nZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYzo1MTg6XHQuc2NoZWR1bGUgPVx0XHRpcF92c19taF9zY2hlZHVsZSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUxOS19O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jPTUyMT1zdGF0aWMgaW50IF9faW5pdCBpcF92c19taF9pbml0KHZvaWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYy01MjIte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmM6NTIzOlx0cmV0dXJuIHJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19taF9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTI0LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYz01MjY9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX21oX2NsZWFudXAodm9pZClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUyNy17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYzo1Mjg6XHR1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19taF9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTI5LVx0cmN1X2JhcnJpZXIoKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxMzEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgaWYgSSYjMzk7bSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipDb25maXJtaW5nIEV4aXN0ZW5jZSBhbmQgUGxhbm5pbmcgVmVyaWZpY2F0aW9uKioKClllcywgdGhlIGNvbmNlcHRzLCB3aGF0ZXZlciB0aGV5IGFyZSwgZGVmaW5pdGVseSBleGlzdC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGdyb3VuZGVkIGluIHRoYXQgcmVhbGl0eSBmaXJzdC4gT2theSwgbm93IHRoYXQgdGhhdOKAmXMgY29uZmlybWVkLCBJIG5lZWQgdG8gdmVyaWZ5IHNvbWV0aGluZyBzcGVjaWZpYyByZWxhdGVkIHRvIHRoZW0uLi4gTGV0JiMzOTtzIHNlZSwgdGhlIG5leHQgc3RlcCBpcyB0byBjaGVjayBgaXBfdnNfc2hfc2NoZWR1bGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19zaF9zY2hlZHVsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jPTMwNz1zdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmM6MzA4OmlwX3ZzX3NoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zMDktXHRcdCAgc3RydWN0IGlwX3ZzX2lwaGRyICppcGgpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzE3LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmM6MzE4Olx0SVBfVlNfREJHKDYsIFwmIzM0O2lwX3ZzX3NoX3NjaGVkdWxlKCk6IFNjaGVkdWxpbmcuLi5cXG5cJiMzNDspO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzE5LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM0Ni0gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jOjM0NzpzdGF0aWMgc3RydWN0IGlwX3ZzX3NjaGVkdWxlciBpcF92c19zaF9zY2hlZHVsZXIgPVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzQ4LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zNTEtXHQubW9kdWxlID1cdFx0VEhJU19NT0RVTEUsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYzozNTI6XHQubl9saXN0XHQgPVx0XHRMSVNUX0hFQURfSU5JVChpcF92c19zaF9zY2hlZHVsZXIubl9saXN0KSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM1My1cdC5pbml0X3NlcnZpY2UgPVx0XHRpcF92c19zaF9pbml0X3N2Yyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zNTctXHQudXBkX2Rlc3QgPVx0XHRpcF92c19zaF9kZXN0X2NoYW5nZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYzozNTg6XHQuc2NoZWR1bGUgPVx0XHRpcF92c19zaF9zY2hlZHVsZSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM1OS19O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jPTM2Mj1zdGF0aWMgaW50IF9faW5pdCBpcF92c19zaF9pbml0KHZvaWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zNjMte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmM6MzY0Olx0cmV0dXJuIHJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19zaF9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzY1LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYz0zNjg9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX3NoX2NsZWFudXAodm9pZClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM2OS17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYzozNzA6XHR1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19zaF9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzcxLVx0c3luY2hyb25pemVfcmN1KCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDMyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIElQVlMgRnVuY3Rpb25zIGZvciBJbmNsdXNpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBpbmNsdWRpbmcgYGlwX3ZzX3NoX3NjaGVkdWxlYCBhbmQgYGlwX3ZzX21oX3NjaGVkdWxlYC4gTWFrZXMgc2Vuc2UuIE5vdywgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayByZXZpZXcgb2YgdGhlIGF2YWlsYWJsZSBmb2N1cyBzeW1ib2xzLgoKT2theSwgaGVyZSYjMzk7cyB0aGUgZnVsbCBsaXN0OiBgaXBfdnNfZGhfc2NoZWR1bGVgLCBgaXBfdnNfZm9fc2NoZWR1bGVgLCBgX19pcF92c19sYmxjX3NjaGVkdWxlYCwgYGlwX3ZzX2xibGNfc2NoZWR1bGVgLCBgX19pcF92c19sYmxjcl9zY2hlZHVsZWAsIGBpcF92c19sY19zY2hlZHVsZWAsIGBpcF92c19taF9zY2hlZHVsZWAsIGBpcF92c19ucV9zY2hlZHVsZWAsIGBpcF92c19vdmZfc2NoZWR1bGVgLCBgaXBfdnNfcnJfc2NoZWR1bGVgLCBgaXBfdnNfc2VkX3NjaGVkdWxlYCwgYGlwX3ZzX3NoX3NjaGVkdWxlYCwgYGlwX3ZzX3R3b3Nfc2NoZWR1bGVgLCBgaXBfdnNfd2xjX3NjaGVkdWxlYCwgYGlwX3ZzX3dycl9zY2hlZHVsZWAsIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYF9faXBfdnNfdW5saW5rX2Rlc3RgLCBgaXBfdnNfYmluZF9kZXN0YCwgYW5kIGBpcF92c191bmJpbmRfZGVzdGAuCgpOaW5ldGVlbiBmdW5jdGlvbnM/IFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIG51bWJlcjsgdGhlcmUgaXNuJiMzOTt0IGEgaGFyZCBsaW1pdCwgYnV0IGl0JiMzOTtzIGdvb2QgdG8ga2VlcCB0aGluZ3MgY29uY2lzZS4gVGhpbmtpbmcgaXQgdGhyb3VnaC4uLiBgaXBfdnNfYmluZF9kZXN0YCBhbmQgYGlwX3ZzX3VuYmluZF9kZXN0YCBoYW5kbGUgYmluZGluZyBhbmQgdW5iaW5kaW5nIGRlc3RpbmF0aW9ucywgYW5kIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCBhbmQgYF9faXBfdnNfdW5saW5rX2Rlc3RgIGRlYWwgd2l0aCBkZXN0aW5hdGlvbiB1cGRhdGVzIGFuZCB1bmxpbmtpbmcuIFRoZSBgKl9zY2hlZHVsZWAgZnVuY3Rpb25zIGFyZSwgb2YgY291cnNlLCB0aGUga2V5IGNvbm5lY3Rpb24gc2NoZWR1bGluZyBsb2dpYy4gWWVhaCwgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQsIGNvbXByZWhlbnNpdmUgc2V0IG9mIHRhcmdldHMuCgpOb3cgbGV0JiMzOTtzIHJldmlldyB0aGUgZW5hYmxpbmcgY29uZmlnczogYElQX1ZTYCwgYElQX1ZTX1JSYCwgYElQX1ZTX1dSUmAsIGBJUF9WU19MQ2AsIGBJUF9WU19XTENgLCBgSVBfVlNfRk9gLCBgSVBfVlNfT1ZGYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgLCBgSVBfVlNfREhgLCBgSVBfVlNfU0hgLCBgSVBfVlNfTUhgLCBgSVBfVlNfU0VEYCwgYElQX1ZTX05RYCwgYW5kIGBJUF9WU19UV09TYC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBgSVBfVlNgIGl0c2VsZiBpcyBlbm91Z2guIEkga25vdyBpdCBkZXBlbmRzIG9uIGBORVRGSUxURVJgIGFuZCBgTkVUYCwgYnV0IHRob3NlIGFyZSB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdC4gU3RpbGwsIGJldHRlciB0byBjb25maXJtIGFuZCBiZSBzdXJlLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIG9mIGBJUF9WU2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz01PW1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIChORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLPW4pXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI5PWNvbmZpZ1x0SVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAtXHRib29sIFwmIzM0O0lQdjYgc3VwcG9ydCBmb3IgSVBWU1wmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzE6XHRkZXBlbmRzIG9uIElQVjYgPSB5IHx8IElQX1ZTID0gSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzItXHRzZWxlY3QgTkZfREVGUkFHX0lQVjZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMjE9Y29uZmlnXHRJUF9WU19GVFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMi1cdHRyaXN0YXRlIFwmIzM0O0ZUUCBwcm90b2NvbCBoZWxwZXJcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyMzpcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVCBcdTAwMjZcdTAwMjYgXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cdFx0TkZfQ09OTlRSQUNLX0ZUUFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMzNz1jb25maWdcdElQX1ZTX05GQ1Rcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMzOC1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmdcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMzOTpcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDAtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1x0SVBfVlNfUEVfU0lQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDYtXHR0cmlzdGF0ZSBcJiMzNDtTSVAgcGVyc2lzdGVuY2UgZW5naW5lXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDc6XHRkZXBlbmRzIG9uIElQX1ZTX1BST1RPX1VEUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ4Olx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tfU0lQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDktXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzUyPWNvbmZpZyBHQ09WX1BST0ZJTEVfSVBWU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUzLVx0Ym9vbCBcJiMzNDtFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIElQVlNcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1NDpcdGRlcGVuZHMgb24gR0NPVl9LRVJORUxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM1NS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4NTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIFRob3VnaHRzKioKCk9rYXksIHNvIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAgYXJlIHByZXR0eSBtdWNoIGdpdmVucywgc3RhbmRhcmQgY29tcG9uZW50cy4gTm8gbmVlZCB0byBiZWxhYm9yIHRob3NlLiBJJiMzOTtsbCBqdXN0IGZvY3VzIG9uIGBJUF9WU2AgYW5kIHRoZSBzY2hlZHVsZXIgY29uZmlndXJhdGlvbnMuIExldCYjMzk7cyBzZWUuLi4gYmVmb3JlIEkgbW92ZSBvbiwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHNvbWV0aGluZyByZWxhdGVkIHRvIGBJUF9WU19QUk9UT19UQ1BgIGFuZCBgSVBfVlNfUFJPVE9fVURQYC4gVGhvc2UgYXJlIGJvb2xlYW4gb3B0aW9ucywgYW5kIHRoZXkgZGVmYXVsdCB0byAmIzM5O3kmIzM5OywgcmlnaHQ/IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCB0byBiZSBzdXJlIG15IGFzc3VtcHRpb25zIGFyZSBjb3JyZWN0LCBkb24mIzM5O3Qgd2FudCBhbnkgc3VycHJpc2VzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WU19QUk9UT19UQ1AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMTAxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczoKCioqSW52ZXN0aWdhdGluZyBUQ1AgTG9hZCBCYWxhbmNpbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgbWludXRlLiBJIHNlZW0gdG8gcmVjYWxsIGVuY291bnRlcmluZyBzb21ldGhpbmcgcmVsYXRlZCB0byBgSVBfVlNfUFJPVE9fVENQYCBkdXJpbmcgbXkgZWFybGllciByZXZpZXcuIEl0JiMzOTtzIGNydWNpYWwgdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBvZiB0aGlzIHZhcmlhYmxlLiBUaGUgZGV0YWlscyBzdXJyb3VuZGluZyBpdCBhcmUgbmVjZXNzYXJ5IHRvIGFzY2VydGFpbiBpdCYjMzk7cyBzaWduaWZpY2FuY2UuIExldCBtZSBqdXN0IHF1aWNrbHkgdXNlIGBncmVwYCB0byBodW50IGRvd24gd2hlcmUgdGhhdCBwYXJ0aWN1bGFyIHN0cmluZyByZXNpZGVzIGluIHRoZSByZWxldmFudCBjb2RlYmFzZSBvciBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBUQ1AtYmFzZWQgbG9hZCBiYWxhbmNpbmcgc2V0dXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGl0IGFsaWducyB3aXRoIHRoZSBleHBlY3RlZCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9WU19QUk9UT19UQ1AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03Nz1jb21tZW50IFwmIzM0O0lQVlMgdHJhbnNwb3J0IHByb3RvY29sIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTc4LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Nzk6Y29uZmlnXHRJUF9WU19QUk9UT19UQ1Bcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtUQ1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMyMT1jb25maWdcdElQX1ZTX0ZUUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzIyLVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIGhlbHBlclwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIzOlx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19UQ1AgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfTkFUIFx1MDAyNlx1MDAyNiBcXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzI0LVx0XHRORl9DT05OVFJBQ0tfRlRQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTE3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgeW91ciBzdW1tYXJ5OgoKKipXb3JraW5nIFRocm91Z2ggdGhlIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBjb25maWdcdElQX1ZTX1BST1RPX1RDUGAgaGVyZS4gUmlnaHQsIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBmb3IgVENQIHByb3RvY29sIGhhbmRsaW5nIGlzIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyB0byB2ZXJpZnkgdGhlIGRlZmF1bHQgc3RhdGUuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBvZiB0aGUgbnVhbmNlcyB0aGlzIHNldHRpbmcgY291bGQgaW1wYWN0IGRvd25zdHJlYW0sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpdHMgaW5pdGlhbCBiZWhhdmlvci4gSXMgaXQgc2V0IHRvICYjMzQ7eSYjMzQ7IGJ5IGRlZmF1bHQ/IFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lIHVuZGVyc3RhbmRpbmcgSSBuZWVkIGJlZm9yZSBJIGNhbiBhc3Nlc3MgYW55IHBvdGVudGlhbCBtb2RpZmljYXRpb25zIG9yIGNhc2NhZGluZyBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9WU19QUk9UT19UQ1AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03Nz1jb21tZW50IFwmIzM0O0lQVlMgdHJhbnNwb3J0IHByb3RvY29sIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTc4LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Nzk6Y29uZmlnXHRJUF9WU19QUk9UT19UQ1Bcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtUQ1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMyMT1jb25maWdcdElQX1ZTX0ZUUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzIyLVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIGhlbHBlclwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIzOlx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19UQ1AgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfTkFUIFx1MDAyNlx1MDAyNiBcXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzI0LVx0XHRORl9DT05OVFJBQ0tfRlRQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTExCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkFkZGluZyBQcm90b2NvbCBEZWZpbml0aW9ucyBmb3IgUm9idXN0bmVzcyoqCgpBbHJpZ2h0LCBnaXZlbiB0aGUgY29udGV4dCwgSSB0aGluayB0aGUgbW9zdCBzdHJhaWdodGZvcndhcmQgYXBwcm9hY2ggaXMgdG8gYmUgY29tcHJlaGVuc2l2ZSBhbmQgYWRkIGRlZmluaXRpb25zIGZvciBib3RoIGBJUF9WU19QUk9UT19UQ1BgIGFuZCBgSVBfVlNfUFJPVE9fVURQYC4gQmV0dGVyIHRvIGhhdmUgdGhlbSBhbmQgbm90IG5lZWQgdGhlbSB0aGFuIHRoZSBvdGhlciB3YXkgYXJvdW5kLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIG5ldHdvcmsgcHJvdG9jb2xzLiBJdCYjMzk7cyBhIHF1aWNrIGFkZGl0aW9uIGFuZCBlbnN1cmVzIHdlIGhhbmRsZSBib3RoIG1ham9yIHRyYW5zcG9ydCBwcm90b2NvbHMgZXhwbGljaXRseS4KCk5vdywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgY29uZmlybSBteSBhc3N1bXB0aW9ucywgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgSVBfVlNfUFJPVE9fVURQYCBpcyBkZWZpbmVkIGFzIEkgZXhwZWN0LiBObyBwb2ludCBpbiBhc3N1bWluZyBhbnl0aGluZyB3aGVuIGEgcXVpY2sgaW5zcGVjdGlvbiBjYW4gZ2l2ZSBwZWFjZSBvZiBtaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9WU19QUk9UT19VRFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03OT1jb25maWdcdElQX1ZTX1BST1RPX1RDUFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTg0LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6ODU6Y29uZmlnXHRJUF9WU19QUk9UT19VRFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTg2LVx0Ym9vbCBcJiMzNDtVRFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM0NT1jb25maWdcdElQX1ZTX1BFX1NJUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ2LVx0dHJpc3RhdGUgXCYjMzQ7U0lQIHBlcnNpc3RlbmNlIGVuZ2luZVwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19VRFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0OC1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLX1NJUFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM1MQoJCQkJCQkJb3V0cHV0OiA1MjEKCQkJCQkJCXRob3VnaHRzOiA2NzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSVBWUyBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IHdhcyByaWdodCwgSSYjMzk7bGwgYmUgYWRkaW5nIHRob3NlIGNvbmZpZ3VyYXRpb25zLiBOb3csIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb25zIGxpc3RlZCwgaXQmIzM5O3MgY2xlYXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgSVBWUyBtb2R1bGUuIEkgaGF2ZSBhIGdvb2QgaGFuZGxlIG9uIHRob3NlLiBUaGVuIHRoZXJlIGFyZSB0aGUgRm9jdXNTeW1ib2xzLCB0aGUgc2NoZWR1bGluZyBmdW5jdGlvbnMgZm9yIHZhcmlvdXMgYWxnb3JpdGhtcy4gCgpNeSBpbml0aWFsIHRob3VnaHRzIHdlcmUgY29uZmlybWVkLCB0aGUgc2NoZWR1bGVycyB0aGVtc2VsdmVzLCBhbmQgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gZGVzdCB1cGRhdGUgYW5kIGJpbmRpbmcgYXJlIGRlZmluaXRlbHkgdGhlIG1vc3QgaW50ZXJlc3RpbmcgdGFyZ2V0cyBoZXJlLiBJIHdhcyByaWdodCB0byBmb2N1cyBvbiB0aG9zZSBhcmVhcy4gVGhlIHJlYXNvbmluZyBpcyBjbGVhciAtIHRoZSBwYXRjaCBpcyBjcnVjaWFsIGJlY2F1c2UgaXQgY2hhbmdlcyBgZGVzdC0mZ3Q7ZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgcmVwbGFjZXMgYml0d2lzZSBvcGVyYXRpb25zIHdpdGggYXRvbWljIGZ1bmN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGZ1bmRhbWVudGFsIGZpeCBmb3IgcG90ZW50aWFsIGRhdGEgcmFjZXMgd2l0aGluIHRoZSBJUFZTIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCBhZGRyZXNzZXMgaG93IGRlc3RpbmF0aW9uIGZsYWdzIGxpa2UgYElQX1ZTX0RFU1RfRl9PVkVSTE9BRGAgYW5kIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCBhcmUgaGFuZGxlZC4gVGhlc2UgZmxhZ3MgYXJlIGNvbmN1cnJlbnRseSByZWFkIGFuZCB1cGRhdGVkIGJ5IHNjaGVkdWxlcnMgYW5kIGRpZmZlcmVudCBjb250cm9sIHBhdGhzIHdpdGhpbiBJUFZTLgoKU28sIGZ1enppbmcgdGhlIElQVlMgc2NoZWR1bGVycyBpcyBhIE1VU1QuIEFsc28gdGhlIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgZGVzdGluYXRpb24gbWFuYWdlbWVudCwgYW5kIGhvdyBhdG9taWMgb3BlcmF0aW9ucyBhcmUgaGFuZGxlZC4gSXQmIzM5O3MgYWJvdXQgZW5zdXJpbmcgdGhlc2UgY2hhbmdlcyBhcmUgcm9idXN0LCBjb3JyZWN0LCBhbmQgaGF2ZW4mIzM5O3QgaW50cm9kdWNlZCBhbnkgbmV3IHJlZ3Jlc3Npb25zLiBJJiMzOTttIGNvbmZpZGVudCB3ZSYjMzk7dmUgaWRlbnRpZmllZCB0aGUga2V5IGFyZWFzIG9mIGNvbmNlcm4uIEl0IGFsbCBtYWtlcyBwZXJmZWN0IHNlbnNlLCBzbyBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OywKICAgICYjMzQ7SVBfVlNfUFJPVE9fVENQJiMzNDssCiAgICAmIzM0O0lQX1ZTX1BST1RPX1VEUCYjMzQ7LAogICAgJiMzNDtJUF9WU19SUiYjMzQ7LAogICAgJiMzNDtJUF9WU19XUlImIzM0OywKICAgICYjMzQ7SVBfVlNfTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfV0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0ZPJiMzNDssCiAgICAmIzM0O0lQX1ZTX09WRiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0RIJiMzNDssCiAgICAmIzM0O0lQX1ZTX1NIJiMzNDssCiAgICAmIzM0O0lQX1ZTX01IJiMzNDssCiAgICAmIzM0O0lQX1ZTX1NFRCYjMzQ7LAogICAgJiMzNDtJUF9WU19OUSYjMzQ7LAogICAgJiMzNDtJUF9WU19UV09TJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfZGhfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfZm9fc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2xibGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjcl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19taF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19ucV9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19vdmZfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfcnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfc2VkX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3R3b3Nfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfd2xjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dycl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VwZGF0ZV9kZXN0JiMzNDssCiAgICAmIzM0O19faXBfdnNfdW5saW5rX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX3VuYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2NoZWNrX3RlbXBsYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGRlc3QtXHUwMDNlZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgdXBkYXRlcyBhbGwgYml0d2lzZSBvcGVyYXRpb25zIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY19vcmAsIGBhdG9taWNfYW5kYCwgYGF0b21pY19yZWFkYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIHBvdGVudGlhbCBkYXRhIHJhY2VzIGluIHRoZSBJUFZTIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGhvdyBkZXN0aW5hdGlvbiBmbGFncyBsaWtlIGBJUF9WU19ERVNUX0ZfT1ZFUkxPQURgIGFuZCBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgY29uY3VycmVudGx5IGJ5IHZhcmlvdXMgc2NoZWR1bGVycyBhbmQgY29udHJvbCBwYXRocy4gRnV6emluZyB0aGUgSVBWUyBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIGF0b21pYyBvcGVyYXRpb25zIGFyZSBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX1BST1RPX1RDUCYjMzQ7LAogICAgJiMzNDtJUF9WU19QUk9UT19VRFAmIzM0OywKICAgICYjMzQ7SVBfVlNfUlImIzM0OywKICAgICYjMzQ7SVBfVlNfV1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19GTyYjMzQ7LAogICAgJiMzNDtJUF9WU19PVkYmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19TSCYjMzQ7LAogICAgJiMzNDtJUF9WU19NSCYjMzQ7LAogICAgJiMzNDtJUF9WU19TRUQmIzM0OywKICAgICYjMzQ7SVBfVlNfTlEmIzM0OywKICAgICYjMzQ7SVBfVlNfVFdPUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2RoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2ZvX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O19faXBfdnNfbGJsY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sYmxjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O19faXBfdnNfbGJsY3Jfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbWhfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbnFfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfb3ZmX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3JyX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NlZF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19zaF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c190d29zX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dsY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c193cnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c191cGRhdGVfZGVzdCYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VubGlua19kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c191bmJpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGBkZXN0LVx1MDAzZWZsYWdzYCBpbiBgc3RydWN0IGlwX3ZzX2Rlc3RgIHRvIGBhdG9taWNfdGAgYW5kIHVwZGF0ZXMgYWxsIGJpdHdpc2Ugb3BlcmF0aW9ucyB0byB1c2UgYXRvbWljIG9wZXJhdGlvbnMgKGBhdG9taWNfb3JgLCBgYXRvbWljX2FuZGAsIGBhdG9taWNfcmVhZGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBwb3RlbnRpYWwgZGF0YSByYWNlcyBpbiB0aGUgSVBWUyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiBob3cgZGVzdGluYXRpb24gZmxhZ3MgbGlrZSBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCBhbmQgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFyZSByZWFkIGFuZCB1cGRhdGVkIGNvbmN1cnJlbnRseSBieSB2YXJpb3VzIHNjaGVkdWxlcnMgYW5kIGNvbnRyb2wgcGF0aHMuIEZ1enppbmcgdGhlIElQVlMgc2NoZWR1bGVycyBhbmQgZGVzdGluYXRpb24gbWFuYWdlbWVudCBmdW5jdGlvbnMgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSBhdG9taWMgb3BlcmF0aW9ucyBhcmUgY29ycmVjdGx5IGltcGxlbWVudGVkIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTA6MDEuNTY2NzQ0Nzk0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkxNTQzMjk5NTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19QUk9UT19UQ1BcIixcbiAgICBcIklQX1ZTX1BST1RPX1VEUFwiLFxuICAgIFwiSVBfVlNfUlJcIixcbiAgICBcIklQX1ZTX1dSUlwiLFxuICAgIFwiSVBfVlNfTENcIixcbiAgICBcIklQX1ZTX1dMQ1wiLFxuICAgIFwiSVBfVlNfRk9cIixcbiAgICBcIklQX1ZTX09WRlwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19TSFwiLFxuICAgIFwiSVBfVlNfTUhcIixcbiAgICBcIklQX1ZTX1NFRFwiLFxuICAgIFwiSVBfVlNfTlFcIixcbiAgICBcIklQX1ZTX1RXT1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19kaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfZm9fc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiX19pcF92c19sYmxjcl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGNfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX21oX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ucV9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfb3ZmX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ycl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfc2VkX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19zaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfdHdvc19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c193cnJfc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfdXBkYXRlX2Rlc3RcIixcbiAgICBcIl9faXBfdnNfdW5saW5rX2Rlc3RcIixcbiAgICBcImlwX3ZzX2JpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfdW5iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX2NoZWNrX3RlbXBsYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgZGVzdC1cXHUwMDNlZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgdXBkYXRlcyBhbGwgYml0d2lzZSBvcGVyYXRpb25zIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY19vcmAsIGBhdG9taWNfYW5kYCwgYGF0b21pY19yZWFkYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIHBvdGVudGlhbCBkYXRhIHJhY2VzIGluIHRoZSBJUFZTIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGhvdyBkZXN0aW5hdGlvbiBmbGFncyBsaWtlIGBJUF9WU19ERVNUX0ZfT1ZFUkxPQURgIGFuZCBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgY29uY3VycmVudGx5IGJ5IHZhcmlvdXMgc2NoZWR1bGVycyBhbmQgY29udHJvbCBwYXRocy4gRnV6emluZyB0aGUgSVBWUyBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIGF0b21pYyBvcGVyYXRpb25zIGFyZSBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUwOjAxLjU2Njc1NDEyNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg3MzYwNDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTAwZDAyNDM4N2M2ODI5ZDA3YmZiZGIyNTdhNWYxMjNkNDJkNDNjMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDE2OjQ5OjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX3ZzLmggYi9pbmNsdWRlL25ldC9pcF92cy5oXFxuaW5kZXggNDkyOTdmZWM0NDhhODIuLmJiOTY5NzM4ZWQ3MzI1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2lwX3ZzLmhcXG4rKysgYi9pbmNsdWRlL25ldC9pcF92cy5oXFxuQEAgLTk3Miw3ICs5NzIsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XFxuIFxcdHUxNlxcdFxcdFxcdGFmO1xcdFxcdC8qIGFkZHJlc3MgZmFtaWx5ICovXFxuIFxcdF9fYmUxNlxcdFxcdFxcdHBvcnQ7XFx0XFx0LyogcG9ydCBudW1iZXIgb2YgdGhlIHNlcnZlciAqL1xcbiBcXHR1bmlvbiBuZl9pbmV0X2FkZHJcXHRhZGRyO1xcdFxcdC8qIElQIGFkZHJlc3Mgb2YgdGhlIHNlcnZlciAqL1xcbi1cXHR2b2xhdGlsZSB1bnNpZ25lZCBpbnRcXHRmbGFncztcXHRcXHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xcbitcXHRhdG9taWNfdFxcdFxcdGZsYWdzO1xcdFxcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXFxuIFxcdGF0b21pY190XFx0XFx0Y29ubl9mbGFncztcXHQvKiBmbGFncyB0byBjb3B5IHRvIGNvbm4gKi9cXG4gXFx0YXRvbWljX3RcXHRcXHR3ZWlnaHQ7XFx0XFx0Lyogc2VydmVyIHdlaWdodCAqL1xcbiBcXHRhdG9taWNfdFxcdFxcdGxhc3Rfd2VpZ2h0O1xcdC8qIHNlcnZlciBsYXRlc3Qgd2VpZ2h0ICovXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXFxuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjUzOWY2MDNmMzhiNzQ1IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXFxuQEAgLTEwNTUsNyArMTA1NSw3IEBAIGlwX3ZzX2JpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbiBcXG4gXFx0aWYgKGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkICE9IDAgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcXHUwMDNlPSBkZXN0LVxcdTAwM2V1X3RocmVzaG9sZClcXG4tXFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHRcXHRhdG9taWNfb3IoSVBfVlNfREVTVF9GX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpO1xcbiB9XFxuIFxcbiBcXG5AQCAtMTE1MSwxMyArMTE1MSwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbiBcXG4gXFx0aWYgKGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcXG4gXFx0XFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcXHUwMDNjIGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkKVxcbi1cXHRcXHRcXHRkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHRcXHRcXHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncyk7XFxuIFxcdH0gZWxzZSBpZiAoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgIT0gMCkge1xcbiBcXHRcXHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICogNCBcXHUwMDNjIGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkICogMylcXG4tXFx0XFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0XFx0XFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpO1xcbiBcXHR9IGVsc2Uge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuLVxcdFxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRcXHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncyk7XFxuIFxcdH1cXG4gXFxuIFxcdGlwX3ZzX2Rlc3RfcHV0KGRlc3QpO1xcbkBAIC0xMTg4LDcgKzExODgsNyBAQCBpbnQgaXBfdnNfY2hlY2tfdGVtcGxhdGUoc3RydWN0IGlwX3ZzX2Nvbm4gKmN0LCBzdHJ1Y3QgaXBfdnNfZGVzdCAqY2Rlc3QpXFxuIFxcdCAqIENoZWNraW5nIHRoZSBkZXN0IHNlcnZlciBzdGF0dXMuXFxuIFxcdCAqL1xcbiBcXHRpZiAoKGRlc3QgPT0gTlVMTCkgfHxcXG4tXFx0ICAgICEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fFxcbitcXHQgICAgIShhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgfHxcXG4gXFx0ICAgIGV4cGlyZV9xdWllc2NlbnRfdGVtcGxhdGUoaXB2cywgZGVzdCkgfHxcXG4gXFx0ICAgIChjZGVzdCBcXHUwMDI2XFx1MDAyNiAoZGVzdCAhPSBjZGVzdCkpKSB7XFxuIFxcdFxcdElQX1ZTX0RCR19CVUYoOSwgXFxcImNoZWNrX3RlbXBsYXRlOiBkZXN0IG5vdCBhdmFpbGFibGUgZm9yIFxcXCJcXG5AQCAtMTkyOSw3ICsxOTI5LDcgQEAgdm9pZCBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2goc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxuIFxcdFxcdFxcdGNwID0gaXBfdnNfaG4wX3RvX2Nvbm4oaG4pO1xcbiBcXHRcXHRcXHRyZXNjaGVkX3Njb3JlKys7XFxuIFxcdFxcdFxcdGRlc3QgPSBjcC1cXHUwMDNlZGVzdDtcXG4tXFx0XFx0XFx0aWYgKCFkZXN0IHx8IChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKVxcbitcXHRcXHRcXHRpZiAoIWRlc3QgfHwgKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmNwLVxcdTAwM2VuX2NvbnRyb2wpKVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbmluZGV4IGQ0MGI0MDRjMWJmNjQ2Li5jYTc3ODkzN2ZhY2YzOSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbkBAIC0zMDIsNyArMzAyLDcgQEAgaXBfdnNfaW5fc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVxcdTAwM2VkZXN0O1xcbiBcXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVxcdTAwM2VpcHZzO1xcbiBcXG4tXFx0aWYgKGRlc3QgXFx1MDAyNlxcdTAwMjYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4rXFx0aWYgKGRlc3QgXFx1MDAyNlxcdTAwMjYgKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbiBcXHRcXHRzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzO1xcbiBcXHRcXHRzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjO1xcbiBcXG5AQCAtMzM4LDcgKzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtXFx1MDAzZWRlc3Q7XFxuIFxcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtXFx1MDAzZWlwdnM7XFxuIFxcbi1cXHRpZiAoZGVzdCBcXHUwMDI2XFx1MDAyNiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRpZiAoZGVzdCBcXHUwMDI2XFx1MDAyNiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuIFxcdFxcdHN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7XFxuIFxcdFxcdHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7XFxuIFxcbkBAIC0yMjA0LDcgKzIyMDQsNyBAQCBpcF92c19pbl9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZVxcbiBcXHR9XFxuIFxcbiBcXHQvKiBDaGVjayB0aGUgc2VydmVyIHN0YXR1cyAqL1xcbi1cXHRpZiAoY3AgXFx1MDAyNlxcdTAwMjYgY3AtXFx1MDAzZWRlc3QgXFx1MDAyNlxcdTAwMjYgIShjcC1cXHUwMDNlZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRpZiAoY3AgXFx1MDAyNlxcdTAwMjYgY3AtXFx1MDAzZWRlc3QgXFx1MDAyNlxcdTAwMjYgIShhdG9taWNfcmVhZChcXHUwMDI2Y3AtXFx1MDAzZWRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuIFxcdFxcdC8qIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xcbiBcXHRcXHRpZiAoc3lzY3RsX2V4cGlyZV9ub2Rlc3RfY29ubihpcHZzKSkge1xcbiBcXHRcXHRcXHRib29sIG9sZF9jdCA9IGlwX3ZzX2Nvbm5fdXNlc19vbGRfY29ubnRyYWNrKGNwLCBza2IpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjg1YjI2NzViNmUwM2EgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuQEAgLTEzNjgsMTAgKzEzNjgsMTAgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4gXFx0fVxcbiBcXG4gXFx0Lyogc2V0IHRoZSBkZXN0IHN0YXR1cyBmbGFncyAqL1xcbi1cXHRkZXN0LVxcdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xcbitcXHRhdG9taWNfb3IoSVBfVlNfREVTVF9GX0FWQUlMQUJMRSwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKTtcXG4gXFxuIFxcdGlmICh1ZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgPT0gMCB8fCB1ZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgXFx1MDAzZSBkZXN0LVxcdTAwM2V1X3RocmVzaG9sZClcXG4tXFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0XFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCA9IHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZDtcXG4gXFx0ZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQgPSB1ZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQ7XFxuIFxcbkBAIC0xNjEzLDcgKzE2MTMsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LFxcbiBcXHRcXHRcXHRcXHRpbnQgc3ZjdXBkKVxcbiB7XFxuLVxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xcbitcXHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFLCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkZXN0LVxcdTAwM2Vkc3RfbG9jayk7XFxuIFxcdF9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXFxuaW5kZXggZTFmNjJmNmIyNWUyMTEuLjgyNDkyZTgyNGYwMjYxIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcXG5AQCAtMjAxLDcgKzIwMSw3IEBAIHN0YXRpYyBpbnQgaXBfdnNfZGhfZGVzdF9jaGFuZ2VkKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXFxuICAqL1xcbiBzdGF0aWMgaW5saW5lIGludCBpc19vdmVybG9hZGVkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbiB7XFxuLVxcdHJldHVybiBkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuIH1cXG4gXFxuIFxcbkBAIC0yMTksMTAgKzIxOSwxMCBAQCBpcF92c19kaF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gXFx0cyA9IChzdHJ1Y3QgaXBfdnNfZGhfc3RhdGUgKikgc3ZjLVxcdTAwM2VzY2hlZF9kYXRhO1xcbiBcXHRkZXN0ID0gaXBfdnNfZGhfZ2V0KHN2Yy1cXHUwMDNlYWYsIHMsIFxcdTAwMjZpcGgtXFx1MDAzZWRhZGRyKTtcXG4tXFx0aWYgKCFkZXN0XFxuLVxcdCAgICB8fCAhKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcXG4tXFx0ICAgIHx8IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2M9IDBcXG4tXFx0ICAgIHx8IGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcXG4rXFx0aWYgKCFkZXN0IHx8XFxuK1xcdCAgICAhKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fFxcbitcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzYz0gMCB8fFxcbitcXHQgICAgaXNfb3ZlcmxvYWRlZChkZXN0KSkge1xcbiBcXHRcXHRpcF92c19zY2hlZHVsZXJfZXJyKHN2YywgXFxcIm5vIGRlc3RpbmF0aW9uIGF2YWlsYWJsZVxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXFxuaW5kZXggZDY1N2I0N2M2NTExZmYuLjUyMzFlNTE4YzA3YzAzIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcXG5AQCAtMjksNyArMjksNyBAQCBpcF92c19mb19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpY1xcbiBcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdGlmICghKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIGh3KSB7XFxuIFxcdFxcdFxcdGh3ZWlnaHQgPSBkZXN0O1xcbiBcXHRcXHRcXHRodyA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xcbmluZGV4IDE1Y2NiMmIyZmExZjRhLi5kMmViNWRkYTViNjg2ZiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xcbkBAIC00MTQsNyArNDE0LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqIG5ldyBjb25uZWN0aW9uLlxcbiBcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbkBAIC00MjksNyArNDI5LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqL1xcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XFxuQEAgLTUwMiw3ICs1MDIsNyBAQCBpcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdCAqL1xcbiBcXG4gXFx0XFx0ZGVzdCA9IGVuLVxcdTAwM2VkZXN0O1xcbi1cXHRcXHRpZiAoKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0aWYgKChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiAhaXNfb3ZlcmxvYWRlZChkZXN0LCBzdmMpKVxcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuaW5kZXggYzkwZWE4OTdjM2Y3NTYuLjQ4ZjAyNDUzYTViZTQ5IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcXG5AQCAtMTY2LDExICsxNjYsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbiBcXHQvKiBzZWxlY3QgdGhlIGZpcnN0IGRlc3RpbmF0aW9uIHNlcnZlciwgd2hvc2Ugd2VpZ2h0IFxcdTAwM2UgMCAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCBcXHUwMDI2c2V0LVxcdTAwM2VsaXN0LCBsaXN0KSB7XFxuIFxcdFxcdGxlYXN0ID0gZS1cXHUwMDNlZGVzdDtcXG4tXFx0XFx0aWYgKGxlYXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdGlmICgoYXRvbWljX3JlYWQoXFx1MDAyNmxlYXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMClcXG4tXFx0XFx0ICAgIFxcdTAwMjZcXHUwMDI2IChsZWFzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRcXHRpZiAoKGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAoYXRvbWljX3JlYWQoXFx1MDAyNmxlYXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbiBcXHRcXHRcXHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xcbiBcXHRcXHRcXHRnb3RvIG5leHRzdGFnZTtcXG4gXFx0XFx0fVxcbkBAIC0xODEsMTMgKzE4MSwxMyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXFxuICAgbmV4dHN0YWdlOlxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShlLCBcXHUwMDI2c2V0LVxcdTAwM2VsaXN0LCBsaXN0KSB7XFxuIFxcdFxcdGRlc3QgPSBlLVxcdTAwM2VkZXN0O1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcXG4gXFx0XFx0aWYgKCgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZVxcbi1cXHRcXHQgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZChcXHUwMDI2bGVhc3QtXFx1MDAzZXdlaWdodCkpXFxuLVxcdFxcdCAgICBcXHUwMDI2XFx1MDAyNiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRcXHQgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZChcXHUwMDI2bGVhc3QtXFx1MDAzZXdlaWdodCkpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuIFxcdFxcdFxcdGxlYXN0ID0gZGVzdDtcXG4gXFx0XFx0XFx0bG9oID0gZG9oO1xcbiBcXHRcXHR9XFxuQEAgLTU3Nyw3ICs1NzcsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqIG5ldyBjb25uZWN0aW9uLlxcbiBcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZSAwKSB7XFxuQEAgLTU5Myw3ICs1OTMsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqL1xcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcXG5pbmRleCAzOGNjMzhjNWQ4YmJkOS4uNmFjYjNjOTA0YWY1N2UgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xcbkBAIC0zOCw3ICszOCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCAqL1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcXG4rXFx0XFx0aWYgKChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fFxcbiBcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgPT0gMClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xcbmluZGV4IDAyMDg2MzA0NzU2MmQzLi5jMzIyZWQxNzU0YjdmNiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXFxuQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdlbmVyYXRlX2hhc2hfc2VjcmV0KGhzaXBoYXNoX2tleV90ICpoYXNoMSxcXG4gc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbiB7XFxuIFxcdHJldHVybiBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNjPSAwIHx8XFxuLVxcdCAgICAgICBkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0ICAgICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuIH1cXG4gXFxuIC8qIFJldHVybnMgaGFzaCB2YWx1ZSBmb3IgSVBWUyBNSCBlbnRyeSAqL1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXFxuaW5kZXggYWRhMTU4YzYxMGNlMTEuLmZmYTRiZmViMjFkOWQ3IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcXG5AQCAtNzIsNyArNzIsNyBAQCBpcF92c19ucV9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4gXFxuLVxcdFxcdGlmIChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxcbiBcXHRcXHQgICAgIWF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xcbmluZGV4IGM1YzY3ZGY4MGEwYjNjLi5mN2YxN2RkZGJiMDVhNSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcXG5AQCAtMzMsNyArMzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0Ki9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4gXFx0XFx0dyA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbi1cXHRcXHRpZiAoKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fFxcbitcXHRcXHRpZiAoKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpIFxcdTAwM2UgdyB8fFxcbiBcXHRcXHQgICAgdyA9PSAwKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xcbmluZGV4IDQxMjVlZTU2MWNkYzM2Li45ODQ1M2QyMDVkNmZhZCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXFxuQEAgLTY2LDcgKzY2LDcgQEAgaXBfdnNfcnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucyxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IG5fbGlzdCkge1xcbi1cXHRcXHRcXHRpZiAoIShkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0aWYgKCEoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMClcXG4gXFx0XFx0XFx0XFx0LyogSElUICovXFxuIFxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcXG5pbmRleCAyNDVhMzIzYzg0Y2QzMi4uMDI0OTA2MmQxMzYwNTcgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXFxuQEAgLTc1LDcgKzc1LDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCAqL1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdGlmICghKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbiBcXHRcXHRcXHRsb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChsZWFzdCk7XFxuQEAgLTkwLDcgKzkwLDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCAqL1xcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGRvaCA9IGlwX3ZzX3NlZF9kZXN0X292ZXJoZWFkKGRlc3QpO1xcbiBcXHRcXHRpZiAoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xcbmluZGV4IGNkNjcwNjZlM2IyNjEyLi4zNDM3ODBiODJjOTVmMSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXFxuQEAgLTczLDcgKzczLDcgQEAgc3RydWN0IGlwX3ZzX3NoX3N0YXRlIHtcXG4gc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbiB7XFxuIFxcdHJldHVybiBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNjPSAwIHx8XFxuLVxcdCAgICAgICBkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0ICAgICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuIH1cXG4gXFxuIC8qXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXFxuaW5kZXggZGJiN2Y1ZmQ0Njg4YTQuLjM1ZmE0YzZkYzVjZjRjIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXFxuQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXFxuIFxcbiBcXHQvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmICghKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xcbitcXHRcXHRpZiAoIShhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xcbiBcXHRcXHRcXHR3ZWlnaHQgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KTtcXG4gXFx0XFx0XFx0aWYgKHdlaWdodCBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0XFx0dG90YWxfd2VpZ2h0ICs9IHdlaWdodDtcXG5AQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcXG4gXFxuIFxcdC8qIFBpY2sgdHdvIHdlaWdodGVkIHNlcnZlcnMgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHR3ZWlnaHQgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXFxuaW5kZXggOWRhNDQ1Y2EwOWExNGMuLmMyZDA5YWM5NmZlODRjIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xcbkBAIC00Nyw3ICs0Nyw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKi9cXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmICghKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRpZiAoIShhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdFxcdGxlYXN0ID0gZGVzdDtcXG4gXFx0XFx0XFx0bG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTtcXG5AQCAtNjIsNyArNjIsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICovXFxuICAgbmV4dHN0YWdlOlxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbiBcXHRcXHRpZiAoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXFxuaW5kZXggMmRjZmYxMDQwZGE1MjEuLmYyMWE3NTI4NDk3MWU1IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xcbkBAIC0xNzYsNyArMTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBuX2xpc3QpIHtcXG4tXFx0XFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdGlmICghKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlPSBtYXJrLVxcdTAwM2VjdylcXG4gXFx0XFx0XFx0XFx0Z290byBmb3VuZDtcXG4gXFx0XFx0XFx0aWYgKGRlc3QgPT0gc3RvcClcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcXG5pbmRleCBjZTU0MmVkNGIwMTNjOC4uMzdiOTY3MWU0OTYwMDEgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcXG5AQCAtMzUxLDcgKzM1MSw3IEBAIF9faXBfdnNfZ2V0X291dF9ydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICogc3RvcmVkIGluIGRlc3RfdHJhc2guXFxuIFxcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRpZiAoIXJ0X2Rldl9pc19kb3duKGRzdF9kZXZfcmN1KFxcdTAwMjZydC1cXHUwMDNlZHN0KSkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcXG4rXFx0XFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxcbiBcXHRcXHRcXHRcXHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFxcdTAwMjZydC1cXHUwMDNlZHN0LCAwKTtcXG4gXFx0XFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRcXHRub3JlZiA9IDA7XFxuQEAgLTUzMCw3ICs1MzAsNyBAQCBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxcbiBcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0aWYgKCFydF9kZXZfaXNfZG93bihkc3RfZGV2X3JjdShcXHUwMDI2cnQtXFx1MDAzZWRzdCkpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdCAgICBkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXFxuK1xcdFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcXG4gXFx0XFx0XFx0XFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcXHUwMDI2cnQtXFx1MDAzZWRzdCwgY29va2llKTtcXG4gXFx0XFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRcXHRub3JlZiA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUwOjAyLjU1NTE2OTM0OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwNTU0ODYxODYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19QUk9UT19UQ1BcIixcbiAgICBcIklQX1ZTX1BST1RPX1VEUFwiLFxuICAgIFwiSVBfVlNfUlJcIixcbiAgICBcIklQX1ZTX1dSUlwiLFxuICAgIFwiSVBfVlNfTENcIixcbiAgICBcIklQX1ZTX1dMQ1wiLFxuICAgIFwiSVBfVlNfRk9cIixcbiAgICBcIklQX1ZTX09WRlwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19TSFwiLFxuICAgIFwiSVBfVlNfTUhcIixcbiAgICBcIklQX1ZTX1NFRFwiLFxuICAgIFwiSVBfVlNfTlFcIixcbiAgICBcIklQX1ZTX1RXT1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19kaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfZm9fc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiX19pcF92c19sYmxjcl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGNfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX21oX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ucV9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfb3ZmX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ycl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfc2VkX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19zaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfdHdvc19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c193cnJfc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfdXBkYXRlX2Rlc3RcIixcbiAgICBcIl9faXBfdnNfdW5saW5rX2Rlc3RcIixcbiAgICBcImlwX3ZzX2JpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfdW5iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX2NoZWNrX3RlbXBsYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgZGVzdC1cXHUwMDNlZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgdXBkYXRlcyBhbGwgYml0d2lzZSBvcGVyYXRpb25zIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY19vcmAsIGBhdG9taWNfYW5kYCwgYGF0b21pY19yZWFkYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIHBvdGVudGlhbCBkYXRhIHJhY2VzIGluIHRoZSBJUFZTIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGhvdyBkZXN0aW5hdGlvbiBmbGFncyBsaWtlIGBJUF9WU19ERVNUX0ZfT1ZFUkxPQURgIGFuZCBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgY29uY3VycmVudGx5IGJ5IHZhcmlvdXMgc2NoZWR1bGVycyBhbmQgY29udHJvbCBwYXRocy4gRnV6emluZyB0aGUgSVBWUyBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIGF0b21pYyBvcGVyYXRpb25zIGFyZSBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTAwZDAyNDM4N2M2ODI5ZDA3YmZiZGIyNTdhNWYxMjNkNDJkNDNjMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTY6NDk6NTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcF92cy5oIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxuaW5kZXggNDkyOTdmZWM0NDhhODIuLmJiOTY5NzM4ZWQ3MzI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaFxuKysrIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxuQEAgLTk3Miw3ICs5NzIsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XG4gXHR1MTZcdFx0XHRhZjtcdFx0LyogYWRkcmVzcyBmYW1pbHkgKi9cbiBcdF9fYmUxNlx0XHRcdHBvcnQ7XHRcdC8qIHBvcnQgbnVtYmVyIG9mIHRoZSBzZXJ2ZXIgKi9cbiBcdHVuaW9uIG5mX2luZXRfYWRkclx0YWRkcjtcdFx0LyogSVAgYWRkcmVzcyBvZiB0aGUgc2VydmVyICovXG4tXHR2b2xhdGlsZSB1bnNpZ25lZCBpbnRcdGZsYWdzO1x0XHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xuK1x0YXRvbWljX3RcdFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRjb25uX2ZsYWdzO1x0LyogZmxhZ3MgdG8gY29weSB0byBjb25uICovXG4gXHRhdG9taWNfdFx0XHR3ZWlnaHQ7XHRcdC8qIHNlcnZlciB3ZWlnaHQgKi9cbiBcdGF0b21pY190XHRcdGxhc3Rfd2VpZ2h0O1x0Lyogc2VydmVyIGxhdGVzdCB3ZWlnaHQgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjUzOWY2MDNmMzhiNzQ1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTEwNTUsNyArMTA1NSw3IEBAIGlwX3ZzX2JpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFxuIFx0aWYgKGRlc3QtXHUwMDNldV90aHJlc2hvbGQgIT0gMCBcdTAwMjZcdTAwMjZcbiBcdCAgICBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgXHUwMDNlPSBkZXN0LVx1MDAzZXVfdGhyZXNob2xkKVxuLVx0XHRkZXN0LVx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdFx0YXRvbWljX29yKElQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIFxuQEAgLTExNTEsMTMgKzExNTEsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcbiBcbiBcdGlmIChkZXN0LVx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcbiBcdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2MgZGVzdC1cdTAwM2VsX3RocmVzaG9sZClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdFx0XHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpO1xuIFx0fSBlbHNlIGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDApIHtcbiBcdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgXHUwMDNjIGRlc3QtXHUwMDNldV90aHJlc2hvbGQgKiAzKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuK1x0XHRcdGF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFncyk7XG4gXHR9IGVsc2Uge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0XHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFxuIFx0aXBfdnNfZGVzdF9wdXQoZGVzdCk7XG5AQCAtMTE4OCw3ICsxMTg4LDcgQEAgaW50IGlwX3ZzX2NoZWNrX3RlbXBsYXRlKHN0cnVjdCBpcF92c19jb25uICpjdCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmNkZXN0KVxuIFx0ICogQ2hlY2tpbmcgdGhlIGRlc3Qgc2VydmVyIHN0YXR1cy5cbiBcdCAqL1xuIFx0aWYgKChkZXN0ID09IE5VTEwpIHx8XG4tXHQgICAgIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fFxuK1x0ICAgICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4gXHQgICAgZXhwaXJlX3F1aWVzY2VudF90ZW1wbGF0ZShpcHZzLCBkZXN0KSB8fFxuIFx0ICAgIChjZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xuIFx0XHRJUF9WU19EQkdfQlVGKDksIFwiY2hlY2tfdGVtcGxhdGU6IGRlc3Qgbm90IGF2YWlsYWJsZSBmb3IgXCJcbkBAIC0xOTI5LDcgKzE5MjksNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiBcdFx0XHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcbiBcdFx0XHRyZXNjaGVkX3Njb3JlKys7XG4gXHRcdFx0ZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4tXHRcdFx0aWYgKCFkZXN0IHx8IChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcbitcdFx0XHRpZiAoIWRlc3QgfHwgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjcC1cdTAwM2VuX2NvbnRyb2wpKVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5pbmRleCBkNDBiNDA0YzFiZjY0Ni4uY2E3Nzg5MzdmYWNmMzkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMzAyLDcgKzMwMiw3IEBAIGlwX3ZzX2luX3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbiBcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtXHUwMDNlaXB2cztcbiBcbi1cdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdHN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7XG4gXHRcdHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7XG4gXG5AQCAtMzM4LDcgKzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4rXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuIFx0XHRzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzO1xuIFx0XHRzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjO1xuIFxuQEAgLTIyMDQsNyArMjIwNCw3IEBAIGlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlXG4gXHR9XG4gXG4gXHQvKiBDaGVjayB0aGUgc2VydmVyIHN0YXR1cyAqL1xuLVx0aWYgKGNwIFx1MDAyNlx1MDAyNiBjcC1cdTAwM2VkZXN0IFx1MDAyNlx1MDAyNiAhKGNwLVx1MDAzZWRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4rXHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoYXRvbWljX3JlYWQoXHUwMDI2Y3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdC8qIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xuIFx0XHRpZiAoc3lzY3RsX2V4cGlyZV9ub2Rlc3RfY29ubihpcHZzKSkge1xuIFx0XHRcdGJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjg1YjI2NzViNmUwM2EgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuQEAgLTEzNjgsMTAgKzEzNjgsMTAgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbiBcdH1cbiBcbiBcdC8qIHNldCB0aGUgZGVzdCBzdGF0dXMgZmxhZ3MgKi9cbi1cdGRlc3QtXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcbitcdGF0b21pY19vcihJUF9WU19ERVNUX0ZfQVZBSUxBQkxFLCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcbiBcdGlmICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCA9PSAwIHx8IHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIFx1MDAzZSBkZXN0LVx1MDAzZXVfdGhyZXNob2xkKVxuLVx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdGRlc3QtXHUwMDNldV90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZDtcbiBcdGRlc3QtXHUwMDNlbF90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZDtcbiBcbkBAIC0xNjEzLDcgKzE2MTMsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXHRcdFx0XHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbiBcdFx0XHRcdGludCBzdmN1cGQpXG4ge1xuLVx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xuK1x0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX0FWQUlMQUJMRSwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFncyk7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4gXHRfX2lwX3ZzX2RzdF9jYWNoZV9yZXNldChkZXN0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG5pbmRleCBlMWY2MmY2YjI1ZTIxMS4uODI0OTJlODI0ZjAyNjEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbkBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiAgKi9cbiBzdGF0aWMgaW5saW5lIGludCBpc19vdmVybG9hZGVkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbi1cdHJldHVybiBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiB9XG4gXG4gXG5AQCAtMjE5LDEwICsyMTksMTAgQEAgaXBfdnNfZGhfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdHMgPSAoc3RydWN0IGlwX3ZzX2RoX3N0YXRlICopIHN2Yy1cdTAwM2VzY2hlZF9kYXRhO1xuIFx0ZGVzdCA9IGlwX3ZzX2RoX2dldChzdmMtXHUwMDNlYWYsIHMsIFx1MDAyNmlwaC1cdTAwM2VkYWRkcik7XG4tXHRpZiAoIWRlc3Rcbi1cdCAgICB8fCAhKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4tXHQgICAgfHwgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMFxuLVx0ICAgIHx8IGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcbitcdGlmICghZGVzdCB8fFxuK1x0ICAgICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4rXHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMCB8fFxuK1x0ICAgIGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcbiBcdFx0aXBfdnNfc2NoZWR1bGVyX2VycihzdmMsIFwibm8gZGVzdGluYXRpb24gYXZhaWxhYmxlXCIpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXG5pbmRleCBkNjU3YjQ3YzY1MTFmZi4uNTIzMWU1MThjMDdjMDMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcbkBAIC0yOSw3ICsyOSw3IEBAIGlwX3ZzX2ZvX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpY1xuIFx0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbitcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIGh3KSB7XG4gXHRcdFx0aHdlaWdodCA9IGRlc3Q7XG4gXHRcdFx0aHcgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbmluZGV4IDE1Y2NiMmIyZmExZjRhLi5kMmViNWRkYTViNjg2ZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbkBAIC00MTQsNyArNDE0LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKiBuZXcgY29ubmVjdGlvbi5cbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuQEAgLTQyOSw3ICs0MjksNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5AQCAtNTAyLDcgKzUwMiw3IEBAIGlwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ICovXG4gXG4gXHRcdGRlc3QgPSBlbi1cdTAwM2VkZXN0O1xuLVx0XHRpZiAoKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIFx1MDAyNlx1MDAyNlxuK1x0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgIWlzX292ZXJsb2FkZWQoZGVzdCwgc3ZjKSlcbiBcdFx0XHRnb3RvIG91dDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5pbmRleCBjOTBlYTg5N2MzZjc1Ni4uNDhmMDI0NTNhNWJlNDkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbkBAIC0xNjYsMTEgKzE2NiwxMSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG4gXHQvKiBzZWxlY3QgdGhlIGZpcnN0IGRlc3RpbmF0aW9uIHNlcnZlciwgd2hvc2Ugd2VpZ2h0IFx1MDAzZSAwICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCBcdTAwMjZzZXQtXHUwMDNlbGlzdCwgbGlzdCkge1xuIFx0XHRsZWFzdCA9IGUtXHUwMDNlZGVzdDtcbi1cdFx0aWYgKGxlYXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0aWYgKChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKVxuLVx0XHQgICAgXHUwMDI2XHUwMDI2IChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdFx0aWYgKChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTtcbiBcdFx0XHRnb3RvIG5leHRzdGFnZTtcbiBcdFx0fVxuQEAgLTE4MSwxMyArMTgxLDEzIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGUsIFx1MDAyNnNldC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4gXHRcdGRlc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2Vcbi1cdFx0ICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSlcbi1cdFx0ICAgIFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdFx0ICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGRvaDtcbiBcdFx0fVxuQEAgLTU3Nyw3ICs1NzcsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKiBuZXcgY29ubmVjdGlvbi5cbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG5AQCAtNTkzLDcgKzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuaW5kZXggMzhjYzM4YzVkOGJiZDkuLjZhY2IzYzkwNGFmNTdlIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG5AQCAtMzgsNyArMzgsNyBAQCBpcF92c19sY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4rXHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xuaW5kZXggMDIwODYzMDQ3NTYyZDMuLmMzMjJlZDE3NTRiN2Y2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXG5AQCAtODAsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBpc191bmF2YWlsYWJsZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiB7XG4gXHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMCB8fFxuLVx0ICAgICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdCAgICAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuIH1cbiBcbiAvKiBSZXR1cm5zIGhhc2ggdmFsdWUgZm9yIElQVlMgTUggZW50cnkgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXG5pbmRleCBhZGExNThjNjEwY2UxMS4uZmZhNGJmZWIyMWQ5ZDcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcbkBAIC03Miw3ICs3Miw3IEBAIGlwX3ZzX25xX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxuIFx0XHQgICAgIWF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcbmluZGV4IGM1YzY3ZGY4MGEwYjNjLi5mN2YxN2RkZGJiMDVhNSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXG5AQCAtMzMsNyArMzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcdFx0dyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4rXHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpIFx1MDAzZSB3IHx8XG4gXHRcdCAgICB3ID09IDApXG4gXHRcdFx0Y29udGludWU7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xuaW5kZXggNDEyNWVlNTYxY2RjMzYuLjk4NDUzZDIwNWQ2ZmFkIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXG5AQCAtNjYsNyArNjYsNyBAQCBpcF92c19ycl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LFxuIFx0XHRcdFx0XHRcdCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLFxuIFx0XHRcdFx0XHRcdCBuX2xpc3QpIHtcbi1cdFx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuK1x0XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4gXHRcdFx0XHQvKiBISVQgKi9cbiBcdFx0XHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xuaW5kZXggMjQ1YTMyM2M4NGNkMzIuLjAyNDkwNjJkMTM2MDU3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcbkBAIC03NSw3ICs3NSw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbitcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApIHtcbiBcdFx0XHRsZWFzdCA9IGRlc3Q7XG4gXHRcdFx0bG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQobGVhc3QpO1xuQEAgLTkwLDcgKzkwLDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcbmluZGV4IGNkNjcwNjZlM2IyNjEyLi4zNDM3ODBiODJjOTVmMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xuQEAgLTczLDcgKzczLDcgQEAgc3RydWN0IGlwX3ZzX3NoX3N0YXRlIHtcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuIFx0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2M9IDAgfHxcbi1cdCAgICAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHQgICAgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiB9XG4gXG4gLypcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuaW5kZXggZGJiN2Y1ZmQ0Njg4YTQuLjM1ZmE0YzZkYzVjZjRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXG4gXHQvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xuK1x0XHRpZiAoIShhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xuIFx0XHRcdHdlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbiBcdFx0XHRpZiAod2VpZ2h0IFx1MDAzZSAwKSB7XG4gXHRcdFx0XHR0b3RhbF93ZWlnaHQgKz0gd2VpZ2h0O1xuQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXG4gXHQvKiBQaWNrIHR3byB3ZWlnaHRlZCBzZXJ2ZXJzICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHdlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcbmluZGV4IDlkYTQ0NWNhMDlhMTRjLi5jMmQwOWFjOTZmZTg0YyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXG5AQCAtNDcsNyArNDcsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChsZWFzdCk7XG5AQCAtNjIsNyArNjIsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xuaW5kZXggMmRjZmYxMDQwZGE1MjEuLmYyMWE3NTI4NDk3MWU1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcbkBAIC0xNzYsNyArMTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2U9IG1hcmstXHUwMDNlY3cpXG4gXHRcdFx0XHRnb3RvIGZvdW5kO1xuIFx0XHRcdGlmIChkZXN0ID09IHN0b3ApXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbmluZGV4IGNlNTQyZWQ0YjAxM2M4Li4zN2I5NjcxZTQ5NjAwMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbkBAIC0zNTEsNyArMzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4rXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIDApO1xuIFx0XHRcdGVsc2VcbiBcdFx0XHRcdG5vcmVmID0gMDtcbkBAIC01MzAsNyArNTMwLDcgQEAgX19pcF92c19nZXRfb3V0X3J0X3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4rXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIGNvb2tpZSk7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0bm9yZWYgPSAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTA6MDIuNTU1MTczNTI5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTExMzIyMTExNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgRmxhZyBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgSVBWUyBzdWJzeXN0ZW0gaW4gbmV0ZmlsdGVyLiBJdCBzZWVtcyBsaWtlIHNvbWVvbmUncyBmaW5hbGx5IGRvbmUgdGhlIHJpZ2h0IHRoaW5nIGFuZCBjaGFuZ2VkIHRoZSBgZGVzdC1cdTAwM2VmbGFnc2AgZmllbGQgaW4gYHN0cnVjdCBpcF92c19kZXN0YCBmcm9tIGEgcGxhaW4gYHZvbGF0aWxlIHVuc2lnbmVkIGludGAgdG8gYW4gYGF0b21pY190YC4gRXhjZWxsZW50ISBUaGF0J3MgYSBodWdlIHN0ZXAgZm9yd2FyZC4gVGhleSd2ZSBhbHNvIHN3aXRjaGVkIGFsbCB0aGUgYml0d2lzZSBvcGVyYXRpb25zIHRvIHRoZSBhcHByb3ByaWF0ZSBgYXRvbWljX29yYCwgYGF0b21pY19hbmRgLCBhbmQgYGF0b21pY19yZWFkYCBmdW5jdGlvbnMuIFRoaXMgaXMgYSAqc2lnbmlmaWNhbnQqIGZ1bmN0aW9uYWwgY2hhbmdlOyB3ZSdyZSB0YWxraW5nIGFib3V0IGZpeGluZyBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzLCBzcGVjaWZpY2FsbHkgZGF0YSByYWNlcywgYnkgdXNpbmcgcHJvcGVyIGF0b21pYyBvcGVyYXRpb25zLiBUaGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBtYWtlcyBtZSByYWlzZSBhbiBleWVicm93IGluIGEgZ29vZCB3YXkuXG5cbk5vdyB0aGF0IHRoaXMgZm91bmRhdGlvbmFsIGNoYW5nZSBpcyBpbiBwbGFjZSwgdGhpcyByZWFsbHkgYmVncyB0byBiZSBmdXp6ZWQuIENvbmN1cnJlbmN5IGJ1Z3MgYXJlIG5vdG9yaW91c2x5IGRpZmZpY3VsdCB0byBmaW5kLCBzbyBhIGdvb2QgZnV6emluZyBjYW1wYWlnbiBtaWdodCB1bmNvdmVyIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcyBvciBwcmV2aW91c2x5IHVuc2VlbiBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgcHJldmlvdXMgbm9uLWF0b21pYyBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIHRvIGFkZCB0aGlzIHRvIHRoZSBmdXp6aW5nIHBpcGVsaW5lLlxuXG5CZWZvcmUgSSBjYW4gZG8gYW55dGhpbmcgZWxzZSwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5LCBob3cgSVBWUyBpcyBjb25maWd1cmVkLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgY29udHJvbCBpdHMgYWN0aXZhdGlvbiBhbmQgYnVpbGQgb3B0aW9ucy4gSSdsbCBzdGFydCB3aXRoIHRoZSBzdGFuZGFyZCBtZXRob2QsIHdoaWNoIGlzIHRvIHNpbXBseSBzZWFyY2ggdGhyb3VnaCB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYW55IGluc3RhbmNlIG9mIGBJUF9WU2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBhcnQgb2YgdGhlIGtlcm5lbCBpcyBwdXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1NTUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MDowNy42NjgzOTg2MjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNjcyODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MDowNy44MDAwODA3MTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzMyOTU2NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgU2NvcGUgb2YgdGhlIFNjaGVkdWxlciBNb2RpZmljYXRpb25zKipcblxuT2theSwgc28gdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZSBpcyBgSVBfVlNgLiBUaGF0J3MgdGhlIGJhc2VsaW5lLCB0aGUgY29yZSBvZiB0aGUgSVAgVmlydHVhbCBTZXJ2ZXIuIEJ1dCwgYmVmb3JlIEkgZGl2ZSBpbnRvIHRlc3RpbmcgdGhlc2UgbW9kaWZpZWQgc2NoZWR1bGVycywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IG90aGVyIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGVsZW1lbnRzLiBUaGVzZSBwYXRjaGVzIGltcGFjdCBxdWl0ZSBhIGZldyBzY2hlZHVsZXJzLCBzcGVjaWZpY2FsbHk6IGBpcF92c19kaC5jYCwgYGlwX3ZzX2ZvLmNgLCBgaXBfdnNfbGJsYy5jYCwgYGlwX3ZzX2xibGNyLmNgLCBgaXBfdnNfbGMuY2AsIGBpcF92c19taC5jYCwgYGlwX3ZzX25xLmNgLCBgaXBfdnNfb3ZmLmNgLCBgaXBfdnNfcnIuY2AsIGBpcF92c19zZWQuY2AsIGBpcF92c19zaC5jYCwgYGlwX3ZzX3R3b3MuY2AsIGBpcF92c193bGMuY2AsIGFuZCBgaXBfdnNfd3JyLmNgLlxuXG5HaXZlbiB0aGF0LCBJIG5lZWQgdG8gdGhvcm91Z2hseSBleGFtaW5lIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgZm9yIGVhY2ggb2YgdGhlc2UgaW5kaXZpZHVhbCBzY2hlZHVsZXJzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIGJhc2VzIGNvdmVyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzE4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUwOjE3LjEzMzA0MjIwMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODk4NDc0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MDoxNy4yMjIwOTI1NzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDIwNDE5OTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUXVpY2sgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIGxldCBtZSB0YWtlIGEgc3RlcCBiYWNrLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGNvbmZpZ3VyYXRpb24gc3RhdHVzIG9mIGBJUF9WU2Ag4oCTIG9yIG1vcmUgYnJvYWRseSwgdGhlIElQIFZpcnR1YWwgU2VydmVyIGZ1bmN0aW9uYWxpdHkuIE5vIG5lZWQgdG8gc3RhcnQgc2lmdGluZyB0aHJvdWdoIGNvbXBsZXggY29kZSByaWdodCBhd2F5LiBBIHN0cmFpZ2h0Zm9yd2FyZCBncmVwIGlzIGxpa2VseSB0aGUgZmFzdGVzdCByb3V0ZSBoZXJlLiBTcGVjaWZpY2FsbHksIEknbGwgdGFyZ2V0IHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZpbGUuIFRoYXQncyB3aGVyZSB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzaG91bGQgYmUgZGVmaW5lZC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHdoZXRoZXIgYGNvbmZpZyBJUF9WU2AgKG9yIHJlbGF0ZWQgdmFyaWFibGVzKSBpcyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgYnVpbHQgYXMgYSBtb2R1bGUuIEEgcXVpY2sgY2hlY2sgb2YgdGhhdCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIgSSBuZWVkIHRvIHByb2NlZWQgY29uZmlkZW50bHkuIEkgY2FuIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gdG8gaW5mb3JtIHRoZSByZXN0IG9mIG15IHJlc2VhcmNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAwOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUwOjIyLjY0MjUxNzAzN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM5NjkzNDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5jb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MDoyMy45ODIyMTY3NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDY3NDUyOTg1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBJUFZTIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuUmlnaHQsIHNvIEkgc2VlIGEgYGdyZXBgIHJlZ2V4IHRhcmdldGluZyBgXmNvbmZpZyBJUF9WU2AgYW5kIGl0J3MgcGlja2luZyB1cCBgY29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTYC4gSG1tLCB0aGF0J3Mgbm90IHF1aXRlIHdoYXQgSSB3YXMgYWZ0ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyAqcmVhbGx5KiBjb250cm9sbGluZyB0aGUgY29yZSBJUFZTIGZlYXR1cmVzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBkaXJlY3RseSBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLiBMZXQgbWUgZWl0aGVyIHJlYWQgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBvciBwZXJmb3JtIGFub3RoZXIgYGdyZXBgIHRhcmdldGluZyB0aGUga2V5d29yZHMgSSdkIGV4cGVjdCB0byBiZSBhc3NvY2lhdGVkIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlua2luZyBgdHJpc3RhdGVgIGFuZCBgYm9vbGAgc2hvdWxkIG5hcnJvdyBpdCBkb3duIHNpZ25pZmljYW50bHksIGVzcGVjaWFsbHkgaW4gcHJveGltaXR5IHRvIGBjb25maWcgSVBfVlNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gd2hpY2ggdmFyaWFibGVzIGRyaXZlIHRoZSBkaWZmZXJlbnQgYmVoYXZpb3VycyBhbmQgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ2NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjE0LjY1Njc1Mzc5MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMxMTA1NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmNvbmZpZyBJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAnSVBWUyBNSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVxcdGludCBcXFwiSVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjE0Ljc0OTg3NTA3NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODUxMDk3NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIElQVlMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBJUFZTIGFyZSBzZXQgdXAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIExldCdzIHNlZS4uLiB0aGUgYEtjb25maWdgIGZpbGVzIGFyZSB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIGZvciB0aGlzIGtpbmQgb2YgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGtlcm5lbC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2VhcmNoIGZvciBvY2N1cnJlbmNlcyBvZiBcImNvbmZpZyBcIiB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHF1aWNrIG92ZXJ2aWV3IG9mIHdoYXQncyBhdmFpbGFibGUgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgaW4gdGhlIGJ1aWxkIHN5c3RlbS4gQSBgZ3JlcGAgb24gdGhhdCBmaWxlIGlzIHRoZSBxdWlja2VzdCB3YXkgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCBzZWUgdGhlIGF2YWlsYWJsZSBzeW1ib2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk0NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjE3LjYwMDk3NTcxMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyNTcxODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5jb25maWcgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTEwMD1jb25maWdcXHRJUF9WU19QUk9UT19BSFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTQ3PWNvbmZpZ1xcdElQX1ZTX1dMQ1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU4LVxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE2Nzpjb25maWcgIElQX1ZTX09WRlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE3OD1jb25maWdcXHRJUF9WU19MQkxDXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTEtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTkyOmNvbmZpZyAgSVBfVlNfTEJMQ1JcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcImxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1xcdElQX1ZTX1BFX1NJUFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1Mjpjb25maWcgR0NPVl9QUk9GSUxFX0lQVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNTMtXFx0Ym9vbCBcXFwiRW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBJUFZTXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1NToxNy43MTM1NTUyNDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc5MjkzODI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSVBWUyBDb25maWd1cmF0aW9uIFNjYW4qKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gaXQuIE15IGluaXRpYWwgc2NhbiBoYXMgcGlja2VkIHVwIG9uIGEgaGFuZGZ1bCBvZiBJUFZTIGxvYWQgYmFsYW5jaW5nIG1ldGhvZHMgYW5kIHRoZWlyIHBvdGVudGlhbCBjb25maWd1cmF0aW9uczogYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGFuZCBgSVBfVlNfTEJMQ1JgLiBJbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byB0aGUgbW9zdCBsb2dpY2FsIG5leHQgc3RlcDogYSBkZWVwIGRpdmUgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnYCBmaWxlLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGJlLCBhcyBpdCB3aWxsIHJldmVhbCBhbGwgdGhlIGludHJpY2FjaWVzIG9mIGhvdyB0aGVzZSBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIG9mIGVhY2ggZmxhZywgYXMgd2VsbCBhcyB0aGUgYnVpbGQgcHJvY2Vzcy4gSSB3YW50IHRvIHNlZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyByZWxhdGVkIHRvIHRob3NlIHZhcmlvdXMgSVBWUyBzY2hlZHVsaW5nIGFsZ29yaXRobXMsIGFuZCBwcmVjaXNlbHkgaG93IHRoZXkncmUgZXhwb3NlZCB0byB0aGUgdXNlci4gRnJvbSB0aGVyZSBJIGNhbiBkZXRlcm1pbmUgaG93IGVhY2ggaXMgZW5hYmxlZCBhbmQgdXNlZCwgYW5kIGFueSBwb3NzaWJsZSBhcmVhcyBvZiBjb25mbGljdCBvciBvdmVybGFwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgyNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjI0LjUwNjQ5ODg2MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4NzY2MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1NToyNC42MTUyNzMyMTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMyMjA3MjA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudCBkb3duOlxuXG4qKkludmVzdGlnYXRpbmcgSVBWUyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJIHdhcyBpbml0aWFsbHkgdXNpbmcgYGdyZXBgIGFuZCBzcGVjaWZpZWQgYGNvbmZpZyBJUF9WU2AgdG8gZmluZCBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIElQVlMsIGJ1dCBpdCdzIG9ubHkgcmV0dXJuaW5nIGEgbGltaXRlZCBzdWJzZXQ6IGBjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNgLCBgY29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWGAsIGFuZCBgbWVudWNvbmZpZyBJUF9WU2AuIFRoYXQncyBub3QgcmlnaHQ7IHRoZXJlIGhhdmUgdG8gYmUgbW9yZS4gSSdtIHVzZWQgdG8gZGVhbGluZyB3aXRoIGNvbXBsZXgga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBzbyBzb21ldGhpbmcncyBjbGVhcmx5IHVwIGhlcmUuXG5cbkknbSBiZXR0aW5nIHRob3NlIG90aGVyIG9wdGlvbnMgYXJlIG5lc3RlZCwgbW9zdCBsaWtlbHkgaW5kZW50ZWQgb3IgcGVyaGFwcyB1c2luZyB0YWJzLCB3aGljaCBteSBpbml0aWFsIGBncmVwYCBjb21tYW5kIGlzbid0IGFjY291bnRpbmcgZm9yLiBJIG5lZWQgYSBtb3JlIGdlbmVyYWwgc2VhcmNoLlxuXG5MZXQncyB0cnkgYSBicm9hZGVyIHNlYXJjaCB1c2luZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IGFjY291bnRzIGZvciB0aGF0IGluZGVudGF0aW9uLiBJJ2xsIHNlYXJjaCBmb3IgYGNvbmZpZy4qSVBfVlNgIHdpdGhpbiBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgLiBUaGF0IHNob3VsZCBjYXB0dXJlIGFueSBgY29uZmlnYCBsaW5lIGZvbGxvd2VkIGJ5IGFueXRoaW5nIGFuZCB0aGVuIGBJUF9WU2AuIFRoaXMgc2hvdWxkIGNhdGNoIHRoZSBtaXNzaW5nIG9uZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDE5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTU6MzAuOTM3MzUxNjU0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQ3NTc3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnLipJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjc9aWYgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yOC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyOTpjb25maWdcXHRJUF9WU19JUFY2XFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiSVB2NiBzdXBwb3J0IGZvciBJUFZTXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mzg6Y29uZmlnXFx0SVBfVlNfREVCVUdcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00NC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo0NTpjb25maWdcXHRJUF9WU19UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQ2LVxcdGludCBcXFwiSVBWUyBjb25uZWN0aW9uIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03Nz1jb21tZW50IFxcXCJJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTc4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjc5OmNvbmZpZ1xcdElQX1ZTX1BST1RPX1RDUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIlRDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODQtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6ODU6Y29uZmlnXFx0SVBfVlNfUFJPVE9fVURQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODYtXFx0Ym9vbCBcXFwiVURQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05MC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MTpjb25maWdcXHRJUF9WU19QUk9UT19BSF9FU1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05Mi1cXHRkZWZfYm9vbCBJUF9WU19QUk9UT19FU1AgfHwgSVBfVlNfUFJPVE9fQUhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05My1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5NDpjb25maWdcXHRJUF9WU19QUk9UT19FU1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05NS1cXHRib29sIFxcXCJFU1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTk5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwMDpjb25maWdcXHRJUF9WU19QUk9UT19BSFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJBSCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTEzPWNvbW1lbnQgXFxcIklQVlMgc2NoZWR1bGVyXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTExNC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMTU6Y29uZmlnXFx0SVBfVlNfUlJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMTYtXFx0dHJpc3RhdGUgXFxcInJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMjMtIFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEyNDpjb25maWdcXHRJUF9WU19XUlJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMjUtXFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMzYtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTM3OmNvbmZpZ1xcdElQX1ZTX0xDXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTM4LVxcdHRyaXN0YXRlIFxcXCJsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNDYtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTQ3OmNvbmZpZ1xcdElQX1ZTX1dMQ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE0OC1cXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU4LVxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE2Nzpjb25maWcgIElQX1ZTX09WRlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE3Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNzg6Y29uZmlnXFx0SVBfVlNfTEJMQ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE3OS1cXHR0cmlzdGF0ZSBcXFwibG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE5Mjpjb25maWcgIElQX1ZTX0xCTENSXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIwOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMTA6Y29uZmlnXFx0SVBfVlNfREhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcImRlc3RpbmF0aW9uIGhhc2hpbmcgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIxOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMjA6Y29uZmlnXFx0SVBfVlNfU0hcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMjEtXFx0dHJpc3RhdGUgXFxcInNvdXJjZSBoYXNoaW5nIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMjktXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjMwOmNvbmZpZ1xcdElQX1ZTX01IXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjMxLVxcdHRyaXN0YXRlIFxcXCJtYWdsZXYgaGFzaGluZyBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjQ4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI0OTpjb25maWdcXHRJUF9WU19TRURcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNTAtXFx0dHJpc3RhdGUgXFxcInNob3J0ZXN0IGV4cGVjdGVkIGRlbGF5IHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNjEtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjYyOmNvbmZpZ1xcdElQX1ZTX05RXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjYzLVxcdHRyaXN0YXRlIFxcXCJuZXZlciBxdWV1ZSBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjc0LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI3NTpjb25maWdcXHRJUF9WU19UV09TXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjc2LVxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCByYW5kb20gdHdvcyBjaG9pY2UgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzE5PWNvbW1lbnQgJ0lQVlMgYXBwbGljYXRpb24gaGVscGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMjE6Y29uZmlnXFx0SVBfVlNfRlRQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzIyLVxcdHRyaXN0YXRlIFxcXCJGVFAgcHJvdG9jb2wgaGVscGVyXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzM2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMzNzpjb25maWdcXHRJUF9WU19ORkNUXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzM4LVxcdGJvb2wgXFxcIk5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ0LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM0NTpjb25maWdcXHRJUF9WU19QRV9TSVBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDYtXFx0dHJpc3RhdGUgXFxcIlNJUCBwZXJzaXN0ZW5jZSBlbmdpbmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjMxLjUwMjExNzk1NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM4ODYwNDkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBTZWxlY3Rpb24gZm9yIHRoZSBJUFZTIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZvciBmdXp6aW5nLiBGaXJzdCwgSSBuZWVkIHRvIGRlZmluZSB0aGUgY29uZmlndXJhdGlvbnMgdG8gZW5hYmxlLiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGUgZm9sbG93aW5nOiBgSVBfVlNgLCBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLiBJJ2xsIGFkZCBhbGwgb2YgdGhlc2UgdG8gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0IHRvIGVuc3VyZSBjb21wcmVoZW5zaXZlIGNvdmVyYWdlIG9mIHRoZSBJUFZTIGZlYXR1cmVzLlxuXG5Ob3csIGZvciB0aGUgY3JpdGljYWwgcGFydDogc2VsZWN0aW5nIHRoZSBrZXkgZnVuY3Rpb25zIGZvciBmb2N1c2VkIGZ1enppbmcsIHRoZSBgRm9jdXNTeW1ib2xzYC4gVGhlIHBhdGNoIG1vZGlmaWVzIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHN0cmF0ZWdpY2FsbHkgcGljayB0aGUgb25lcyB0aGF0IGFyZSBtb3N0IGxpa2VseSB0byBleHBvc2UgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gdGhlIGNoYW5nZXMgaW50cm9kdWNlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIHNjaGVkdWxpbmcgZnVuY3Rpb25zIGFzIHRoZXkgYXJlIHRoZSBjb3JlIGxvZ2ljIG9mIGVhY2ggc2NoZWR1bGVyIGFuZCBhcmUgZGlyZWN0bHkgaW50ZXJhY3Rpbmcgd2l0aCBwb3RlbnRpYWxseSBtb2RpZmllZCBgZGVzdC1cdTAwM2VmbGFnc2AuIFRoZXNlIGFyZSBzdHJvbmcgc3RhcnRpbmcgcG9pbnRzLiBBZGRpdGlvbmFsbHksIEkgbmVlZCB0byBpbmNsdWRlIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYW5kIGBfX2lwX3ZzX3VubGlua19kZXN0YCBzaW5jZSB0aGV5J3JlIG1vZGlmeWluZyB0aGUgZmxhZ3MuIEFsc28gYGlwX3ZzX2JpbmRfZGVzdGAgYW5kIGBpcF92c191bmJpbmRfZGVzdGAgd2hpY2ggYXJlIGFsc28gZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLlxuXG5MZXQncyBsaXN0IHRoZW0gb3V0OlxuYGlwX3ZzX2RoX3NjaGVkdWxlYFxuYGlwX3ZzX2ZvX3NjaGVkdWxlYFxuYF9faXBfdnNfbGJsY19zY2hlZHVsZWBcbmBpcF92c19sYmxjX3NjaGVkdWxlYFxuYF9faXBfdnNfbGJsY3Jfc2NoZWR1bGVgXG5gaXBfdnNfbGNfc2NoZWR1bGVgXG5gaXBfdnNfbnFfc2NoZWR1bGVgXG5gaXBfdnNfb3ZmX3NjaGVkdWxlYFxuYGlwX3ZzX3JyX3NjaGVkdWxlYFxuYGlwX3ZzX3NlZF9zY2hlZHVsZWBcbmBpcF92c190d29zX3NjaGVkdWxlYFxuYGlwX3ZzX3dsY19zY2hlZHVsZWBcbmBpcF92c193cnJfc2NoZWR1bGVgXG5gX19pcF92c191cGRhdGVfZGVzdGBcbmBfX2lwX3ZzX3VubGlua19kZXN0YFxuYGlwX3ZzX2JpbmRfZGVzdGBcbmBpcF92c191bmJpbmRfZGVzdGBcblxuSG9sZCBvbiBhIG1pbnV0ZSwgdGhlcmUncyBhIHN1YnRsZSBwb2ludCB0byBhZGRyZXNzIHJlZ2FyZGluZyBgaXBfdnNfbWhfc2NoZWR1bGVgIGFuZCBgaXBfdnNfc2hfc2NoZWR1bGVgLiBXaGlsZSB0aGVzZSBzY2hlZHVsZXIgZnVuY3Rpb25zIHRoZW1zZWx2ZXMgYXJlbid0IGRpcmVjdGx5IG1vZGlmaWVkLCB0aGUgcmVsYXRlZCBgaXNfdW5hdmFpbGFibGVgIGZ1bmN0aW9ucyB3aXRoaW4gYGlwX3ZzX21oLmNgIGFuZCBgaXBfdnNfc2guY2AgYXJlLiBJIG5lZWQgdG8gZGVjaWRlIGlmIEkgaW5jbHVkZSB0aGUgc2NoZWR1bGUgZnVuY3Rpb25zIGFzIHdlbGwuIEEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIHRoZXkgZXhpc3QgaXMgaW4gb3JkZXIgYmVmb3JlIHByb2NlZWRpbmcuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gZW5zdXJlIEkgY292ZXIgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgb3IgcmVsYXRlZCBjb2RlIGNoYW5nZXMgd2l0aGluIHRob3NlIG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODkxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjQxLjg5MDcyNzA5N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4MDk2MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX21oX3NjaGVkdWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jPTQ3MD1zdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jOjQ3MTppcF92c19taF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTQ3Mi1cXHRcXHQgIHN0cnVjdCBpcF92c19pcGhkciAqaXBoKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTA3LS8qIElQVlMgTUggU2NoZWR1bGVyIHN0cnVjdHVyZSAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jOjUwODpzdGF0aWMgc3RydWN0IGlwX3ZzX3NjaGVkdWxlciBpcF92c19taF9zY2hlZHVsZXIgPSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTA5LVxcdC5uYW1lID1cXHRcXHRcXHRcXFwibWhcXFwiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTExLVxcdC5tb2R1bGUgPVxcdFxcdFRISVNfTU9EVUxFLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jOjUxMjpcXHQubl9saXN0XFx0ID1cXHRcXHRMSVNUX0hFQURfSU5JVChpcF92c19taF9zY2hlZHVsZXIubl9saXN0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYy01MTMtXFx0LmluaXRfc2VydmljZSA9XFx0XFx0aXBfdnNfbWhfaW5pdF9zdmMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYy01MTctXFx0LnVwZF9kZXN0ID1cXHRcXHRpcF92c19taF9kZXN0X2NoYW5nZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmM6NTE4OlxcdC5zY2hlZHVsZSA9XFx0XFx0aXBfdnNfbWhfc2NoZWR1bGUsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTE5LX07XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYz01MjE9c3RhdGljIGludCBfX2luaXQgaXBfdnNfbWhfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUyMi17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmM6NTIzOlxcdHJldHVybiByZWdpc3Rlcl9pcF92c19zY2hlZHVsZXIoXFx1MDAyNmlwX3ZzX21oX3NjaGVkdWxlcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTI0LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jPTUyNj1zdGF0aWMgdm9pZCBfX2V4aXQgaXBfdnNfbWhfY2xlYW51cCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUyNy17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmM6NTI4OlxcdHVucmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyKFxcdTAwMjZpcF92c19taF9zY2hlZHVsZXIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUyOS1cXHRyY3VfYmFycmllcigpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1NTo0Mi4wMDg4MzA5OTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc2MzY0NTMyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBpZiBJJ20gdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipDb25maXJtaW5nIEV4aXN0ZW5jZSBhbmQgUGxhbm5pbmcgVmVyaWZpY2F0aW9uKipcblxuWWVzLCB0aGUgY29uY2VwdHMsIHdoYXRldmVyIHRoZXkgYXJlLCBkZWZpbml0ZWx5IGV4aXN0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBncm91bmRlZCBpbiB0aGF0IHJlYWxpdHkgZmlyc3QuIE9rYXksIG5vdyB0aGF0IHRoYXTigJlzIGNvbmZpcm1lZCwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgc3BlY2lmaWMgcmVsYXRlZCB0byB0aGVtLi4uIExldCdzIHNlZSwgdGhlIG5leHQgc3RlcCBpcyB0byBjaGVjayBgaXBfdnNfc2hfc2NoZWR1bGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODEzMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjQ0Ljc3MjQ4MDc0N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzMTM0NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX3NoX3NjaGVkdWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jPTMwNz1zdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jOjMwODppcF92c19zaF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTMwOS1cXHRcXHQgIHN0cnVjdCBpcF92c19pcGhkciAqaXBoKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzE3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jOjMxODpcXHRJUF9WU19EQkcoNiwgXFxcImlwX3ZzX3NoX3NjaGVkdWxlKCk6IFNjaGVkdWxpbmcuLi5cXFxcblxcXCIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTMxOS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM0Ni0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYzozNDc6c3RhdGljIHN0cnVjdCBpcF92c19zY2hlZHVsZXIgaXBfdnNfc2hfc2NoZWR1bGVyID1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zNDgte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzUxLVxcdC5tb2R1bGUgPVxcdFxcdFRISVNfTU9EVUxFLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jOjM1MjpcXHQubl9saXN0XFx0ID1cXHRcXHRMSVNUX0hFQURfSU5JVChpcF92c19zaF9zY2hlZHVsZXIubl9saXN0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zNTMtXFx0LmluaXRfc2VydmljZSA9XFx0XFx0aXBfdnNfc2hfaW5pdF9zdmMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zNTctXFx0LnVwZF9kZXN0ID1cXHRcXHRpcF92c19zaF9kZXN0X2NoYW5nZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmM6MzU4OlxcdC5zY2hlZHVsZSA9XFx0XFx0aXBfdnNfc2hfc2NoZWR1bGUsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzU5LX07XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYz0zNjI9c3RhdGljIGludCBfX2luaXQgaXBfdnNfc2hfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM2My17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmM6MzY0OlxcdHJldHVybiByZWdpc3Rlcl9pcF92c19zY2hlZHVsZXIoXFx1MDAyNmlwX3ZzX3NoX3NjaGVkdWxlcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzY1LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jPTM2OD1zdGF0aWMgdm9pZCBfX2V4aXQgaXBfdnNfc2hfY2xlYW51cCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM2OS17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmM6MzcwOlxcdHVucmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyKFxcdTAwMjZpcF92c19zaF9zY2hlZHVsZXIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM3MS1cXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTU6NDQuOTE1NjMzODcyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NzQ1NzI5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgSVBWUyBGdW5jdGlvbnMgZm9yIEluY2x1c2lvbioqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0byBzdGFydCBieSBpbmNsdWRpbmcgYGlwX3ZzX3NoX3NjaGVkdWxlYCBhbmQgYGlwX3ZzX21oX3NjaGVkdWxlYC4gTWFrZXMgc2Vuc2UuIE5vdywgbGV0J3MganVzdCBkbyBhIHF1aWNrIHJldmlldyBvZiB0aGUgYXZhaWxhYmxlIGZvY3VzIHN5bWJvbHMuXG5cbk9rYXksIGhlcmUncyB0aGUgZnVsbCBsaXN0OiBgaXBfdnNfZGhfc2NoZWR1bGVgLCBgaXBfdnNfZm9fc2NoZWR1bGVgLCBgX19pcF92c19sYmxjX3NjaGVkdWxlYCwgYGlwX3ZzX2xibGNfc2NoZWR1bGVgLCBgX19pcF92c19sYmxjcl9zY2hlZHVsZWAsIGBpcF92c19sY19zY2hlZHVsZWAsIGBpcF92c19taF9zY2hlZHVsZWAsIGBpcF92c19ucV9zY2hlZHVsZWAsIGBpcF92c19vdmZfc2NoZWR1bGVgLCBgaXBfdnNfcnJfc2NoZWR1bGVgLCBgaXBfdnNfc2VkX3NjaGVkdWxlYCwgYGlwX3ZzX3NoX3NjaGVkdWxlYCwgYGlwX3ZzX3R3b3Nfc2NoZWR1bGVgLCBgaXBfdnNfd2xjX3NjaGVkdWxlYCwgYGlwX3ZzX3dycl9zY2hlZHVsZWAsIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYF9faXBfdnNfdW5saW5rX2Rlc3RgLCBgaXBfdnNfYmluZF9kZXN0YCwgYW5kIGBpcF92c191bmJpbmRfZGVzdGAuXG5cbk5pbmV0ZWVuIGZ1bmN0aW9ucz8gVGhhdCdzIGEgcmVhc29uYWJsZSBudW1iZXI7IHRoZXJlIGlzbid0IGEgaGFyZCBsaW1pdCwgYnV0IGl0J3MgZ29vZCB0byBrZWVwIHRoaW5ncyBjb25jaXNlLiBUaGlua2luZyBpdCB0aHJvdWdoLi4uIGBpcF92c19iaW5kX2Rlc3RgIGFuZCBgaXBfdnNfdW5iaW5kX2Rlc3RgIGhhbmRsZSBiaW5kaW5nIGFuZCB1bmJpbmRpbmcgZGVzdGluYXRpb25zLCBhbmQgYF9faXBfdnNfdXBkYXRlX2Rlc3RgIGFuZCBgX19pcF92c191bmxpbmtfZGVzdGAgZGVhbCB3aXRoIGRlc3RpbmF0aW9uIHVwZGF0ZXMgYW5kIHVubGlua2luZy4gVGhlIGAqX3NjaGVkdWxlYCBmdW5jdGlvbnMgYXJlLCBvZiBjb3Vyc2UsIHRoZSBrZXkgY29ubmVjdGlvbiBzY2hlZHVsaW5nIGxvZ2ljLiBZZWFoLCB0aGlzIHNlZW1zIGxpa2UgYSBzb2xpZCwgY29tcHJlaGVuc2l2ZSBzZXQgb2YgdGFyZ2V0cy5cblxuTm93IGxldCdzIHJldmlldyB0aGUgZW5hYmxpbmcgY29uZmlnczogYElQX1ZTYCwgYElQX1ZTX1JSYCwgYElQX1ZTX1dSUmAsIGBJUF9WU19MQ2AsIGBJUF9WU19XTENgLCBgSVBfVlNfRk9gLCBgSVBfVlNfT1ZGYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgLCBgSVBfVlNfREhgLCBgSVBfVlNfU0hgLCBgSVBfVlNfTUhgLCBgSVBfVlNfU0VEYCwgYElQX1ZTX05RYCwgYW5kIGBJUF9WU19UV09TYC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYElQX1ZTYCBpdHNlbGYgaXMgZW5vdWdoLiBJIGtub3cgaXQgZGVwZW5kcyBvbiBgTkVURklMVEVSYCBhbmQgYE5FVGAsIGJ1dCB0aG9zZSBhcmUgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQuIFN0aWxsLCBiZXR0ZXIgdG8gY29uZmlybSBhbmQgYmUgc3VyZS4gSSdsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIG9mIGBJUF9WU2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MDMyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjUyLjg5MDIxMTQxMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwODEwNjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9NT1tZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo4OlxcdGRlcGVuZHMgb24gKE5GX0NPTk5UUkFDSyB8fCBORl9DT05OVFJBQ0s9bilcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI5PWNvbmZpZ1xcdElQX1ZTX0lQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJJUHY2IHN1cHBvcnQgZm9yIElQVlNcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzE6XFx0ZGVwZW5kcyBvbiBJUFY2ID0geSB8fCBJUF9WUyA9IElQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMi1cXHRzZWxlY3QgTkZfREVGUkFHX0lQVjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMyMT1jb25maWdcXHRJUF9WU19GVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjItXFx0dHJpc3RhdGUgXFxcIkZUUCBwcm90b2NvbCBoZWxwZXJcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIzOlxcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9OQVQgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cXHRcXHRORl9DT05OVFJBQ0tfRlRQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMzc9Y29uZmlnXFx0SVBfVlNfTkZDVFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMzOC1cXHRib29sIFxcXCJOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZ1xcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMzk6XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDAtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1xcdElQX1ZTX1BFX1NJUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0Ni1cXHR0cmlzdGF0ZSBcXFwiU0lQIHBlcnNpc3RlbmNlIGVuZ2luZVxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDc6XFx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19VRFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDg6XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ5LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM1Mj1jb25maWcgR0NPVl9QUk9GSUxFX0lQVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNTMtXFx0Ym9vbCBcXFwiRW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBJUFZTXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1NDpcXHRkZXBlbmRzIG9uIEdDT1ZfS0VSTkVMXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzU1LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTU6NTMuMDExMDMwODNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2MDQ2MzE1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFRob3VnaHRzKipcblxuT2theSwgc28gYElORVRgIGFuZCBgTkVURklMVEVSYCBhcmUgcHJldHR5IG11Y2ggZ2l2ZW5zLCBzdGFuZGFyZCBjb21wb25lbnRzLiBObyBuZWVkIHRvIGJlbGFib3IgdGhvc2UuIEknbGwganVzdCBmb2N1cyBvbiBgSVBfVlNgIGFuZCB0aGUgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb25zLiBMZXQncyBzZWUuLi4gYmVmb3JlIEkgbW92ZSBvbiwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHNvbWV0aGluZyByZWxhdGVkIHRvIGBJUF9WU19QUk9UT19UQ1BgIGFuZCBgSVBfVlNfUFJPVE9fVURQYC4gVGhvc2UgYXJlIGJvb2xlYW4gb3B0aW9ucywgYW5kIHRoZXkgZGVmYXVsdCB0byAneScsIHJpZ2h0PyBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHRoYXQgdG8gYmUgc3VyZSBteSBhc3N1bXB0aW9ucyBhcmUgY29ycmVjdCwgZG9uJ3Qgd2FudCBhbnkgc3VycHJpc2VzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDg1OSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjU3LjY3MTQ5ODI2NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMyOTU2Mzg0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfUFJPVE9fVENQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1NTo1OC4xMDQ0NzM5N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTk2OTIwODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczpcblxuKipJbnZlc3RpZ2F0aW5nIFRDUCBMb2FkIEJhbGFuY2luZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIG1pbnV0ZS4gSSBzZWVtIHRvIHJlY2FsbCBlbmNvdW50ZXJpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYElQX1ZTX1BST1RPX1RDUGAgZHVyaW5nIG15IGVhcmxpZXIgcmV2aWV3LiBJdCdzIGNydWNpYWwgdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBvZiB0aGlzIHZhcmlhYmxlLiBUaGUgZGV0YWlscyBzdXJyb3VuZGluZyBpdCBhcmUgbmVjZXNzYXJ5IHRvIGFzY2VydGFpbiBpdCdzIHNpZ25pZmljYW5jZS4gTGV0IG1lIGp1c3QgcXVpY2tseSB1c2UgYGdyZXBgIHRvIGh1bnQgZG93biB3aGVyZSB0aGF0IHBhcnRpY3VsYXIgc3RyaW5nIHJlc2lkZXMgaW4gdGhlIHJlbGV2YW50IGNvZGViYXNlIG9yIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhlIFRDUC1iYXNlZCBsb2FkIGJhbGFuY2luZyBzZXR1cC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgaXQgYWxpZ25zIHdpdGggdGhlIGV4cGVjdGVkIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTAxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTY6MDEuMTAxMzk4NDZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDYwMjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJUF9WU19QUk9UT19UQ1BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Nzc9Y29tbWVudCBcXFwiSVBWUyB0cmFuc3BvcnQgcHJvdG9jb2wgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy03OC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3OTpjb25maWdcXHRJUF9WU19QUk9UT19UQ1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy04MC1cXHRib29sIFxcXCJUQ1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMyMT1jb25maWdcXHRJUF9WU19GVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjItXFx0dHJpc3RhdGUgXFxcIkZUUCBwcm90b2NvbCBoZWxwZXJcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIzOlxcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9OQVQgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cXHRcXHRORl9DT05OVFJBQ0tfRlRQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU2OjAxLjIxNjAxMTE1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODQ2NzEzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyB5b3VyIHN1bW1hcnk6XG5cbioqV29ya2luZyBUaHJvdWdoIHRoZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGNvbmZpZ1xcdElQX1ZTX1BST1RPX1RDUGAgaGVyZS4gUmlnaHQsIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBmb3IgVENQIHByb3RvY29sIGhhbmRsaW5nIGlzIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyB0byB2ZXJpZnkgdGhlIGRlZmF1bHQgc3RhdGUuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIG9mIHRoZSBudWFuY2VzIHRoaXMgc2V0dGluZyBjb3VsZCBpbXBhY3QgZG93bnN0cmVhbSwgYnV0IEkgbmVlZCB0byBjb25maXJtIGl0cyBpbml0aWFsIGJlaGF2aW9yLiBJcyBpdCBzZXQgdG8gXCJ5XCIgYnkgZGVmYXVsdD8gVGhhdCdzIHRoZSBiYXNlbGluZSB1bmRlcnN0YW5kaW5nIEkgbmVlZCBiZWZvcmUgSSBjYW4gYXNzZXNzIGFueSBwb3RlbnRpYWwgbW9kaWZpY2F0aW9ucyBvciBjYXNjYWRpbmcgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1MTcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1NjowNC4xMDA2ODU0NDlaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTA0NDY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJUF9WU19QUk9UT19UQ1BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Nzc9Y29tbWVudCBcXFwiSVBWUyB0cmFuc3BvcnQgcHJvdG9jb2wgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy03OC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3OTpjb25maWdcXHRJUF9WU19QUk9UT19UQ1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy04MC1cXHRib29sIFxcXCJUQ1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMyMT1jb25maWdcXHRJUF9WU19GVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjItXFx0dHJpc3RhdGUgXFxcIkZUUCBwcm90b2NvbCBoZWxwZXJcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIzOlxcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9OQVQgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cXHRcXHRORl9DT05OVFJBQ0tfRlRQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU2OjA0LjIxNTc0MDQwOVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTIyNTA2NTU3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQWRkaW5nIFByb3RvY29sIERlZmluaXRpb25zIGZvciBSb2J1c3RuZXNzKipcblxuQWxyaWdodCwgZ2l2ZW4gdGhlIGNvbnRleHQsIEkgdGhpbmsgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIGFwcHJvYWNoIGlzIHRvIGJlIGNvbXByZWhlbnNpdmUgYW5kIGFkZCBkZWZpbml0aW9ucyBmb3IgYm90aCBgSVBfVlNfUFJPVE9fVENQYCBhbmQgYElQX1ZTX1BST1RPX1VEUGAuIEJldHRlciB0byBoYXZlIHRoZW0gYW5kIG5vdCBuZWVkIHRoZW0gdGhhbiB0aGUgb3RoZXIgd2F5IGFyb3VuZCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBuZXR3b3JrIHByb3RvY29scy4gSXQncyBhIHF1aWNrIGFkZGl0aW9uIGFuZCBlbnN1cmVzIHdlIGhhbmRsZSBib3RoIG1ham9yIHRyYW5zcG9ydCBwcm90b2NvbHMgZXhwbGljaXRseS5cblxuTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBjb25maXJtIG15IGFzc3VtcHRpb25zLCBsZXQncyBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYElQX1ZTX1BST1RPX1VEUGAgaXMgZGVmaW5lZCBhcyBJIGV4cGVjdC4gTm8gcG9pbnQgaW4gYXNzdW1pbmcgYW55dGhpbmcgd2hlbiBhIHF1aWNrIGluc3BlY3Rpb24gY2FuIGdpdmUgcGVhY2Ugb2YgbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5MTEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1NjoxOS40NDA4MDk5OTdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzI3MDE2ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVBfVlNfUFJPVE9fVURQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTc5PWNvbmZpZ1xcdElQX1ZTX1BST1RPX1RDUFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODQtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6ODU6Y29uZmlnXFx0SVBfVlNfUFJPVE9fVURQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODYtXFx0Ym9vbCBcXFwiVURQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zNDU9Y29uZmlnXFx0SVBfVlNfUEVfU0lQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ2LVxcdHRyaXN0YXRlIFxcXCJTSVAgcGVyc2lzdGVuY2UgZW5naW5lXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM0NzpcXHRkZXBlbmRzIG9uIElQX1ZTX1BST1RPX1VEUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0OC1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS19TSVBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTY6MjEuMDEzNTE5NTU5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExOTQ3Nzk5NjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIElQVlMgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW5zdGluY3Qgd2FzIHJpZ2h0LCBJJ2xsIGJlIGFkZGluZyB0aG9zZSBjb25maWd1cmF0aW9ucy4gTm93LCBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9ucyBsaXN0ZWQsIGl0J3MgY2xlYXIgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBJUFZTIG1vZHVsZS4gSSBoYXZlIGEgZ29vZCBoYW5kbGUgb24gdGhvc2UuIFRoZW4gdGhlcmUgYXJlIHRoZSBGb2N1c1N5bWJvbHMsIHRoZSBzY2hlZHVsaW5nIGZ1bmN0aW9ucyBmb3IgdmFyaW91cyBhbGdvcml0aG1zLiBcblxuTXkgaW5pdGlhbCB0aG91Z2h0cyB3ZXJlIGNvbmZpcm1lZCwgdGhlIHNjaGVkdWxlcnMgdGhlbXNlbHZlcywgYW5kIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGRlc3QgdXBkYXRlIGFuZCBiaW5kaW5nIGFyZSBkZWZpbml0ZWx5IHRoZSBtb3N0IGludGVyZXN0aW5nIHRhcmdldHMgaGVyZS4gSSB3YXMgcmlnaHQgdG8gZm9jdXMgb24gdGhvc2UgYXJlYXMuIFRoZSByZWFzb25pbmcgaXMgY2xlYXIgLSB0aGUgcGF0Y2ggaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IGNoYW5nZXMgYGRlc3QtXHUwMDNlZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgcmVwbGFjZXMgYml0d2lzZSBvcGVyYXRpb25zIHdpdGggYXRvbWljIGZ1bmN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGZ1bmRhbWVudGFsIGZpeCBmb3IgcG90ZW50aWFsIGRhdGEgcmFjZXMgd2l0aGluIHRoZSBJUFZTIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCBhZGRyZXNzZXMgaG93IGRlc3RpbmF0aW9uIGZsYWdzIGxpa2UgYElQX1ZTX0RFU1RfRl9PVkVSTE9BRGAgYW5kIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCBhcmUgaGFuZGxlZC4gVGhlc2UgZmxhZ3MgYXJlIGNvbmN1cnJlbnRseSByZWFkIGFuZCB1cGRhdGVkIGJ5IHNjaGVkdWxlcnMgYW5kIGRpZmZlcmVudCBjb250cm9sIHBhdGhzIHdpdGhpbiBJUFZTLlxuXG5TbywgZnV6emluZyB0aGUgSVBWUyBzY2hlZHVsZXJzIGlzIGEgTVVTVC4gQWxzbyB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50LCBhbmQgaG93IGF0b21pYyBvcGVyYXRpb25zIGFyZSBoYW5kbGVkLiBJdCdzIGFib3V0IGVuc3VyaW5nIHRoZXNlIGNoYW5nZXMgYXJlIHJvYnVzdCwgY29ycmVjdCwgYW5kIGhhdmVuJ3QgaW50cm9kdWNlZCBhbnkgbmV3IHJlZ3Jlc3Npb25zLiBJJ20gY29uZmlkZW50IHdlJ3ZlIGlkZW50aWZpZWQgdGhlIGtleSBhcmVhcyBvZiBjb25jZXJuLiBJdCBhbGwgbWFrZXMgcGVyZmVjdCBzZW5zZSwgc28gSSdsbCBnbyBhaGVhZCBhbmQgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM1MSwiT3V0cHV0VG9rZW5zIjo1MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTY6MzIuOTYxMzIyNjM2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4NzAxOTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfUFJPVE9fVENQXCIsXG4gICAgXCJJUF9WU19QUk9UT19VRFBcIixcbiAgICBcIklQX1ZTX1JSXCIsXG4gICAgXCJJUF9WU19XUlJcIixcbiAgICBcIklQX1ZTX0xDXCIsXG4gICAgXCJJUF9WU19XTENcIixcbiAgICBcIklQX1ZTX0ZPXCIsXG4gICAgXCJJUF9WU19PVkZcIixcbiAgICBcIklQX1ZTX0xCTENcIixcbiAgICBcIklQX1ZTX0xCTENSXCIsXG4gICAgXCJJUF9WU19ESFwiLFxuICAgIFwiSVBfVlNfU0hcIixcbiAgICBcIklQX1ZTX01IXCIsXG4gICAgXCJJUF9WU19TRURcIixcbiAgICBcIklQX1ZTX05RXCIsXG4gICAgXCJJUF9WU19UV09TXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfZGhfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2ZvX3NjaGVkdWxlXCIsXG4gICAgXCJfX2lwX3ZzX2xibGNfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2xibGNfc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfbGJsY3Jfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19taF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbnFfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX292Zl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfcnJfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3NlZF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfc2hfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3R3b3Nfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3dsY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd3JyX3NjaGVkdWxlXCIsXG4gICAgXCJfX2lwX3ZzX3VwZGF0ZV9kZXN0XCIsXG4gICAgXCJfX2lwX3ZzX3VubGlua19kZXN0XCIsXG4gICAgXCJpcF92c19iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX3VuYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c19jaGVja190ZW1wbGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYGRlc3QtXFx1MDAzZWZsYWdzYCBpbiBgc3RydWN0IGlwX3ZzX2Rlc3RgIHRvIGBhdG9taWNfdGAgYW5kIHVwZGF0ZXMgYWxsIGJpdHdpc2Ugb3BlcmF0aW9ucyB0byB1c2UgYXRvbWljIG9wZXJhdGlvbnMgKGBhdG9taWNfb3JgLCBgYXRvbWljX2FuZGAsIGBhdG9taWNfcmVhZGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBwb3RlbnRpYWwgZGF0YSByYWNlcyBpbiB0aGUgSVBWUyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiBob3cgZGVzdGluYXRpb24gZmxhZ3MgbGlrZSBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCBhbmQgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFyZSByZWFkIGFuZCB1cGRhdGVkIGNvbmN1cnJlbnRseSBieSB2YXJpb3VzIHNjaGVkdWxlcnMgYW5kIGNvbnRyb2wgcGF0aHMuIEZ1enppbmcgdGhlIElQVlMgc2NoZWR1bGVycyBhbmQgZGVzdGluYXRpb24gbWFuYWdlbWVudCBmdW5jdGlvbnMgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSBhdG9taWMgb3BlcmF0aW9ucyBhcmUgY29ycmVjdGx5IGltcGxlbWVudGVkIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19QUk9UT19UQ1BcIixcbiAgICBcIklQX1ZTX1BST1RPX1VEUFwiLFxuICAgIFwiSVBfVlNfUlJcIixcbiAgICBcIklQX1ZTX1dSUlwiLFxuICAgIFwiSVBfVlNfTENcIixcbiAgICBcIklQX1ZTX1dMQ1wiLFxuICAgIFwiSVBfVlNfRk9cIixcbiAgICBcIklQX1ZTX09WRlwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19TSFwiLFxuICAgIFwiSVBfVlNfTUhcIixcbiAgICBcIklQX1ZTX1NFRFwiLFxuICAgIFwiSVBfVlNfTlFcIixcbiAgICBcIklQX1ZTX1RXT1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19kaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfZm9fc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiX19pcF92c19sYmxjcl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGNfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX21oX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ucV9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfb3ZmX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ycl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfc2VkX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19zaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfdHdvc19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c193cnJfc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfdXBkYXRlX2Rlc3RcIixcbiAgICBcIl9faXBfdnNfdW5saW5rX2Rlc3RcIixcbiAgICBcImlwX3ZzX2JpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfdW5iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX2NoZWNrX3RlbXBsYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgZGVzdC1cXHUwMDNlZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgdXBkYXRlcyBhbGwgYml0d2lzZSBvcGVyYXRpb25zIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY19vcmAsIGBhdG9taWNfYW5kYCwgYGF0b21pY19yZWFkYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIHBvdGVudGlhbCBkYXRhIHJhY2VzIGluIHRoZSBJUFZTIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGhvdyBkZXN0aW5hdGlvbiBmbGFncyBsaWtlIGBJUF9WU19ERVNUX0ZfT1ZFUkxPQURgIGFuZCBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgY29uY3VycmVudGx5IGJ5IHZhcmlvdXMgc2NoZWR1bGVycyBhbmQgY29udHJvbCBwYXRocy4gRnV6emluZyB0aGUgSVBWUyBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIGF0b21pYyBvcGVyYXRpb25zIGFyZSBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrt6p[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 16:20:21 +0000 UTC FinishedAt: 2026-07-08 16:56:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_PROTO_TCP", "IP_VS_PROTO_UDP", "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": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "IP_VS_PROTO_TCP", "IP_VS_PROTO_UDP", "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": "61f874a3-31f1-4f21-a250-ebef11728d1f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_dh_schedule", "ip_vs_fo_schedule", "__ip_vs_lblc_schedule", "ip_vs_lblc_schedule", "__ip_vs_lblcr_schedule", "ip_vs_lc_schedule", "ip_vs_mh_schedule", "ip_vs_nq_schedule", "ip_vs_ovf_schedule", "ip_vs_rr_schedule", "ip_vs_sed_schedule", "ip_vs_sh_schedule", "ip_vs_twos_schedule", "ip_vs_wlc_schedule", "ip_vs_wrr_schedule", "__ip_vs_update_dest", "__ip_vs_unlink_dest", "ip_vs_bind_dest", "ip_vs_unbind_dest", "ip_vs_check_template" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX1BST1RPX1RDUCYjMzQ7LAogICAgJiMzNDtJUF9WU19QUk9UT19VRFAmIzM0OywKICAgICYjMzQ7SVBfVlNfUlImIzM0OywKICAgICYjMzQ7SVBfVlNfV1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19GTyYjMzQ7LAogICAgJiMzNDtJUF9WU19PVkYmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19TSCYjMzQ7LAogICAgJiMzNDtJUF9WU19NSCYjMzQ7LAogICAgJiMzNDtJUF9WU19TRUQmIzM0OywKICAgICYjMzQ7SVBfVlNfTlEmIzM0OywKICAgICYjMzQ7SVBfVlNfVFdPUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2RoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2ZvX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O19faXBfdnNfbGJsY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sYmxjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O19faXBfdnNfbGJsY3Jfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbWhfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbnFfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfb3ZmX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3JyX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NlZF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19zaF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c190d29zX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dsY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c193cnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c191cGRhdGVfZGVzdCYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VubGlua19kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c191bmJpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGBkZXN0LVx1MDAzZWZsYWdzYCBpbiBgc3RydWN0IGlwX3ZzX2Rlc3RgIHRvIGBhdG9taWNfdGAgYW5kIHVwZGF0ZXMgYWxsIGJpdHdpc2Ugb3BlcmF0aW9ucyB0byB1c2UgYXRvbWljIG9wZXJhdGlvbnMgKGBhdG9taWNfb3JgLCBgYXRvbWljX2FuZGAsIGBhdG9taWNfcmVhZGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBwb3RlbnRpYWwgZGF0YSByYWNlcyBpbiB0aGUgSVBWUyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiBob3cgZGVzdGluYXRpb24gZmxhZ3MgbGlrZSBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCBhbmQgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFyZSByZWFkIGFuZCB1cGRhdGVkIGNvbmN1cnJlbnRseSBieSB2YXJpb3VzIHNjaGVkdWxlcnMgYW5kIGNvbnRyb2wgcGF0aHMuIEZ1enppbmcgdGhlIElQVlMgc2NoZWR1bGVycyBhbmQgZGVzdGluYXRpb24gbWFuYWdlbWVudCBmdW5jdGlvbnMgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSBhdG9taWMgb3BlcmF0aW9ucyBhcmUgY29ycmVjdGx5IGltcGxlbWVudGVkIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTAwZDAyNDM4N2M2ODI5ZDA3YmZiZGIyNTdhNWYxMjNkNDJkNDNjMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTY6NDk6NTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbmluZGV4IDQ5Mjk3ZmVjNDQ4YTgyLi5iYjk2OTczOGVkNzMyNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2lwX3ZzLmhcbkBAIC05NzIsNyAmIzQzOzk3Miw3IEBAIHN0cnVjdCBpcF92c19kZXN0IHtcbiBcdHUxNlx0XHRcdGFmO1x0XHQvKiBhZGRyZXNzIGZhbWlseSAqL1xuIFx0X19iZTE2XHRcdFx0cG9ydDtcdFx0LyogcG9ydCBudW1iZXIgb2YgdGhlIHNlcnZlciAqL1xuIFx0dW5pb24gbmZfaW5ldF9hZGRyXHRhZGRyO1x0XHQvKiBJUCBhZGRyZXNzIG9mIHRoZSBzZXJ2ZXIgKi9cbi1cdHZvbGF0aWxlIHVuc2lnbmVkIGludFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4mIzQzO1x0YXRvbWljX3RcdFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRjb25uX2ZsYWdzO1x0LyogZmxhZ3MgdG8gY29weSB0byBjb25uICovXG4gXHRhdG9taWNfdFx0XHR3ZWlnaHQ7XHRcdC8qIHNlcnZlciB3ZWlnaHQgKi9cbiBcdGF0b21pY190XHRcdGxhc3Rfd2VpZ2h0O1x0Lyogc2VydmVyIGxhdGVzdCB3ZWlnaHQgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjUzOWY2MDNmMzhiNzQ1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTEwNTUsNyAmIzQzOzEwNTUsNyBAQCBpcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiBcbiBcdGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDAgXHUwMDI2XHUwMDI2XG4gXHQgICAgaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpIFx1MDAzZT0gZGVzdC1cdTAwM2V1X3RocmVzaG9sZClcbi1cdFx0ZGVzdC1cdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0XHRhdG9taWNfb3IoSVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gXG5AQCAtMTE1MSwxMyAmIzQzOzExNTEsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcbiBcbiBcdGlmIChkZXN0LVx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcbiBcdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2MgZGVzdC1cdTAwM2VsX3RocmVzaG9sZClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiYjNDM7XHRcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdH0gZWxzZSBpZiAoZGVzdC1cdTAwM2V1X3RocmVzaG9sZCAhPSAwKSB7XG4gXHRcdGlmIChpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgKiA0IFx1MDAzYyBkZXN0LVx1MDAzZXVfdGhyZXNob2xkICogMylcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiYjNDM7XHRcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdH0gZWxzZSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4tXHRcdFx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdH1cbiBcbiBcdGlwX3ZzX2Rlc3RfcHV0KGRlc3QpO1xuQEAgLTExODgsNyAmIzQzOzExODgsNyBAQCBpbnQgaXBfdnNfY2hlY2tfdGVtcGxhdGUoc3RydWN0IGlwX3ZzX2Nvbm4gKmN0LCBzdHJ1Y3QgaXBfdnNfZGVzdCAqY2Rlc3QpXG4gXHQgKiBDaGVja2luZyB0aGUgZGVzdCBzZXJ2ZXIgc3RhdHVzLlxuIFx0ICovXG4gXHRpZiAoKGRlc3QgPT0gTlVMTCkgfHxcbi1cdCAgICAhKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4mIzQzO1x0ICAgICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4gXHQgICAgZXhwaXJlX3F1aWVzY2VudF90ZW1wbGF0ZShpcHZzLCBkZXN0KSB8fFxuIFx0ICAgIChjZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xuIFx0XHRJUF9WU19EQkdfQlVGKDksIFwmIzM0O2NoZWNrX3RlbXBsYXRlOiBkZXN0IG5vdCBhdmFpbGFibGUgZm9yIFwmIzM0O1xuQEAgLTE5MjksNyAmIzQzOzE5MjksNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiBcdFx0XHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcbiBcdFx0XHRyZXNjaGVkX3Njb3JlJiM0MzsmIzQzOztcbiBcdFx0XHRkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbi1cdFx0XHRpZiAoIWRlc3QgfHwgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKVxuJiM0MztcdFx0XHRpZiAoIWRlc3QgfHwgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjcC1cdTAwM2VuX2NvbnRyb2wpKVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5pbmRleCBkNDBiNDA0YzFiZjY0Ni4uY2E3Nzg5MzdmYWNmMzkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMzAyLDcgJiM0MzszMDIsNyBAQCBpcF92c19pbl9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiBcdFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcbiBcdFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcbiBcbkBAIC0zMzgsNyAmIzQzOzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0aWYgKGRlc3QgXHUwMDI2XHUwMDI2IChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiBcdFx0c3RydWN0IGlwX3ZzX2NwdV9zdGF0cyAqcztcbiBcdFx0c3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YztcbiBcbkBAIC0yMjA0LDcgJiM0MzsyMjA0LDcgQEAgaXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGVcbiBcdH1cbiBcbiBcdC8qIENoZWNrIHRoZSBzZXJ2ZXIgc3RhdHVzICovXG4tXHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoY3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiYjNDM7XHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoYXRvbWljX3JlYWQoXHUwMDI2Y3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdC8qIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xuIFx0XHRpZiAoc3lzY3RsX2V4cGlyZV9ub2Rlc3RfY29ubihpcHZzKSkge1xuIFx0XHRcdGJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjg1YjI2NzViNmUwM2EgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuQEAgLTEzNjgsMTAgJiM0MzsxMzY4LDEwIEBAIF9faXBfdnNfdXBkYXRlX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHR9XG4gXG4gXHQvKiBzZXQgdGhlIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4tXHRkZXN0LVx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEU7XG4mIzQzO1x0YXRvbWljX29yKElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpO1xuIFxuIFx0aWYgKHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtXHUwMDNldV90aHJlc2hvbGQgXHUwMDNlIGRlc3QtXHUwMDNldV90aHJlc2hvbGQpXG4tXHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuJiM0MztcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdGRlc3QtXHUwMDNldV90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZDtcbiBcdGRlc3QtXHUwMDNlbF90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZDtcbiBcbkBAIC0xNjEzLDcgJiM0MzsxNjEzLDcgQEAgc3RhdGljIHZvaWQgX19pcF92c191bmxpbmtfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLFxuIFx0XHRcdFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsXG4gXHRcdFx0XHRpbnQgc3ZjdXBkKVxuIHtcbi1cdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcbiYjNDM7XHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFLCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZkZXN0LVx1MDAzZWRzdF9sb2NrKTtcbiBcdF9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbmluZGV4IGUxZjYyZjZiMjVlMjExLi44MjQ5MmU4MjRmMDI2MSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuQEAgLTIwMSw3ICYjNDM7MjAxLDcgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiAgKi9cbiBzdGF0aWMgaW5saW5lIGludCBpc19vdmVybG9hZGVkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbi1cdHJldHVybiBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4gfVxuIFxuIFxuQEAgLTIxOSwxMCAmIzQzOzIxOSwxMCBAQCBpcF92c19kaF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0cyA9IChzdHJ1Y3QgaXBfdnNfZGhfc3RhdGUgKikgc3ZjLVx1MDAzZXNjaGVkX2RhdGE7XG4gXHRkZXN0ID0gaXBfdnNfZGhfZ2V0KHN2Yy1cdTAwM2VhZiwgcywgXHUwMDI2aXBoLVx1MDAzZWRhZGRyKTtcbi1cdGlmICghZGVzdFxuLVx0ICAgIHx8ICEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcbi1cdCAgICB8fCBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNjPSAwXG4tXHQgICAgfHwgaXNfb3ZlcmxvYWRlZChkZXN0KSkge1xuJiM0MztcdGlmICghZGVzdCB8fFxuJiM0MztcdCAgICAhKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fFxuJiM0MztcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNjPSAwIHx8XG4mIzQzO1x0ICAgIGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcbiBcdFx0aXBfdnNfc2NoZWR1bGVyX2VycihzdmMsIFwmIzM0O25vIGRlc3RpbmF0aW9uIGF2YWlsYWJsZVwmIzM0Oyk7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcbmluZGV4IGQ2NTdiNDdjNjUxMWZmLi41MjMxZTUxOGMwN2MwMyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uY1xuQEAgLTI5LDcgJiM0MzsyOSw3IEBAIGlwX3ZzX2ZvX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpY1xuIFx0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSBodykge1xuIFx0XHRcdGh3ZWlnaHQgPSBkZXN0O1xuIFx0XHRcdGh3ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG5pbmRleCAxNWNjYjJiMmZhMWY0YS4uZDJlYjVkZGE1YjY4NmYgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXG5AQCAtNDE0LDcgJiM0Mzs0MTQsNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqIG5ldyBjb25uZWN0aW9uLlxuIFx0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuQEAgLTQyOSw3ICYjNDM7NDI5LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbkBAIC01MDIsNyAmIzQzOzUwMiw3IEBAIGlwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ICovXG4gXG4gXHRcdGRlc3QgPSBlbi1cdTAwM2VkZXN0O1xuLVx0XHRpZiAoKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0aWYgKChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDAgXHUwMDI2XHUwMDI2ICFpc19vdmVybG9hZGVkKGRlc3QsIHN2YykpXG4gXHRcdFx0Z290byBvdXQ7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuaW5kZXggYzkwZWE4OTdjM2Y3NTYuLjQ4ZjAyNDUzYTViZTQ5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5AQCAtMTY2LDExICYjNDM7MTY2LDExIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcbiBcdC8qIHNlbGVjdCB0aGUgZmlyc3QgZGVzdGluYXRpb24gc2VydmVyLCB3aG9zZSB3ZWlnaHQgXHUwMDNlIDAgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGUsIFx1MDAyNnNldC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4gXHRcdGxlYXN0ID0gZS1cdTAwM2VkZXN0O1xuLVx0XHRpZiAobGVhc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0aWYgKChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKVxuLVx0XHQgICAgXHUwMDI2XHUwMDI2IChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiYjNDM7XHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgKGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbiBcdFx0XHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xuIFx0XHRcdGdvdG8gbmV4dHN0YWdlO1xuIFx0XHR9XG5AQCAtMTgxLDEzICYjNDM7MTgxLDEzIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGUsIFx1MDAyNnNldC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4gXHRcdGRlc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xuIFx0XHRpZiAoKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlXG4tXHRcdCAgICAgKF9fczY0KWRvaCAqIGF0b21pY19yZWFkKFx1MDAyNmxlYXN0LVx1MDAzZXdlaWdodCkpXG4tXHRcdCAgICBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4mIzQzO1x0XHQgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGRvaDtcbiBcdFx0fVxuQEAgLTU3Nyw3ICYjNDM7NTc3LDcgQEAgX19pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKVxuIFx0ICogbmV3IGNvbm5lY3Rpb24uXG4gXHQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApIHtcbkBAIC01OTMsNyAmIzQzOzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbmluZGV4IDM4Y2MzOGM1ZDhiYmQ5Li42YWNiM2M5MDRhZjU3ZSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuQEAgLTM4LDcgJiM0MzszOCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiYjNDM7XHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xuaW5kZXggMDIwODYzMDQ3NTYyZDMuLmMzMjJlZDE3NTRiN2Y2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXG5AQCAtODAsNyAmIzQzOzgwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdlbmVyYXRlX2hhc2hfc2VjcmV0KGhzaXBoYXNoX2tleV90ICpoYXNoMSxcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuIFx0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2M9IDAgfHxcbi1cdCAgICAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4mIzQzO1x0ICAgICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4gfVxuIFxuIC8qIFJldHVybnMgaGFzaCB2YWx1ZSBmb3IgSVBWUyBNSCBlbnRyeSAqL1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcbmluZGV4IGFkYTE1OGM2MTBjZTExLi5mZmE0YmZlYjIxZDlkNyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xuQEAgLTcyLDcgJiM0Mzs3Miw3IEBAIGlwX3ZzX25xX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQgfHxcbiBcdFx0ICAgICFhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkpXG4gXHRcdFx0Y29udGludWU7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXG5pbmRleCBjNWM2N2RmODBhMGIzYy4uZjdmMTdkZGRiYjA1YTUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xuQEAgLTMzLDcgJiM0MzszMyw3IEBAIGlwX3ZzX292Zl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0Ki9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuIFx0XHR3ID0gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpO1xuLVx0XHRpZiAoKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiYjNDM7XHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpIFx1MDAzZSB3IHx8XG4gXHRcdCAgICB3ID09IDApXG4gXHRcdFx0Y29udGludWU7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xuaW5kZXggNDEyNWVlNTYxY2RjMzYuLjk4NDUzZDIwNWQ2ZmFkIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXG5AQCAtNjYsNyAmIzQzOzY2LDcgQEAgaXBfdnNfcnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCxcbiBcdFx0XHRcdFx0XHQgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucyxcbiBcdFx0XHRcdFx0XHQgbl9saXN0KSB7XG4tXHRcdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMClcbiBcdFx0XHRcdC8qIEhJVCAqL1xuIFx0XHRcdFx0Z290byBvdXQ7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXG5pbmRleCAyNDVhMzIzYzg0Y2QzMi4uMDI0OTA2MmQxMzYwNTcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xuQEAgLTc1LDcgJiM0Mzs3NSw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGlwX3ZzX3NlZF9kZXN0X292ZXJoZWFkKGxlYXN0KTtcbkBAIC05MCw3ICYjNDM7OTAsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4mIzQzO1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcbmluZGV4IGNkNjcwNjZlM2IyNjEyLi4zNDM3ODBiODJjOTVmMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xuQEAgLTczLDcgJiM0Mzs3Myw3IEBAIHN0cnVjdCBpcF92c19zaF9zdGF0ZSB7XG4gc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbiBcdHJldHVybiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNjPSAwIHx8XG4tXHQgICAgICAgZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuJiM0MztcdCAgICAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuIH1cbiBcbiAvKlxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXG5pbmRleCBkYmI3ZjVmZDQ2ODhhNC4uMzVmYTRjNmRjNWNmNGMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXG5AQCAtNTIsNyAmIzQzOzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXG4gXHQvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xuJiM0MztcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkpIHtcbiBcdFx0XHR3ZWlnaHQgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG4gXHRcdFx0aWYgKHdlaWdodCBcdTAwM2UgMCkge1xuIFx0XHRcdFx0dG90YWxfd2VpZ2h0ICYjNDM7PSB3ZWlnaHQ7XG5AQCAtNzUsNyAmIzQzOzc1LDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXG4gXHQvKiBQaWNrIHR3byB3ZWlnaHRlZCBzZXJ2ZXJzICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiYjNDM7XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHR3ZWlnaHQgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXG5pbmRleCA5ZGE0NDVjYTA5YTE0Yy4uYzJkMDlhYzk2ZmU4NGMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xuQEAgLTQ3LDcgJiM0Mzs0Nyw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChsZWFzdCk7XG5AQCAtNjIsNyAmIzQzOzYyLDcgQEAgaXBfdnNfd2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuJiM0MztcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXHRcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcbiBcdFx0aWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXG5pbmRleCAyZGNmZjEwNDBkYTUyMS4uZjIxYTc1Mjg0OTcxZTUgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xuQEAgLTE3Niw3ICYjNDM7MTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlPSBtYXJrLVx1MDAzZWN3KVxuIFx0XHRcdFx0Z290byBmb3VuZDtcbiBcdFx0XHRpZiAoZGVzdCA9PSBzdG9wKVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXG5pbmRleCBjZTU0MmVkNGIwMTNjOC4uMzdiOTY3MWU0OTYwMDEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jXG5AQCAtMzUxLDcgJiM0MzszNTEsNyBAQCBfX2lwX3ZzX2dldF9vdXRfcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICogc3RvcmVkIGluIGRlc3RfdHJhc2guXG4gXHRcdFx0ICovXG4gXHRcdFx0aWYgKCFydF9kZXZfaXNfZG93bihkc3RfZGV2X3JjdShcdTAwMjZydC1cdTAwM2Vkc3QpKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcbiYjNDM7XHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIDApO1xuIFx0XHRcdGVsc2VcbiBcdFx0XHRcdG5vcmVmID0gMDtcbkBAIC01MzAsNyAmIzQzOzUzMCw3IEBAIF9faXBfdnNfZ2V0X291dF9ydF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgKiBzdG9yZWQgaW4gZGVzdF90cmFzaC5cbiBcdFx0XHQgKi9cbiBcdFx0XHRpZiAoIXJ0X2Rldl9pc19kb3duKGRzdF9kZXZfcmN1KFx1MDAyNnJ0LVx1MDAzZWRzdCkpIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuJiM0MztcdFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4gXHRcdFx0XHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFx1MDAyNnJ0LVx1MDAzZWRzdCwgY29va2llKTtcbiBcdFx0XHRlbHNlXG4gXHRcdFx0XHRub3JlZiA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OywKICAgICYjMzQ7SVBfVlNfUFJPVE9fVENQJiMzNDssCiAgICAmIzM0O0lQX1ZTX1BST1RPX1VEUCYjMzQ7LAogICAgJiMzNDtJUF9WU19SUiYjMzQ7LAogICAgJiMzNDtJUF9WU19XUlImIzM0OywKICAgICYjMzQ7SVBfVlNfTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfV0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0ZPJiMzNDssCiAgICAmIzM0O0lQX1ZTX09WRiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0RIJiMzNDssCiAgICAmIzM0O0lQX1ZTX1NIJiMzNDssCiAgICAmIzM0O0lQX1ZTX01IJiMzNDssCiAgICAmIzM0O0lQX1ZTX1NFRCYjMzQ7LAogICAgJiMzNDtJUF9WU19OUSYjMzQ7LAogICAgJiMzNDtJUF9WU19UV09TJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfZGhfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfZm9fc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2xibGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjcl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19taF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19ucV9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19vdmZfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfcnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfc2VkX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3R3b3Nfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfd2xjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dycl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VwZGF0ZV9kZXN0JiMzNDssCiAgICAmIzM0O19faXBfdnNfdW5saW5rX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX3VuYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2NoZWNrX3RlbXBsYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGRlc3QtXHUwMDNlZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgdXBkYXRlcyBhbGwgYml0d2lzZSBvcGVyYXRpb25zIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY19vcmAsIGBhdG9taWNfYW5kYCwgYGF0b21pY19yZWFkYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIHBvdGVudGlhbCBkYXRhIHJhY2VzIGluIHRoZSBJUFZTIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGhvdyBkZXN0aW5hdGlvbiBmbGFncyBsaWtlIGBJUF9WU19ERVNUX0ZfT1ZFUkxPQURgIGFuZCBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgY29uY3VycmVudGx5IGJ5IHZhcmlvdXMgc2NoZWR1bGVycyBhbmQgY29udHJvbCBwYXRocy4gRnV6emluZyB0aGUgSVBWUyBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIGF0b21pYyBvcGVyYXRpb25zIGFyZSBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkwMGQwMjQzODdjNjgyOWQwN2JmYmRiMjU3YTVmMTIzZDQyZDQzYzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCA4IDE2OjQ5OjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmgKaW5kZXggNDkyOTdmZWM0NDhhODIuLmJiOTY5NzM4ZWQ3MzI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pcF92cy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2lwX3ZzLmgKQEAgLTk3Miw3ICYjNDM7OTcyLDcgQEAgc3RydWN0IGlwX3ZzX2Rlc3QgewogCXUxNgkJCWFmOwkJLyogYWRkcmVzcyBmYW1pbHkgKi8KIAlfX2JlMTYJCQlwb3J0OwkJLyogcG9ydCBudW1iZXIgb2YgdGhlIHNlcnZlciAqLwogCXVuaW9uIG5mX2luZXRfYWRkcglhZGRyOwkJLyogSVAgYWRkcmVzcyBvZiB0aGUgc2VydmVyICovCi0Jdm9sYXRpbGUgdW5zaWduZWQgaW50CWZsYWdzOwkJLyogZGVzdCBzdGF0dXMgZmxhZ3MgKi8KJiM0MzsJYXRvbWljX3QJCWZsYWdzOwkJLyogZGVzdCBzdGF0dXMgZmxhZ3MgKi8KIAlhdG9taWNfdAkJY29ubl9mbGFnczsJLyogZmxhZ3MgdG8gY29weSB0byBjb25uICovCiAJYXRvbWljX3QJCXdlaWdodDsJCS8qIHNlcnZlciB3ZWlnaHQgKi8KIAlhdG9taWNfdAkJbGFzdF93ZWlnaHQ7CS8qIHNlcnZlciBsYXRlc3Qgd2VpZ2h0ICovCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwppbmRleCBjYjM2NjQxZjhkMWNjMS4uNTM5ZjYwM2YzOGI3NDUgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwpAQCAtMTA1NSw3ICYjNDM7MTA1NSw3IEBAIGlwX3ZzX2JpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQogCiAJaWYgKGRlc3QtJmd0O3VfdGhyZXNob2xkICE9IDAgJmFtcDsmYW1wOwogCSAgICBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgJmd0Oz0gZGVzdC0mZ3Q7dV90aHJlc2hvbGQpCi0JCWRlc3QtJmd0O2ZsYWdzIHw9IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKJiM0MzsJCWF0b21pY19vcihJUF9WU19ERVNUX0ZfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpOwogfQogCiAKQEAgLTExNTEsMTMgJiM0MzsxMTUxLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c191bmJpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApCiAKIAlpZiAoZGVzdC0mZ3Q7bF90aHJlc2hvbGQgIT0gMCkgewogCQlpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICZsdDsgZGVzdC0mZ3Q7bF90aHJlc2hvbGQpCi0JCQlkZXN0LSZndDtmbGFncyAmYW1wOz0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDsKJiM0MzsJCQlhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpOwogCX0gZWxzZSBpZiAoZGVzdC0mZ3Q7dV90aHJlc2hvbGQgIT0gMCkgewogCQlpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICogNCAmbHQ7IGRlc3QtJmd0O3VfdGhyZXNob2xkICogMykKLQkJCWRlc3QtJmd0O2ZsYWdzICZhbXA7PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwkJCWF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgJmFtcDtkZXN0LSZndDtmbGFncyk7CiAJfSBlbHNlIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKLQkJCWRlc3QtJmd0O2ZsYWdzICZhbXA7PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCQlhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsICZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpOwogCX0KIAogCWlwX3ZzX2Rlc3RfcHV0KGRlc3QpOwpAQCAtMTE4OCw3ICYjNDM7MTE4OCw3IEBAIGludCBpcF92c19jaGVja190ZW1wbGF0ZShzdHJ1Y3QgaXBfdnNfY29ubiAqY3QsIHN0cnVjdCBpcF92c19kZXN0ICpjZGVzdCkKIAkgKiBDaGVja2luZyB0aGUgZGVzdCBzZXJ2ZXIgc3RhdHVzLgogCSAqLwogCWlmICgoZGVzdCA9PSBOVUxMKSB8fAotCSAgICAhKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8CiYjNDM7CSAgICAhKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8CiAJICAgIGV4cGlyZV9xdWllc2NlbnRfdGVtcGxhdGUoaXB2cywgZGVzdCkgfHwKIAkgICAgKGNkZXN0ICZhbXA7JmFtcDsgKGRlc3QgIT0gY2Rlc3QpKSkgewogCQlJUF9WU19EQkdfQlVGKDksICYjMzQ7Y2hlY2tfdGVtcGxhdGU6IGRlc3Qgbm90IGF2YWlsYWJsZSBmb3IgJiMzNDsKQEAgLTE5MjksNyAmIzQzOzE5MjksNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cykKIAkJCWNwID0gaXBfdnNfaG4wX3RvX2Nvbm4oaG4pOwogCQkJcmVzY2hlZF9zY29yZSYjNDM7JiM0Mzs7CiAJCQlkZXN0ID0gY3AtJmd0O2Rlc3Q7Ci0JCQlpZiAoIWRlc3QgfHwgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKQomIzQzOwkJCWlmICghZGVzdCB8fCAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpCiAJCQkJY29udGludWU7CiAKIAkJCWlmIChhdG9taWNfcmVhZCgmYW1wO2NwLSZndDtuX2NvbnRyb2wpKQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKaW5kZXggZDQwYjQwNGMxYmY2NDYuLmNhNzc4OTM3ZmFjZjM5IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMKQEAgLTMwMiw3ICYjNDM7MzAyLDcgQEAgaXBfdnNfaW5fc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtJmd0O2Rlc3Q7CiAJc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBjcC0mZ3Q7aXB2czsKIAotCWlmIChkZXN0ICZhbXA7JmFtcDsgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CWlmIChkZXN0ICZhbXA7JmFtcDsgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiAJCXN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7CiAJCXN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7CiAKQEAgLTMzOCw3ICYjNDM7MzM4LDcgQEAgaXBfdnNfb3V0X3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLSZndDtkZXN0OwogCXN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtJmd0O2lwdnM7CiAKLQlpZiAoZGVzdCAmYW1wOyZhbXA7IChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewomIzQzOwlpZiAoZGVzdCAmYW1wOyZhbXA7IChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewogCQlzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzOwogCQlzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjOwogCkBAIC0yMjA0LDcgJiM0MzsyMjA0LDcgQEAgaXBfdnNfaW5faG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUKIAl9CiAKIAkvKiBDaGVjayB0aGUgc2VydmVyIHN0YXR1cyAqLwotCWlmIChjcCAmYW1wOyZhbXA7IGNwLSZndDtkZXN0ICZhbXA7JmFtcDsgIShjcC0mZ3Q7ZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKJiM0MzsJaWYgKGNwICZhbXA7JmFtcDsgY3AtJmd0O2Rlc3QgJmFtcDsmYW1wOyAhKGF0b21pY19yZWFkKCZhbXA7Y3AtJmd0O2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewogCQkvKiB0aGUgZGVzdGluYXRpb24gc2VydmVyIGlzIG5vdCBhdmFpbGFibGUgKi8KIAkJaWYgKHN5c2N0bF9leHBpcmVfbm9kZXN0X2Nvbm4oaXB2cykpIHsKIAkJCWJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKaW5kZXggYmNmNDBiOGM0MWNmMjYuLjY4NWIyNjc1YjZlMDNhIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCkBAIC0xMzY4LDEwICYjNDM7MTM2OCwxMCBAQCBfX2lwX3ZzX3VwZGF0ZV9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LAogCX0KIAogCS8qIHNldCB0aGUgZGVzdCBzdGF0dXMgZmxhZ3MgKi8KLQlkZXN0LSZndDtmbGFncyB8PSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFOwomIzQzOwlhdG9taWNfb3IoSVBfVlNfREVTVF9GX0FWQUlMQUJMRSwgJmFtcDtkZXN0LSZndDtmbGFncyk7CiAKIAlpZiAodWRlc3QtJmd0O3VfdGhyZXNob2xkID09IDAgfHwgdWRlc3QtJmd0O3VfdGhyZXNob2xkICZndDsgZGVzdC0mZ3Q7dV90aHJlc2hvbGQpCi0JCWRlc3QtJmd0O2ZsYWdzICZhbXA7PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwkJYXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCAmYW1wO2Rlc3QtJmd0O2ZsYWdzKTsKIAlkZXN0LSZndDt1X3RocmVzaG9sZCA9IHVkZXN0LSZndDt1X3RocmVzaG9sZDsKIAlkZXN0LSZndDtsX3RocmVzaG9sZCA9IHVkZXN0LSZndDtsX3RocmVzaG9sZDsKIApAQCAtMTYxMyw3ICYjNDM7MTYxMyw3IEBAIHN0YXRpYyB2b2lkIF9faXBfdnNfdW5saW5rX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywKIAkJCQlzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwKIAkJCQlpbnQgc3ZjdXBkKQogewotCWRlc3QtJmd0O2ZsYWdzICZhbXA7PSB+SVBfVlNfREVTVF9GX0FWQUlMQUJMRTsKJiM0MzsJYXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX0FWQUlMQUJMRSwgJmFtcDtkZXN0LSZndDtmbGFncyk7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtkZXN0LSZndDtkc3RfbG9jayk7CiAJX19pcF92c19kc3RfY2FjaGVfcmVzZXQoZGVzdCk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jCmluZGV4IGUxZjYyZjZiMjVlMjExLi44MjQ5MmU4MjRmMDI2MSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmMKQEAgLTIwMSw3ICYjNDM7MjAxLDcgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywKICAqLwogc3RhdGljIGlubGluZSBpbnQgaXNfb3ZlcmxvYWRlZChzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCkKIHsKLQlyZXR1cm4gZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEOwomIzQzOwlyZXR1cm4gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEOwogfQogCiAKQEAgLTIxOSwxMCAmIzQzOzIxOSwxMCBAQCBpcF92c19kaF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJcyA9IChzdHJ1Y3QgaXBfdnNfZGhfc3RhdGUgKikgc3ZjLSZndDtzY2hlZF9kYXRhOwogCWRlc3QgPSBpcF92c19kaF9nZXQoc3ZjLSZndDthZiwgcywgJmFtcDtpcGgtJmd0O2RhZGRyKTsKLQlpZiAoIWRlc3QKLQkgICAgfHwgIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKQotCSAgICB8fCBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmx0Oz0gMAotCSAgICB8fCBpc19vdmVybG9hZGVkKGRlc3QpKSB7CiYjNDM7CWlmICghZGVzdCB8fAomIzQzOwkgICAgIShhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fAomIzQzOwkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZsdDs9IDAgfHwKJiM0MzsJICAgIGlzX292ZXJsb2FkZWQoZGVzdCkpIHsKIAkJaXBfdnNfc2NoZWR1bGVyX2VycihzdmMsICYjMzQ7bm8gZGVzdGluYXRpb24gYXZhaWxhYmxlJiMzNDspOwogCQlyZXR1cm4gTlVMTDsKIAl9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jCmluZGV4IGQ2NTdiNDdjNjUxMWZmLi41MjMxZTUxOGMwN2MwMyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmMKQEAgLTI5LDcgJiM0MzsyOSw3IEBAIGlwX3ZzX2ZvX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJICogRmluZCB2aXJ0dWFsIHNlcnZlciB3aXRoIGhpZ2hlc3Qgd2VpZ2h0IGFuZCBzZW5kIGl0IHRyYWZmaWMKIAkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKLQkJaWYgKCEoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiYjNDM7CQlpZiAoIShhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpICZhbXA7JmFtcDsKIAkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IGh3KSB7CiAJCQlod2VpZ2h0ID0gZGVzdDsKIAkJCWh3ID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKaW5kZXggMTVjY2IyYjJmYTFmNGEuLmQyZWI1ZGRhNWI2ODZmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKQEAgLTQxNCw3ICYjNDM7NDE0LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpCiAJICogbmV3IGNvbm5lY3Rpb24uCiAJICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQogCQkJY29udGludWU7CiAJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CiAJCQlsZWFzdCA9IGRlc3Q7CkBAIC00MjksNyAmIzQzOzQyOSw3IEBAIF9faXBfdnNfbGJsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKQogCSAqLwogICBuZXh0c3RhZ2U6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQogCQkJY29udGludWU7CiAKIAkJZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpOwpAQCAtNTAyLDcgJiM0Mzs1MDIsNyBAQCBpcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJCSAqLwogCiAJCWRlc3QgPSBlbi0mZ3Q7ZGVzdDsKLQkJaWYgKChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSAmYW1wOyZhbXA7CiYjNDM7CQlpZiAoKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpICZhbXA7JmFtcDsKIAkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSAmZ3Q7IDAgJmFtcDsmYW1wOyAhaXNfb3ZlcmxvYWRlZChkZXN0LCBzdmMpKQogCQkJZ290byBvdXQ7CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYwppbmRleCBjOTBlYTg5N2MzZjc1Ni4uNDhmMDI0NTNhNWJlNDkgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCkBAIC0xNjYsMTEgJiM0MzsxNjYsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KQogCS8qIHNlbGVjdCB0aGUgZmlyc3QgZGVzdGluYXRpb24gc2VydmVyLCB3aG9zZSB3ZWlnaHQgJmd0OyAwICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZSwgJmFtcDtzZXQtJmd0O2xpc3QsIGxpc3QpIHsKIAkJbGVhc3QgPSBlLSZndDtkZXN0OwotCQlpZiAobGVhc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2xlYXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQogCQkJY29udGludWU7CiAKLQkJaWYgKChhdG9taWNfcmVhZCgmYW1wO2xlYXN0LSZndDt3ZWlnaHQpICZndDsgMCkKLQkJICAgICZhbXA7JmFtcDsgKGxlYXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkgewomIzQzOwkJaWYgKChhdG9taWNfcmVhZCgmYW1wO2xlYXN0LSZndDt3ZWlnaHQpICZndDsgMCkgJmFtcDsmYW1wOwomIzQzOwkJICAgIChhdG9taWNfcmVhZCgmYW1wO2xlYXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHsKIAkJCWxvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChsZWFzdCk7CiAJCQlnb3RvIG5leHRzdGFnZTsKIAkJfQpAQCAtMTgxLDEzICYjNDM7MTgxLDEzIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldCkKICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGUsICZhbXA7c2V0LSZndDtsaXN0LCBsaXN0KSB7CiAJCWRlc3QgPSBlLSZndDtkZXN0OwotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKIAkJaWYgKCgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsKLQkJICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoJmFtcDtsZWFzdC0mZ3Q7d2VpZ2h0KSkKLQkJICAgICZhbXA7JmFtcDsgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiYjNDM7CQkgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZCgmYW1wO2xlYXN0LSZndDt3ZWlnaHQpKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7CiAJCQlsZWFzdCA9IGRlc3Q7CiAJCQlsb2ggPSBkb2g7CiAJCX0KQEAgLTU3Nyw3ICYjNDM7NTc3LDcgQEAgX19pcF92c19sYmxjcl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjKQogCSAqIG5ldyBjb25uZWN0aW9uLgogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CkBAIC01OTMsNyAmIzQzOzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YykKIAkgKi8KICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMKaW5kZXggMzhjYzM4YzVkOGJiZDkuLjZhY2IzYzkwNGFmNTdlIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuYwpAQCAtMzgsNyAmIzQzOzM4LDcgQEAgaXBfdnNfbGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHwKJiM0MzsJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fAogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpID09IDApCiAJCQljb250aW51ZTsKIAkJZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYwppbmRleCAwMjA4NjMwNDc1NjJkMy4uYzMyMmVkMTc1NGI3ZjYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jCkBAIC04MCw3ICYjNDM7ODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLAogc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQogewogCXJldHVybiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmx0Oz0gMCB8fAotCSAgICAgICBkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CSAgICAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiB9CiAKIC8qIFJldHVybnMgaGFzaCB2YWx1ZSBmb3IgSVBWUyBNSCBlbnRyeSAqLwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYwppbmRleCBhZGExNThjNjEwY2UxMS4uZmZhNGJmZWIyMWQ5ZDcgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jCkBAIC03Miw3ICYjNDM7NzIsNyBAQCBpcF92c19ucV9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7CiAKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fAomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fAogCQkgICAgIWF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KSkKIAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMKaW5kZXggYzVjNjdkZjgwYTBiM2MuLmY3ZjE3ZGRkYmIwNWE1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jCkBAIC0zMyw3ICYjNDM7MzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewogCQl3ID0gYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpOwotCQlpZiAoKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHwKJiM0MzsJCWlmICgoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fAogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDthY3RpdmVjb25ucykgJmd0OyB3IHx8CiAJCSAgICB3ID09IDApCiAJCQljb250aW51ZTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMKaW5kZXggNDEyNWVlNTYxY2RjMzYuLjk4NDUzZDIwNWQ2ZmFkIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuYwpAQCAtNjYsNyAmIzQzOzY2LDcgQEAgaXBfdnNfcnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwKIAkJCQkJCSAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLAogCQkJCQkJIG5fbGlzdCkgewotCQkJaWYgKCEoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiYjNDM7CQkJaWYgKCEoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiAJCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkKIAkJCQkvKiBISVQgKi8KIAkJCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYwppbmRleCAyNDVhMzIzYzg0Y2QzMi4uMDI0OTA2MmQxMzYwNTcgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmMKQEAgLTc1LDcgJiM0Mzs3NSw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmICghKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwomIzQzOwkJaWYgKCEoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiAJCSAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OyAwKSB7CiAJCQlsZWFzdCA9IGRlc3Q7CiAJCQlsb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChsZWFzdCk7CkBAIC05MCw3ICYjNDM7OTAsNyBAQCBpcF92c19zZWRfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KICAgbmV4dHN0YWdlOgogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQomIzQzOwkJaWYgKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKIAkJCWNvbnRpbnVlOwogCQlkb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChkZXN0KTsKIAkJaWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYwppbmRleCBjZDY3MDY2ZTNiMjYxMi4uMzQzNzgwYjgyYzk1ZjEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jCkBAIC03Myw3ICYjNDM7NzMsNyBAQCBzdHJ1Y3QgaXBfdnNfc2hfc3RhdGUgewogc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KQogewogCXJldHVybiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmx0Oz0gMCB8fAotCSAgICAgICBkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiYjNDM7CSAgICAgICBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYwppbmRleCBkYmI3ZjVmZDQ2ODhhNC4uMzVmYTRjNmRjNWNmNGMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYwpAQCAtNTIsNyAmIzQzOzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAKIAkvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmICghKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkpIHsKJiM0MzsJCWlmICghKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkpIHsKIAkJCXdlaWdodCA9IGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7d2VpZ2h0KTsKIAkJCWlmICh3ZWlnaHQgJmd0OyAwKSB7CiAJCQkJdG90YWxfd2VpZ2h0ICYjNDM7PSB3ZWlnaHQ7CkBAIC03NSw3ICYjNDM7NzUsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywKIAogCS8qIFBpY2sgdHdvIHdlaWdodGVkIHNlcnZlcnMgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKLQkJaWYgKGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkKJiM0MzsJCWlmIChhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O2ZsYWdzKSAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiAJCQljb250aW51ZTsKIAogCQl3ZWlnaHQgPSBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMKaW5kZXggOWRhNDQ1Y2EwOWExNGMuLmMyZDA5YWM5NmZlODRjIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jCkBAIC00Nyw3ICYjNDM7NDcsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKi8KIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsICZhbXA7c3ZjLSZndDtkZXN0aW5hdGlvbnMsIG5fbGlzdCkgewotCQlpZiAoIShkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpICZhbXA7JmFtcDsKJiM0MzsJCWlmICghKGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgJmFtcDsmYW1wOwogCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDsgMCkgewogCQkJbGVhc3QgPSBkZXN0OwogCQkJbG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTsKQEAgLTYyLDcgJiM0Mzs2Miw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCSAqLwogICBuZXh0c3RhZ2U6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgJmFtcDtzdmMtJmd0O2Rlc3RpbmF0aW9ucywgbl9saXN0KSB7Ci0JCWlmIChkZXN0LSZndDtmbGFncyAmYW1wOyBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpCiYjNDM7CQlpZiAoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKQogCQkJY29udGludWU7CiAJCWRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTsKIAkJaWYgKChfX3M2NClsb2ggKiBhdG9taWNfcmVhZCgmYW1wO2Rlc3QtJmd0O3dlaWdodCkgJmd0OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jCmluZGV4IDJkY2ZmMTA0MGRhNTIxLi5mMjFhNzUyODQ5NzFlNSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYwpAQCAtMTc2LDcgJiM0MzsxNzYsNyBAQCBpcF92c193cnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwKIAkJCQkJCSAmYW1wO3N2Yy0mZ3Q7ZGVzdGluYXRpb25zLAogCQkJCQkJIG5fbGlzdCkgewotCQkJaWYgKCEoZGVzdC0mZ3Q7ZmxhZ3MgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiYjNDM7CQkJaWYgKCEoYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDtmbGFncykgJmFtcDsgSVBfVlNfREVTVF9GX09WRVJMT0FEKSAmYW1wOyZhbXA7CiAJCQkgICAgYXRvbWljX3JlYWQoJmFtcDtkZXN0LSZndDt3ZWlnaHQpICZndDs9IG1hcmstJmd0O2N3KQogCQkJCWdvdG8gZm91bmQ7CiAJCQlpZiAoZGVzdCA9PSBzdG9wKQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMKaW5kZXggY2U1NDJlZDRiMDEzYzguLjM3Yjk2NzFlNDk2MDAxIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMKQEAgLTM1MSw3ICYjNDM7MzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICogc3RvcmVkIGluIGRlc3RfdHJhc2guCiAJCQkgKi8KIAkJCWlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoJmFtcDtydC0mZ3Q7ZHN0KSkgJmFtcDsmYW1wOwotCQkJICAgIGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiYjNDM7CQkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiAJCQkJX19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCAmYW1wO3J0LSZndDtkc3QsIDApOwogCQkJZWxzZQogCQkJCW5vcmVmID0gMDsKQEAgLTUzMCw3ICYjNDM7NTMwLDcgQEAgX19pcF92c19nZXRfb3V0X3J0X3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICogc3RvcmVkIGluIGRlc3RfdHJhc2guCiAJCQkgKi8KIAkJCWlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoJmFtcDtydC0mZ3Q7ZHN0KSkgJmFtcDsmYW1wOwotCQkJICAgIGRlc3QtJmd0O2ZsYWdzICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiYjNDM7CQkJICAgIGF0b21pY19yZWFkKCZhbXA7ZGVzdC0mZ3Q7ZmxhZ3MpICZhbXA7IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpCiAJCQkJX19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCAmYW1wO3J0LSZndDtkc3QsIGNvb2tpZSk7CiAJCQllbHNlCiAJCQkJbm9yZWYgPSAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTU1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVBWUyBGbGFnIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIElQVlMgc3Vic3lzdGVtIGluIG5ldGZpbHRlci4gSXQgc2VlbXMgbGlrZSBzb21lb25lJiMzOTtzIGZpbmFsbHkgZG9uZSB0aGUgcmlnaHQgdGhpbmcgYW5kIGNoYW5nZWQgdGhlIGBkZXN0LSZndDtmbGFnc2AgZmllbGQgaW4gYHN0cnVjdCBpcF92c19kZXN0YCBmcm9tIGEgcGxhaW4gYHZvbGF0aWxlIHVuc2lnbmVkIGludGAgdG8gYW4gYGF0b21pY190YC4gRXhjZWxsZW50ISBUaGF0JiMzOTtzIGEgaHVnZSBzdGVwIGZvcndhcmQuIFRoZXkmIzM5O3ZlIGFsc28gc3dpdGNoZWQgYWxsIHRoZSBiaXR3aXNlIG9wZXJhdGlvbnMgdG8gdGhlIGFwcHJvcHJpYXRlIGBhdG9taWNfb3JgLCBgYXRvbWljX2FuZGAsIGFuZCBgYXRvbWljX3JlYWRgIGZ1bmN0aW9ucy4gVGhpcyBpcyBhICpzaWduaWZpY2FudCogZnVuY3Rpb25hbCBjaGFuZ2U7IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGZpeGluZyBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzLCBzcGVjaWZpY2FsbHkgZGF0YSByYWNlcywgYnkgdXNpbmcgcHJvcGVyIGF0b21pYyBvcGVyYXRpb25zLiBUaGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBtYWtlcyBtZSByYWlzZSBhbiBleWVicm93IGluIGEgZ29vZCB3YXkuCgpOb3cgdGhhdCB0aGlzIGZvdW5kYXRpb25hbCBjaGFuZ2UgaXMgaW4gcGxhY2UsIHRoaXMgcmVhbGx5IGJlZ3MgdG8gYmUgZnV6emVkLiBDb25jdXJyZW5jeSBidWdzIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gZmluZCwgc28gYSBnb29kIGZ1enppbmcgY2FtcGFpZ24gbWlnaHQgdW5jb3ZlciBzb21lIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgb3IgcHJldmlvdXNseSB1bnNlZW4gaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIHByZXZpb3VzIG5vbi1hdG9taWMgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBhZGQgdGhpcyB0byB0aGUgZnV6emluZyBwaXBlbGluZS4KCkJlZm9yZSBJIGNhbiBkbyBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHksIGhvdyBJUFZTIGlzIGNvbmZpZ3VyZWQuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgY29udHJvbCBpdHMgYWN0aXZhdGlvbiBhbmQgYnVpbGQgb3B0aW9ucy4gSSYjMzk7bGwgc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgbWV0aG9kLCB3aGljaCBpcyB0byBzaW1wbHkgc2VhcmNoIHRocm91Z2ggdGhlIEtjb25maWcgZmlsZXMgZm9yIGFueSBpbnN0YW5jZSBvZiBgSVBfVlNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwYXJ0IG9mIHRoZSBrZXJuZWwgaXMgcHV0IHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzE4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgU2NvcGUgb2YgdGhlIFNjaGVkdWxlciBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlIGlzIGBJUF9WU2AuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgY29yZSBvZiB0aGUgSVAgVmlydHVhbCBTZXJ2ZXIuIEJ1dCwgYmVmb3JlIEkgZGl2ZSBpbnRvIHRlc3RpbmcgdGhlc2UgbW9kaWZpZWQgc2NoZWR1bGVycywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBvdGhlciBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBlbGVtZW50cy4gVGhlc2UgcGF0Y2hlcyBpbXBhY3QgcXVpdGUgYSBmZXcgc2NoZWR1bGVycywgc3BlY2lmaWNhbGx5OiBgaXBfdnNfZGguY2AsIGBpcF92c19mby5jYCwgYGlwX3ZzX2xibGMuY2AsIGBpcF92c19sYmxjci5jYCwgYGlwX3ZzX2xjLmNgLCBgaXBfdnNfbWguY2AsIGBpcF92c19ucS5jYCwgYGlwX3ZzX292Zi5jYCwgYGlwX3ZzX3JyLmNgLCBgaXBfdnNfc2VkLmNgLCBgaXBfdnNfc2guY2AsIGBpcF92c190d29zLmNgLCBgaXBfdnNfd2xjLmNgLCBhbmQgYGlwX3ZzX3dyci5jYC4KCkdpdmVuIHRoYXQsIEkgbmVlZCB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBmb3IgZWFjaCBvZiB0aGVzZSBpbmRpdmlkdWFsIHNjaGVkdWxlcnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgYmFzZXMgY292ZXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfVlNfLiomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAwOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipRdWljayBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIGxldCBtZSB0YWtlIGEgc3RlcCBiYWNrLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGNvbmZpZ3VyYXRpb24gc3RhdHVzIG9mIGBJUF9WU2Ag4oCTIG9yIG1vcmUgYnJvYWRseSwgdGhlIElQIFZpcnR1YWwgU2VydmVyIGZ1bmN0aW9uYWxpdHkuIE5vIG5lZWQgdG8gc3RhcnQgc2lmdGluZyB0aHJvdWdoIGNvbXBsZXggY29kZSByaWdodCBhd2F5LiBBIHN0cmFpZ2h0Zm9yd2FyZCBncmVwIGlzIGxpa2VseSB0aGUgZmFzdGVzdCByb3V0ZSBoZXJlLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIHRhcmdldCB0aGUgYG5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHNob3VsZCBiZSBkZWZpbmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHdoZXRoZXIgYGNvbmZpZyBJUF9WU2AgKG9yIHJlbGF0ZWQgdmFyaWFibGVzKSBpcyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgYnVpbHQgYXMgYSBtb2R1bGUuIEEgcXVpY2sgY2hlY2sgb2YgdGhhdCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIgSSBuZWVkIHRvIHByb2NlZWQgY29uZmlkZW50bHkuIEkgY2FuIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gdG8gaW5mb3JtIHRoZSByZXN0IG9mIG15IHJlc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15jb25maWcgSVBfVlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ2NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpSaWdodCwgc28gSSBzZWUgYSBgZ3JlcGAgcmVnZXggdGFyZ2V0aW5nIGBeY29uZmlnIElQX1ZTYCBhbmQgaXQmIzM5O3MgcGlja2luZyB1cCBgY29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTYC4gSG1tLCB0aGF0JiMzOTtzIG5vdCBxdWl0ZSB3aGF0IEkgd2FzIGFmdGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpyZWFsbHkqIGNvbnRyb2xsaW5nIHRoZSBjb3JlIElQVlMgZmVhdHVyZXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGRpcmVjdGx5IGludG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIExldCBtZSBlaXRoZXIgcmVhZCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlIG9yIHBlcmZvcm0gYW5vdGhlciBgZ3JlcGAgdGFyZ2V0aW5nIHRoZSBrZXl3b3JkcyBJJiMzOTtkIGV4cGVjdCB0byBiZSBhc3NvY2lhdGVkIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlua2luZyBgdHJpc3RhdGVgIGFuZCBgYm9vbGAgc2hvdWxkIG5hcnJvdyBpdCBkb3duIHNpZ25pZmljYW50bHksIGVzcGVjaWFsbHkgaW4gcHJveGltaXR5IHRvIGBjb25maWcgSVBfVlNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gd2hpY2ggdmFyaWFibGVzIGRyaXZlIHRoZSBkaWZmZXJlbnQgYmVoYXZpb3VycyBhbmQgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIG1pZ2h0IGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteY29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTQ3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byBJUFZTIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIElQVlMgYXJlIHNldCB1cC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgYEtjb25maWdgIGZpbGVzIGFyZSB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIGZvciB0aGlzIGtpbmQgb2YgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGtlcm5lbC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNlYXJjaCBmb3Igb2NjdXJyZW5jZXMgb2YgJiMzNDtjb25maWcgJiMzNDsgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBxdWljayBvdmVydmlldyBvZiB3aGF0JiMzOTtzIGF2YWlsYWJsZSBhbmQgaG93IGl0JiMzOTtzIHN0cnVjdHVyZWQgaW4gdGhlIGJ1aWxkIHN5c3RlbS4gQSBgZ3JlcGAgb24gdGhhdCBmaWxlIGlzIHRoZSBxdWlja2VzdCB3YXkgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCBzZWUgdGhlIGF2YWlsYWJsZSBzeW1ib2xzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteY29uZmlnICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTEwMD1jb25maWdcdElQX1ZTX1BST1RPX0FIXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTA2OmNvbmZpZyAgSVBfVlNfUFJPVE9fU0NUUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA3LVx0Ym9vbCBcJiMzNDtTQ1RQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0xNDc9Y29uZmlnXHRJUF9WU19XTENcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNTc6Y29uZmlnICBJUF9WU19GT1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU4LVx0XHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTY2LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTY3OmNvbmZpZyAgSVBfVlNfT1ZGXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNjgtXHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBvdmVyZmxvdyBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTc4PWNvbmZpZ1x0SVBfVlNfTEJMQ1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE5MS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE5Mjpjb25maWcgIElQX1ZTX0xCTENSXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTMtXHR0cmlzdGF0ZSBcJiMzNDtsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM0NT1jb25maWdcdElQX1ZTX1BFX1NJUFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM1MS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1Mjpjb25maWcgR0NPVl9QUk9GSUxFX0lQVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM1My1cdGJvb2wgXCYjMzQ7RW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBJUFZTXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODI3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSVBWUyBDb25maWd1cmF0aW9uIFNjYW4qKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBpdC4gTXkgaW5pdGlhbCBzY2FuIGhhcyBwaWNrZWQgdXAgb24gYSBoYW5kZnVsIG9mIElQVlMgbG9hZCBiYWxhbmNpbmcgbWV0aG9kcyBhbmQgdGhlaXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zOiBgSVBfVlNfV0xDYCwgYElQX1ZTX0ZPYCwgYElQX1ZTX09WRmAsIGBJUF9WU19MQkxDYCwgYW5kIGBJUF9WU19MQkxDUmAuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBtb3N0IGxvZ2ljYWwgbmV4dCBzdGVwOiBhIGRlZXAgZGl2ZSBpbnRvIHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGJlLCBhcyBpdCB3aWxsIHJldmVhbCBhbGwgdGhlIGludHJpY2FjaWVzIG9mIGhvdyB0aGVzZSBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIG9mIGVhY2ggZmxhZywgYXMgd2VsbCBhcyB0aGUgYnVpbGQgcHJvY2Vzcy4gSSB3YW50IHRvIHNlZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyByZWxhdGVkIHRvIHRob3NlIHZhcmlvdXMgSVBWUyBzY2hlZHVsaW5nIGFsZ29yaXRobXMsIGFuZCBwcmVjaXNlbHkgaG93IHRoZXkmIzM5O3JlIGV4cG9zZWQgdG8gdGhlIHVzZXIuIEZyb20gdGhlcmUgSSBjYW4gZGV0ZXJtaW5lIGhvdyBlYWNoIGlzIGVuYWJsZWQgYW5kIHVzZWQsIGFuZCBhbnkgcG9zc2libGUgYXJlYXMgb2YgY29uZmxpY3Qgb3Igb3ZlcmxhcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJiMzOTtJUFZTIFNIIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXHRpbnQgXCYjMzQ7SVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJiMzOTtJUFZTIE1IIHNjaGVkdWxlciYjMzk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVx0aW50IFwmIzM0O0lQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDE5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50IGRvd246CgoqKkludmVzdGlnYXRpbmcgSVBWUyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgc28gSSB3YXMgaW5pdGlhbGx5IHVzaW5nIGBncmVwYCBhbmQgc3BlY2lmaWVkIGBjb25maWcgSVBfVlNgIHRvIGZpbmQgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBJUFZTLCBidXQgaXQmIzM5O3Mgb25seSByZXR1cm5pbmcgYSBsaW1pdGVkIHN1YnNldDogYGNvbmZpZyBJUF9WU19TSF9UQUJfQklUU2AsIGBjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYYCwgYW5kIGBtZW51Y29uZmlnIElQX1ZTYC4gVGhhdCYjMzk7cyBub3QgcmlnaHQ7IHRoZXJlIGhhdmUgdG8gYmUgbW9yZS4gSSYjMzk7bSB1c2VkIHRvIGRlYWxpbmcgd2l0aCBjb21wbGV4IGtlcm5lbCBjb25maWd1cmF0aW9ucywgc28gc29tZXRoaW5nJiMzOTtzIGNsZWFybHkgdXAgaGVyZS4KCkkmIzM5O20gYmV0dGluZyB0aG9zZSBvdGhlciBvcHRpb25zIGFyZSBuZXN0ZWQsIG1vc3QgbGlrZWx5IGluZGVudGVkIG9yIHBlcmhhcHMgdXNpbmcgdGFicywgd2hpY2ggbXkgaW5pdGlhbCBgZ3JlcGAgY29tbWFuZCBpc24mIzM5O3QgYWNjb3VudGluZyBmb3IuIEkgbmVlZCBhIG1vcmUgZ2VuZXJhbCBzZWFyY2guCgpMZXQmIzM5O3MgdHJ5IGEgYnJvYWRlciBzZWFyY2ggdXNpbmcgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBhY2NvdW50cyBmb3IgdGhhdCBpbmRlbnRhdGlvbi4gSSYjMzk7bGwgc2VhcmNoIGZvciBgY29uZmlnLipJUF9WU2Agd2l0aGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AuIFRoYXQgc2hvdWxkIGNhcHR1cmUgYW55IGBjb25maWdgIGxpbmUgZm9sbG93ZWQgYnkgYW55dGhpbmcgYW5kIHRoZW4gYElQX1ZTYC4gVGhpcyBzaG91bGQgY2F0Y2ggdGhlIG1pc3Npbmcgb25lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnLipJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI3PWlmIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yOC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI5OmNvbmZpZ1x0SVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAtXHRib29sIFwmIzM0O0lQdjYgc3VwcG9ydCBmb3IgSVBWU1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mzg6Y29uZmlnXHRJUF9WU19ERUJVR1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzktXHRib29sIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQ0LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NDU6Y29uZmlnXHRJUF9WU19UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNDYtXHRpbnQgXCYjMzQ7SVBWUyBjb25uZWN0aW9uIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03Nz1jb21tZW50IFwmIzM0O0lQVlMgdHJhbnNwb3J0IHByb3RvY29sIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTc4LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Nzk6Y29uZmlnXHRJUF9WU19QUk9UT19UQ1Bcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtUQ1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTg0LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6ODU6Y29uZmlnXHRJUF9WU19QUk9UT19VRFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTg2LVx0Ym9vbCBcJiMzNDtVRFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTkwLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6OTE6Y29uZmlnXHRJUF9WU19QUk9UT19BSF9FU1Bcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTkyLVx0ZGVmX2Jvb2wgSVBfVlNfUFJPVE9fRVNQIHx8IElQX1ZTX1BST1RPX0FIXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05My1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjk0OmNvbmZpZ1x0SVBfVlNfUFJPVE9fRVNQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05NS1cdGJvb2wgXCYjMzQ7RVNQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05OS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwMDpjb25maWdcdElQX1ZTX1BST1RPX0FIXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDEtXHRib29sIFwmIzM0O0FIIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDUtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMDY6Y29uZmlnICBJUF9WU19QUk9UT19TQ1RQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXHRib29sIFwmIzM0O1NDVFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTExMz1jb21tZW50IFwmIzM0O0lQVlMgc2NoZWR1bGVyXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMTQtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMTU6Y29uZmlnXHRJUF9WU19SUlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTE2LVx0dHJpc3RhdGUgXCYjMzQ7cm91bmQtcm9iaW4gc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEyMy0gXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMjQ6Y29uZmlnXHRJUF9WU19XUlJcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEyNS1cdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMzYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMzc6Y29uZmlnXHRJUF9WU19MQ1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTM4LVx0dHJpc3RhdGUgXCYjMzQ7bGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTQ2LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTQ3OmNvbmZpZ1x0SVBfVlNfV0xDXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNDgtXHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNTc6Y29uZmlnICBJUF9WU19GT1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU4LVx0XHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTY2LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTY3OmNvbmZpZyAgSVBfVlNfT1ZGXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNjgtXHR0cmlzdGF0ZSBcJiMzNDt3ZWlnaHRlZCBvdmVyZmxvdyBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTc3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTc4OmNvbmZpZ1x0SVBfVlNfTEJMQ1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTc5LVx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTkyOmNvbmZpZyAgSVBfVlNfTEJMQ1Jcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE5My1cdHRyaXN0YXRlIFwmIzM0O2xvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjA5LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjEwOmNvbmZpZ1x0SVBfVlNfREhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O2Rlc3RpbmF0aW9uIGhhc2hpbmcgc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIxOS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjIyMDpjb25maWdcdElQX1ZTX1NIXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMjEtXHR0cmlzdGF0ZSBcJiMzNDtzb3VyY2UgaGFzaGluZyBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjI5LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjMwOmNvbmZpZ1x0SVBfVlNfTUhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIzMS1cdHRyaXN0YXRlIFwmIzM0O21hZ2xldiBoYXNoaW5nIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNDgtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyNDk6Y29uZmlnXHRJUF9WU19TRURcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI1MC1cdHRyaXN0YXRlIFwmIzM0O3Nob3J0ZXN0IGV4cGVjdGVkIGRlbGF5IHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNjEtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyNjI6Y29uZmlnXHRJUF9WU19OUVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjYzLVx0dHJpc3RhdGUgXCYjMzQ7bmV2ZXIgcXVldWUgc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI3NC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI3NTpjb25maWdcdElQX1ZTX1RXT1Ncbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI3Ni1cdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIHJhbmRvbSB0d29zIGNob2ljZSBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMTk9Y29tbWVudCAmIzM5O0lQVlMgYXBwbGljYXRpb24gaGVscGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyMTpjb25maWdcdElQX1ZTX0ZUUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzIyLVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIGhlbHBlclwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMzNi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMzNzpjb25maWdcdElQX1ZTX05GQ1Rcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMzOC1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDQtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDU6Y29uZmlnXHRJUF9WU19QRV9TSVBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0Ni1cdHRyaXN0YXRlIFwmIzM0O1NJUCBwZXJzaXN0ZW5jZSBlbmdpbmVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4OTEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA4ODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgU2VsZWN0aW9uIGZvciB0aGUgSVBWUyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGZvciBmdXp6aW5nLiBGaXJzdCwgSSBuZWVkIHRvIGRlZmluZSB0aGUgY29uZmlndXJhdGlvbnMgdG8gZW5hYmxlLiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGUgZm9sbG93aW5nOiBgSVBfVlNgLCBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLiBJJiMzOTtsbCBhZGQgYWxsIG9mIHRoZXNlIHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCB0byBlbnN1cmUgY29tcHJlaGVuc2l2ZSBjb3ZlcmFnZSBvZiB0aGUgSVBWUyBmZWF0dXJlcy4KCk5vdywgZm9yIHRoZSBjcml0aWNhbCBwYXJ0OiBzZWxlY3RpbmcgdGhlIGtleSBmdW5jdGlvbnMgZm9yIGZvY3VzZWQgZnV6emluZywgdGhlIGBGb2N1c1N5bWJvbHNgLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYSBzaWduaWZpY2FudCBudW1iZXIgb2YgZnVuY3Rpb25zLiBJIG5lZWQgdG8gc3RyYXRlZ2ljYWxseSBwaWNrIHRoZSBvbmVzIHRoYXQgYXJlIG1vc3QgbGlrZWx5IHRvIGV4cG9zZSB2dWxuZXJhYmlsaXRpZXMgcmVsYXRlZCB0byB0aGUgY2hhbmdlcyBpbnRyb2R1Y2VkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgc2NoZWR1bGluZyBmdW5jdGlvbnMgYXMgdGhleSBhcmUgdGhlIGNvcmUgbG9naWMgb2YgZWFjaCBzY2hlZHVsZXIgYW5kIGFyZSBkaXJlY3RseSBpbnRlcmFjdGluZyB3aXRoIHBvdGVudGlhbGx5IG1vZGlmaWVkIGBkZXN0LSZndDtmbGFnc2AuIFRoZXNlIGFyZSBzdHJvbmcgc3RhcnRpbmcgcG9pbnRzLiBBZGRpdGlvbmFsbHksIEkgbmVlZCB0byBpbmNsdWRlIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYW5kIGBfX2lwX3ZzX3VubGlua19kZXN0YCBzaW5jZSB0aGV5JiMzOTtyZSBtb2RpZnlpbmcgdGhlIGZsYWdzLiBBbHNvIGBpcF92c19iaW5kX2Rlc3RgIGFuZCBgaXBfdnNfdW5iaW5kX2Rlc3RgIHdoaWNoIGFyZSBhbHNvIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZy4KCkxldCYjMzk7cyBsaXN0IHRoZW0gb3V0OgpgaXBfdnNfZGhfc2NoZWR1bGVgCmBpcF92c19mb19zY2hlZHVsZWAKYF9faXBfdnNfbGJsY19zY2hlZHVsZWAKYGlwX3ZzX2xibGNfc2NoZWR1bGVgCmBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlYApgaXBfdnNfbGNfc2NoZWR1bGVgCmBpcF92c19ucV9zY2hlZHVsZWAKYGlwX3ZzX292Zl9zY2hlZHVsZWAKYGlwX3ZzX3JyX3NjaGVkdWxlYApgaXBfdnNfc2VkX3NjaGVkdWxlYApgaXBfdnNfdHdvc19zY2hlZHVsZWAKYGlwX3ZzX3dsY19zY2hlZHVsZWAKYGlwX3ZzX3dycl9zY2hlZHVsZWAKYF9faXBfdnNfdXBkYXRlX2Rlc3RgCmBfX2lwX3ZzX3VubGlua19kZXN0YApgaXBfdnNfYmluZF9kZXN0YApgaXBfdnNfdW5iaW5kX2Rlc3RgCgpIb2xkIG9uIGEgbWludXRlLCB0aGVyZSYjMzk7cyBhIHN1YnRsZSBwb2ludCB0byBhZGRyZXNzIHJlZ2FyZGluZyBgaXBfdnNfbWhfc2NoZWR1bGVgIGFuZCBgaXBfdnNfc2hfc2NoZWR1bGVgLiBXaGlsZSB0aGVzZSBzY2hlZHVsZXIgZnVuY3Rpb25zIHRoZW1zZWx2ZXMgYXJlbiYjMzk7dCBkaXJlY3RseSBtb2RpZmllZCwgdGhlIHJlbGF0ZWQgYGlzX3VuYXZhaWxhYmxlYCBmdW5jdGlvbnMgd2l0aGluIGBpcF92c19taC5jYCBhbmQgYGlwX3ZzX3NoLmNgIGFyZS4gSSBuZWVkIHRvIGRlY2lkZSBpZiBJIGluY2x1ZGUgdGhlIHNjaGVkdWxlIGZ1bmN0aW9ucyBhcyB3ZWxsLiBBIHF1aWNrIGNoZWNrIHRvIHNlZSBpZiB0aGV5IGV4aXN0IGlzIGluIG9yZGVyIGJlZm9yZSBwcm9jZWVkaW5nLiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIHRvIGVuc3VyZSBJIGNvdmVyIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIG9yIHJlbGF0ZWQgY29kZSBjaGFuZ2VzIHdpdGhpbiB0aG9zZSBtb2R1bGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19taF9zY2hlZHVsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jPTQ3MD1zdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmM6NDcxOmlwX3ZzX21oX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYy00NzItXHRcdCAgc3RydWN0IGlwX3ZzX2lwaGRyICppcGgpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTA3LS8qIElQVlMgTUggU2NoZWR1bGVyIHN0cnVjdHVyZSAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmM6NTA4OnN0YXRpYyBzdHJ1Y3QgaXBfdnNfc2NoZWR1bGVyIGlwX3ZzX21oX3NjaGVkdWxlciA9IHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUwOS1cdC5uYW1lID1cdFx0XHRcJiMzNDttaFwmIzM0Oyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYy01MTEtXHQubW9kdWxlID1cdFx0VEhJU19NT0RVTEUsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYzo1MTI6XHQubl9saXN0XHQgPVx0XHRMSVNUX0hFQURfSU5JVChpcF92c19taF9zY2hlZHVsZXIubl9saXN0KSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUxMy1cdC5pbml0X3NlcnZpY2UgPVx0XHRpcF92c19taF9pbml0X3N2Yyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYy01MTctXHQudXBkX2Rlc3QgPVx0XHRpcF92c19taF9kZXN0X2NoYW5nZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYzo1MTg6XHQuc2NoZWR1bGUgPVx0XHRpcF92c19taF9zY2hlZHVsZSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUxOS19O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jPTUyMT1zdGF0aWMgaW50IF9faW5pdCBpcF92c19taF9pbml0KHZvaWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYy01MjIte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmM6NTIzOlx0cmV0dXJuIHJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19taF9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTI0LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYz01MjY9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX21oX2NsZWFudXAodm9pZClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUyNy17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYzo1Mjg6XHR1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19taF9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTI5LVx0cmN1X2JhcnJpZXIoKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxMzEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgcmVuZGVyZWQgYXMgaWYgSSYjMzk7bSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipDb25maXJtaW5nIEV4aXN0ZW5jZSBhbmQgUGxhbm5pbmcgVmVyaWZpY2F0aW9uKioKClllcywgdGhlIGNvbmNlcHRzLCB3aGF0ZXZlciB0aGV5IGFyZSwgZGVmaW5pdGVseSBleGlzdC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGdyb3VuZGVkIGluIHRoYXQgcmVhbGl0eSBmaXJzdC4gT2theSwgbm93IHRoYXQgdGhhdOKAmXMgY29uZmlybWVkLCBJIG5lZWQgdG8gdmVyaWZ5IHNvbWV0aGluZyBzcGVjaWZpYyByZWxhdGVkIHRvIHRoZW0uLi4gTGV0JiMzOTtzIHNlZSwgdGhlIG5leHQgc3RlcCBpcyB0byBjaGVjayBgaXBfdnNfc2hfc2NoZWR1bGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19zaF9zY2hlZHVsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jPTMwNz1zdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmM6MzA4OmlwX3ZzX3NoX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zMDktXHRcdCAgc3RydWN0IGlwX3ZzX2lwaGRyICppcGgpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzE3LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmM6MzE4Olx0SVBfVlNfREJHKDYsIFwmIzM0O2lwX3ZzX3NoX3NjaGVkdWxlKCk6IFNjaGVkdWxpbmcuLi5cXG5cJiMzNDspO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzE5LVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM0Ni0gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jOjM0NzpzdGF0aWMgc3RydWN0IGlwX3ZzX3NjaGVkdWxlciBpcF92c19zaF9zY2hlZHVsZXIgPVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzQ4LXtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zNTEtXHQubW9kdWxlID1cdFx0VEhJU19NT0RVTEUsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYzozNTI6XHQubl9saXN0XHQgPVx0XHRMSVNUX0hFQURfSU5JVChpcF92c19zaF9zY2hlZHVsZXIubl9saXN0KSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM1My1cdC5pbml0X3NlcnZpY2UgPVx0XHRpcF92c19zaF9pbml0X3N2Yyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zNTctXHQudXBkX2Rlc3QgPVx0XHRpcF92c19zaF9kZXN0X2NoYW5nZWQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYzozNTg6XHQuc2NoZWR1bGUgPVx0XHRpcF92c19zaF9zY2hlZHVsZSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM1OS19O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jPTM2Mj1zdGF0aWMgaW50IF9faW5pdCBpcF92c19zaF9pbml0KHZvaWQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zNjMte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmM6MzY0Olx0cmV0dXJuIHJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19zaF9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzY1LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYz0zNjg9c3RhdGljIHZvaWQgX19leGl0IGlwX3ZzX3NoX2NsZWFudXAodm9pZClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM2OS17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYzozNzA6XHR1bnJlZ2lzdGVyX2lwX3ZzX3NjaGVkdWxlcihcdTAwMjZpcF92c19zaF9zY2hlZHVsZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzcxLVx0c3luY2hyb25pemVfcmN1KCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDMyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIElQVlMgRnVuY3Rpb25zIGZvciBJbmNsdXNpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBpbmNsdWRpbmcgYGlwX3ZzX3NoX3NjaGVkdWxlYCBhbmQgYGlwX3ZzX21oX3NjaGVkdWxlYC4gTWFrZXMgc2Vuc2UuIE5vdywgbGV0JiMzOTtzIGp1c3QgZG8gYSBxdWljayByZXZpZXcgb2YgdGhlIGF2YWlsYWJsZSBmb2N1cyBzeW1ib2xzLgoKT2theSwgaGVyZSYjMzk7cyB0aGUgZnVsbCBsaXN0OiBgaXBfdnNfZGhfc2NoZWR1bGVgLCBgaXBfdnNfZm9fc2NoZWR1bGVgLCBgX19pcF92c19sYmxjX3NjaGVkdWxlYCwgYGlwX3ZzX2xibGNfc2NoZWR1bGVgLCBgX19pcF92c19sYmxjcl9zY2hlZHVsZWAsIGBpcF92c19sY19zY2hlZHVsZWAsIGBpcF92c19taF9zY2hlZHVsZWAsIGBpcF92c19ucV9zY2hlZHVsZWAsIGBpcF92c19vdmZfc2NoZWR1bGVgLCBgaXBfdnNfcnJfc2NoZWR1bGVgLCBgaXBfdnNfc2VkX3NjaGVkdWxlYCwgYGlwX3ZzX3NoX3NjaGVkdWxlYCwgYGlwX3ZzX3R3b3Nfc2NoZWR1bGVgLCBgaXBfdnNfd2xjX3NjaGVkdWxlYCwgYGlwX3ZzX3dycl9zY2hlZHVsZWAsIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYF9faXBfdnNfdW5saW5rX2Rlc3RgLCBgaXBfdnNfYmluZF9kZXN0YCwgYW5kIGBpcF92c191bmJpbmRfZGVzdGAuCgpOaW5ldGVlbiBmdW5jdGlvbnM/IFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIG51bWJlcjsgdGhlcmUgaXNuJiMzOTt0IGEgaGFyZCBsaW1pdCwgYnV0IGl0JiMzOTtzIGdvb2QgdG8ga2VlcCB0aGluZ3MgY29uY2lzZS4gVGhpbmtpbmcgaXQgdGhyb3VnaC4uLiBgaXBfdnNfYmluZF9kZXN0YCBhbmQgYGlwX3ZzX3VuYmluZF9kZXN0YCBoYW5kbGUgYmluZGluZyBhbmQgdW5iaW5kaW5nIGRlc3RpbmF0aW9ucywgYW5kIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCBhbmQgYF9faXBfdnNfdW5saW5rX2Rlc3RgIGRlYWwgd2l0aCBkZXN0aW5hdGlvbiB1cGRhdGVzIGFuZCB1bmxpbmtpbmcuIFRoZSBgKl9zY2hlZHVsZWAgZnVuY3Rpb25zIGFyZSwgb2YgY291cnNlLCB0aGUga2V5IGNvbm5lY3Rpb24gc2NoZWR1bGluZyBsb2dpYy4gWWVhaCwgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQsIGNvbXByZWhlbnNpdmUgc2V0IG9mIHRhcmdldHMuCgpOb3cgbGV0JiMzOTtzIHJldmlldyB0aGUgZW5hYmxpbmcgY29uZmlnczogYElQX1ZTYCwgYElQX1ZTX1JSYCwgYElQX1ZTX1dSUmAsIGBJUF9WU19MQ2AsIGBJUF9WU19XTENgLCBgSVBfVlNfRk9gLCBgSVBfVlNfT1ZGYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgLCBgSVBfVlNfREhgLCBgSVBfVlNfU0hgLCBgSVBfVlNfTUhgLCBgSVBfVlNfU0VEYCwgYElQX1ZTX05RYCwgYW5kIGBJUF9WU19UV09TYC4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiBgSVBfVlNgIGl0c2VsZiBpcyBlbm91Z2guIEkga25vdyBpdCBkZXBlbmRzIG9uIGBORVRGSUxURVJgIGFuZCBgTkVUYCwgYnV0IHRob3NlIGFyZSB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdC4gU3RpbGwsIGJldHRlciB0byBjb25maXJtIGFuZCBiZSBzdXJlLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIG9mIGBJUF9WU2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz01PW1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIChORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLPW4pXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI5PWNvbmZpZ1x0SVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAtXHRib29sIFwmIzM0O0lQdjYgc3VwcG9ydCBmb3IgSVBWU1wmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzE6XHRkZXBlbmRzIG9uIElQVjYgPSB5IHx8IElQX1ZTID0gSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzItXHRzZWxlY3QgTkZfREVGUkFHX0lQVjZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMjE9Y29uZmlnXHRJUF9WU19GVFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMi1cdHRyaXN0YXRlIFwmIzM0O0ZUUCBwcm90b2NvbCBoZWxwZXJcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyMzpcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVCBcdTAwMjZcdTAwMjYgXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cdFx0TkZfQ09OTlRSQUNLX0ZUUFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMzNz1jb25maWdcdElQX1ZTX05GQ1Rcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMzOC1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmdcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMzOTpcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDAtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1x0SVBfVlNfUEVfU0lQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDYtXHR0cmlzdGF0ZSBcJiMzNDtTSVAgcGVyc2lzdGVuY2UgZW5naW5lXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDc6XHRkZXBlbmRzIG9uIElQX1ZTX1BST1RPX1VEUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ4Olx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tfU0lQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDktXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzUyPWNvbmZpZyBHQ09WX1BST0ZJTEVfSVBWU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUzLVx0Ym9vbCBcJiMzNDtFbmFibGUgR0NPViBwcm9maWxpbmcgZm9yIElQVlNcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1NDpcdGRlcGVuZHMgb24gR0NPVl9LRVJORUxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM1NS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4NTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIFRob3VnaHRzKioKCk9rYXksIHNvIGBJTkVUYCBhbmQgYE5FVEZJTFRFUmAgYXJlIHByZXR0eSBtdWNoIGdpdmVucywgc3RhbmRhcmQgY29tcG9uZW50cy4gTm8gbmVlZCB0byBiZWxhYm9yIHRob3NlLiBJJiMzOTtsbCBqdXN0IGZvY3VzIG9uIGBJUF9WU2AgYW5kIHRoZSBzY2hlZHVsZXIgY29uZmlndXJhdGlvbnMuIExldCYjMzk7cyBzZWUuLi4gYmVmb3JlIEkgbW92ZSBvbiwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHNvbWV0aGluZyByZWxhdGVkIHRvIGBJUF9WU19QUk9UT19UQ1BgIGFuZCBgSVBfVlNfUFJPVE9fVURQYC4gVGhvc2UgYXJlIGJvb2xlYW4gb3B0aW9ucywgYW5kIHRoZXkgZGVmYXVsdCB0byAmIzM5O3kmIzM5OywgcmlnaHQ/IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCB0byBiZSBzdXJlIG15IGFzc3VtcHRpb25zIGFyZSBjb3JyZWN0LCBkb24mIzM5O3Qgd2FudCBhbnkgc3VycHJpc2VzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WU19QUk9UT19UQ1AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMTAxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczoKCioqSW52ZXN0aWdhdGluZyBUQ1AgTG9hZCBCYWxhbmNpbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgbWludXRlLiBJIHNlZW0gdG8gcmVjYWxsIGVuY291bnRlcmluZyBzb21ldGhpbmcgcmVsYXRlZCB0byBgSVBfVlNfUFJPVE9fVENQYCBkdXJpbmcgbXkgZWFybGllciByZXZpZXcuIEl0JiMzOTtzIGNydWNpYWwgdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBvZiB0aGlzIHZhcmlhYmxlLiBUaGUgZGV0YWlscyBzdXJyb3VuZGluZyBpdCBhcmUgbmVjZXNzYXJ5IHRvIGFzY2VydGFpbiBpdCYjMzk7cyBzaWduaWZpY2FuY2UuIExldCBtZSBqdXN0IHF1aWNrbHkgdXNlIGBncmVwYCB0byBodW50IGRvd24gd2hlcmUgdGhhdCBwYXJ0aWN1bGFyIHN0cmluZyByZXNpZGVzIGluIHRoZSByZWxldmFudCBjb2RlYmFzZSBvciBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBUQ1AtYmFzZWQgbG9hZCBiYWxhbmNpbmcgc2V0dXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGl0IGFsaWducyB3aXRoIHRoZSBleHBlY3RlZCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9WU19QUk9UT19UQ1AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03Nz1jb21tZW50IFwmIzM0O0lQVlMgdHJhbnNwb3J0IHByb3RvY29sIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTc4LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Nzk6Y29uZmlnXHRJUF9WU19QUk9UT19UQ1Bcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtUQ1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMyMT1jb25maWdcdElQX1ZTX0ZUUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzIyLVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIGhlbHBlclwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIzOlx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19UQ1AgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfTkFUIFx1MDAyNlx1MDAyNiBcXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzI0LVx0XHRORl9DT05OVFJBQ0tfRlRQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTE3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgeW91ciBzdW1tYXJ5OgoKKipXb3JraW5nIFRocm91Z2ggdGhlIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBjb25maWdcdElQX1ZTX1BST1RPX1RDUGAgaGVyZS4gUmlnaHQsIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBmb3IgVENQIHByb3RvY29sIGhhbmRsaW5nIGlzIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyB0byB2ZXJpZnkgdGhlIGRlZmF1bHQgc3RhdGUuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBvZiB0aGUgbnVhbmNlcyB0aGlzIHNldHRpbmcgY291bGQgaW1wYWN0IGRvd25zdHJlYW0sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpdHMgaW5pdGlhbCBiZWhhdmlvci4gSXMgaXQgc2V0IHRvICYjMzQ7eSYjMzQ7IGJ5IGRlZmF1bHQ/IFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lIHVuZGVyc3RhbmRpbmcgSSBuZWVkIGJlZm9yZSBJIGNhbiBhc3Nlc3MgYW55IHBvdGVudGlhbCBtb2RpZmljYXRpb25zIG9yIGNhc2NhZGluZyBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9WU19QUk9UT19UQ1AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03Nz1jb21tZW50IFwmIzM0O0lQVlMgdHJhbnNwb3J0IHByb3RvY29sIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTc4LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Nzk6Y29uZmlnXHRJUF9WU19QUk9UT19UQ1Bcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtUQ1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMyMT1jb25maWdcdElQX1ZTX0ZUUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzIyLVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIGhlbHBlclwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIzOlx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19UQ1AgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfTkFUIFx1MDAyNlx1MDAyNiBcXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzI0LVx0XHRORl9DT05OVFJBQ0tfRlRQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTExCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkFkZGluZyBQcm90b2NvbCBEZWZpbml0aW9ucyBmb3IgUm9idXN0bmVzcyoqCgpBbHJpZ2h0LCBnaXZlbiB0aGUgY29udGV4dCwgSSB0aGluayB0aGUgbW9zdCBzdHJhaWdodGZvcndhcmQgYXBwcm9hY2ggaXMgdG8gYmUgY29tcHJlaGVuc2l2ZSBhbmQgYWRkIGRlZmluaXRpb25zIGZvciBib3RoIGBJUF9WU19QUk9UT19UQ1BgIGFuZCBgSVBfVlNfUFJPVE9fVURQYC4gQmV0dGVyIHRvIGhhdmUgdGhlbSBhbmQgbm90IG5lZWQgdGhlbSB0aGFuIHRoZSBvdGhlciB3YXkgYXJvdW5kLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIG5ldHdvcmsgcHJvdG9jb2xzLiBJdCYjMzk7cyBhIHF1aWNrIGFkZGl0aW9uIGFuZCBlbnN1cmVzIHdlIGhhbmRsZSBib3RoIG1ham9yIHRyYW5zcG9ydCBwcm90b2NvbHMgZXhwbGljaXRseS4KCk5vdywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgY29uZmlybSBteSBhc3N1bXB0aW9ucywgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgSVBfVlNfUFJPVE9fVURQYCBpcyBkZWZpbmVkIGFzIEkgZXhwZWN0LiBObyBwb2ludCBpbiBhc3N1bWluZyBhbnl0aGluZyB3aGVuIGEgcXVpY2sgaW5zcGVjdGlvbiBjYW4gZ2l2ZSBwZWFjZSBvZiBtaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9WU19QUk9UT19VRFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03OT1jb25maWdcdElQX1ZTX1BST1RPX1RDUFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTg0LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6ODU6Y29uZmlnXHRJUF9WU19QUk9UT19VRFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTg2LVx0Ym9vbCBcJiMzNDtVRFAgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM0NT1jb25maWdcdElQX1ZTX1BFX1NJUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ2LVx0dHJpc3RhdGUgXCYjMzQ7U0lQIHBlcnNpc3RlbmNlIGVuZ2luZVwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19VRFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0OC1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLX1NJUFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM1MQoJCQkJCQkJb3V0cHV0OiA1MjEKCQkJCQkJCXRob3VnaHRzOiA2NzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSVBWUyBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IHdhcyByaWdodCwgSSYjMzk7bGwgYmUgYWRkaW5nIHRob3NlIGNvbmZpZ3VyYXRpb25zLiBOb3csIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb25zIGxpc3RlZCwgaXQmIzM5O3MgY2xlYXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgSVBWUyBtb2R1bGUuIEkgaGF2ZSBhIGdvb2QgaGFuZGxlIG9uIHRob3NlLiBUaGVuIHRoZXJlIGFyZSB0aGUgRm9jdXNTeW1ib2xzLCB0aGUgc2NoZWR1bGluZyBmdW5jdGlvbnMgZm9yIHZhcmlvdXMgYWxnb3JpdGhtcy4gCgpNeSBpbml0aWFsIHRob3VnaHRzIHdlcmUgY29uZmlybWVkLCB0aGUgc2NoZWR1bGVycyB0aGVtc2VsdmVzLCBhbmQgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gZGVzdCB1cGRhdGUgYW5kIGJpbmRpbmcgYXJlIGRlZmluaXRlbHkgdGhlIG1vc3QgaW50ZXJlc3RpbmcgdGFyZ2V0cyBoZXJlLiBJIHdhcyByaWdodCB0byBmb2N1cyBvbiB0aG9zZSBhcmVhcy4gVGhlIHJlYXNvbmluZyBpcyBjbGVhciAtIHRoZSBwYXRjaCBpcyBjcnVjaWFsIGJlY2F1c2UgaXQgY2hhbmdlcyBgZGVzdC0mZ3Q7ZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgcmVwbGFjZXMgYml0d2lzZSBvcGVyYXRpb25zIHdpdGggYXRvbWljIGZ1bmN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGZ1bmRhbWVudGFsIGZpeCBmb3IgcG90ZW50aWFsIGRhdGEgcmFjZXMgd2l0aGluIHRoZSBJUFZTIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCBhZGRyZXNzZXMgaG93IGRlc3RpbmF0aW9uIGZsYWdzIGxpa2UgYElQX1ZTX0RFU1RfRl9PVkVSTE9BRGAgYW5kIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCBhcmUgaGFuZGxlZC4gVGhlc2UgZmxhZ3MgYXJlIGNvbmN1cnJlbnRseSByZWFkIGFuZCB1cGRhdGVkIGJ5IHNjaGVkdWxlcnMgYW5kIGRpZmZlcmVudCBjb250cm9sIHBhdGhzIHdpdGhpbiBJUFZTLgoKU28sIGZ1enppbmcgdGhlIElQVlMgc2NoZWR1bGVycyBpcyBhIE1VU1QuIEFsc28gdGhlIGZ1bmN0aW9ucyByZXNwb25zaWJsZSBmb3IgZGVzdGluYXRpb24gbWFuYWdlbWVudCwgYW5kIGhvdyBhdG9taWMgb3BlcmF0aW9ucyBhcmUgaGFuZGxlZC4gSXQmIzM5O3MgYWJvdXQgZW5zdXJpbmcgdGhlc2UgY2hhbmdlcyBhcmUgcm9idXN0LCBjb3JyZWN0LCBhbmQgaGF2ZW4mIzM5O3QgaW50cm9kdWNlZCBhbnkgbmV3IHJlZ3Jlc3Npb25zLiBJJiMzOTttIGNvbmZpZGVudCB3ZSYjMzk7dmUgaWRlbnRpZmllZCB0aGUga2V5IGFyZWFzIG9mIGNvbmNlcm4uIEl0IGFsbCBtYWtlcyBwZXJmZWN0IHNlbnNlLCBzbyBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OywKICAgICYjMzQ7SVBfVlNfUFJPVE9fVENQJiMzNDssCiAgICAmIzM0O0lQX1ZTX1BST1RPX1VEUCYjMzQ7LAogICAgJiMzNDtJUF9WU19SUiYjMzQ7LAogICAgJiMzNDtJUF9WU19XUlImIzM0OywKICAgICYjMzQ7SVBfVlNfTEMmIzM0OywKICAgICYjMzQ7SVBfVlNfV0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0ZPJiMzNDssCiAgICAmIzM0O0lQX1ZTX09WRiYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xCTENSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0RIJiMzNDssCiAgICAmIzM0O0lQX1ZTX1NIJiMzNDssCiAgICAmIzM0O0lQX1ZTX01IJiMzNDssCiAgICAmIzM0O0lQX1ZTX1NFRCYjMzQ7LAogICAgJiMzNDtJUF9WU19OUSYjMzQ7LAogICAgJiMzNDtJUF9WU19UV09TJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfZGhfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfZm9fc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2xibGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c19sYmxjcl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19taF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19ucV9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19vdmZfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfcnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfc2VkX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3R3b3Nfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfd2xjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dycl9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VwZGF0ZV9kZXN0JiMzNDssCiAgICAmIzM0O19faXBfdnNfdW5saW5rX2Rlc3QmIzM0OywKICAgICYjMzQ7aXBfdnNfYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX3VuYmluZF9kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2NoZWNrX3RlbXBsYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGRlc3QtXHUwMDNlZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgdXBkYXRlcyBhbGwgYml0d2lzZSBvcGVyYXRpb25zIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY19vcmAsIGBhdG9taWNfYW5kYCwgYGF0b21pY19yZWFkYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIHBvdGVudGlhbCBkYXRhIHJhY2VzIGluIHRoZSBJUFZTIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGhvdyBkZXN0aW5hdGlvbiBmbGFncyBsaWtlIGBJUF9WU19ERVNUX0ZfT1ZFUkxPQURgIGFuZCBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgY29uY3VycmVudGx5IGJ5IHZhcmlvdXMgc2NoZWR1bGVycyBhbmQgY29udHJvbCBwYXRocy4gRnV6emluZyB0aGUgSVBWUyBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIGF0b21pYyBvcGVyYXRpb25zIGFyZSBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O0lQX1ZTX1BST1RPX1RDUCYjMzQ7LAogICAgJiMzNDtJUF9WU19QUk9UT19VRFAmIzM0OywKICAgICYjMzQ7SVBfVlNfUlImIzM0OywKICAgICYjMzQ7SVBfVlNfV1JSJiMzNDssCiAgICAmIzM0O0lQX1ZTX0xDJiMzNDssCiAgICAmIzM0O0lQX1ZTX1dMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19GTyYjMzQ7LAogICAgJiMzNDtJUF9WU19PVkYmIzM0OywKICAgICYjMzQ7SVBfVlNfTEJMQyYjMzQ7LAogICAgJiMzNDtJUF9WU19MQkxDUiYjMzQ7LAogICAgJiMzNDtJUF9WU19ESCYjMzQ7LAogICAgJiMzNDtJUF9WU19TSCYjMzQ7LAogICAgJiMzNDtJUF9WU19NSCYjMzQ7LAogICAgJiMzNDtJUF9WU19TRUQmIzM0OywKICAgICYjMzQ7SVBfVlNfTlEmIzM0OywKICAgICYjMzQ7SVBfVlNfVFdPUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX2RoX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX2ZvX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O19faXBfdnNfbGJsY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19sYmxjX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O19faXBfdnNfbGJsY3Jfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbGNfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbWhfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfbnFfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7aXBfdnNfb3ZmX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3JyX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3NlZF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c19zaF9zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c190d29zX3NjaGVkdWxlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3dsY19zY2hlZHVsZSYjMzQ7LAogICAgJiMzNDtpcF92c193cnJfc2NoZWR1bGUmIzM0OywKICAgICYjMzQ7X19pcF92c191cGRhdGVfZGVzdCYjMzQ7LAogICAgJiMzNDtfX2lwX3ZzX3VubGlua19kZXN0JiMzNDssCiAgICAmIzM0O2lwX3ZzX2JpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c191bmJpbmRfZGVzdCYjMzQ7LAogICAgJiMzNDtpcF92c19jaGVja190ZW1wbGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGBkZXN0LVx1MDAzZWZsYWdzYCBpbiBgc3RydWN0IGlwX3ZzX2Rlc3RgIHRvIGBhdG9taWNfdGAgYW5kIHVwZGF0ZXMgYWxsIGJpdHdpc2Ugb3BlcmF0aW9ucyB0byB1c2UgYXRvbWljIG9wZXJhdGlvbnMgKGBhdG9taWNfb3JgLCBgYXRvbWljX2FuZGAsIGBhdG9taWNfcmVhZGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBwb3RlbnRpYWwgZGF0YSByYWNlcyBpbiB0aGUgSVBWUyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiBob3cgZGVzdGluYXRpb24gZmxhZ3MgbGlrZSBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCBhbmQgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFyZSByZWFkIGFuZCB1cGRhdGVkIGNvbmN1cnJlbnRseSBieSB2YXJpb3VzIHNjaGVkdWxlcnMgYW5kIGNvbnRyb2wgcGF0aHMuIEZ1enppbmcgdGhlIElQVlMgc2NoZWR1bGVycyBhbmQgZGVzdGluYXRpb24gbWFuYWdlbWVudCBmdW5jdGlvbnMgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSBhdG9taWMgb3BlcmF0aW9ucyBhcmUgY29ycmVjdGx5IGltcGxlbWVudGVkIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTA6MDEuNTY2NzQ0Nzk0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkxNTQzMjk5NTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19QUk9UT19UQ1BcIixcbiAgICBcIklQX1ZTX1BST1RPX1VEUFwiLFxuICAgIFwiSVBfVlNfUlJcIixcbiAgICBcIklQX1ZTX1dSUlwiLFxuICAgIFwiSVBfVlNfTENcIixcbiAgICBcIklQX1ZTX1dMQ1wiLFxuICAgIFwiSVBfVlNfRk9cIixcbiAgICBcIklQX1ZTX09WRlwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19TSFwiLFxuICAgIFwiSVBfVlNfTUhcIixcbiAgICBcIklQX1ZTX1NFRFwiLFxuICAgIFwiSVBfVlNfTlFcIixcbiAgICBcIklQX1ZTX1RXT1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19kaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfZm9fc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiX19pcF92c19sYmxjcl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGNfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX21oX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ucV9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfb3ZmX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ycl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfc2VkX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19zaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfdHdvc19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c193cnJfc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfdXBkYXRlX2Rlc3RcIixcbiAgICBcIl9faXBfdnNfdW5saW5rX2Rlc3RcIixcbiAgICBcImlwX3ZzX2JpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfdW5iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX2NoZWNrX3RlbXBsYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgZGVzdC1cXHUwMDNlZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgdXBkYXRlcyBhbGwgYml0d2lzZSBvcGVyYXRpb25zIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY19vcmAsIGBhdG9taWNfYW5kYCwgYGF0b21pY19yZWFkYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIHBvdGVudGlhbCBkYXRhIHJhY2VzIGluIHRoZSBJUFZTIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGhvdyBkZXN0aW5hdGlvbiBmbGFncyBsaWtlIGBJUF9WU19ERVNUX0ZfT1ZFUkxPQURgIGFuZCBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgY29uY3VycmVudGx5IGJ5IHZhcmlvdXMgc2NoZWR1bGVycyBhbmQgY29udHJvbCBwYXRocy4gRnV6emluZyB0aGUgSVBWUyBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIGF0b21pYyBvcGVyYXRpb25zIGFyZSBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUwOjAxLjU2Njc1NDEyNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg3MzYwNDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTAwZDAyNDM4N2M2ODI5ZDA3YmZiZGIyNTdhNWYxMjNkNDJkNDNjMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDE2OjQ5OjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lwX3ZzLmggYi9pbmNsdWRlL25ldC9pcF92cy5oXFxuaW5kZXggNDkyOTdmZWM0NDhhODIuLmJiOTY5NzM4ZWQ3MzI1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2lwX3ZzLmhcXG4rKysgYi9pbmNsdWRlL25ldC9pcF92cy5oXFxuQEAgLTk3Miw3ICs5NzIsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XFxuIFxcdHUxNlxcdFxcdFxcdGFmO1xcdFxcdC8qIGFkZHJlc3MgZmFtaWx5ICovXFxuIFxcdF9fYmUxNlxcdFxcdFxcdHBvcnQ7XFx0XFx0LyogcG9ydCBudW1iZXIgb2YgdGhlIHNlcnZlciAqL1xcbiBcXHR1bmlvbiBuZl9pbmV0X2FkZHJcXHRhZGRyO1xcdFxcdC8qIElQIGFkZHJlc3Mgb2YgdGhlIHNlcnZlciAqL1xcbi1cXHR2b2xhdGlsZSB1bnNpZ25lZCBpbnRcXHRmbGFncztcXHRcXHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xcbitcXHRhdG9taWNfdFxcdFxcdGZsYWdzO1xcdFxcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXFxuIFxcdGF0b21pY190XFx0XFx0Y29ubl9mbGFncztcXHQvKiBmbGFncyB0byBjb3B5IHRvIGNvbm4gKi9cXG4gXFx0YXRvbWljX3RcXHRcXHR3ZWlnaHQ7XFx0XFx0Lyogc2VydmVyIHdlaWdodCAqL1xcbiBcXHRhdG9taWNfdFxcdFxcdGxhc3Rfd2VpZ2h0O1xcdC8qIHNlcnZlciBsYXRlc3Qgd2VpZ2h0ICovXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXFxuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjUzOWY2MDNmMzhiNzQ1IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXFxuQEAgLTEwNTUsNyArMTA1NSw3IEBAIGlwX3ZzX2JpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbiBcXG4gXFx0aWYgKGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkICE9IDAgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcXHUwMDNlPSBkZXN0LVxcdTAwM2V1X3RocmVzaG9sZClcXG4tXFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHRcXHRhdG9taWNfb3IoSVBfVlNfREVTVF9GX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpO1xcbiB9XFxuIFxcbiBcXG5AQCAtMTE1MSwxMyArMTE1MSwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbiBcXG4gXFx0aWYgKGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcXG4gXFx0XFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcXHUwMDNjIGRlc3QtXFx1MDAzZWxfdGhyZXNob2xkKVxcbi1cXHRcXHRcXHRkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xcbitcXHRcXHRcXHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncyk7XFxuIFxcdH0gZWxzZSBpZiAoZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgIT0gMCkge1xcbiBcXHRcXHRpZiAoaXBfdnNfZGVzdF90b3RhbGNvbm5zKGRlc3QpICogNCBcXHUwMDNjIGRlc3QtXFx1MDAzZXVfdGhyZXNob2xkICogMylcXG4tXFx0XFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0XFx0XFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpO1xcbiBcXHR9IGVsc2Uge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuLVxcdFxcdFxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRcXHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsIFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncyk7XFxuIFxcdH1cXG4gXFxuIFxcdGlwX3ZzX2Rlc3RfcHV0KGRlc3QpO1xcbkBAIC0xMTg4LDcgKzExODgsNyBAQCBpbnQgaXBfdnNfY2hlY2tfdGVtcGxhdGUoc3RydWN0IGlwX3ZzX2Nvbm4gKmN0LCBzdHJ1Y3QgaXBfdnNfZGVzdCAqY2Rlc3QpXFxuIFxcdCAqIENoZWNraW5nIHRoZSBkZXN0IHNlcnZlciBzdGF0dXMuXFxuIFxcdCAqL1xcbiBcXHRpZiAoKGRlc3QgPT0gTlVMTCkgfHxcXG4tXFx0ICAgICEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fFxcbitcXHQgICAgIShhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgfHxcXG4gXFx0ICAgIGV4cGlyZV9xdWllc2NlbnRfdGVtcGxhdGUoaXB2cywgZGVzdCkgfHxcXG4gXFx0ICAgIChjZGVzdCBcXHUwMDI2XFx1MDAyNiAoZGVzdCAhPSBjZGVzdCkpKSB7XFxuIFxcdFxcdElQX1ZTX0RCR19CVUYoOSwgXFxcImNoZWNrX3RlbXBsYXRlOiBkZXN0IG5vdCBhdmFpbGFibGUgZm9yIFxcXCJcXG5AQCAtMTkyOSw3ICsxOTI5LDcgQEAgdm9pZCBpcF92c19leHBpcmVfbm9kZXN0X2Nvbm5fZmx1c2goc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxuIFxcdFxcdFxcdGNwID0gaXBfdnNfaG4wX3RvX2Nvbm4oaG4pO1xcbiBcXHRcXHRcXHRyZXNjaGVkX3Njb3JlKys7XFxuIFxcdFxcdFxcdGRlc3QgPSBjcC1cXHUwMDNlZGVzdDtcXG4tXFx0XFx0XFx0aWYgKCFkZXN0IHx8IChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKVxcbitcXHRcXHRcXHRpZiAoIWRlc3QgfHwgKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmNwLVxcdTAwM2VuX2NvbnRyb2wpKVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbmluZGV4IGQ0MGI0MDRjMWJmNjQ2Li5jYTc3ODkzN2ZhY2YzOSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuY1xcbkBAIC0zMDIsNyArMzAyLDcgQEAgaXBfdnNfaW5fc3RhdHMoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVxcdTAwM2VkZXN0O1xcbiBcXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVxcdTAwM2VpcHZzO1xcbiBcXG4tXFx0aWYgKGRlc3QgXFx1MDAyNlxcdTAwMjYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcXG4rXFx0aWYgKGRlc3QgXFx1MDAyNlxcdTAwMjYgKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbiBcXHRcXHRzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzO1xcbiBcXHRcXHRzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjO1xcbiBcXG5AQCAtMzM4LDcgKzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtXFx1MDAzZWRlc3Q7XFxuIFxcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtXFx1MDAzZWlwdnM7XFxuIFxcbi1cXHRpZiAoZGVzdCBcXHUwMDI2XFx1MDAyNiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRpZiAoZGVzdCBcXHUwMDI2XFx1MDAyNiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuIFxcdFxcdHN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7XFxuIFxcdFxcdHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7XFxuIFxcbkBAIC0yMjA0LDcgKzIyMDQsNyBAQCBpcF92c19pbl9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZVxcbiBcXHR9XFxuIFxcbiBcXHQvKiBDaGVjayB0aGUgc2VydmVyIHN0YXR1cyAqL1xcbi1cXHRpZiAoY3AgXFx1MDAyNlxcdTAwMjYgY3AtXFx1MDAzZWRlc3QgXFx1MDAyNlxcdTAwMjYgIShjcC1cXHUwMDNlZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRpZiAoY3AgXFx1MDAyNlxcdTAwMjYgY3AtXFx1MDAzZWRlc3QgXFx1MDAyNlxcdTAwMjYgIShhdG9taWNfcmVhZChcXHUwMDI2Y3AtXFx1MDAzZWRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuIFxcdFxcdC8qIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xcbiBcXHRcXHRpZiAoc3lzY3RsX2V4cGlyZV9ub2Rlc3RfY29ubihpcHZzKSkge1xcbiBcXHRcXHRcXHRib29sIG9sZF9jdCA9IGlwX3ZzX2Nvbm5fdXNlc19vbGRfY29ubnRyYWNrKGNwLCBza2IpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjg1YjI2NzViNmUwM2EgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXFxuQEAgLTEzNjgsMTAgKzEzNjgsMTAgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcXG4gXFx0fVxcbiBcXG4gXFx0Lyogc2V0IHRoZSBkZXN0IHN0YXR1cyBmbGFncyAqL1xcbi1cXHRkZXN0LVxcdTAwM2VmbGFncyB8PSBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xcbitcXHRhdG9taWNfb3IoSVBfVlNfREVTVF9GX0FWQUlMQUJMRSwgXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKTtcXG4gXFxuIFxcdGlmICh1ZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgPT0gMCB8fCB1ZGVzdC1cXHUwMDNldV90aHJlc2hvbGQgXFx1MDAzZSBkZXN0LVxcdTAwM2V1X3RocmVzaG9sZClcXG4tXFx0XFx0ZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0XFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRkZXN0LVxcdTAwM2V1X3RocmVzaG9sZCA9IHVkZXN0LVxcdTAwM2V1X3RocmVzaG9sZDtcXG4gXFx0ZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQgPSB1ZGVzdC1cXHUwMDNlbF90aHJlc2hvbGQ7XFxuIFxcbkBAIC0xNjEzLDcgKzE2MTMsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LFxcbiBcXHRcXHRcXHRcXHRpbnQgc3ZjdXBkKVxcbiB7XFxuLVxcdGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xcbitcXHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFLCBcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZkZXN0LVxcdTAwM2Vkc3RfbG9jayk7XFxuIFxcdF9faXBfdnNfZHN0X2NhY2hlX3Jlc2V0KGRlc3QpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXFxuaW5kZXggZTFmNjJmNmIyNWUyMTEuLjgyNDkyZTgyNGYwMjYxIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcXG5AQCAtMjAxLDcgKzIwMSw3IEBAIHN0YXRpYyBpbnQgaXBfdnNfZGhfZGVzdF9jaGFuZ2VkKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXFxuICAqL1xcbiBzdGF0aWMgaW5saW5lIGludCBpc19vdmVybG9hZGVkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbiB7XFxuLVxcdHJldHVybiBkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0cmV0dXJuIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuIH1cXG4gXFxuIFxcbkBAIC0yMTksMTAgKzIxOSwxMCBAQCBpcF92c19kaF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gXFx0cyA9IChzdHJ1Y3QgaXBfdnNfZGhfc3RhdGUgKikgc3ZjLVxcdTAwM2VzY2hlZF9kYXRhO1xcbiBcXHRkZXN0ID0gaXBfdnNfZGhfZ2V0KHN2Yy1cXHUwMDNlYWYsIHMsIFxcdTAwMjZpcGgtXFx1MDAzZWRhZGRyKTtcXG4tXFx0aWYgKCFkZXN0XFxuLVxcdCAgICB8fCAhKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcXG4tXFx0ICAgIHx8IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2M9IDBcXG4tXFx0ICAgIHx8IGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcXG4rXFx0aWYgKCFkZXN0IHx8XFxuK1xcdCAgICAhKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fFxcbitcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzYz0gMCB8fFxcbitcXHQgICAgaXNfb3ZlcmxvYWRlZChkZXN0KSkge1xcbiBcXHRcXHRpcF92c19zY2hlZHVsZXJfZXJyKHN2YywgXFxcIm5vIGRlc3RpbmF0aW9uIGF2YWlsYWJsZVxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXFxuaW5kZXggZDY1N2I0N2M2NTExZmYuLjUyMzFlNTE4YzA3YzAzIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcXG5AQCAtMjksNyArMjksNyBAQCBpcF92c19mb19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpY1xcbiBcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdGlmICghKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIGh3KSB7XFxuIFxcdFxcdFxcdGh3ZWlnaHQgPSBkZXN0O1xcbiBcXHRcXHRcXHRodyA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xcbmluZGV4IDE1Y2NiMmIyZmExZjRhLi5kMmViNWRkYTViNjg2ZiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuY1xcbkBAIC00MTQsNyArNDE0LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqIG5ldyBjb25uZWN0aW9uLlxcbiBcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbkBAIC00MjksNyArNDI5LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqL1xcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XFxuQEAgLTUwMiw3ICs1MDIsNyBAQCBpcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdCAqL1xcbiBcXG4gXFx0XFx0ZGVzdCA9IGVuLVxcdTAwM2VkZXN0O1xcbi1cXHRcXHRpZiAoKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0aWYgKChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiAhaXNfb3ZlcmxvYWRlZChkZXN0LCBzdmMpKVxcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuaW5kZXggYzkwZWE4OTdjM2Y3NTYuLjQ4ZjAyNDUzYTViZTQ5IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcXG5AQCAtMTY2LDExICsxNjYsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXBfdnNfZGVzdCAqaXBfdnNfZGVzdF9zZXRfbWluKHN0cnVjdCBpcF92c19kZXN0X3NldCAqc2V0KVxcbiBcXHQvKiBzZWxlY3QgdGhlIGZpcnN0IGRlc3RpbmF0aW9uIHNlcnZlciwgd2hvc2Ugd2VpZ2h0IFxcdTAwM2UgMCAqL1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCBcXHUwMDI2c2V0LVxcdTAwM2VsaXN0LCBsaXN0KSB7XFxuIFxcdFxcdGxlYXN0ID0gZS1cXHUwMDNlZGVzdDtcXG4tXFx0XFx0aWYgKGxlYXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4rXFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdGlmICgoYXRvbWljX3JlYWQoXFx1MDAyNmxlYXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMClcXG4tXFx0XFx0ICAgIFxcdTAwMjZcXHUwMDI2IChsZWFzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRcXHRpZiAoKGF0b21pY19yZWFkKFxcdTAwMjZsZWFzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAoYXRvbWljX3JlYWQoXFx1MDAyNmxlYXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbiBcXHRcXHRcXHRsb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQobGVhc3QpO1xcbiBcXHRcXHRcXHRnb3RvIG5leHRzdGFnZTtcXG4gXFx0XFx0fVxcbkBAIC0xODEsMTMgKzE4MSwxMyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXFxuICAgbmV4dHN0YWdlOlxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShlLCBcXHUwMDI2c2V0LVxcdTAwM2VsaXN0LCBsaXN0KSB7XFxuIFxcdFxcdGRlc3QgPSBlLVxcdTAwM2VkZXN0O1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcXG4gXFx0XFx0aWYgKCgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZVxcbi1cXHRcXHQgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZChcXHUwMDI2bGVhc3QtXFx1MDAzZXdlaWdodCkpXFxuLVxcdFxcdCAgICBcXHUwMDI2XFx1MDAyNiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xcbitcXHRcXHQgICAgIChfX3M2NClkb2ggKiBhdG9taWNfcmVhZChcXHUwMDI2bGVhc3QtXFx1MDAzZXdlaWdodCkpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XFxuIFxcdFxcdFxcdGxlYXN0ID0gZGVzdDtcXG4gXFx0XFx0XFx0bG9oID0gZG9oO1xcbiBcXHRcXHR9XFxuQEAgLTU3Nyw3ICs1NzcsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqIG5ldyBjb25uZWN0aW9uLlxcbiBcXHQgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZSAwKSB7XFxuQEAgLTU5Myw3ICs1OTMsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXFxuIFxcdCAqL1xcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcXG5pbmRleCAzOGNjMzhjNWQ4YmJkOS4uNmFjYjNjOTA0YWY1N2UgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xcbkBAIC0zOCw3ICszOCw3IEBAIGlwX3ZzX2xjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCAqL1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcXG4rXFx0XFx0aWYgKChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fFxcbiBcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgPT0gMClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGRvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChkZXN0KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xcbmluZGV4IDAyMDg2MzA0NzU2MmQzLi5jMzIyZWQxNzU0YjdmNiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXFxuQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdlbmVyYXRlX2hhc2hfc2VjcmV0KGhzaXBoYXNoX2tleV90ICpoYXNoMSxcXG4gc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbiB7XFxuIFxcdHJldHVybiBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNjPSAwIHx8XFxuLVxcdCAgICAgICBkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0ICAgICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuIH1cXG4gXFxuIC8qIFJldHVybnMgaGFzaCB2YWx1ZSBmb3IgSVBWUyBNSCBlbnRyeSAqL1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXFxuaW5kZXggYWRhMTU4YzYxMGNlMTEuLmZmYTRiZmViMjFkOWQ3IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcXG5AQCAtNzIsNyArNzIsNyBAQCBpcF92c19ucV9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4gXFxuLVxcdFxcdGlmIChkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxcbiBcXHRcXHQgICAgIWF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xcbmluZGV4IGM1YzY3ZGY4MGEwYjNjLi5mN2YxN2RkZGJiMDVhNSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcXG5AQCAtMzMsNyArMzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0Ki9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4gXFx0XFx0dyA9IGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpO1xcbi1cXHRcXHRpZiAoKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSB8fFxcbitcXHRcXHRpZiAoKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlYWN0aXZlY29ubnMpIFxcdTAwM2UgdyB8fFxcbiBcXHRcXHQgICAgdyA9PSAwKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xcbmluZGV4IDQxMjVlZTU2MWNkYzM2Li45ODQ1M2QyMDVkNmZhZCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXFxuQEAgLTY2LDcgKzY2LDcgQEAgaXBfdnNfcnJfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucyxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IG5fbGlzdCkge1xcbi1cXHRcXHRcXHRpZiAoIShkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0aWYgKCEoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2UgMClcXG4gXFx0XFx0XFx0XFx0LyogSElUICovXFxuIFxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcXG5pbmRleCAyNDVhMzIzYzg0Y2QzMi4uMDI0OTA2MmQxMzYwNTcgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXFxuQEAgLTc1LDcgKzc1LDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCAqL1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdGlmICghKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0bGVhc3QgPSBkZXN0O1xcbiBcXHRcXHRcXHRsb2ggPSBpcF92c19zZWRfZGVzdF9vdmVyaGVhZChsZWFzdCk7XFxuQEAgLTkwLDcgKzkwLDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCAqL1xcbiAgIG5leHRzdGFnZTpcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGRvaCA9IGlwX3ZzX3NlZF9kZXN0X292ZXJoZWFkKGRlc3QpO1xcbiBcXHRcXHRpZiAoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xcbmluZGV4IGNkNjcwNjZlM2IyNjEyLi4zNDM3ODBiODJjOTVmMSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXFxuQEAgLTczLDcgKzczLDcgQEAgc3RydWN0IGlwX3ZzX3NoX3N0YXRlIHtcXG4gc3RhdGljIGlubGluZSBib29sIGlzX3VuYXZhaWxhYmxlKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxcbiB7XFxuIFxcdHJldHVybiBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNjPSAwIHx8XFxuLVxcdCAgICAgICBkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcXG4rXFx0ICAgICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XFxuIH1cXG4gXFxuIC8qXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXFxuaW5kZXggZGJiN2Y1ZmQ0Njg4YTQuLjM1ZmE0YzZkYzVjZjRjIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jXFxuQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXFxuIFxcbiBcXHQvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmICghKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xcbitcXHRcXHRpZiAoIShhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xcbiBcXHRcXHRcXHR3ZWlnaHQgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KTtcXG4gXFx0XFx0XFx0aWYgKHdlaWdodCBcXHUwMDNlIDApIHtcXG4gXFx0XFx0XFx0XFx0dG90YWxfd2VpZ2h0ICs9IHdlaWdodDtcXG5AQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcXG4gXFxuIFxcdC8qIFBpY2sgdHdvIHdlaWdodGVkIHNlcnZlcnMgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXFx1MDAyNnN2Yy1cXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcXG4tXFx0XFx0aWYgKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbitcXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZWZsYWdzKSBcXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHR3ZWlnaHQgPSBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXFxuaW5kZXggOWRhNDQ1Y2EwOWExNGMuLmMyZDA5YWM5NmZlODRjIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xcbkBAIC00Nyw3ICs0Nyw3IEBAIGlwX3ZzX3dsY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgKi9cXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRlc3QsIFxcdTAwMjZzdmMtXFx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XFxuLVxcdFxcdGlmICghKGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRpZiAoIShhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgYXRvbWljX3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXdlaWdodCkgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdFxcdGxlYXN0ID0gZGVzdDtcXG4gXFx0XFx0XFx0bG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTtcXG5AQCAtNjIsNyArNjIsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ICovXFxuICAgbmV4dHN0YWdlOlxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xcbi1cXHRcXHRpZiAoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXFxuK1xcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0ZG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGRlc3QpO1xcbiBcXHRcXHRpZiAoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2V3ZWlnaHQpIFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXFxuaW5kZXggMmRjZmYxMDQwZGE1MjEuLmYyMWE3NTI4NDk3MWU1IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xcbkBAIC0xNzYsNyArMTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c3ZjLVxcdTAwM2VkZXN0aW5hdGlvbnMsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBuX2xpc3QpIHtcXG4tXFx0XFx0XFx0aWYgKCEoZGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdGlmICghKGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNld2VpZ2h0KSBcXHUwMDNlPSBtYXJrLVxcdTAwM2VjdylcXG4gXFx0XFx0XFx0XFx0Z290byBmb3VuZDtcXG4gXFx0XFx0XFx0aWYgKGRlc3QgPT0gc3RvcClcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcXG5pbmRleCBjZTU0MmVkNGIwMTNjOC4uMzdiOTY3MWU0OTYwMDEgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcXG5AQCAtMzUxLDcgKzM1MSw3IEBAIF9faXBfdnNfZ2V0X291dF9ydChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICogc3RvcmVkIGluIGRlc3RfdHJhc2guXFxuIFxcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRpZiAoIXJ0X2Rldl9pc19kb3duKGRzdF9kZXZfcmN1KFxcdTAwMjZydC1cXHUwMDNlZHN0KSkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGRlc3QtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcXG4rXFx0XFx0XFx0ICAgIGF0b21pY19yZWFkKFxcdTAwMjZkZXN0LVxcdTAwM2VmbGFncykgXFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxcbiBcXHRcXHRcXHRcXHRfX2lwX3ZzX2RzdF9zZXQoZGVzdCwgZGVzdF9kc3QsIFxcdTAwMjZydC1cXHUwMDNlZHN0LCAwKTtcXG4gXFx0XFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRcXHRub3JlZiA9IDA7XFxuQEAgLTUzMCw3ICs1MzAsNyBAQCBfX2lwX3ZzX2dldF9vdXRfcnRfdjYoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxcbiBcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0aWYgKCFydF9kZXZfaXNfZG93bihkc3RfZGV2X3JjdShcXHUwMDI2cnQtXFx1MDAzZWRzdCkpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdCAgICBkZXN0LVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXFxuK1xcdFxcdFxcdCAgICBhdG9taWNfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSlcXG4gXFx0XFx0XFx0XFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcXHUwMDI2cnQtXFx1MDAzZWRzdCwgY29va2llKTtcXG4gXFx0XFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRcXHRub3JlZiA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUwOjAyLjU1NTE2OTM0OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkwNTU0ODYxODYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19QUk9UT19UQ1BcIixcbiAgICBcIklQX1ZTX1BST1RPX1VEUFwiLFxuICAgIFwiSVBfVlNfUlJcIixcbiAgICBcIklQX1ZTX1dSUlwiLFxuICAgIFwiSVBfVlNfTENcIixcbiAgICBcIklQX1ZTX1dMQ1wiLFxuICAgIFwiSVBfVlNfRk9cIixcbiAgICBcIklQX1ZTX09WRlwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19TSFwiLFxuICAgIFwiSVBfVlNfTUhcIixcbiAgICBcIklQX1ZTX1NFRFwiLFxuICAgIFwiSVBfVlNfTlFcIixcbiAgICBcIklQX1ZTX1RXT1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19kaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfZm9fc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiX19pcF92c19sYmxjcl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGNfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX21oX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ucV9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfb3ZmX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ycl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfc2VkX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19zaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfdHdvc19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c193cnJfc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfdXBkYXRlX2Rlc3RcIixcbiAgICBcIl9faXBfdnNfdW5saW5rX2Rlc3RcIixcbiAgICBcImlwX3ZzX2JpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfdW5iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX2NoZWNrX3RlbXBsYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgZGVzdC1cXHUwMDNlZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgdXBkYXRlcyBhbGwgYml0d2lzZSBvcGVyYXRpb25zIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY19vcmAsIGBhdG9taWNfYW5kYCwgYGF0b21pY19yZWFkYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIHBvdGVudGlhbCBkYXRhIHJhY2VzIGluIHRoZSBJUFZTIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGhvdyBkZXN0aW5hdGlvbiBmbGFncyBsaWtlIGBJUF9WU19ERVNUX0ZfT1ZFUkxPQURgIGFuZCBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgY29uY3VycmVudGx5IGJ5IHZhcmlvdXMgc2NoZWR1bGVycyBhbmQgY29udHJvbCBwYXRocy4gRnV6emluZyB0aGUgSVBWUyBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIGF0b21pYyBvcGVyYXRpb25zIGFyZSBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTAwZDAyNDM4N2M2ODI5ZDA3YmZiZGIyNTdhNWYxMjNkNDJkNDNjMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTY6NDk6NTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcF92cy5oIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxuaW5kZXggNDkyOTdmZWM0NDhhODIuLmJiOTY5NzM4ZWQ3MzI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaFxuKysrIGIvaW5jbHVkZS9uZXQvaXBfdnMuaFxuQEAgLTk3Miw3ICs5NzIsNyBAQCBzdHJ1Y3QgaXBfdnNfZGVzdCB7XG4gXHR1MTZcdFx0XHRhZjtcdFx0LyogYWRkcmVzcyBmYW1pbHkgKi9cbiBcdF9fYmUxNlx0XHRcdHBvcnQ7XHRcdC8qIHBvcnQgbnVtYmVyIG9mIHRoZSBzZXJ2ZXIgKi9cbiBcdHVuaW9uIG5mX2luZXRfYWRkclx0YWRkcjtcdFx0LyogSVAgYWRkcmVzcyBvZiB0aGUgc2VydmVyICovXG4tXHR2b2xhdGlsZSB1bnNpZ25lZCBpbnRcdGZsYWdzO1x0XHQvKiBkZXN0IHN0YXR1cyBmbGFncyAqL1xuK1x0YXRvbWljX3RcdFx0ZmxhZ3M7XHRcdC8qIGRlc3Qgc3RhdHVzIGZsYWdzICovXG4gXHRhdG9taWNfdFx0XHRjb25uX2ZsYWdzO1x0LyogZmxhZ3MgdG8gY29weSB0byBjb25uICovXG4gXHRhdG9taWNfdFx0XHR3ZWlnaHQ7XHRcdC8qIHNlcnZlciB3ZWlnaHQgKi9cbiBcdGF0b21pY190XHRcdGxhc3Rfd2VpZ2h0O1x0Lyogc2VydmVyIGxhdGVzdCB3ZWlnaHQgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjUzOWY2MDNmMzhiNzQ1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTEwNTUsNyArMTA1NSw3IEBAIGlwX3ZzX2JpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIFxuIFx0aWYgKGRlc3QtXHUwMDNldV90aHJlc2hvbGQgIT0gMCBcdTAwMjZcdTAwMjZcbiBcdCAgICBpcF92c19kZXN0X3RvdGFsY29ubnMoZGVzdCkgXHUwMDNlPSBkZXN0LVx1MDAzZXVfdGhyZXNob2xkKVxuLVx0XHRkZXN0LVx1MDAzZWZsYWdzIHw9IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdFx0YXRvbWljX29yKElQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIFxuQEAgLTExNTEsMTMgKzExNTEsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX3VuYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcbiBcbiBcdGlmIChkZXN0LVx1MDAzZWxfdGhyZXNob2xkICE9IDApIHtcbiBcdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSBcdTAwM2MgZGVzdC1cdTAwM2VsX3RocmVzaG9sZClcbi1cdFx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdFx0XHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpO1xuIFx0fSBlbHNlIGlmIChkZXN0LVx1MDAzZXVfdGhyZXNob2xkICE9IDApIHtcbiBcdFx0aWYgKGlwX3ZzX2Rlc3RfdG90YWxjb25ucyhkZXN0KSAqIDQgXHUwMDNjIGRlc3QtXHUwMDNldV90aHJlc2hvbGQgKiAzKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuK1x0XHRcdGF0b21pY19hbmQofklQX1ZTX0RFU1RfRl9PVkVSTE9BRCwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFncyk7XG4gXHR9IGVsc2Uge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuLVx0XHRcdGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+SVBfVlNfREVTVF9GX09WRVJMT0FEO1xuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0XHRhdG9taWNfYW5kKH5JUF9WU19ERVNUX0ZfT1ZFUkxPQUQsIFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFxuIFx0aXBfdnNfZGVzdF9wdXQoZGVzdCk7XG5AQCAtMTE4OCw3ICsxMTg4LDcgQEAgaW50IGlwX3ZzX2NoZWNrX3RlbXBsYXRlKHN0cnVjdCBpcF92c19jb25uICpjdCwgc3RydWN0IGlwX3ZzX2Rlc3QgKmNkZXN0KVxuIFx0ICogQ2hlY2tpbmcgdGhlIGRlc3Qgc2VydmVyIHN0YXR1cy5cbiBcdCAqL1xuIFx0aWYgKChkZXN0ID09IE5VTEwpIHx8XG4tXHQgICAgIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSB8fFxuK1x0ICAgICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4gXHQgICAgZXhwaXJlX3F1aWVzY2VudF90ZW1wbGF0ZShpcHZzLCBkZXN0KSB8fFxuIFx0ICAgIChjZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QgIT0gY2Rlc3QpKSkge1xuIFx0XHRJUF9WU19EQkdfQlVGKDksIFwiY2hlY2tfdGVtcGxhdGU6IGRlc3Qgbm90IGF2YWlsYWJsZSBmb3IgXCJcbkBAIC0xOTI5LDcgKzE5MjksNyBAQCB2b2lkIGlwX3ZzX2V4cGlyZV9ub2Rlc3RfY29ubl9mbHVzaChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiBcdFx0XHRjcCA9IGlwX3ZzX2huMF90b19jb25uKGhuKTtcbiBcdFx0XHRyZXNjaGVkX3Njb3JlKys7XG4gXHRcdFx0ZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4tXHRcdFx0aWYgKCFkZXN0IHx8IChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcbitcdFx0XHRpZiAoIWRlc3QgfHwgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSlcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZjcC1cdTAwM2VuX2NvbnRyb2wpKVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5pbmRleCBkNDBiNDA0YzFiZjY0Ni4uY2E3Nzg5MzdmYWNmMzkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMzAyLDcgKzMwMiw3IEBAIGlwX3ZzX2luX3N0YXRzKHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0ID0gY3AtXHUwMDNlZGVzdDtcbiBcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gY3AtXHUwMDNlaXB2cztcbiBcbi1cdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdGlmIChkZXN0IFx1MDAyNlx1MDAyNiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdHN0cnVjdCBpcF92c19jcHVfc3RhdHMgKnM7XG4gXHRcdHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmM7XG4gXG5AQCAtMzM4LDcgKzMzOCw3IEBAIGlwX3ZzX291dF9zdGF0cyhzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCA9IGNwLVx1MDAzZWRlc3Q7XG4gXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IGNwLVx1MDAzZWlwdnM7XG4gXG4tXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4rXHRpZiAoZGVzdCBcdTAwMjZcdTAwMjYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSkge1xuIFx0XHRzdHJ1Y3QgaXBfdnNfY3B1X3N0YXRzICpzO1xuIFx0XHRzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjO1xuIFxuQEAgLTIyMDQsNyArMjIwNCw3IEBAIGlwX3ZzX2luX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5mX2hvb2tfc3RhdGUgKnN0YXRlXG4gXHR9XG4gXG4gXHQvKiBDaGVjayB0aGUgc2VydmVyIHN0YXR1cyAqL1xuLVx0aWYgKGNwIFx1MDAyNlx1MDAyNiBjcC1cdTAwM2VkZXN0IFx1MDAyNlx1MDAyNiAhKGNwLVx1MDAzZWRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4rXHRpZiAoY3AgXHUwMDI2XHUwMDI2IGNwLVx1MDAzZWRlc3QgXHUwMDI2XHUwMDI2ICEoYXRvbWljX3JlYWQoXHUwMDI2Y3AtXHUwMDNlZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdC8qIHRoZSBkZXN0aW5hdGlvbiBzZXJ2ZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xuIFx0XHRpZiAoc3lzY3RsX2V4cGlyZV9ub2Rlc3RfY29ubihpcHZzKSkge1xuIFx0XHRcdGJvb2wgb2xkX2N0ID0gaXBfdnNfY29ubl91c2VzX29sZF9jb25udHJhY2soY3AsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCBiY2Y0MGI4YzQxY2YyNi4uNjg1YjI2NzViNmUwM2EgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuQEAgLTEzNjgsMTAgKzEzNjgsMTAgQEAgX19pcF92c191cGRhdGVfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbiBcdH1cbiBcbiBcdC8qIHNldCB0aGUgZGVzdCBzdGF0dXMgZmxhZ3MgKi9cbi1cdGRlc3QtXHUwMDNlZmxhZ3MgfD0gSVBfVlNfREVTVF9GX0FWQUlMQUJMRTtcbitcdGF0b21pY19vcihJUF9WU19ERVNUX0ZfQVZBSUxBQkxFLCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcbiBcdGlmICh1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZCA9PSAwIHx8IHVkZXN0LVx1MDAzZXVfdGhyZXNob2xkIFx1MDAzZSBkZXN0LVx1MDAzZXVfdGhyZXNob2xkKVxuLVx0XHRkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNj0gfklQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdFx0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX09WRVJMT0FELCBcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKTtcbiBcdGRlc3QtXHUwMDNldV90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2V1X3RocmVzaG9sZDtcbiBcdGRlc3QtXHUwMDNlbF90aHJlc2hvbGQgPSB1ZGVzdC1cdTAwM2VsX3RocmVzaG9sZDtcbiBcbkBAIC0xNjEzLDcgKzE2MTMsNyBAQCBzdGF0aWMgdm9pZCBfX2lwX3ZzX3VubGlua19kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXHRcdFx0XHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCxcbiBcdFx0XHRcdGludCBzdmN1cGQpXG4ge1xuLVx0ZGVzdC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19ERVNUX0ZfQVZBSUxBQkxFO1xuK1x0YXRvbWljX2FuZCh+SVBfVlNfREVTVF9GX0FWQUlMQUJMRSwgXHUwMDI2ZGVzdC1cdTAwM2VmbGFncyk7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2ZGVzdC1cdTAwM2Vkc3RfbG9jayk7XG4gXHRfX2lwX3ZzX2RzdF9jYWNoZV9yZXNldChkZXN0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19kaC5jXG5pbmRleCBlMWY2MmY2YjI1ZTIxMS4uODI0OTJlODI0ZjAyNjEgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZGguY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2RoLmNcbkBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIGludCBpcF92c19kaF9kZXN0X2NoYW5nZWQoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YyxcbiAgKi9cbiBzdGF0aWMgaW5saW5lIGludCBpc19vdmVybG9hZGVkKHN0cnVjdCBpcF92c19kZXN0ICpkZXN0KVxuIHtcbi1cdHJldHVybiBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiB9XG4gXG4gXG5AQCAtMjE5LDEwICsyMTksMTAgQEAgaXBfdnNfZGhfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdHMgPSAoc3RydWN0IGlwX3ZzX2RoX3N0YXRlICopIHN2Yy1cdTAwM2VzY2hlZF9kYXRhO1xuIFx0ZGVzdCA9IGlwX3ZzX2RoX2dldChzdmMtXHUwMDNlYWYsIHMsIFx1MDAyNmlwaC1cdTAwM2VkYWRkcik7XG4tXHRpZiAoIWRlc3Rcbi1cdCAgICB8fCAhKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4tXHQgICAgfHwgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMFxuLVx0ICAgIHx8IGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcbitcdGlmICghZGVzdCB8fFxuK1x0ICAgICEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIHx8XG4rXHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMCB8fFxuK1x0ICAgIGlzX292ZXJsb2FkZWQoZGVzdCkpIHtcbiBcdFx0aXBfdnNfc2NoZWR1bGVyX2VycihzdmMsIFwibm8gZGVzdGluYXRpb24gYXZhaWxhYmxlXCIpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19mby5jXG5pbmRleCBkNjU3YjQ3YzY1MTFmZi4uNTIzMWU1MThjMDdjMDMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfZm8uY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2ZvLmNcbkBAIC0yOSw3ICsyOSw3IEBAIGlwX3ZzX2ZvX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBGaW5kIHZpcnR1YWwgc2VydmVyIHdpdGggaGlnaGVzdCB3ZWlnaHQgYW5kIHNlbmQgaXQgdHJhZmZpY1xuIFx0ICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbitcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIGh3KSB7XG4gXHRcdFx0aHdlaWdodCA9IGRlc3Q7XG4gXHRcdFx0aHcgPSBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbmluZGV4IDE1Y2NiMmIyZmExZjRhLi5kMmViNWRkYTViNjg2ZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmNcbkBAIC00MTQsNyArNDE0LDcgQEAgX19pcF92c19sYmxjX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKiBuZXcgY29ubmVjdGlvbi5cbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuQEAgLTQyOSw3ICs0MjksNyBAQCBfX2lwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5AQCAtNTAyLDcgKzUwMiw3IEBAIGlwX3ZzX2xibGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ICovXG4gXG4gXHRcdGRlc3QgPSBlbi1cdTAwM2VkZXN0O1xuLVx0XHRpZiAoKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpIFx1MDAyNlx1MDAyNlxuK1x0XHRpZiAoKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgIWlzX292ZXJsb2FkZWQoZGVzdCwgc3ZjKSlcbiBcdFx0XHRnb3RvIG91dDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jXG5pbmRleCBjOTBlYTg5N2MzZjc1Ni4uNDhmMDI0NTNhNWJlNDkgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGNyLmNcbkBAIC0xNjYsMTEgKzE2NiwxMSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcF92c19kZXN0ICppcF92c19kZXN0X3NldF9taW4oc3RydWN0IGlwX3ZzX2Rlc3Rfc2V0ICpzZXQpXG4gXHQvKiBzZWxlY3QgdGhlIGZpcnN0IGRlc3RpbmF0aW9uIHNlcnZlciwgd2hvc2Ugd2VpZ2h0IFx1MDAzZSAwICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCBcdTAwMjZzZXQtXHUwMDNlbGlzdCwgbGlzdCkge1xuIFx0XHRsZWFzdCA9IGUtXHUwMDNlZGVzdDtcbi1cdFx0aWYgKGxlYXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0aWYgKChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKVxuLVx0XHQgICAgXHUwMDI2XHUwMDI2IChsZWFzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdFx0aWYgKChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIChhdG9taWNfcmVhZChcdTAwMjZsZWFzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bG9oID0gaXBfdnNfZGVzdF9jb25uX292ZXJoZWFkKGxlYXN0KTtcbiBcdFx0XHRnb3RvIG5leHRzdGFnZTtcbiBcdFx0fVxuQEAgLTE4MSwxMyArMTgxLDEzIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX2Rlc3Rfc2V0X21pbihzdHJ1Y3QgaXBfdnNfZGVzdF9zZXQgKnNldClcbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGUsIFx1MDAyNnNldC1cdTAwM2VsaXN0LCBsaXN0KSB7XG4gXHRcdGRlc3QgPSBlLVx1MDAzZWRlc3Q7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoKF9fczY0KWxvaCAqIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2Vcbi1cdFx0ICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSlcbi1cdFx0ICAgIFx1MDAyNlx1MDAyNiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX0FWQUlMQUJMRSkpIHtcbitcdFx0ICAgICAoX19zNjQpZG9oICogYXRvbWljX3JlYWQoXHUwMDI2bGVhc3QtXHUwMDNld2VpZ2h0KSkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGRvaDtcbiBcdFx0fVxuQEAgLTU3Nyw3ICs1NzcsNyBAQCBfX2lwX3ZzX2xibGNyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMpXG4gXHQgKiBuZXcgY29ubmVjdGlvbi5cbiBcdCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG5AQCAtNTkzLDcgKzU5Myw3IEBAIF9faXBfdnNfbGJsY3Jfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YylcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGMuY1xuaW5kZXggMzhjYzM4YzVkOGJiZDkuLjZhY2IzYzkwNGFmNTdlIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xjLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYy5jXG5AQCAtMzgsNyArMzgsNyBAQCBpcF92c19sY19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4rXHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSA9PSAwKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguY1xuaW5kZXggMDIwODYzMDQ3NTYyZDMuLmMzMjJlZDE3NTRiN2Y2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXG5AQCAtODAsNyArODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2VuZXJhdGVfaGFzaF9zZWNyZXQoaHNpcGhhc2hfa2V5X3QgKmhhc2gxLFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBpc191bmF2YWlsYWJsZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbiB7XG4gXHRyZXR1cm4gYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzYz0gMCB8fFxuLVx0ICAgICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbitcdCAgICAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEO1xuIH1cbiBcbiAvKiBSZXR1cm5zIGhhc2ggdmFsdWUgZm9yIElQVlMgTUggZW50cnkgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19ucS5jXG5pbmRleCBhZGExNThjNjEwY2UxMS4uZmZhNGJmZWIyMWQ5ZDcgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbnEuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25xLmNcbkBAIC03Miw3ICs3Miw3IEBAIGlwX3ZzX25xX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCB8fFxuIFx0XHQgICAgIWF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfb3ZmLmNcbmluZGV4IGM1YzY3ZGY4MGEwYjNjLi5mN2YxN2RkZGJiMDVhNSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19vdmYuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX292Zi5jXG5AQCAtMzMsNyArMzMsNyBAQCBpcF92c19vdmZfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbiBcdFx0dyA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbi1cdFx0aWYgKChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIHx8XG4rXHRcdGlmICgoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgfHxcbiBcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlYWN0aXZlY29ubnMpIFx1MDAzZSB3IHx8XG4gXHRcdCAgICB3ID09IDApXG4gXHRcdFx0Y29udGludWU7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcnIuY1xuaW5kZXggNDEyNWVlNTYxY2RjMzYuLjk4NDUzZDIwNWQ2ZmFkIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3JyLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19yci5jXG5AQCAtNjYsNyArNjYsNyBAQCBpcF92c19ycl9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShkZXN0LFxuIFx0XHRcdFx0XHRcdCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLFxuIFx0XHRcdFx0XHRcdCBuX2xpc3QpIHtcbi1cdFx0XHRpZiAoIShkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuK1x0XHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApXG4gXHRcdFx0XHQvKiBISVQgKi9cbiBcdFx0XHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zZWQuY1xuaW5kZXggMjQ1YTMyM2M4NGNkMzIuLjAyNDkwNjJkMTM2MDU3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NlZC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2VkLmNcbkBAIC03NSw3ICs3NSw3IEBAIGlwX3ZzX3NlZF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ICovXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSBcdTAwMjZcdTAwMjZcbitcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXdlaWdodCkgXHUwMDNlIDApIHtcbiBcdFx0XHRsZWFzdCA9IGRlc3Q7XG4gXHRcdFx0bG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQobGVhc3QpO1xuQEAgLTkwLDcgKzkwLDcgQEAgaXBfdnNfc2VkX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKi9cbiAgIG5leHRzdGFnZTpcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsIFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsIG5fbGlzdCkge1xuLVx0XHRpZiAoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuK1x0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0ZG9oID0gaXBfdnNfc2VkX2Rlc3Rfb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmNcbmluZGV4IGNkNjcwNjZlM2IyNjEyLi4zNDM3ODBiODJjOTVmMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guY1xuQEAgLTczLDcgKzczLDcgQEAgc3RydWN0IGlwX3ZzX3NoX3N0YXRlIHtcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdW5hdmFpbGFibGUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4ge1xuIFx0cmV0dXJuIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2M9IDAgfHxcbi1cdCAgICAgICBkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQ7XG4rXHQgICAgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRDtcbiB9XG4gXG4gLypcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuaW5kZXggZGJiN2Y1ZmQ0Njg4YTQuLjM1ZmE0YzZkYzVjZjRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuY1xuQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXG4gXHQvKiBHZW5lcmF0ZSBhIHJhbmRvbSB3ZWlnaHQgYmV0d2VlbiBbMCxzdW0gb2YgYWxsIHdlaWdodHMpICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKCEoZGVzdC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xuK1x0XHRpZiAoIShhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKSkge1xuIFx0XHRcdHdlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbiBcdFx0XHRpZiAod2VpZ2h0IFx1MDAzZSAwKSB7XG4gXHRcdFx0XHR0b3RhbF93ZWlnaHQgKz0gd2VpZ2h0O1xuQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsXG4gXG4gXHQvKiBQaWNrIHR3byB3ZWlnaHRlZCBzZXJ2ZXJzICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkZXN0LCBcdTAwMjZzdmMtXHUwMDNlZGVzdGluYXRpb25zLCBuX2xpc3QpIHtcbi1cdFx0aWYgKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRClcbitcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHdlaWdodCA9IGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd2xjLmNcbmluZGV4IDlkYTQ0NWNhMDlhMTRjLi5jMmQwOWFjOTZmZTg0YyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193bGMuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dsYy5jXG5AQCAtNDcsNyArNDcsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuIFxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdGlmICghKGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZSAwKSB7XG4gXHRcdFx0bGVhc3QgPSBkZXN0O1xuIFx0XHRcdGxvaCA9IGlwX3ZzX2Rlc3RfY29ubl9vdmVyaGVhZChsZWFzdCk7XG5AQCAtNjIsNyArNjIsNyBAQCBpcF92c193bGNfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqL1xuICAgbmV4dHN0YWdlOlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoZGVzdCwgXHUwMDI2c3ZjLVx1MDAzZWRlc3RpbmF0aW9ucywgbl9saXN0KSB7XG4tXHRcdGlmIChkZXN0LVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19ERVNUX0ZfT1ZFUkxPQUQpXG4rXHRcdGlmIChhdG9taWNfcmVhZChcdTAwMjZkZXN0LVx1MDAzZWZsYWdzKSBcdTAwMjYgSVBfVlNfREVTVF9GX09WRVJMT0FEKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRkb2ggPSBpcF92c19kZXN0X2Nvbm5fb3ZlcmhlYWQoZGVzdCk7XG4gXHRcdGlmICgoX19zNjQpbG9oICogYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2V3ZWlnaHQpIFx1MDAzZVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c193cnIuY1xuaW5kZXggMmRjZmYxMDQwZGE1MjEuLmYyMWE3NTI4NDk3MWU1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3dyci5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfd3JyLmNcbkBAIC0xNzYsNyArMTc2LDcgQEAgaXBfdnNfd3JyX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGRlc3QsXG4gXHRcdFx0XHRcdFx0IFx1MDAyNnN2Yy1cdTAwM2VkZXN0aW5hdGlvbnMsXG4gXHRcdFx0XHRcdFx0IG5fbGlzdCkge1xuLVx0XHRcdGlmICghKGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0aWYgKCEoYXRvbWljX3JlYWQoXHUwMDI2ZGVzdC1cdTAwM2VmbGFncykgXHUwMDI2IElQX1ZTX0RFU1RfRl9PVkVSTE9BRCkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNld2VpZ2h0KSBcdTAwM2U9IG1hcmstXHUwMDNlY3cpXG4gXHRcdFx0XHRnb3RvIGZvdW5kO1xuIFx0XHRcdGlmIChkZXN0ID09IHN0b3ApXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbmluZGV4IGNlNTQyZWQ0YjAxM2M4Li4zN2I5NjcxZTQ5NjAwMSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmNcbkBAIC0zNTEsNyArMzUxLDcgQEAgX19pcF92c19nZXRfb3V0X3J0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4rXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIDApO1xuIFx0XHRcdGVsc2VcbiBcdFx0XHRcdG5vcmVmID0gMDtcbkBAIC01MzAsNyArNTMwLDcgQEAgX19pcF92c19nZXRfb3V0X3J0X3Y2KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBpbnQgc2tiX2FmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICghcnRfZGV2X2lzX2Rvd24oZHN0X2Rldl9yY3UoXHUwMDI2cnQtXHUwMDNlZHN0KSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0RFU1RfRl9BVkFJTEFCTEUpXG4rXHRcdFx0ICAgIGF0b21pY19yZWFkKFx1MDAyNmRlc3QtXHUwMDNlZmxhZ3MpIFx1MDAyNiBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFKVxuIFx0XHRcdFx0X19pcF92c19kc3Rfc2V0KGRlc3QsIGRlc3RfZHN0LCBcdTAwMjZydC1cdTAwM2Vkc3QsIGNvb2tpZSk7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0bm9yZWYgPSAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTA6MDIuNTU1MTczNTI5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTExMzIyMTExNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgRmxhZyBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgSVBWUyBzdWJzeXN0ZW0gaW4gbmV0ZmlsdGVyLiBJdCBzZWVtcyBsaWtlIHNvbWVvbmUncyBmaW5hbGx5IGRvbmUgdGhlIHJpZ2h0IHRoaW5nIGFuZCBjaGFuZ2VkIHRoZSBgZGVzdC1cdTAwM2VmbGFnc2AgZmllbGQgaW4gYHN0cnVjdCBpcF92c19kZXN0YCBmcm9tIGEgcGxhaW4gYHZvbGF0aWxlIHVuc2lnbmVkIGludGAgdG8gYW4gYGF0b21pY190YC4gRXhjZWxsZW50ISBUaGF0J3MgYSBodWdlIHN0ZXAgZm9yd2FyZC4gVGhleSd2ZSBhbHNvIHN3aXRjaGVkIGFsbCB0aGUgYml0d2lzZSBvcGVyYXRpb25zIHRvIHRoZSBhcHByb3ByaWF0ZSBgYXRvbWljX29yYCwgYGF0b21pY19hbmRgLCBhbmQgYGF0b21pY19yZWFkYCBmdW5jdGlvbnMuIFRoaXMgaXMgYSAqc2lnbmlmaWNhbnQqIGZ1bmN0aW9uYWwgY2hhbmdlOyB3ZSdyZSB0YWxraW5nIGFib3V0IGZpeGluZyBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzLCBzcGVjaWZpY2FsbHkgZGF0YSByYWNlcywgYnkgdXNpbmcgcHJvcGVyIGF0b21pYyBvcGVyYXRpb25zLiBUaGlzIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgdGhpbmcgdGhhdCBtYWtlcyBtZSByYWlzZSBhbiBleWVicm93IGluIGEgZ29vZCB3YXkuXG5cbk5vdyB0aGF0IHRoaXMgZm91bmRhdGlvbmFsIGNoYW5nZSBpcyBpbiBwbGFjZSwgdGhpcyByZWFsbHkgYmVncyB0byBiZSBmdXp6ZWQuIENvbmN1cnJlbmN5IGJ1Z3MgYXJlIG5vdG9yaW91c2x5IGRpZmZpY3VsdCB0byBmaW5kLCBzbyBhIGdvb2QgZnV6emluZyBjYW1wYWlnbiBtaWdodCB1bmNvdmVyIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcyBvciBwcmV2aW91c2x5IHVuc2VlbiBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgcHJldmlvdXMgbm9uLWF0b21pYyBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIG1ha2UgYSBub3RlIHRvIGFkZCB0aGlzIHRvIHRoZSBmdXp6aW5nIHBpcGVsaW5lLlxuXG5CZWZvcmUgSSBjYW4gZG8gYW55dGhpbmcgZWxzZSwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5LCBob3cgSVBWUyBpcyBjb25maWd1cmVkLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgY29udHJvbCBpdHMgYWN0aXZhdGlvbiBhbmQgYnVpbGQgb3B0aW9ucy4gSSdsbCBzdGFydCB3aXRoIHRoZSBzdGFuZGFyZCBtZXRob2QsIHdoaWNoIGlzIHRvIHNpbXBseSBzZWFyY2ggdGhyb3VnaCB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYW55IGluc3RhbmNlIG9mIGBJUF9WU2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBhcnQgb2YgdGhlIGtlcm5lbCBpcyBwdXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1NTUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MDowNy42NjgzOTg2MjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNjcyODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MDowNy44MDAwODA3MTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzMyOTU2NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFzc2Vzc2luZyB0aGUgU2NvcGUgb2YgdGhlIFNjaGVkdWxlciBNb2RpZmljYXRpb25zKipcblxuT2theSwgc28gdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZSBpcyBgSVBfVlNgLiBUaGF0J3MgdGhlIGJhc2VsaW5lLCB0aGUgY29yZSBvZiB0aGUgSVAgVmlydHVhbCBTZXJ2ZXIuIEJ1dCwgYmVmb3JlIEkgZGl2ZSBpbnRvIHRlc3RpbmcgdGhlc2UgbW9kaWZpZWQgc2NoZWR1bGVycywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IG90aGVyIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGVsZW1lbnRzLiBUaGVzZSBwYXRjaGVzIGltcGFjdCBxdWl0ZSBhIGZldyBzY2hlZHVsZXJzLCBzcGVjaWZpY2FsbHk6IGBpcF92c19kaC5jYCwgYGlwX3ZzX2ZvLmNgLCBgaXBfdnNfbGJsYy5jYCwgYGlwX3ZzX2xibGNyLmNgLCBgaXBfdnNfbGMuY2AsIGBpcF92c19taC5jYCwgYGlwX3ZzX25xLmNgLCBgaXBfdnNfb3ZmLmNgLCBgaXBfdnNfcnIuY2AsIGBpcF92c19zZWQuY2AsIGBpcF92c19zaC5jYCwgYGlwX3ZzX3R3b3MuY2AsIGBpcF92c193bGMuY2AsIGFuZCBgaXBfdnNfd3JyLmNgLlxuXG5HaXZlbiB0aGF0LCBJIG5lZWQgdG8gdGhvcm91Z2hseSBleGFtaW5lIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgZm9yIGVhY2ggb2YgdGhlc2UgaW5kaXZpZHVhbCBzY2hlZHVsZXJzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIGJhc2VzIGNvdmVyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzE4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUwOjE3LjEzMzA0MjIwMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODk4NDc0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MDoxNy4yMjIwOTI1NzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDIwNDE5OTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUXVpY2sgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAsIGxldCBtZSB0YWtlIGEgc3RlcCBiYWNrLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIGNvbmZpZ3VyYXRpb24gc3RhdHVzIG9mIGBJUF9WU2Ag4oCTIG9yIG1vcmUgYnJvYWRseSwgdGhlIElQIFZpcnR1YWwgU2VydmVyIGZ1bmN0aW9uYWxpdHkuIE5vIG5lZWQgdG8gc3RhcnQgc2lmdGluZyB0aHJvdWdoIGNvbXBsZXggY29kZSByaWdodCBhd2F5LiBBIHN0cmFpZ2h0Zm9yd2FyZCBncmVwIGlzIGxpa2VseSB0aGUgZmFzdGVzdCByb3V0ZSBoZXJlLiBTcGVjaWZpY2FsbHksIEknbGwgdGFyZ2V0IHRoZSBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIGZpbGUuIFRoYXQncyB3aGVyZSB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzaG91bGQgYmUgZGVmaW5lZC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHdoZXRoZXIgYGNvbmZpZyBJUF9WU2AgKG9yIHJlbGF0ZWQgdmFyaWFibGVzKSBpcyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgYnVpbHQgYXMgYSBtb2R1bGUuIEEgcXVpY2sgY2hlY2sgb2YgdGhhdCBmaWxlIHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIgSSBuZWVkIHRvIHByb2NlZWQgY29uZmlkZW50bHkuIEkgY2FuIHRoZW4gdXNlIHRoYXQgaW5mb3JtYXRpb24gdG8gaW5mb3JtIHRoZSByZXN0IG9mIG15IHJlc2VhcmNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAwOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUwOjIyLjY0MjUxNzAzN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM5NjkzNDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5jb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1MDoyMy45ODIyMTY3NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDY3NDUyOTg1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBJUFZTIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuUmlnaHQsIHNvIEkgc2VlIGEgYGdyZXBgIHJlZ2V4IHRhcmdldGluZyBgXmNvbmZpZyBJUF9WU2AgYW5kIGl0J3MgcGlja2luZyB1cCBgY29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTYC4gSG1tLCB0aGF0J3Mgbm90IHF1aXRlIHdoYXQgSSB3YXMgYWZ0ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyAqcmVhbGx5KiBjb250cm9sbGluZyB0aGUgY29yZSBJUFZTIGZlYXR1cmVzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBkaXJlY3RseSBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLiBMZXQgbWUgZWl0aGVyIHJlYWQgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBvciBwZXJmb3JtIGFub3RoZXIgYGdyZXBgIHRhcmdldGluZyB0aGUga2V5d29yZHMgSSdkIGV4cGVjdCB0byBiZSBhc3NvY2lhdGVkIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlua2luZyBgdHJpc3RhdGVgIGFuZCBgYm9vbGAgc2hvdWxkIG5hcnJvdyBpdCBkb3duIHNpZ25pZmljYW50bHksIGVzcGVjaWFsbHkgaW4gcHJveGltaXR5IHRvIGBjb25maWcgSVBfVlNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gd2hpY2ggdmFyaWFibGVzIGRyaXZlIHRoZSBkaWZmZXJlbnQgYmVoYXZpb3VycyBhbmQgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ2NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjE0LjY1Njc1Mzc5MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMxMTA1NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmNvbmZpZyBJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAnSVBWUyBTSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODktXFx0aW50IFxcXCJJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAnSVBWUyBNSCBzY2hlZHVsZXInXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzA0LVxcdGludCBcXFwiSVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjE0Ljc0OTg3NTA3NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODUxMDk3NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIElQVlMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBJUFZTIGFyZSBzZXQgdXAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIExldCdzIHNlZS4uLiB0aGUgYEtjb25maWdgIGZpbGVzIGFyZSB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIGZvciB0aGlzIGtpbmQgb2YgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGtlcm5lbC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2VhcmNoIGZvciBvY2N1cnJlbmNlcyBvZiBcImNvbmZpZyBcIiB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHF1aWNrIG92ZXJ2aWV3IG9mIHdoYXQncyBhdmFpbGFibGUgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgaW4gdGhlIGJ1aWxkIHN5c3RlbS4gQSBgZ3JlcGAgb24gdGhhdCBmaWxlIGlzIHRoZSBxdWlja2VzdCB3YXkgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCBzZWUgdGhlIGF2YWlsYWJsZSBzeW1ib2xzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk0NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjE3LjYwMDk3NTcxMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyNTcxODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5jb25maWcgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTEwMD1jb25maWdcXHRJUF9WU19QUk9UT19BSFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTQ3PWNvbmZpZ1xcdElQX1ZTX1dMQ1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU4LVxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE2Nzpjb25maWcgIElQX1ZTX09WRlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTE3OD1jb25maWdcXHRJUF9WU19MQkxDXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTEtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTkyOmNvbmZpZyAgSVBfVlNfTEJMQ1JcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcImxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1xcdElQX1ZTX1BFX1NJUFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzUxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1Mjpjb25maWcgR0NPVl9QUk9GSUxFX0lQVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNTMtXFx0Ym9vbCBcXFwiRW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBJUFZTXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1NToxNy43MTM1NTUyNDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc5MjkzODI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSVBWUyBDb25maWd1cmF0aW9uIFNjYW4qKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gaXQuIE15IGluaXRpYWwgc2NhbiBoYXMgcGlja2VkIHVwIG9uIGEgaGFuZGZ1bCBvZiBJUFZTIGxvYWQgYmFsYW5jaW5nIG1ldGhvZHMgYW5kIHRoZWlyIHBvdGVudGlhbCBjb25maWd1cmF0aW9uczogYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGFuZCBgSVBfVlNfTEJMQ1JgLiBJbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byB0aGUgbW9zdCBsb2dpY2FsIG5leHQgc3RlcDogYSBkZWVwIGRpdmUgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnYCBmaWxlLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGJlLCBhcyBpdCB3aWxsIHJldmVhbCBhbGwgdGhlIGludHJpY2FjaWVzIG9mIGhvdyB0aGVzZSBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIG9mIGVhY2ggZmxhZywgYXMgd2VsbCBhcyB0aGUgYnVpbGQgcHJvY2Vzcy4gSSB3YW50IHRvIHNlZSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyByZWxhdGVkIHRvIHRob3NlIHZhcmlvdXMgSVBWUyBzY2hlZHVsaW5nIGFsZ29yaXRobXMsIGFuZCBwcmVjaXNlbHkgaG93IHRoZXkncmUgZXhwb3NlZCB0byB0aGUgdXNlci4gRnJvbSB0aGVyZSBJIGNhbiBkZXRlcm1pbmUgaG93IGVhY2ggaXMgZW5hYmxlZCBhbmQgdXNlZCwgYW5kIGFueSBwb3NzaWJsZSBhcmVhcyBvZiBjb25mbGljdCBvciBvdmVybGFwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgyNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjI0LjUwNjQ5ODg2MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4NzY2MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1NToyNC42MTUyNzMyMTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjMyMjA3MjA0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudCBkb3duOlxuXG4qKkludmVzdGlnYXRpbmcgSVBWUyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJIHdhcyBpbml0aWFsbHkgdXNpbmcgYGdyZXBgIGFuZCBzcGVjaWZpZWQgYGNvbmZpZyBJUF9WU2AgdG8gZmluZCBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIElQVlMsIGJ1dCBpdCdzIG9ubHkgcmV0dXJuaW5nIGEgbGltaXRlZCBzdWJzZXQ6IGBjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNgLCBgY29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWGAsIGFuZCBgbWVudWNvbmZpZyBJUF9WU2AuIFRoYXQncyBub3QgcmlnaHQ7IHRoZXJlIGhhdmUgdG8gYmUgbW9yZS4gSSdtIHVzZWQgdG8gZGVhbGluZyB3aXRoIGNvbXBsZXgga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBzbyBzb21ldGhpbmcncyBjbGVhcmx5IHVwIGhlcmUuXG5cbkknbSBiZXR0aW5nIHRob3NlIG90aGVyIG9wdGlvbnMgYXJlIG5lc3RlZCwgbW9zdCBsaWtlbHkgaW5kZW50ZWQgb3IgcGVyaGFwcyB1c2luZyB0YWJzLCB3aGljaCBteSBpbml0aWFsIGBncmVwYCBjb21tYW5kIGlzbid0IGFjY291bnRpbmcgZm9yLiBJIG5lZWQgYSBtb3JlIGdlbmVyYWwgc2VhcmNoLlxuXG5MZXQncyB0cnkgYSBicm9hZGVyIHNlYXJjaCB1c2luZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IGFjY291bnRzIGZvciB0aGF0IGluZGVudGF0aW9uLiBJJ2xsIHNlYXJjaCBmb3IgYGNvbmZpZy4qSVBfVlNgIHdpdGhpbiBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgLiBUaGF0IHNob3VsZCBjYXB0dXJlIGFueSBgY29uZmlnYCBsaW5lIGZvbGxvd2VkIGJ5IGFueXRoaW5nIGFuZCB0aGVuIGBJUF9WU2AuIFRoaXMgc2hvdWxkIGNhdGNoIHRoZSBtaXNzaW5nIG9uZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDE5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTU6MzAuOTM3MzUxNjU0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQ3NTc3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnLipJUF9WU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjc9aWYgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yOC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyOTpjb25maWdcXHRJUF9WU19JUFY2XFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiSVB2NiBzdXBwb3J0IGZvciBJUFZTXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mzg6Y29uZmlnXFx0SVBfVlNfREVCVUdcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00NC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo0NTpjb25maWdcXHRJUF9WU19UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQ2LVxcdGludCBcXFwiSVBWUyBjb25uZWN0aW9uIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03Nz1jb21tZW50IFxcXCJJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTc4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjc5OmNvbmZpZ1xcdElQX1ZTX1BST1RPX1RDUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIlRDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODQtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6ODU6Y29uZmlnXFx0SVBfVlNfUFJPVE9fVURQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODYtXFx0Ym9vbCBcXFwiVURQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05MC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MTpjb25maWdcXHRJUF9WU19QUk9UT19BSF9FU1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05Mi1cXHRkZWZfYm9vbCBJUF9WU19QUk9UT19FU1AgfHwgSVBfVlNfUFJPVE9fQUhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05My1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5NDpjb25maWdcXHRJUF9WU19QUk9UT19FU1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05NS1cXHRib29sIFxcXCJFU1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTk5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwMDpjb25maWdcXHRJUF9WU19QUk9UT19BSFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJBSCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTEzPWNvbW1lbnQgXFxcIklQVlMgc2NoZWR1bGVyXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTExNC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMTU6Y29uZmlnXFx0SVBfVlNfUlJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMTYtXFx0dHJpc3RhdGUgXFxcInJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMjMtIFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEyNDpjb25maWdcXHRJUF9WU19XUlJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMjUtXFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMzYtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTM3OmNvbmZpZ1xcdElQX1ZTX0xDXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTM4LVxcdHRyaXN0YXRlIFxcXCJsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNDYtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTQ3OmNvbmZpZ1xcdElQX1ZTX1dMQ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE0OC1cXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU4LVxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE2Nzpjb25maWcgIElQX1ZTX09WRlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE3Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNzg6Y29uZmlnXFx0SVBfVlNfTEJMQ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE3OS1cXHR0cmlzdGF0ZSBcXFwibG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE5Mjpjb25maWcgIElQX1ZTX0xCTENSXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIwOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMTA6Y29uZmlnXFx0SVBfVlNfREhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcImRlc3RpbmF0aW9uIGhhc2hpbmcgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIxOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMjA6Y29uZmlnXFx0SVBfVlNfU0hcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMjEtXFx0dHJpc3RhdGUgXFxcInNvdXJjZSBoYXNoaW5nIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMjktXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjMwOmNvbmZpZ1xcdElQX1ZTX01IXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjMxLVxcdHRyaXN0YXRlIFxcXCJtYWdsZXYgaGFzaGluZyBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjQ4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI0OTpjb25maWdcXHRJUF9WU19TRURcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNTAtXFx0dHJpc3RhdGUgXFxcInNob3J0ZXN0IGV4cGVjdGVkIGRlbGF5IHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNjEtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjYyOmNvbmZpZ1xcdElQX1ZTX05RXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjYzLVxcdHRyaXN0YXRlIFxcXCJuZXZlciBxdWV1ZSBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjc0LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI3NTpjb25maWdcXHRJUF9WU19UV09TXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjc2LVxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCByYW5kb20gdHdvcyBjaG9pY2UgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzE5PWNvbW1lbnQgJ0lQVlMgYXBwbGljYXRpb24gaGVscGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMjE6Y29uZmlnXFx0SVBfVlNfRlRQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzIyLVxcdHRyaXN0YXRlIFxcXCJGVFAgcHJvdG9jb2wgaGVscGVyXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzM2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMzNzpjb25maWdcXHRJUF9WU19ORkNUXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzM4LVxcdGJvb2wgXFxcIk5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ0LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM0NTpjb25maWdcXHRJUF9WU19QRV9TSVBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDYtXFx0dHJpc3RhdGUgXFxcIlNJUCBwZXJzaXN0ZW5jZSBlbmdpbmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjMxLjUwMjExNzk1NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM4ODYwNDkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBTZWxlY3Rpb24gZm9yIHRoZSBJUFZTIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZvciBmdXp6aW5nLiBGaXJzdCwgSSBuZWVkIHRvIGRlZmluZSB0aGUgY29uZmlndXJhdGlvbnMgdG8gZW5hYmxlLiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGUgZm9sbG93aW5nOiBgSVBfVlNgLCBgSVBfVlNfUlJgLCBgSVBfVlNfV1JSYCwgYElQX1ZTX0xDYCwgYElQX1ZTX1dMQ2AsIGBJUF9WU19GT2AsIGBJUF9WU19PVkZgLCBgSVBfVlNfTEJMQ2AsIGBJUF9WU19MQkxDUmAsIGBJUF9WU19ESGAsIGBJUF9WU19TSGAsIGBJUF9WU19NSGAsIGBJUF9WU19TRURgLCBgSVBfVlNfTlFgLCBhbmQgYElQX1ZTX1RXT1NgLiBJJ2xsIGFkZCBhbGwgb2YgdGhlc2UgdG8gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0IHRvIGVuc3VyZSBjb21wcmVoZW5zaXZlIGNvdmVyYWdlIG9mIHRoZSBJUFZTIGZlYXR1cmVzLlxuXG5Ob3csIGZvciB0aGUgY3JpdGljYWwgcGFydDogc2VsZWN0aW5nIHRoZSBrZXkgZnVuY3Rpb25zIGZvciBmb2N1c2VkIGZ1enppbmcsIHRoZSBgRm9jdXNTeW1ib2xzYC4gVGhlIHBhdGNoIG1vZGlmaWVzIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGZ1bmN0aW9ucy4gSSBuZWVkIHRvIHN0cmF0ZWdpY2FsbHkgcGljayB0aGUgb25lcyB0aGF0IGFyZSBtb3N0IGxpa2VseSB0byBleHBvc2UgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gdGhlIGNoYW5nZXMgaW50cm9kdWNlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIHNjaGVkdWxpbmcgZnVuY3Rpb25zIGFzIHRoZXkgYXJlIHRoZSBjb3JlIGxvZ2ljIG9mIGVhY2ggc2NoZWR1bGVyIGFuZCBhcmUgZGlyZWN0bHkgaW50ZXJhY3Rpbmcgd2l0aCBwb3RlbnRpYWxseSBtb2RpZmllZCBgZGVzdC1cdTAwM2VmbGFnc2AuIFRoZXNlIGFyZSBzdHJvbmcgc3RhcnRpbmcgcG9pbnRzLiBBZGRpdGlvbmFsbHksIEkgbmVlZCB0byBpbmNsdWRlIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYW5kIGBfX2lwX3ZzX3VubGlua19kZXN0YCBzaW5jZSB0aGV5J3JlIG1vZGlmeWluZyB0aGUgZmxhZ3MuIEFsc28gYGlwX3ZzX2JpbmRfZGVzdGAgYW5kIGBpcF92c191bmJpbmRfZGVzdGAgd2hpY2ggYXJlIGFsc28gZ29vZCBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLlxuXG5MZXQncyBsaXN0IHRoZW0gb3V0OlxuYGlwX3ZzX2RoX3NjaGVkdWxlYFxuYGlwX3ZzX2ZvX3NjaGVkdWxlYFxuYF9faXBfdnNfbGJsY19zY2hlZHVsZWBcbmBpcF92c19sYmxjX3NjaGVkdWxlYFxuYF9faXBfdnNfbGJsY3Jfc2NoZWR1bGVgXG5gaXBfdnNfbGNfc2NoZWR1bGVgXG5gaXBfdnNfbnFfc2NoZWR1bGVgXG5gaXBfdnNfb3ZmX3NjaGVkdWxlYFxuYGlwX3ZzX3JyX3NjaGVkdWxlYFxuYGlwX3ZzX3NlZF9zY2hlZHVsZWBcbmBpcF92c190d29zX3NjaGVkdWxlYFxuYGlwX3ZzX3dsY19zY2hlZHVsZWBcbmBpcF92c193cnJfc2NoZWR1bGVgXG5gX19pcF92c191cGRhdGVfZGVzdGBcbmBfX2lwX3ZzX3VubGlua19kZXN0YFxuYGlwX3ZzX2JpbmRfZGVzdGBcbmBpcF92c191bmJpbmRfZGVzdGBcblxuSG9sZCBvbiBhIG1pbnV0ZSwgdGhlcmUncyBhIHN1YnRsZSBwb2ludCB0byBhZGRyZXNzIHJlZ2FyZGluZyBgaXBfdnNfbWhfc2NoZWR1bGVgIGFuZCBgaXBfdnNfc2hfc2NoZWR1bGVgLiBXaGlsZSB0aGVzZSBzY2hlZHVsZXIgZnVuY3Rpb25zIHRoZW1zZWx2ZXMgYXJlbid0IGRpcmVjdGx5IG1vZGlmaWVkLCB0aGUgcmVsYXRlZCBgaXNfdW5hdmFpbGFibGVgIGZ1bmN0aW9ucyB3aXRoaW4gYGlwX3ZzX21oLmNgIGFuZCBgaXBfdnNfc2guY2AgYXJlLiBJIG5lZWQgdG8gZGVjaWRlIGlmIEkgaW5jbHVkZSB0aGUgc2NoZWR1bGUgZnVuY3Rpb25zIGFzIHdlbGwuIEEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIHRoZXkgZXhpc3QgaXMgaW4gb3JkZXIgYmVmb3JlIHByb2NlZWRpbmcuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gZW5zdXJlIEkgY292ZXIgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgb3IgcmVsYXRlZCBjb2RlIGNoYW5nZXMgd2l0aGluIHRob3NlIG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODkxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjQxLjg5MDcyNzA5N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4MDk2MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX21oX3NjaGVkdWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jPTQ3MD1zdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jOjQ3MTppcF92c19taF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTQ3Mi1cXHRcXHQgIHN0cnVjdCBpcF92c19pcGhkciAqaXBoKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTA3LS8qIElQVlMgTUggU2NoZWR1bGVyIHN0cnVjdHVyZSAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jOjUwODpzdGF0aWMgc3RydWN0IGlwX3ZzX3NjaGVkdWxlciBpcF92c19taF9zY2hlZHVsZXIgPSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTA5LVxcdC5uYW1lID1cXHRcXHRcXHRcXFwibWhcXFwiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTExLVxcdC5tb2R1bGUgPVxcdFxcdFRISVNfTU9EVUxFLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jOjUxMjpcXHQubl9saXN0XFx0ID1cXHRcXHRMSVNUX0hFQURfSU5JVChpcF92c19taF9zY2hlZHVsZXIubl9saXN0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYy01MTMtXFx0LmluaXRfc2VydmljZSA9XFx0XFx0aXBfdnNfbWhfaW5pdF9zdmMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYy01MTctXFx0LnVwZF9kZXN0ID1cXHRcXHRpcF92c19taF9kZXN0X2NoYW5nZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmM6NTE4OlxcdC5zY2hlZHVsZSA9XFx0XFx0aXBfdnNfbWhfc2NoZWR1bGUsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTE5LX07XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbWguYz01MjE9c3RhdGljIGludCBfX2luaXQgaXBfdnNfbWhfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUyMi17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmM6NTIzOlxcdHJldHVybiByZWdpc3Rlcl9pcF92c19zY2hlZHVsZXIoXFx1MDAyNmlwX3ZzX21oX3NjaGVkdWxlcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmMtNTI0LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jPTUyNj1zdGF0aWMgdm9pZCBfX2V4aXQgaXBfdnNfbWhfY2xlYW51cCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUyNy17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX21oLmM6NTI4OlxcdHVucmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyKFxcdTAwMjZpcF92c19taF9zY2hlZHVsZXIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19taC5jLTUyOS1cXHRyY3VfYmFycmllcigpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1NTo0Mi4wMDg4MzA5OTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc2MzY0NTMyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBpZiBJJ20gdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipDb25maXJtaW5nIEV4aXN0ZW5jZSBhbmQgUGxhbm5pbmcgVmVyaWZpY2F0aW9uKipcblxuWWVzLCB0aGUgY29uY2VwdHMsIHdoYXRldmVyIHRoZXkgYXJlLCBkZWZpbml0ZWx5IGV4aXN0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBncm91bmRlZCBpbiB0aGF0IHJlYWxpdHkgZmlyc3QuIE9rYXksIG5vdyB0aGF0IHRoYXTigJlzIGNvbmZpcm1lZCwgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgc3BlY2lmaWMgcmVsYXRlZCB0byB0aGVtLi4uIExldCdzIHNlZSwgdGhlIG5leHQgc3RlcCBpcyB0byBjaGVjayBgaXBfdnNfc2hfc2NoZWR1bGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODEzMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjQ0Ljc3MjQ4MDc0N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzMTM0NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3ZzX3NoX3NjaGVkdWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jPTMwNz1zdGF0aWMgc3RydWN0IGlwX3ZzX2Rlc3QgKlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jOjMwODppcF92c19zaF9zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTMwOS1cXHRcXHQgIHN0cnVjdCBpcF92c19pcGhkciAqaXBoKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzE3LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jOjMxODpcXHRJUF9WU19EQkcoNiwgXFxcImlwX3ZzX3NoX3NjaGVkdWxlKCk6IFNjaGVkdWxpbmcuLi5cXFxcblxcXCIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTMxOS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM0Ni0gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYzozNDc6c3RhdGljIHN0cnVjdCBpcF92c19zY2hlZHVsZXIgaXBfdnNfc2hfc2NoZWR1bGVyID1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zNDgte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzUxLVxcdC5tb2R1bGUgPVxcdFxcdFRISVNfTU9EVUxFLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jOjM1MjpcXHQubl9saXN0XFx0ID1cXHRcXHRMSVNUX0hFQURfSU5JVChpcF92c19zaF9zY2hlZHVsZXIubl9saXN0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zNTMtXFx0LmluaXRfc2VydmljZSA9XFx0XFx0aXBfdnNfc2hfaW5pdF9zdmMsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYy0zNTctXFx0LnVwZF9kZXN0ID1cXHRcXHRpcF92c19zaF9kZXN0X2NoYW5nZWQsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmM6MzU4OlxcdC5zY2hlZHVsZSA9XFx0XFx0aXBfdnNfc2hfc2NoZWR1bGUsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzU5LX07XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfc2guYz0zNjI9c3RhdGljIGludCBfX2luaXQgaXBfdnNfc2hfaW5pdCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM2My17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmM6MzY0OlxcdHJldHVybiByZWdpc3Rlcl9pcF92c19zY2hlZHVsZXIoXFx1MDAyNmlwX3ZzX3NoX3NjaGVkdWxlcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmMtMzY1LX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jPTM2OD1zdGF0aWMgdm9pZCBfX2V4aXQgaXBfdnNfc2hfY2xlYW51cCh2b2lkKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM2OS17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3NoLmM6MzcwOlxcdHVucmVnaXN0ZXJfaXBfdnNfc2NoZWR1bGVyKFxcdTAwMjZpcF92c19zaF9zY2hlZHVsZXIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19zaC5jLTM3MS1cXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTU6NDQuOTE1NjMzODcyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5NzQ1NzI5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgSVBWUyBGdW5jdGlvbnMgZm9yIEluY2x1c2lvbioqXG5cbkFscmlnaHQsIEknbSBnb2luZyB0byBzdGFydCBieSBpbmNsdWRpbmcgYGlwX3ZzX3NoX3NjaGVkdWxlYCBhbmQgYGlwX3ZzX21oX3NjaGVkdWxlYC4gTWFrZXMgc2Vuc2UuIE5vdywgbGV0J3MganVzdCBkbyBhIHF1aWNrIHJldmlldyBvZiB0aGUgYXZhaWxhYmxlIGZvY3VzIHN5bWJvbHMuXG5cbk9rYXksIGhlcmUncyB0aGUgZnVsbCBsaXN0OiBgaXBfdnNfZGhfc2NoZWR1bGVgLCBgaXBfdnNfZm9fc2NoZWR1bGVgLCBgX19pcF92c19sYmxjX3NjaGVkdWxlYCwgYGlwX3ZzX2xibGNfc2NoZWR1bGVgLCBgX19pcF92c19sYmxjcl9zY2hlZHVsZWAsIGBpcF92c19sY19zY2hlZHVsZWAsIGBpcF92c19taF9zY2hlZHVsZWAsIGBpcF92c19ucV9zY2hlZHVsZWAsIGBpcF92c19vdmZfc2NoZWR1bGVgLCBgaXBfdnNfcnJfc2NoZWR1bGVgLCBgaXBfdnNfc2VkX3NjaGVkdWxlYCwgYGlwX3ZzX3NoX3NjaGVkdWxlYCwgYGlwX3ZzX3R3b3Nfc2NoZWR1bGVgLCBgaXBfdnNfd2xjX3NjaGVkdWxlYCwgYGlwX3ZzX3dycl9zY2hlZHVsZWAsIGBfX2lwX3ZzX3VwZGF0ZV9kZXN0YCwgYF9faXBfdnNfdW5saW5rX2Rlc3RgLCBgaXBfdnNfYmluZF9kZXN0YCwgYW5kIGBpcF92c191bmJpbmRfZGVzdGAuXG5cbk5pbmV0ZWVuIGZ1bmN0aW9ucz8gVGhhdCdzIGEgcmVhc29uYWJsZSBudW1iZXI7IHRoZXJlIGlzbid0IGEgaGFyZCBsaW1pdCwgYnV0IGl0J3MgZ29vZCB0byBrZWVwIHRoaW5ncyBjb25jaXNlLiBUaGlua2luZyBpdCB0aHJvdWdoLi4uIGBpcF92c19iaW5kX2Rlc3RgIGFuZCBgaXBfdnNfdW5iaW5kX2Rlc3RgIGhhbmRsZSBiaW5kaW5nIGFuZCB1bmJpbmRpbmcgZGVzdGluYXRpb25zLCBhbmQgYF9faXBfdnNfdXBkYXRlX2Rlc3RgIGFuZCBgX19pcF92c191bmxpbmtfZGVzdGAgZGVhbCB3aXRoIGRlc3RpbmF0aW9uIHVwZGF0ZXMgYW5kIHVubGlua2luZy4gVGhlIGAqX3NjaGVkdWxlYCBmdW5jdGlvbnMgYXJlLCBvZiBjb3Vyc2UsIHRoZSBrZXkgY29ubmVjdGlvbiBzY2hlZHVsaW5nIGxvZ2ljLiBZZWFoLCB0aGlzIHNlZW1zIGxpa2UgYSBzb2xpZCwgY29tcHJlaGVuc2l2ZSBzZXQgb2YgdGFyZ2V0cy5cblxuTm93IGxldCdzIHJldmlldyB0aGUgZW5hYmxpbmcgY29uZmlnczogYElQX1ZTYCwgYElQX1ZTX1JSYCwgYElQX1ZTX1dSUmAsIGBJUF9WU19MQ2AsIGBJUF9WU19XTENgLCBgSVBfVlNfRk9gLCBgSVBfVlNfT1ZGYCwgYElQX1ZTX0xCTENgLCBgSVBfVlNfTEJMQ1JgLCBgSVBfVlNfREhgLCBgSVBfVlNfU0hgLCBgSVBfVlNfTUhgLCBgSVBfVlNfU0VEYCwgYElQX1ZTX05RYCwgYW5kIGBJUF9WU19UV09TYC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYElQX1ZTYCBpdHNlbGYgaXMgZW5vdWdoLiBJIGtub3cgaXQgZGVwZW5kcyBvbiBgTkVURklMVEVSYCBhbmQgYE5FVGAsIGJ1dCB0aG9zZSBhcmUgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQuIFN0aWxsLCBiZXR0ZXIgdG8gY29uZmlybSBhbmQgYmUgc3VyZS4gSSdsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgIHRvIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzIG9mIGBJUF9WU2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MDMyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjUyLjg5MDIxMTQxMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwODEwNjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9NT1tZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo4OlxcdGRlcGVuZHMgb24gKE5GX0NPTk5UUkFDSyB8fCBORl9DT05OVFJBQ0s9bilcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI5PWNvbmZpZ1xcdElQX1ZTX0lQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJJUHY2IHN1cHBvcnQgZm9yIElQVlNcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzE6XFx0ZGVwZW5kcyBvbiBJUFY2ID0geSB8fCBJUF9WUyA9IElQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMi1cXHRzZWxlY3QgTkZfREVGUkFHX0lQVjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMyMT1jb25maWdcXHRJUF9WU19GVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjItXFx0dHJpc3RhdGUgXFxcIkZUUCBwcm90b2NvbCBoZWxwZXJcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIzOlxcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9OQVQgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cXHRcXHRORl9DT05OVFJBQ0tfRlRQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMzc9Y29uZmlnXFx0SVBfVlNfTkZDVFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMzOC1cXHRib29sIFxcXCJOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZ1xcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMzk6XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDAtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzQ1PWNvbmZpZ1xcdElQX1ZTX1BFX1NJUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0Ni1cXHR0cmlzdGF0ZSBcXFwiU0lQIHBlcnNpc3RlbmNlIGVuZ2luZVxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDc6XFx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19VRFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDg6XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ5LVxcdGhlbHBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM1Mj1jb25maWcgR0NPVl9QUk9GSUxFX0lQVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNTMtXFx0Ym9vbCBcXFwiRW5hYmxlIEdDT1YgcHJvZmlsaW5nIGZvciBJUFZTXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM1NDpcXHRkZXBlbmRzIG9uIEdDT1ZfS0VSTkVMXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzU1LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTU6NTMuMDExMDMwODNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2MDQ2MzE1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFRob3VnaHRzKipcblxuT2theSwgc28gYElORVRgIGFuZCBgTkVURklMVEVSYCBhcmUgcHJldHR5IG11Y2ggZ2l2ZW5zLCBzdGFuZGFyZCBjb21wb25lbnRzLiBObyBuZWVkIHRvIGJlbGFib3IgdGhvc2UuIEknbGwganVzdCBmb2N1cyBvbiBgSVBfVlNgIGFuZCB0aGUgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb25zLiBMZXQncyBzZWUuLi4gYmVmb3JlIEkgbW92ZSBvbiwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHNvbWV0aGluZyByZWxhdGVkIHRvIGBJUF9WU19QUk9UT19UQ1BgIGFuZCBgSVBfVlNfUFJPVE9fVURQYC4gVGhvc2UgYXJlIGJvb2xlYW4gb3B0aW9ucywgYW5kIHRoZXkgZGVmYXVsdCB0byAneScsIHJpZ2h0PyBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHRoYXQgdG8gYmUgc3VyZSBteSBhc3N1bXB0aW9ucyBhcmUgY29ycmVjdCwgZG9uJ3Qgd2FudCBhbnkgc3VycHJpc2VzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDg1OSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU1OjU3LjY3MTQ5ODI2NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMyOTU2Mzg0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNfUFJPVE9fVENQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1NTo1OC4xMDQ0NzM5N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTk2OTIwODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczpcblxuKipJbnZlc3RpZ2F0aW5nIFRDUCBMb2FkIEJhbGFuY2luZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIG1pbnV0ZS4gSSBzZWVtIHRvIHJlY2FsbCBlbmNvdW50ZXJpbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYElQX1ZTX1BST1RPX1RDUGAgZHVyaW5nIG15IGVhcmxpZXIgcmV2aWV3LiBJdCdzIGNydWNpYWwgdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBvZiB0aGlzIHZhcmlhYmxlLiBUaGUgZGV0YWlscyBzdXJyb3VuZGluZyBpdCBhcmUgbmVjZXNzYXJ5IHRvIGFzY2VydGFpbiBpdCdzIHNpZ25pZmljYW5jZS4gTGV0IG1lIGp1c3QgcXVpY2tseSB1c2UgYGdyZXBgIHRvIGh1bnQgZG93biB3aGVyZSB0aGF0IHBhcnRpY3VsYXIgc3RyaW5nIHJlc2lkZXMgaW4gdGhlIHJlbGV2YW50IGNvZGViYXNlIG9yIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgaW4gdGhlIFRDUC1iYXNlZCBsb2FkIGJhbGFuY2luZyBzZXR1cC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgaXQgYWxpZ25zIHdpdGggdGhlIGV4cGVjdGVkIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTAxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTY6MDEuMTAxMzk4NDZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDYwMjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJUF9WU19QUk9UT19UQ1BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Nzc9Y29tbWVudCBcXFwiSVBWUyB0cmFuc3BvcnQgcHJvdG9jb2wgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy03OC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3OTpjb25maWdcXHRJUF9WU19QUk9UT19UQ1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy04MC1cXHRib29sIFxcXCJUQ1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMyMT1jb25maWdcXHRJUF9WU19GVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjItXFx0dHJpc3RhdGUgXFxcIkZUUCBwcm90b2NvbCBoZWxwZXJcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIzOlxcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9OQVQgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cXHRcXHRORl9DT05OVFJBQ0tfRlRQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU2OjAxLjIxNjAxMTE1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODQ2NzEzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyB5b3VyIHN1bW1hcnk6XG5cbioqV29ya2luZyBUaHJvdWdoIHRoZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGNvbmZpZ1xcdElQX1ZTX1BST1RPX1RDUGAgaGVyZS4gUmlnaHQsIHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBmb3IgVENQIHByb3RvY29sIGhhbmRsaW5nIGlzIGRlZmluZWQuIE15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyB0byB2ZXJpZnkgdGhlIGRlZmF1bHQgc3RhdGUuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIG9mIHRoZSBudWFuY2VzIHRoaXMgc2V0dGluZyBjb3VsZCBpbXBhY3QgZG93bnN0cmVhbSwgYnV0IEkgbmVlZCB0byBjb25maXJtIGl0cyBpbml0aWFsIGJlaGF2aW9yLiBJcyBpdCBzZXQgdG8gXCJ5XCIgYnkgZGVmYXVsdD8gVGhhdCdzIHRoZSBiYXNlbGluZSB1bmRlcnN0YW5kaW5nIEkgbmVlZCBiZWZvcmUgSSBjYW4gYXNzZXNzIGFueSBwb3RlbnRpYWwgbW9kaWZpY2F0aW9ucyBvciBjYXNjYWRpbmcgZWZmZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1MTcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1NjowNC4xMDA2ODU0NDlaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTA0NDY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJUF9WU19QUk9UT19UQ1BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Nzc9Y29tbWVudCBcXFwiSVBWUyB0cmFuc3BvcnQgcHJvdG9jb2wgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy03OC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3OTpjb25maWdcXHRJUF9WU19QUk9UT19UQ1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy04MC1cXHRib29sIFxcXCJUQ1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMyMT1jb25maWdcXHRJUF9WU19GVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjItXFx0dHJpc3RhdGUgXFxcIkZUUCBwcm90b2NvbCBoZWxwZXJcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIzOlxcdGRlcGVuZHMgb24gSVBfVlNfUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9OQVQgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNC1cXHRcXHRORl9DT05OVFJBQ0tfRlRQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjU2OjA0LjIxNTc0MDQwOVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTIyNTA2NTU3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQWRkaW5nIFByb3RvY29sIERlZmluaXRpb25zIGZvciBSb2J1c3RuZXNzKipcblxuQWxyaWdodCwgZ2l2ZW4gdGhlIGNvbnRleHQsIEkgdGhpbmsgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIGFwcHJvYWNoIGlzIHRvIGJlIGNvbXByZWhlbnNpdmUgYW5kIGFkZCBkZWZpbml0aW9ucyBmb3IgYm90aCBgSVBfVlNfUFJPVE9fVENQYCBhbmQgYElQX1ZTX1BST1RPX1VEUGAuIEJldHRlciB0byBoYXZlIHRoZW0gYW5kIG5vdCBuZWVkIHRoZW0gdGhhbiB0aGUgb3RoZXIgd2F5IGFyb3VuZCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBuZXR3b3JrIHByb3RvY29scy4gSXQncyBhIHF1aWNrIGFkZGl0aW9uIGFuZCBlbnN1cmVzIHdlIGhhbmRsZSBib3RoIG1ham9yIHRyYW5zcG9ydCBwcm90b2NvbHMgZXhwbGljaXRseS5cblxuTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBjb25maXJtIG15IGFzc3VtcHRpb25zLCBsZXQncyBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYElQX1ZTX1BST1RPX1VEUGAgaXMgZGVmaW5lZCBhcyBJIGV4cGVjdC4gTm8gcG9pbnQgaW4gYXNzdW1pbmcgYW55dGhpbmcgd2hlbiBhIHF1aWNrIGluc3BlY3Rpb24gY2FuIGdpdmUgcGVhY2Ugb2YgbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5MTEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1NjoxOS40NDA4MDk5OTdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzI3MDE2ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVBfVlNfUFJPVE9fVURQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTc5PWNvbmZpZ1xcdElQX1ZTX1BST1RPX1RDUFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODQtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6ODU6Y29uZmlnXFx0SVBfVlNfUFJPVE9fVURQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODYtXFx0Ym9vbCBcXFwiVURQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zNDU9Y29uZmlnXFx0SVBfVlNfUEVfU0lQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ2LVxcdHRyaXN0YXRlIFxcXCJTSVAgcGVyc2lzdGVuY2UgZW5naW5lXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM0NzpcXHRkZXBlbmRzIG9uIElQX1ZTX1BST1RPX1VEUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0OC1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS19TSVBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTY6MjEuMDEzNTE5NTU5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExOTQ3Nzk5NjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIElQVlMgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW5zdGluY3Qgd2FzIHJpZ2h0LCBJJ2xsIGJlIGFkZGluZyB0aG9zZSBjb25maWd1cmF0aW9ucy4gTm93LCBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9ucyBsaXN0ZWQsIGl0J3MgY2xlYXIgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBJUFZTIG1vZHVsZS4gSSBoYXZlIGEgZ29vZCBoYW5kbGUgb24gdGhvc2UuIFRoZW4gdGhlcmUgYXJlIHRoZSBGb2N1c1N5bWJvbHMsIHRoZSBzY2hlZHVsaW5nIGZ1bmN0aW9ucyBmb3IgdmFyaW91cyBhbGdvcml0aG1zLiBcblxuTXkgaW5pdGlhbCB0aG91Z2h0cyB3ZXJlIGNvbmZpcm1lZCwgdGhlIHNjaGVkdWxlcnMgdGhlbXNlbHZlcywgYW5kIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGRlc3QgdXBkYXRlIGFuZCBiaW5kaW5nIGFyZSBkZWZpbml0ZWx5IHRoZSBtb3N0IGludGVyZXN0aW5nIHRhcmdldHMgaGVyZS4gSSB3YXMgcmlnaHQgdG8gZm9jdXMgb24gdGhvc2UgYXJlYXMuIFRoZSByZWFzb25pbmcgaXMgY2xlYXIgLSB0aGUgcGF0Y2ggaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IGNoYW5nZXMgYGRlc3QtXHUwMDNlZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgcmVwbGFjZXMgYml0d2lzZSBvcGVyYXRpb25zIHdpdGggYXRvbWljIGZ1bmN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGZ1bmRhbWVudGFsIGZpeCBmb3IgcG90ZW50aWFsIGRhdGEgcmFjZXMgd2l0aGluIHRoZSBJUFZTIHN1YnN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCBhZGRyZXNzZXMgaG93IGRlc3RpbmF0aW9uIGZsYWdzIGxpa2UgYElQX1ZTX0RFU1RfRl9PVkVSTE9BRGAgYW5kIGBJUF9WU19ERVNUX0ZfQVZBSUxBQkxFYCBhcmUgaGFuZGxlZC4gVGhlc2UgZmxhZ3MgYXJlIGNvbmN1cnJlbnRseSByZWFkIGFuZCB1cGRhdGVkIGJ5IHNjaGVkdWxlcnMgYW5kIGRpZmZlcmVudCBjb250cm9sIHBhdGhzIHdpdGhpbiBJUFZTLlxuXG5TbywgZnV6emluZyB0aGUgSVBWUyBzY2hlZHVsZXJzIGlzIGEgTVVTVC4gQWxzbyB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50LCBhbmQgaG93IGF0b21pYyBvcGVyYXRpb25zIGFyZSBoYW5kbGVkLiBJdCdzIGFib3V0IGVuc3VyaW5nIHRoZXNlIGNoYW5nZXMgYXJlIHJvYnVzdCwgY29ycmVjdCwgYW5kIGhhdmVuJ3QgaW50cm9kdWNlZCBhbnkgbmV3IHJlZ3Jlc3Npb25zLiBJJ20gY29uZmlkZW50IHdlJ3ZlIGlkZW50aWZpZWQgdGhlIGtleSBhcmVhcyBvZiBjb25jZXJuLiBJdCBhbGwgbWFrZXMgcGVyZmVjdCBzZW5zZSwgc28gSSdsbCBnbyBhaGVhZCBhbmQgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM1MSwiT3V0cHV0VG9rZW5zIjo1MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTY6MzIuOTYxMzIyNjM2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4NzAxOTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiSVBfVlNfUFJPVE9fVENQXCIsXG4gICAgXCJJUF9WU19QUk9UT19VRFBcIixcbiAgICBcIklQX1ZTX1JSXCIsXG4gICAgXCJJUF9WU19XUlJcIixcbiAgICBcIklQX1ZTX0xDXCIsXG4gICAgXCJJUF9WU19XTENcIixcbiAgICBcIklQX1ZTX0ZPXCIsXG4gICAgXCJJUF9WU19PVkZcIixcbiAgICBcIklQX1ZTX0xCTENcIixcbiAgICBcIklQX1ZTX0xCTENSXCIsXG4gICAgXCJJUF9WU19ESFwiLFxuICAgIFwiSVBfVlNfU0hcIixcbiAgICBcIklQX1ZTX01IXCIsXG4gICAgXCJJUF9WU19TRURcIixcbiAgICBcIklQX1ZTX05RXCIsXG4gICAgXCJJUF9WU19UV09TXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXBfdnNfZGhfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2ZvX3NjaGVkdWxlXCIsXG4gICAgXCJfX2lwX3ZzX2xibGNfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2xibGNfc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfbGJsY3Jfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19taF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbnFfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX292Zl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfcnJfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3NlZF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfc2hfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3R3b3Nfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX3dsY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd3JyX3NjaGVkdWxlXCIsXG4gICAgXCJfX2lwX3ZzX3VwZGF0ZV9kZXN0XCIsXG4gICAgXCJfX2lwX3ZzX3VubGlua19kZXN0XCIsXG4gICAgXCJpcF92c19iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX3VuYmluZF9kZXN0XCIsXG4gICAgXCJpcF92c19jaGVja190ZW1wbGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYGRlc3QtXFx1MDAzZWZsYWdzYCBpbiBgc3RydWN0IGlwX3ZzX2Rlc3RgIHRvIGBhdG9taWNfdGAgYW5kIHVwZGF0ZXMgYWxsIGJpdHdpc2Ugb3BlcmF0aW9ucyB0byB1c2UgYXRvbWljIG9wZXJhdGlvbnMgKGBhdG9taWNfb3JgLCBgYXRvbWljX2FuZGAsIGBhdG9taWNfcmVhZGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBwb3RlbnRpYWwgZGF0YSByYWNlcyBpbiB0aGUgSVBWUyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBpbiBob3cgZGVzdGluYXRpb24gZmxhZ3MgbGlrZSBgSVBfVlNfREVTVF9GX09WRVJMT0FEYCBhbmQgYElQX1ZTX0RFU1RfRl9BVkFJTEFCTEVgIGFyZSByZWFkIGFuZCB1cGRhdGVkIGNvbmN1cnJlbnRseSBieSB2YXJpb3VzIHNjaGVkdWxlcnMgYW5kIGNvbnRyb2wgcGF0aHMuIEZ1enppbmcgdGhlIElQVlMgc2NoZWR1bGVycyBhbmQgZGVzdGluYXRpb24gbWFuYWdlbWVudCBmdW5jdGlvbnMgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSBhdG9taWMgb3BlcmF0aW9ucyBhcmUgY29ycmVjdGx5IGltcGxlbWVudGVkIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJJUF9WU19QUk9UT19UQ1BcIixcbiAgICBcIklQX1ZTX1BST1RPX1VEUFwiLFxuICAgIFwiSVBfVlNfUlJcIixcbiAgICBcIklQX1ZTX1dSUlwiLFxuICAgIFwiSVBfVlNfTENcIixcbiAgICBcIklQX1ZTX1dMQ1wiLFxuICAgIFwiSVBfVlNfRk9cIixcbiAgICBcIklQX1ZTX09WRlwiLFxuICAgIFwiSVBfVlNfTEJMQ1wiLFxuICAgIFwiSVBfVlNfTEJMQ1JcIixcbiAgICBcIklQX1ZTX0RIXCIsXG4gICAgXCJJUF9WU19TSFwiLFxuICAgIFwiSVBfVlNfTUhcIixcbiAgICBcIklQX1ZTX1NFRFwiLFxuICAgIFwiSVBfVlNfTlFcIixcbiAgICBcIklQX1ZTX1RXT1NcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c19kaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfZm9fc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGJsY19zY2hlZHVsZVwiLFxuICAgIFwiX19pcF92c19sYmxjcl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfbGNfc2NoZWR1bGVcIixcbiAgICBcImlwX3ZzX21oX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ucV9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfb3ZmX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19ycl9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfc2VkX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c19zaF9zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfdHdvc19zY2hlZHVsZVwiLFxuICAgIFwiaXBfdnNfd2xjX3NjaGVkdWxlXCIsXG4gICAgXCJpcF92c193cnJfc2NoZWR1bGVcIixcbiAgICBcIl9faXBfdnNfdXBkYXRlX2Rlc3RcIixcbiAgICBcIl9faXBfdnNfdW5saW5rX2Rlc3RcIixcbiAgICBcImlwX3ZzX2JpbmRfZGVzdFwiLFxuICAgIFwiaXBfdnNfdW5iaW5kX2Rlc3RcIixcbiAgICBcImlwX3ZzX2NoZWNrX3RlbXBsYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBgZGVzdC1cXHUwMDNlZmxhZ3NgIGluIGBzdHJ1Y3QgaXBfdnNfZGVzdGAgdG8gYGF0b21pY190YCBhbmQgdXBkYXRlcyBhbGwgYml0d2lzZSBvcGVyYXRpb25zIHRvIHVzZSBhdG9taWMgb3BlcmF0aW9ucyAoYGF0b21pY19vcmAsIGBhdG9taWNfYW5kYCwgYGF0b21pY19yZWFkYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIHBvdGVudGlhbCBkYXRhIHJhY2VzIGluIHRoZSBJUFZTIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IGluIGhvdyBkZXN0aW5hdGlvbiBmbGFncyBsaWtlIGBJUF9WU19ERVNUX0ZfT1ZFUkxPQURgIGFuZCBgSVBfVlNfREVTVF9GX0FWQUlMQUJMRWAgYXJlIHJlYWQgYW5kIHVwZGF0ZWQgY29uY3VycmVudGx5IGJ5IHZhcmlvdXMgc2NoZWR1bGVycyBhbmQgY29udHJvbCBwYXRocy4gRnV6emluZyB0aGUgSVBWUyBzY2hlZHVsZXJzIGFuZCBkZXN0aW5hdGlvbiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIGF0b21pYyBvcGVyYXRpb25zIGFyZSBjb3JyZWN0bHkgaW1wbGVtZW50ZWQgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrt6p[1] Phase: Succeeded StartedAt: 2026-07-08 16:57:09 +0000 UTC FinishedAt: 2026-07-08 16:57:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 16:57:09 +0000 UTC FinishedAt: 2026-07-08 16:57:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2] Phase: Succeeded StartedAt: 2026-07-08 16:57:09 +0000 UTC FinishedAt: 2026-07-08 21:25:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 16:57:09 +0000 UTC FinishedAt: 2026-07-08 21:25:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-08 16:57:09 +0000 UTC FinishedAt: 2026-07-08 16:58:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-08 16:57:09 +0000 UTC FinishedAt: 2026-07-08 16:57:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowsrt6p/series-workflowsrt6p-convert-artifact-3728200605/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-08 16:58:15 +0000 UTC FinishedAt: 2026-07-08 17:39:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-08 16:58:15 +0000 UTC FinishedAt: 2026-07-08 17:39:48 +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:*8cc36109-8e8b-4bcc-ade9-391b157d61cf,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-workflowsrt6p/series-workflowsrt6p-convert-artifact-3728200605/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": "6daac1d7-46f1-420d-83b7-01efbb4df887", "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-workflowsrt6p/series-workflowsrt6p-build-action-3740026067/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-08 16:58:15 +0000 UTC FinishedAt: 2026-07-08 17:39:04 +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:*8cc36109-8e8b-4bcc-ade9-391b157d61cf,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-workflowsrt6p/series-workflowsrt6p-convert-artifact-3728200605/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": "6daac1d7-46f1-420d-83b7-01efbb4df887", "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-workflowsrt6p/series-workflowsrt6p-build-action-3740026067/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-08 17:39:48 +0000 UTC FinishedAt: 2026-07-08 17:39:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-08 17:39:48 +0000 UTC FinishedAt: 2026-07-08 17:39:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-08 17:39:48 +0000 UTC FinishedAt: 2026-07-08 17:41:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-08 17:39:48 +0000 UTC FinishedAt: 2026-07-08 17:41:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowsrt6p/series-workflowsrt6p-convert-artifact-2449414776/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-08 17:41:44 +0000 UTC FinishedAt: 2026-07-08 17:43:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-08 17:41:44 +0000 UTC FinishedAt: 2026-07-08 17:43:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6daac1d7-46f1-420d-83b7-01efbb4df887,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-workflowsrt6p/series-workflowsrt6p-build-action-3740026067/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-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-08 17:43:57 +0000 UTC FinishedAt: 2026-07-08 17:43:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-08 17:43:57 +0000 UTC FinishedAt: 2026-07-08 17:43:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-08 17:43:57 +0000 UTC FinishedAt: 2026-07-08 18:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-08 17:43:57 +0000 UTC FinishedAt: 2026-07-08 18:20:32 +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:*8cc36109-8e8b-4bcc-ade9-391b157d61cf,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-workflowsrt6p/series-workflowsrt6p-convert-artifact-2449414776/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": "abef6bd5-e3ed-4966-866b-b698114039a3", "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-workflowsrt6p/series-workflowsrt6p-build-action-464043876/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-08 17:43:57 +0000 UTC FinishedAt: 2026-07-08 18:20:22 +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:*8cc36109-8e8b-4bcc-ade9-391b157d61cf,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-workflowsrt6p/series-workflowsrt6p-convert-artifact-2449414776/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": "abef6bd5-e3ed-4966-866b-b698114039a3", "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-workflowsrt6p/series-workflowsrt6p-build-action-464043876/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-08 18:20:32 +0000 UTC FinishedAt: 2026-07-08 18:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-08 18:20:32 +0000 UTC FinishedAt: 2026-07-08 18:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-08 18:20:32 +0000 UTC FinishedAt: 2026-07-08 18:22:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-08 18:20:32 +0000 UTC FinishedAt: 2026-07-08 18:22:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*abef6bd5-e3ed-4966-866b-b698114039a3,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-workflowsrt6p/series-workflowsrt6p-build-action-464043876/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-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-08 18:22:45 +0000 UTC FinishedAt: 2026-07-08 21:25:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-08 18:22:45 +0000 UTC FinishedAt: 2026-07-08 21:25:47 +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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"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:*6daac1d7-46f1-420d-83b7-01efbb4df887,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*abef6bd5-e3ed-4966-866b-b698114039a3,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-workflowsrt6p/series-workflowsrt6p-build-action-3740026067/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-workflowsrt6p/series-workflowsrt6p-build-action-464043876/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-08 18:22:45 +0000 UTC FinishedAt: 2026-07-08 18:23:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-08 18:22:45 +0000 UTC FinishedAt: 2026-07-08 18:22:54 +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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"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-workflowsrt6p/series-workflowsrt6p-convert-artifact-2396152785/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-08 18:22:45 +0000 UTC FinishedAt: 2026-07-08 18:22:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-08 18:22:45 +0000 UTC FinishedAt: 2026-07-08 18:22:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-08 18:22:45 +0000 UTC FinishedAt: 2026-07-08 18:22:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-08 18:23:05 +0000 UTC FinishedAt: 2026-07-08 21:25:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsrt6p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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_dh_schedule","ip_vs_fo_schedule","__ip_vs_lblc_schedule","ip_vs_lblc_schedule","__ip_vs_lblcr_schedule","ip_vs_lc_schedule","ip_vs_mh_schedule","ip_vs_nq_schedule","ip_vs_ovf_schedule","ip_vs_rr_schedule","ip_vs_sed_schedule","ip_vs_sh_schedule","ip_vs_twos_schedule","ip_vs_wlc_schedule","ip_vs_wrr_schedule","__ip_vs_update_dest","__ip_vs_unlink_dest","ip_vs_bind_dest","ip_vs_unbind_dest","ip_vs_check_template"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","IP_VS_PROTO_TCP","IP_VS_PROTO_UDP","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":"61f874a3-31f1-4f21-a250-ebef11728d1f","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-08 18:23:05 +0000 UTC FinishedAt: 2026-07-08 21:25:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6daac1d7-46f1-420d-83b7-01efbb4df887,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*abef6bd5-e3ed-4966-866b-b698114039a3,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-workflowsrt6p/series-workflowsrt6p-build-action-3740026067/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-workflowsrt6p/series-workflowsrt6p-build-action-464043876/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-workflowsrt6p/series-workflowsrt6p-convert-artifact-2396152785/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,}