Name: series-workflowrvrgg Phase: Succeeded StartedAt: 2026-08-10 11:16:20 +0000 UTC FinishedAt: 2026-08-10 15:23:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[0] Phase: Succeeded StartedAt: 2026-08-10 11:16:20 +0000 UTC FinishedAt: 2026-08-10 11:36:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 11:16:20 +0000 UTC FinishedAt: 2026-08-10 11:36:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6b8c8af514d739d0335f5579b585e02babe8a727", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_NETLINK", "NF_CONNTRACK_FTP", "NF_CONNTRACK_SIP", "NF_CONNTRACK_IRC", "NF_CONNTRACK_AMANDA", "NF_CONNTRACK_H323", "NF_CONNTRACK_PPTP", "NF_CONNTRACK_SANE", "NF_CONNTRACK_TFTP", "NF_CONNTRACK_BROADCAST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6b8c8af514d739d0335f5579b585e02babe8a727", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_NETLINK", "NF_CONNTRACK_FTP", "NF_CONNTRACK_SIP", "NF_CONNTRACK_IRC", "NF_CONNTRACK_AMANDA", "NF_CONNTRACK_H323", "NF_CONNTRACK_PPTP", "NF_CONNTRACK_SANE", "NF_CONNTRACK_TFTP", "NF_CONNTRACK_BROADCAST" ], "series_id": "84cb5d57-3ab9-4c39-ad0e-a274da114ff7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_ct_expect_related_report" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19GVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NJUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfSVJDJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19BTUFOREEmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0gzMjMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1BQVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NBTkUmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1RGVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0JST0FEQ0FTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgdGhlIGBORl9DVF9FWFBFQ1RfREVBRGAgZmxhZyBpbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCB0byBwcmV2ZW50IG9wZXJhdGluZyBvbiBhIGRlYWQgY29ubnRyYWNrIGV4cGVjdGF0aW9uLiBUaGlzIGlzIGEgbG9naWNhbCBmaXggdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHN0YXRlIGJ1Z3MsIHdoaWNoIGFyZSB0eXBpY2FsbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBhZGRpbmcgYSBkZWFkIGV4cGVjdGF0aW9uIGluIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm50cmFjayBsb2dpYy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBhbmQgdmFyaW91cyBjb25udHJhY2sgaGVscGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEyM2Y0ZmFiMDNhMTYzNzBjNGE5MzAwNmRlZmUwMTJkOWM2OTMyZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxMTozNDoyNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG5pbmRleCAxMGIxMzBhN2IyMzBiLi5mMWYwYzU4MmRiNWRmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG5AQCAtNTI4LDYgJiM0Mzs1MjgsMTIgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuIFx0aW50IHJldDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZuZl9jb25udHJhY2tfZXhwZWN0X2xvY2spO1xuJiM0MztcdGlmIChleHBlY3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE5GX0NUX0VYUEVDVF9ERUFEKSB7XG4mIzQzO1x0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xuJiM0MztcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7XG4gXHRtYXN0ZXJfaGVscCA9IG5mY3RfaGVscChleHBlY3QtXHUwMDNlbWFzdGVyKTtcbiBcdGlmICghbWFzdGVyX2hlbHApIHtcbiBcdFx0cmV0ID0gLUVTSFVURE9XTjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O05GX0NUX05FVExJTksmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0ZUUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfU0lQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19JUkMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0FNQU5EQSYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfSDMyMyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfUFBUUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfU0FORSYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfVEZUUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfQlJPQURDQVNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGFkZGluZyBhIGRlYWQgZXhwZWN0YXRpb24gaW4gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGxvZ2ljLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGFuZCB2YXJpb3VzIGNvbm50cmFjayBoZWxwZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTIzZjRmYWIwM2ExNjM3MGM0YTkzMDA2ZGVmZTAxMmQ5YzY5MzJlNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwppbmRleCAxMGIxMzBhN2IyMzBiLi5mMWYwYzU4MmRiNWRmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwpAQCAtNTI4LDYgJiM0Mzs1MjgsMTIgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LAogCWludCByZXQ7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtuZl9jb25udHJhY2tfZXhwZWN0X2xvY2spOwomIzQzOwlpZiAoZXhwZWN0LSZndDtmbGFncyAmYW1wOyBORl9DVF9FWFBFQ1RfREVBRCkgewomIzQzOwkJREVCVUdfTkVUX1dBUk5fT05fT05DRSgxKTsKJiM0MzsJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwogCW1hc3Rlcl9oZWxwID0gbmZjdF9oZWxwKGV4cGVjdC0mZ3Q7bWFzdGVyKTsKIAlpZiAoIW1hc3Rlcl9oZWxwKSB7CiAJCXJldCA9IC1FU0hVVERPV047CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29ubnRyYWNrIEV4cGVjdCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jYC4gSXQgc2VlbXMgdGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gdGhlIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3JlIG5vdyBjaGVja2luZyBpZiB0aGUgYGV4cGVjdGAgZW50cnkgaGFzIHRoZSBgTkZfQ1RfRVhQRUNUX0RFQURgIGZsYWcgc2V0LiBJZiBpdCAqaXMqIHNldCwgYSB3YXJuaW5nIGlzIHRyaWdnZXJlZCB3aXRoIGBERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpYCwgYW4gZXJyb3IgY29kZSBgLUVJTlZBTGAgaXMgcmV0dXJuZWQsIGFuZCB0aGVuIHRoZSBmdW5jdGlvbiBleGl0cy4KClRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhcyB0aGV5IGFyZSBhZGRpbmcgYSBuZXcgY2hlY2sgaW4gdGhhdCBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQgd2lsbCBhZmZlY3QgaG93IHRoaW5ncyB3b3JrLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBgbmZfY29ubnRyYWNrX2V4cGVjdC5jYCBtb2R1bGUgYW5kIGl0cyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgY29ubnRyYWNrIHN5c3RlbS4gVGhpcyB3aWxsIGhlbHAgbWUgZXZhbHVhdGUgdGhlIGltcGFjdCBvZiB0aGlzIG5ldyBjaGVjayBhbmQgaXRzIGltcGxpY2F0aW9ucyBvbiB0aGUgb3ZlcmFsbCBjb25uZWN0aW9uIHRyYWNraW5nIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jPTQ2NT1zdGF0aWMgaW5saW5lIGludCBfX25mX2N0X2V4cGVjdF9jaGVjayhzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jLTUyMy1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jOjUyNDppbnQgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01MjUtXHRcdFx0XHR1MzIgcG9ydGlkLCBpbnQgcmVwb3J0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtNTU3LX1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jOjU1ODpFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtNTU5LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yODU2PWN0bmV0bGlua19nbHVlX2F0dGFjaF9leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yODkyLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI4OTM6XHRlcnIgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoZXhwLCBwb3J0aWQsIHJlcG9ydCwgMCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg5NC1cdG5mX2N0X2V4cGVjdF9wdXQoZXhwKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzU5Nj1jdG5ldGxpbmtfY3JlYXRlX2V4cGVjdChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM2MzMtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzYzNDpcdGVyciA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChleHAsIHBvcnRpZCwgcmVwb3J0LCAwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNjM1LVx0bmZfY3RfZXhwZWN0X3B1dChleHApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MgcmVnYXJkaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2AsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkRpdmluZyBEZWVwIGludG8gYG5mX2Nvbm50cmFja19leHBlY3QuY2AgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgZm9yIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBub3QganVzdCBibGluZGx5IGxvb2sgYXQgdGhlIGNvZGUsIGJ1dCB0byBjb25zaWRlciB0aGUgKnB1cnBvc2UqIG9mIHRoaXMgZmlsZSB3aXRoaW4gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZnJhbWV3b3JrLiBFeHBlY3RhdGlvbnMsIGVzc2VudGlhbGx5LCBhcmUgYWJvdXQgaGFuZGxpbmcgcmVsYXRlZCBjb25uZWN0aW9ucywgcmlnaHQ/IFRoaW5rIEZUUCBkYXRhIGNvbm5lY3Rpb25zLCBvciBTSVAgc2lnbmFsaW5nIGFuZCBtZWRpYS4gVGhlcmVmb3JlLCBhbnkgY29uZmlndXJhdGlvbnMgYWZmZWN0aW5nIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgdGhlc2UgJiMzNDtleHBlY3RlZCYjMzQ7IGZsb3dzIGFyZSBnb2luZyB0byBiZSBteSBwcmltYXJ5IGludGVyZXN0LgoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipTaXplIGFuZCBNZW1vcnkgQWxsb2NhdGlvbjoqKiBBcmUgdGhlcmUgbGltaXRzIG9uIHRoZSBudW1iZXIgb2YgZXhwZWN0ZWQgY29ubmVjdGlvbnMgdGhhdCBjYW4gYmUgdHJhY2tlZD8gQXJlIHRoZXJlIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzIHRoYXQgY29udHJvbCB0aGUgaGFzaCB0YWJsZSBzaXplIG9yIHRoZSBtZW1vcnkgdXNlZCB0byBzdG9yZSB0aGVzZSBleHBlY3RlZCBjb25uZWN0aW9ucz8gSG93IGFyZSB0aGVzZSBwb3RlbnRpYWxseSB0dW5lZD8gVGhpcyB3b3VsZCBiZSBrZXkgZm9yIHBlcmZvcm1hbmNlIHVuZGVyIGxvYWQuCiogICAqKlRpbWVvdXQgVmFsdWVzOioqIENvbm5lY3Rpb24gdHJhY2tpbmcgaGFzIHRpbWVvdXRzOyBob3cgYWdncmVzc2l2ZWx5IGNhbiB0aGVzZSBiZSBjb25maWd1cmVkPyBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGltcHJvcGVyIGNvbmZpZ3VyYXRpb24gbWlnaHQgY2F1c2UgZXhjZXNzaXZlIHJlc291cmNlIHVzYWdlIG9yIGRyb3AgbGVnaXRpbWF0ZSBjb25uZWN0aW9ucy4KKiAgICoqUHJvdG9jb2wtU3BlY2lmaWMgT3B0aW9uczoqKiBJcyB0aGVyZSBhbnl0aGluZyBzcGVjaWZpYyB0bywgc2F5LCBGVFAgb3IgU0lQIGV4cGVjdGF0aW9uIGhhbmRsaW5nPyBGbGFncyB0byBlbmFibGUvZGlzYWJsZSBzcGVjaWZpYyBiZWhhdmlvcnMgb3IgYWRqdXN0bWVudHMgdG8gaG93IHRoZSBleHBlY3RhdGlvbiBzdGF0ZXMgYXJlIG1hbmFnZWQgZm9yIGRpZmZlcmVudCBwcm90b2NvbHM/CiogICAqKkRlYnVnZ2luZyBhbmQgTG9nZ2luZzoqKiBBcmUgdGhlcmUgZGVidWcgb3B0aW9ucyB0byBlbmFibGUgbW9yZSB2ZXJib3NlIGxvZ2dpbmcgYWJvdXQgZXhwZWN0YXRpb24gZXZlbnRzPyBUaGlzIHdvdWxkIGJlIGNyaXRpY2FsIGZvciB0cm91Ymxlc2hvb3RpbmcgY29ubmVjdGlvbiB0cmFja2luZyBpc3N1ZXMuCiogICAqKkludGVyZmFjZSBGaWx0ZXJpbmc6KiogSSYjMzk7ZCBleHBlY3QgdGhlcmUgdG8gYmUgc29tZSBkZWdyZWUgb2YgY29udHJvbCBvdmVyIHdoaWNoIGludGVyZmFjZXMgYW5kIG5ldGZpbHRlciBob29rcyB0aGlzIG1vZHVsZSBhY3RzIG9uLiBDb25maWd1cmF0aW9uIHRoYXQgbGV0cyB5b3UgZmluZS10dW5lIHRoZXNlIHdvdWxkIGJlIHZhbHVhYmxlLgoqICAgKipDb25jdXJyZW5jeS9Mb2NraW5nOioqIEtub3dpbmcgdGhpcyBpcyBrZXJuZWwtbGV2ZWwgY29kZSwgSeKAmWxsIG5lZWQgdG8gdW5kZXJzdGFuZCBhbnkgbG9ja2luZyBtZWNoYW5pc21zIG9yIGNvbmN1cnJlbmN5IGNvbnNpZGVyYXRpb25zLiBDb25maWd1cmF0aW9uIG1pZ2h0IHN1YnRseSBpbmZsdWVuY2UgdGhlc2UsIGZvciBpbnN0YW5jZSwgYnkgY29udHJvbGxpbmcgdGhyZWFkIGNvdW50cyBvciB1c2luZyBkaWZmZXJlbnQgbG9ja2luZyBzdHJhdGVnaWVzLgoqICAgKipFcnJvciBIYW5kbGluZyBhbmQgR3JhY2VmdWwgRGVncmFkYXRpb246KiogSG93IHJvYnVzdCBpcyB0aGlzIGNvZGU/IFdoYXQgaGFwcGVucyBpZiBhbiBleHBlY3RhdGlvbiB0YWJsZSBmaWxscyB1cD8gQXJlIHRoZXJlIGFueSBjb25maWd1cmF0aW9ucyB0aGF0IGFsbG93IGZvciBncmFjZWZ1bCBoYW5kbGluZyBvZiByZXNvdXJjZSBjb25zdHJhaW50cz8KCkVzc2VudGlhbGx5LCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gYmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgb3IgbW9kaWZ5aW5nIGV4cGVjdGF0aW9ucy4gVGhpcyByZXF1aXJlcyB1bmRlcnN0YW5kaW5nIHBhcmFtZXRlcnMgcmVsYXRlZCB0byBtZW1vcnksIHRpbWVvdXRzLCBwcm90b2NvbCBoYW5kbGluZywgZGVidWcvbG9nZ2luZywgYW5kIHNlY3VyaXR5LiBJJiMzOTtsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGVzZSBvcHRpb25zIGNhbiBiZSB1c2VkIHRvIG9wdGltaXplIGFuZCB0cm91Ymxlc2hvb3QgY29ubmVjdGlvbiB0cmFja2luZyBmb3IgcmVhbC13b3JsZCBzY2VuYXJpb3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubnRyYWNrX2V4cGVjdC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT0zPW5ldGZpbHRlci0kKENPTkZJR19ORVRGSUxURVJfTkVUTElOSykgJiM0Mzs9IG5mbmV0bGluay5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTQtXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjU6bmZfY29ubnRyYWNrLXlcdDo9IG5mX2Nvbm50cmFja19jb3JlLm8gbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUubyBuZl9jb25udHJhY2tfZXhwZWN0Lm8gbmZfY29ubnRyYWNrX2hlbHBlci5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTYtXHRcdCAgIG5mX2Nvbm50cmFja19wcm90by5vIG5mX2Nvbm50cmFja19wcm90b19nZW5lcmljLm8gbmZfY29ubnRyYWNrX3Byb3RvX3RjcC5vIG5mX2Nvbm50cmFja19wcm90b191ZHAubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NTIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlciBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgbmZfY29ubnRyYWNrIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzLiBUaGUgcGllY2UgSSYjMzk7bSBsb29raW5nIGF0LCB0aGlzIGNvZGUgb3IgbW9kdWxlLCBpcyBjbGVhcmx5IHBhcnQgb2YgYG5mX2Nvbm50cmFja2AuIE15IGZpcnN0IGluc3RpbmN0IGlzLCBsZXQmIzM5O3MgbmFpbCBkb3duIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gb3Igb3B0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGVuYWJsaW5nIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgYG5mX2Nvbm50cmFja2AgZnJhbWV3b3JrLiBUaW1lIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUga2VybmVsIGNvbmZpZyBhbmQgc2VlIHdoYXQgZmxhZ3MgbGlnaHQgdGhpcyB1cC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgYXJvdW5kIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgcmV2ZWFsLiBJJiMzOTttIGFzc3VtaW5nIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgYENPTkZJR19gIG9wdGlvbiwgb3IgcG90ZW50aWFsbHkgYSBjb21iaW5hdGlvbiBvZiB0aGVtLCB0aGF0IGdvdmVybnMgdGhlIGluY2x1c2lvbiBhbmQsIGJ5IGV4dGVuc2lvbiwgdGhlIGJlaGF2aW9yIG9mIHRoaXMgcGFydCBvZiBgbmZfY29ubnRyYWNrYC4gVGhlIGdvYWwgaXMgYSBjbGVhciB2aWV3IG9mIGl0cyBidWlsZCBkZXBlbmRlbmN5IHRyZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubnRyYWNrLXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTM9bmV0ZmlsdGVyLSQoQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LKSAmIzQzOz0gbmZuZXRsaW5rLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNC1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6NTpuZl9jb25udHJhY2steVx0Oj0gbmZfY29ubnRyYWNrX2NvcmUubyBuZl9jb25udHJhY2tfc3RhbmRhbG9uZS5vIG5mX2Nvbm50cmFja19leHBlY3QubyBuZl9jb25udHJhY2tfaGVscGVyLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNi1cdFx0ICAgbmZfY29ubnRyYWNrX3Byb3RvLm8gbmZfY29ubnRyYWNrX3Byb3RvX2dlbmVyaWMubyBuZl9jb25udHJhY2tfcHJvdG9fdGNwLm8gbmZfY29ubnRyYWNrX3Byb3RvX3VkcC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE3MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipHcmVwcGluZyBmb3IgbmZfY29ubnRyYWNrLm8qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgJiMzNDtyaWdodCwgSSBuZWVkIHRvIGdldCBzdGFydGVkIG9uIHRoaXMuLi4gd2hhdGV2ZXIgaXQgaXMuIEFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgbmZfY29ubnRyYWNrLm9gIGJpdC4gSXQmIzM5O3MgYSBrZXJuZWwgbW9kdWxlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBjb25uZWN0aW9uIHRyYWNraW5nLiBUaGF0IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIEkmIzM5O20gZGl2aW5nIGludG8gc29tZXRoaW5nIG5ldHdvcmstcmVsYXRlZC4gU28sIGxldCYjMzk7cyBzdGFydCB3aXRoIGEgZ29vZCBvbGQgYGdyZXBgLiBHZXQgdGhlIHNlYXJjaCBnb2luZywgYW5kIHNlZSB3aGF0IHRoZSBzeXN0ZW0gaGFzIHRvIHNheSBhYm91dCB0aGF0IG1vZHVsZS4gU2VlIHdoZXJlIGl0JiMzOTtzIHJlZmVyZW5jZWQsIGhvdyBpdCYjMzk7cyB1c2VkLCBhbmQgd2hhdCBmaWxlcyBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IGl0LiBJdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBmaXJzdCBtb3ZlIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubnRyYWNrLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0PW5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTKSAmIzQzOz0gbmZfY29ubnRyYWNrX2xhYmVscy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE1Om5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfT1ZTKSAmIzQzOz0gbmZfY29ubnRyYWNrX292cy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE2LW5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DVF9QUk9UT19TQ1RQKSAmIzQzOz0gbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAub1xuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MzE9b2JqLSQoQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0hPT0spICYjNDM7PSBuZm5ldGxpbmtfaG9vay5vXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zMy0jIGNvbm5lY3Rpb24gdHJhY2tpbmdcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDSykgJiM0Mzs9IG5mX2Nvbm50cmFjay5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTM1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjAxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqSW52ZXN0aWdhdGluZyBhIE5ldGZpbHRlciBDb25udHJhY2sgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IGBDT05GSUdfTkZfQ09OTlRSQUNLYCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZW1lbnQsIG5vIHN1cnByaXNlcyB0aGVyZS4gTXkgZm9jdXMgaXMgbm93IG9uIHRoZSBtb2RpZmljYXRpb25zIHRvIHRoZSBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCBmdW5jdGlvbi4gVGhpcyBpcyBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGl0JiMzOTtzIGJlaW5nICpjYWxsZWQqIGZyb20sIHRvIHRyYWNlIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuCgpSaWdodCwgYWNjb3JkaW5nIHRvIHRoZSBjb2RlLCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgY3RuZXRsaW5rX2dsdWVfYXR0YWNoX2V4cGVjdGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2V4cGVjdGAuIEJvdGggb2YgdGhvc2UgYXJlIGxvY2F0ZWQgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNgLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9uIGFjdHVhbGx5IGNvbnRyb2xzIHRoZSBpbmNsdXNpb24gb2YgYG5mX2Nvbm50cmFja19uZXRsaW5rLmNgLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGRlcGVuZGVuY3kgY2hhaW4gYW5kIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBtb2RpZmljYXRpb25zLiBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgS2NvbmZpZyBzeW1ib2wgdGhhdCBlbmFibGVzIHRoYXQgZmlsZSB0byBiZSBjb21waWxlZCBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubnRyYWNrX25ldGxpbmsubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDSykgJiM0Mzs9IG5mX2Nvbm50cmFjay5vXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zNi0jIG5ldGxpbmsgaW50ZXJmYWNlIGZvciBuZl9jb25udHJhY2tcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX05GX0NUX05FVExJTkspICYjNDM7PSBuZl9jb25udHJhY2tfbmV0bGluay5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19ORl9DVF9ORVRMSU5LX1RJTUVPVVQpICYjNDM7PSBuZm5ldGxpbmtfY3R0aW1lb3V0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA3OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIE1vZHVsZSBEZXBlbmRlbmN5IEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIGNsZWFyIHRoYXQgYENPTkZJR19ORl9DVF9ORVRMSU5LYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgaGVyZS4gTm8gc3VycHJpc2VzIHRoZXJlLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgZGVwZW5kZW5jaWVzLiBOb3csIEkmIzM5O20gc3BvdHRpbmcgdGhhdCBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCBpcyBhbHNvIGJlaW5nIGV4cG9ydGVkLiBUaGF0JiMzOTtzIGEgYml0IGludGVyZXN0aW5nOyBJIHdvbmRlciBpZiB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHV0aWxpemVkIG91dHNpZGUgb2YgaXRzIGltbWVkaWF0ZSBpbnRlbmRlZCBwdXJwb3NlPyBUaW1lIHRvIGRlbHZlIGEgYml0IGRlZXBlciBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY2FsbCBzaXRlcywgb3IgaWYgdGhpcyBleHBvcnQgaXMgcG90ZW50aWFsbHkgb3Zlci1icm9hZC4gR290dGEgY2hlY2sgZm9yIGFueSB1bmZvcmVzZWVuIHNpZGUtZWZmZWN0cyBvZiByZWx5aW5nIG9uIHRoYXQgcGFydGljdWxhciBzeW1ib2wuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oPTE1OD12b2lkIG5mX2N0X2V4cGVjdF9wdXQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCk7XG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oOjE1OTppbnQgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oLTE2MC1cdFx0XHRcdHUzMiBwb3J0aWQsIGludCByZXBvcnQsIHVuc2lnbmVkIGludCBmbGFncyk7XG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oPTE2MT1zdGF0aWMgaW5saW5lIGludCBuZl9jdF9leHBlY3RfcmVsYXRlZChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmgtMTYzLXtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg6MTY0Olx0cmV0dXJuIG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChleHBlY3QsIDAsIDAsIGZsYWdzKTtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmgtMTY1LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYz00NjU9c3RhdGljIGlubGluZSBpbnQgX19uZl9jdF9leHBlY3RfY2hlY2soc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01MjMtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYzo1MjQ6aW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtNTI1LVx0XHRcdFx0dTMyIHBvcnRpZCwgaW50IHJlcG9ydCwgdW5zaWduZWQgaW50IGZsYWdzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jLTU1Ny19XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYzo1NTg6RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jLTU1OS1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mjg1Nj1jdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0KGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg5Mi1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyODkzOlx0ZXJyID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KGV4cCwgcG9ydGlkLCByZXBvcnQsIDApO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI4OTQtXHRuZl9jdF9leHBlY3RfcHV0KGV4cCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM1OTY9Y3RuZXRsaW5rX2NyZWF0ZV9leHBlY3Qoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNjMzLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM2MzQ6XHRlcnIgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoZXhwLCBwb3J0aWQsIHJlcG9ydCwgMCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzYzNS1cdG5mX2N0X2V4cGVjdF9wdXQoZXhwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA4NwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIEV4cGVjdGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRgIGZ1bmN0aW9uLiBUaGUgY29kZSBzYXlzIGl0JiMzOTtzIGFuIGlubGluZSBzdGF0aWMgZnVuY3Rpb24sIHR1Y2tlZCBhd2F5IGluIGBpbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oYC4gVGhhdCB0ZWxscyBtZSBpdCYjMzk7cyBsaWtlbHkgYSByZWxhdGl2ZWx5IGZyZXF1ZW50bHkgdXNlZCBoZWxwZXIsIHByb2JhYmx5IG9wdGltaXplZCBmb3Igc3BlZWQgc2luY2UgaXQmIzM5O3MgaW5saW5lLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGgsIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKnVzZWQqLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGVudHJ5IHBvaW50cyB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQuIExldCBtZSB0cmFjZSB0aGUgY2FsbHMgdG8gYG5mX2N0X2V4cGVjdF9yZWxhdGVkYCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaXRzIHJvbGUgd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29ubnRyYWNrIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY3RfZXhwZWN0X3JlbGF0ZWRcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaD0xNTk9aW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaC0xNjAtXHRcdFx0XHR1MzIgcG9ydGlkLCBpbnQgcmVwb3J0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpO1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaDoxNjE6c3RhdGljIGlubGluZSBpbnQgbmZfY3RfZXhwZWN0X3JlbGF0ZWQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmgtMTYyLVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBmbGFncylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbmZjdC5jPTIxMD12b2lkIGlwX3ZzX25mY3RfZXhwZWN0X3JlbGF0ZWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19uZmN0LmMtMjMyLVx0XHQgICAgICBfX2Z1bmNfXywgY3QsIEFSR19UVVBMRShcdTAwMjZleHAtXHUwMDNldHVwbGUpKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19uZmN0LmM6MjMzOlx0bmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19uZmN0LmMtMjM0LVx0bmZfY3RfZXhwZWN0X3B1dChleHApO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTgzPXN0YXRpYyBpbnQgYW1hbmRhX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0xNTUtXHRcdFx0XHRcdCAgICBvZmYgLSBkYXRhb2ZmLCBsZW4sIGV4cCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYzoxNTY6XHRcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTU3LVx0XHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXCYjMzQ7Y2Fubm90IGFkZCBleHBlY3RhdGlvblwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmM9MTk9aW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTg3LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmM6ODg6XHRuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmMtODktXHRuZl9jdF9leHBlY3RfcHV0KGV4cCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmM9MzYxPXN0YXRpYyBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jLTUyMS1cdFx0LyogQ2FuJiMzOTt0IGV4cGVjdCB0aGlzPyAgQmVzdCB0byBkcm9wIHBhY2tldCBub3cuICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYzo1MjI6XHRcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jLTUyMy1cdFx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwmIzM0O2Nhbm5vdCBhZGQgZXhwZWN0YXRpb25cJiMzNDspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTIwOT1zdGF0aWMgaW50IGV4cGVjdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjYyLVx0fSBlbHNlIHtcdFx0LyogQ29ubnRyYWNrIG9ubHkgKi9cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjI2MzpcdFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0cF9leHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjI2NDpcdFx0XHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTI2NS1cdFx0XHRcdHByX2RlYnVnKFwmIzM0O25mX2N0X2gzMjM6IGV4cGVjdCBSVFAgXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0yODM9c3RhdGljIGludCBleHBlY3RfdDEyMChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTMyMi1cdH0gZWxzZSB7XHRcdC8qIENvbm50cmFjayBvbmx5ICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzozMjM6XHRcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTMyNC1cdFx0XHRwcl9kZWJ1ZyhcJiMzNDtuZl9jdF9oMzIzOiBleHBlY3QgVC4xMjAgXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz02MTg9c3RhdGljIGludCBleHBlY3RfaDI0NShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjU1LVx0fSBlbHNlIHtcdFx0LyogQ29ubnRyYWNrIG9ubHkgKi9cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjY1NjpcdFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgPT0gMCkge1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjU3LVx0XHRcdHByX2RlYnVnKFwmIzM0O25mX2N0X3E5MzE6IGV4cGVjdCBILjI0NSBcJiMzNDspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTczNT1zdGF0aWMgaW50IGV4cGVjdF9jYWxsZm9yd2FyZGluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTc4My1cdH0gZWxzZSB7XHRcdC8qIENvbm50cmFjayBvbmx5ICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzo3ODQ6XHRcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTc4NS1cdFx0XHRwcl9kZWJ1ZyhcJiMzNDtuZl9jdF9xOTMxOiBleHBlY3QgQ2FsbCBGb3J3YXJkaW5nIFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTE4Mz1zdGF0aWMgaW50IGV4cGVjdF9xOTMxKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMjI3LVx0fSBlbHNlIHtcdFx0LyogQ29ubnRyYWNrIG9ubHkgKi9cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjEyMjg6XHRcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyMjktXHRcdFx0cHJfZGVidWcoXCYjMzQ7bmZfY3RfcmFzOiBleHBlY3QgUS45MzEgXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMjYzPXN0YXRpYyBpbnQgcHJvY2Vzc19nY2Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyOTUtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxMjk2Olx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgPT0gMCkge1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTI5Ny1cdFx0cHJfZGVidWcoXCYjMzQ7bmZfY3RfcmFzOiBleHBlY3QgUkFTIFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTQ4Nj1zdGF0aWMgaW50IHByb2Nlc3NfYWNmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTI0LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTUyNTpcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1MjYtXHRcdHByX2RlYnVnKFwmIzM0O25mX2N0X3JhczogZXhwZWN0IFEuOTMxIFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTU1Mz1zdGF0aWMgaW50IHByb2Nlc3NfbGNmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTc4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTU3OTpcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1ODAtXHRcdHByX2RlYnVnKFwmIzM0O25mX2N0X3JhczogZXhwZWN0IFEuOTMxIFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmM9OTc9c3RhdGljIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jLTIzNy1cdFx0XHRcdFx0XHQgZXhwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jOjIzODpcdFx0XHRlbHNlIGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jLTIzOS1cdFx0XHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmM9MTI4PXN0YXRpYyBpbnQgZXhwX2dyZShzdHJ1Y3QgbmZfY29ubiAqY3QsIF9fYmUxNiBjYWxsaWQsIF9fYmUxNiBwZWVyX2NhbGxpZClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmMtMTYzLVx0XHRob29rLVx1MDAzZWV4cF9ncmUoZXhwX29yaWcsIGV4cF9yZXBseSk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmM6MTY0Olx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cF9vcmlnLCAwKSAhPSAwKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHB0cC5jLTE2NS1cdFx0Z290byBvdXRfcHV0X2JvdGg7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmM6MTY2Olx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cF9yZXBseSwgMCkgIT0gMClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3BwdHAuYy0xNjctXHRcdGdvdG8gb3V0X3VuZXhwZWN0X29yaWc7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2FuZS5jPTUzPXN0YXRpYyBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NhbmUuYy0xNTctXHQvKiBDYW4mIzM5O3QgZXhwZWN0IHRoaXM/ICBCZXN0IHRvIGRyb3AgcGFja2V0IG5vdy4gKi9cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NhbmUuYzoxNTg6XHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zYW5lLmMtMTU5LVx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwmIzM0O2Nhbm5vdCBhZGQgZXhwZWN0YXRpb25cJiMzNDspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jPTkyMz1zdGF0aWMgaW50IHNldF9leHBlY3RlZF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYy0xMDY2LVx0XHQgKi9cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jOjEwNjc6XHRcdGludCBlcnJwID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTEwNjgtXHRcdFx0XHRcdFx0TkZfQ1RfRVhQX0ZfU0tJUF9NQVNURVIpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTEwNzAtXHRcdGlmIChlcnJwID09IDAgfHwgZXJycCA9PSAtRUFMUkVBRFkpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jOjEwNzE6XHRcdFx0aW50IGVycmNwID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYy0xMDcyLVx0XHRcdFx0XHRcdE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYz0xMzIzPXN0YXRpYyBpbnQgcHJvY2Vzc19yZWdpc3Rlcl9yZXF1ZXN0KHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTE0MTgtXHRlbHNlIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jOjE0MTk6XHRcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTE0MjAtXHRcdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcJiMzNDtjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmM9MzI9c3RhdGljIGludCB0ZnRwX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmMtNzItXHRcdFx0cmV0ID0gbmZfbmF0X3RmdHAoc2tiLCBjdCwgY3RpbmZvLCBleHApO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jOjczOlx0XHRlbHNlIGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYy03NC1cdFx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwmIzM0O2Nhbm5vdCBhZGQgZXhwZWN0YXRpb25cJiMzNDspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2hlbHBlci5jPTIwMj11MTYgbmZfbmF0X2V4cF9maW5kX3BvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCwgdTE2IHBvcnQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9uYXRfaGVscGVyLmMtMjE4LVx0XHRleHAtXHUwMDNldHVwbGUuZHN0LnUudGNwLnBvcnQgPSBodG9ucyhwb3J0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2hlbHBlci5jOjIxOTpcdFx0cmVzID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2hlbHBlci5jLTIyMC1cdFx0aWYgKHJlcyA9PSAwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYz0yMz1zdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF90ZnRwLmMtMzEtXHRleHAtXHUwMDNlZXhwZWN0Zm4gPSBuZl9uYXRfZm9sbG93X21hc3Rlcjtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYzozMjpcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYy0zMy1cdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcJiMzNDtjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMTE9c3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM2Mi0jZW5kaWZcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTM2MzpcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEzNjQtXHRcdHJlZ3MtXHUwMDNldmVyZGljdC5jb2RlID0gTkZfRFJPUDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwMjYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1NzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIENvbm50cmFjayBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBhIHByZXR0eSBpbnRlcmVzdGluZyBmdW5jdGlvbmFsIGNoYW5nZSB0byBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YC4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSBjaGVjayBmb3IgYE5GX0NUX0VYUEVDVF9ERUFEYCB3aXRoaW4gYSBzcGlubG9jaywgcHJldmVudGluZyB0aGUgYWRkaXRpb24gb2YgYSAmIzM0O2RlYWQmIzM0OyBleHBlY3RhdGlvbi4gVGhpcyBpcyBjbGVhcmx5IGEgY3JpdGljYWwgZnVuY3Rpb24gd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29ubnRyYWNrIHN5c3RlbSwgc28gaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gZ2l2ZSBhIGNsb3NlciBsb29rLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyBzb21ldGhpbmcgd2Ugc2hvdWxkIGZ1eno/IEFic29sdXRlbHksIGl0JiMzOTtzIGNvcmUgZnVuY3Rpb25hbGl0eS4KCkxldCYjMzk7cyBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gV2VsbCwgb2J2aW91c2x5IGBDT05GSUdfTkZfQ09OTlRSQUNLYCBpcyBuZWVkZWQsIHRoYXQmIzM5O3MgYSBnaXZlbi4gVGhlbiBJIHNlZSBgQ09ORklHX05GX0NUX05FVExJTktgIGlzIGFsc28gbmVlZGVkIGZvciBjYWxscyBsaWtlIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YCwgc28gdGhhdCYjMzk7cyBhbm90aGVyIHByZXJlcXVpc2l0ZS4KCk5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgd2lkZXIgaW1wYWN0LiBMb29raW5nIGF0IHRoZSBjYWxsIGdyYXBoLCBpdCBsb29rcyBsaWtlIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGlzIGFsc28gY2FsbGVkIGJ5IGBuZl9jdF9leHBlY3RfcmVsYXRlZGAsIHdoaWNoIGlzIGNhbGxlZCBieSBzbyBtYW55IG9mIHRoZSBoZWxwZXIgbW9kdWxlcy4gSSBuZWVkIHRvIHRlc3QgdGhhdCB0byBjb25maXJtIHRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGJyZWFrIGFueXRoaW5nLiBTbywgYENPTkZJR19ORl9DT05OVFJBQ0tfRlRQYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfU0lQYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfSVJDYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfSDMyM2AsIGBDT05GSUdfTkZfQ09OTlRSQUNLX1BQVFBgLCBgQ09ORklHX05GX0NPTk5UUkFDS19TQU5FYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfVEZUUGAsIGFuZCBgQ09ORklHX05GX0NPTk5UUkFDS19CUk9BRENBU1RgIGFyZSBhbGwgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIHRlc3RpbmcuCgpJJiMzOTtsbCBkb3VibGUtY2hlY2sgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBjb25maWd1cmF0aW9ucy4gVGhlbiBJJiMzOTtsbCBoYXZlIGEgZ29vZCBpZGVhIG9mIHdoYXQgSSYjMzk7bSBkZWFsaW5nIHdpdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DT05OVFJBQ0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTExNS1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiBtYXJrIHRyYWNraW5nIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBzZWN1cml0eSBtYXJrIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzctXHRib29sICAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgem9uZXMmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5LVx0Ym9vbCBcJiMzNDtTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTc2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xODctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTk2LVx0Ym9vbFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMDE9Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxMjpjb25maWcgTkZfQ09OTlRSQUNLX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O0FtYW5kYSBiYWNrdXAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtILjMyMyBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNTg6Y29uZmlnIE5GX0NPTk5UUkFDS19JUkNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtJUkMgRENDIHByb3RvY29sIHN1cHBvcnQgKG9ic29sZXRlKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVx0dHJpc3RhdGVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O05ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI5Njpjb25maWcgTkZfQ09OTlRSQUNLX1NOTVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXHR0cmlzdGF0ZSBcJiMzNDtTTk1QIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cdHRyaXN0YXRlIFwmIzM0O1BQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMzEtXHR0cmlzdGF0ZSBcJiMzNDtTQU5FIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM0Mzpjb25maWcgTkZfQ09OTlRSQUNLX1NJUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cdHRyaXN0YXRlIFwmIzM0O1NJUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVx0dHJpc3RhdGUgXCYjMzQ7VEZUUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzQ1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5GX0NUX05FVExJTksgQ2hlY2stSW4qKgoKUmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgTkZfQ1RfTkVUTElOS2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbnRhbCBtb2RlbCBvZiBpdHMgY3VycmVudCBzdGF0ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSByZWNlbnQgYWN0aXZpdHksIHNwZWNpZmljYWxseSBhbnkgcGF0Y2hlcyBvciBidWcgZml4ZXMgdGhhdCBoYXZlIHRvdWNoZWQgaXQgaW4gdGhlIGxhc3QgZmV3IG1vbnRocy4gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgbGluZ2VyaW5nIHF1ZXN0aW9ucyBvbiB0aGUgbWFpbGluZyBsaXN0cyBJIG5lZWQgdG8gYWRkcmVzcyBvciBmb2xsb3cgdXAgb24gcmVsYXRlZCB0byB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBORVRMSU5LIGludGVyZmFjZS4gSSBzaG91bGQgdmVyaWZ5IHRoYXQgdGhlIHJlY2VudCBjaGFuZ2VzIGRpZCBub3QgYnJlYWsgYW55dGhpbmcgYW5kIHRoYXQgdGhlIG5ldGxpbmsgbWVzc2FnZXMgYXJlIHN0aWxsIHZhbGlkLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVjZW50IGtlcm5lbCB2ZXJzaW9uIGlzIHN0aWxsIGNvbXBhdGlibGUuIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgdGhlIGNvbW1pdCBsb2dzIGFuZCBhbnkgcmVsYXRlZCBkb2N1bWVudGF0aW9uLiBUaW1lIHRvIHNlZSBpZiBhbnkgb2YgdGhlIHJlY2VudCBhZGRpdGlvbnMgYXJlIGludHJvZHVjaW5nIGFueSBuZXcgY29tcGxleGl0aWVzIG9yIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4gRmluYWxseSwgSSBzaG91bGQgY29uc2lkZXIgaWYgYW55IHNpZ25pZmljYW50IGFyY2hpdGVjdHVyYWwgZGlzY3Vzc2lvbnMgYXJlIGFjdGl2ZSB0aGF0IG1pZ2h0IGltcGFjdCBmdXR1cmUgZGV2ZWxvcG1lbnQgb3IgcG90ZW50aWFsIHJlZmFjdG9yaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfQ1RfTkVUTElOSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zNTU9Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM2NS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNjY6Y29uZmlnIE5GX0NUX05FVExJTktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjctXHR0cmlzdGF0ZSAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgbmV0bGluayBpbnRlcmZhY2UmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzczOmNvbmZpZyBORl9DVF9ORVRMSU5LX1RJTUVPVVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzQtXHR0cmlzdGF0ZSAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQgdHVuaW5nIHZpYSBOZXRsaW5rJiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM4NTpjb25maWcgTkZfQ1RfTkVUTElOS19IRUxQRVJcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODYtXHR0cmlzdGF0ZSAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVycyBpbiB1c2VyLXNwYWNlIHZpYSBOZXRsaW5rJiMzOTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MjQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbm5lY3Rpb24gVHJhY2tpbmcgZm9yIE5ldHdvcmsgRmlsdGVyaW5nKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBjb25uZWN0aW9uIHRyYWNraW5nIGNvZGUuLi4gSXQgbG9va3MgbGlrZSBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX0NUX05FVExJTktgIGFyZSB0aGUgY29yZSBjb21wb25lbnRzIGhlcmUuIEkgc2VlIGEgYnVuY2ggb2Ygc3BlY2lmaWMgcHJvdG9jb2xzIG1lbnRpb25lZCwgbGlrZSBGVFAsIFNJUCwgSVJDLCBhbmQgc28gb24sIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyBtb2R1bGVzIOKAkyBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfU0lQYCwgZXRjLiBIb3dldmVyLCBmb3Igbm93LCBsZXQmIzM5O3Mga2VlcCBpdCBmb2N1c2VkIGFuZCBqdXN0IGNvbmNlbnRyYXRlIG9uIHRoZSBwcmltYXJ5IG1vZHVsZXM6IGBORl9DT05OVFJBQ0tgIGFuZCBgTkZfQ1RfTkVUTElOS2AuCgpNeSBwcmltYXJ5IGludGVyZXN0IHJpZ2h0IG5vdyBpcyB0aGUgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMga2V5LiBJIHNob3VsZCBhbHNvIGludmVzdGlnYXRlIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YCwgdGhleSBhcHBlYXIgcmVsZXZhbnQuIEhhbmcgb24uLi4gQXJlIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YCBzdGF0aWM/IFllcywgdGhlIGNvbXBpbGVyIGNvbmZpcm1zIHRoZXkgYXJlLiBBbHJpZ2h0LCBzbyBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBpbmZsdWVuY2VzIGhvdyB0aGV5JiMzOTtyZSB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI4NTU9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI4NTY6Y3RuZXRsaW5rX2dsdWVfYXR0YWNoX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg1Ny1cdFx0XHQgICAgIHUzMiBwb3J0aWQsIHUzMiByZXBvcnQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI5MDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2N0X2hvb2sgY3RuZXRsaW5rX2dsdWVfaG9vayA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjkxMC1cdC5wYXJzZVx0XHQ9IGN0bmV0bGlua19nbHVlX3BhcnNlLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI5MTE6XHQuYXR0YWNoX2V4cGVjdFx0PSBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI5MTItXHQuc2VxX2FkanVzdFx0PSBjdG5ldGxpbmtfZ2x1ZV9zZXFhZGosXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTc3CgkJCQkJCQlvdXRwdXQ6IDE5OQoJCQkJCQkJdGhvdWdodHM6IDI1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGNvbmZpcm1pbmcgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IOKAkyB5ZXMsIHRoZSBjaGFuZ2VzIHNlZW0gdG8gYmUgcHJpbWFyaWx5IGNvbmZpbmVkIHRvIGEgc3RhdGljIHNjb3BlLiBNeSBhdHRlbnRpb24gaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGA7IHRoYXQgZnVuY3Rpb24gaXMgZXhwb3J0ZWQsIHdoaWNoIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmb2N1c2VkIGZ1enppbmcuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gc29saWRpZnkgdGhpcyBmb2N1cy4gSeKAmW0gYXNraW5nIG15c2VsZiwgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdG91Y2hlZCBieSB0aGlzIHBhdGNoIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBOb3BlLCBpdCBhcHBlYXJzIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGlzIHRoZSBrZXkgc3ltYm9sIHRvIHRhcmdldC4KCk5vdywgdG8gYXNzZXNzIHJlYWNoYWJpbGl0eS4gSXMgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgYWN0dWFsbHkgdXNlZD8gQSBxdWljayBjaGVjayByZXZlYWxzIGl0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmsgYW5kIHZhcmlvdXMgY29ubnRyYWNrIGhlbHBlciBmdW5jdGlvbnMuIEV4Y2VsbGVudCwgdGhhdCBzdHJlbmd0aGVucyBteSBpbml0aWFsIGh5cG90aGVzaXMuCgpUaGUgcGF0Y2ggaXRzZWxmIGFwcGVhcnMgdG8gYWRkcmVzcyBwcmV2ZW50aW9uIG9mIGFkZGluZyBhIGRlYWQgZXhwZWN0YXRpb24sIGFzIEkgaW5pdGlhbGx5IHRob3VnaHQuIEkmIzM5O20gc2F0aXNmaWVkOyB0aGlzIHdhcnJhbnRzIGZ1enppbmcuIFRoZXJlZm9yZSwgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLgoKRm9yIGZvY3VzZWQgZnV6emluZywgdGhlIGZvY3VzIHN5bWJvbCwgYXMgZXhwZWN0ZWQsIGlzIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLiBUbyBlbnN1cmUgdGhvcm91Z2ggY292ZXJhZ2UsIEkmIzM5O2xsIGVuYWJsZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3M6IGBORl9DT05OVFJBQ0tgLCBgTkZfQ1RfTkVUTElOS2AuIFRvIGNvdmVyIHRoZSBoZWxwZXJzIHRoYXQgY2FsbCBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCwgSSBhbHNvIG5lZWQgdG8gZW5hYmxlOiBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfU0lQYCwgYE5GX0NPTk5UUkFDS19JUkNgLCBgTkZfQ09OTlRSQUNLX0FNQU5EQWAsIGBORl9DT05OVFJBQ0tfSDMyM2AsIGBORl9DT05OVFJBQ0tfUFBUUGAsIGBORl9DT05OVFJBQ0tfU0FORWAsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGFuZCBgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVGAuIFRoaXMgd2lsbCBlbnN1cmUgcHJvcGVyIGNvdmVyYWdlIG9mIHRoZSBjb25udHJhY2sgaGVscGVycywgYW5kIGhlbHAgaW4gZWZmaWNpZW50IGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfQ1RfTkVUTElOSyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfRlRQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TSVAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0lSQyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfQU1BTkRBJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19IMzIzJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19QUFRQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TQU5FJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19URlRQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19CUk9BRENBU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIHByZXZlbnQgYWRkaW5nIGEgZGVhZCBleHBlY3RhdGlvbiBpbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBjb25udHJhY2sgbG9naWMuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgYW5kIHZhcmlvdXMgY29ubnRyYWNrIGhlbHBlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19GVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NJUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfSVJDJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19BTUFOREEmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0gzMjMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1BQVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NBTkUmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1RGVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0JST0FEQ0FTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBhZGRpbmcgYSBkZWFkIGV4cGVjdGF0aW9uIGluIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm50cmFjayBsb2dpYy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBhbmQgdmFyaW91cyBjb25udHJhY2sgaGVscGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIHRoZSBgTkZfQ1RfRVhQRUNUX0RFQURgIGZsYWcgaW4gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgdG8gcHJldmVudCBvcGVyYXRpbmcgb24gYSBkZWFkIGNvbm50cmFjayBleHBlY3RhdGlvbi4gVGhpcyBpcyBhIGxvZ2ljYWwgZml4IHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBzdGF0ZSBidWdzLCB3aGljaCBhcmUgdHlwaWNhbGx5IGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTIzZjRmYWIwM2ExNjM3MGM0YTkzMDA2ZGVmZTAxMmQ5YzY5MzJlNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwppbmRleCAxMGIxMzBhN2IyMzBiLi5mMWYwYzU4MmRiNWRmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwpAQCAtNTI4LDYgJiM0Mzs1MjgsMTIgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LAogCWludCByZXQ7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtuZl9jb25udHJhY2tfZXhwZWN0X2xvY2spOwomIzQzOwlpZiAoZXhwZWN0LSZndDtmbGFncyAmYW1wOyBORl9DVF9FWFBFQ1RfREVBRCkgewomIzQzOwkJREVCVUdfTkVUX1dBUk5fT05fT05DRSgxKTsKJiM0MzsJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwogCW1hc3Rlcl9oZWxwID0gbmZjdF9oZWxwKGV4cGVjdC0mZ3Q7bWFzdGVyKTsKIAlpZiAoIW1hc3Rlcl9oZWxwKSB7CiAJCXJldCA9IC1FU0hVVERPV047CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM4CgkJCQkJCQlvdXRwdXQ6IDEzMAoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb25udHJhY2sgRXhwZWN0YXRpb24gUGF0Y2gqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBjcnVjaWFsIGNoZWNrIHdpdGhpbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNgLiBUaGUgY29yZSBvZiBpdCBpcyBhIHNpbXBsZSBjb25kaXRpb25hbDogaXQmIzM5O3MgbG9va2luZyB0byBzZWUgaWYgdGhlIGBORl9DVF9FWFBFQ1RfREVBRGAgZmxhZyBpcyBzZXQgb24gdGhlIGBleHBlY3QtJmd0O2ZsYWdzYC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGd1YXJkaW5nIGFnYWluc3Qgb3BlcmF0aW9ucyBvbiBhICYjMzQ7ZGVhZCYjMzQ7IGV4cGVjdGF0aW9uLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIHNvbGlkIGZpeCBmb3IgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIHJlbGF0ZWQgaW52YWxpZCBzdGF0ZSBjb25kaXRpb24uIFRoZXNlIGFyZSB0aGUga2luZHMgb2Ygc3VidGxlIGJ1Z3MgdGhhdCBjYW4gYmUgbm90b3Jpb3VzbHkgZGlmZmljdWx0IHRvIHRyYWNrIGRvd24gd2l0aG91dCB2ZXJ5IGNhcmVmdWwgY29kZSByZXZpZXdzIG9yIGRlZGljYXRlZCBkZWJ1Z2dpbmcgdG9vbHMgbGlrZSBLQVNBTi4gV2hpbGUgS0FTQU4gb3Igb3RoZXIgZGVidWdnZXJzIHdvdWxkICpldmVudHVhbGx5KiBmbGFnIHRoaXMsIHRoaXMgcGF0Y2ggb2ZmZXJzIGEgcHJvYWN0aXZlIGRlZmVuc2UsIHByZXZlbnRpbmcgdGhlIGVycm9yIGZyb20gaGFwcGVuaW5nIGluIHRoZSBmaXJzdCBwbGFjZSwgb3IgaW4gYSBkaWZmZXJlbnQgc2NlbmFyaW8gZnJvbSBqdXN0IEtBU0FOIGJlaW5nIHRyaWdnZXJlZC4gSXQmIzM5O3MgYSBsb2dpY2FsIGNoZWNrIGRlc2lnbmVkIHRvIGVuc3VyZSB0aGUgY29kZSYjMzk7cyBpbnRlZ3JpdHkuCgpJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoaXMgZG9lc24mIzM5O3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gSXQgZG9lc24mIzM5O3Qgc2VlbSB0byB0b3VjaCBhbnkgbmV3IHN0cnVjdHVyZXMgb3Igc2VuZCBhbnl0aGluZyB0byB1c2VyIHNwYWNlLiBJdOKAmXMganVzdCBjaGVja2luZyBhIGZsYWcsIGEgYml0bWFzayByZWFsbHkuIEl0JiMzOTtzIGFib3V0IHByZXZlbnRpbmcgdGhlIHN5c3RlbSBmcm9tIGRvaW5nIHNvbWV0aGluZyBiYWQgd2l0aCBhIGRlZnVuY3QgZXhwZWN0YXRpb24uCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBpcyBhIGRlZmVuc2l2ZSBhZGRpdGlvbiwgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBsb2dpYyBvciBVQUYgaXNzdWUsIEtNU0FOIGlzbiYjMzk7dCBuZWVkZWQgaGVyZS4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZyBhdCBhIGhpZ2hlciBsZXZlbCB0aGFuIHRoZSBzcGVjaWZpYyBtZW1vcnkgbWFuYWdlbWVudCBLTVNBTiBhZGRyZXNzZXMuIEkmIzM5O20gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgb24gdGhpcyBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgdGhlIGBORl9DVF9FWFBFQ1RfREVBRGAgZmxhZyBpbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCB0byBwcmV2ZW50IG9wZXJhdGluZyBvbiBhIGRlYWQgY29ubnRyYWNrIGV4cGVjdGF0aW9uLiBUaGlzIGlzIGEgbG9naWNhbCBmaXggdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHN0YXRlIGJ1Z3MsIHdoaWNoIGFyZSB0eXBpY2FsbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciB0aGUgYE5GX0NUX0VYUEVDVF9ERUFEYCBmbGFnIGluIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIHRvIHByZXZlbnQgb3BlcmF0aW5nIG9uIGEgZGVhZCBjb25udHJhY2sgZXhwZWN0YXRpb24uIFRoaXMgaXMgYSBsb2dpY2FsIGZpeCB0byBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgc3RhdGUgYnVncywgd2hpY2ggYXJlIHR5cGljYWxseSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjI3LjcyNDAwNjQ3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNDE2Nzc0MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0ZUUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NJUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0lSQ1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0FNQU5EQVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19QUFRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0FORVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1RGVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19CUk9BRENBU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgdGhlIGBORl9DVF9FWFBFQ1RfREVBRGAgZmxhZyBpbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCB0byBwcmV2ZW50IG9wZXJhdGluZyBvbiBhIGRlYWQgY29ubnRyYWNrIGV4cGVjdGF0aW9uLiBUaGlzIGlzIGEgbG9naWNhbCBmaXggdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHN0YXRlIGJ1Z3MsIHdoaWNoIGFyZSB0eXBpY2FsbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGFkZGluZyBhIGRlYWQgZXhwZWN0YXRpb24gaW4gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGxvZ2ljLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGFuZCB2YXJpb3VzIGNvbm50cmFjayBoZWxwZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDoyNy43MjQwMTM4NjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTM3MjQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGEyM2Y0ZmFiMDNhMTYzNzBjNGE5MzAwNmRlZmUwMTJkOWM2OTMyZTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTE6MzQ6MjYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xcbmluZGV4IDEwYjEzMGE3YjIzMGIuLmYxZjBjNTgyZGI1ZGYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xcbkBAIC01MjgsNiArNTI4LDEyIEBAIGludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2bmZfY29ubnRyYWNrX2V4cGVjdF9sb2NrKTtcXG4rXFx0aWYgKGV4cGVjdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBORl9DVF9FWFBFQ1RfREVBRCkge1xcbitcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xcbitcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4gXFx0bWFzdGVyX2hlbHAgPSBuZmN0X2hlbHAoZXhwZWN0LVxcdTAwM2VtYXN0ZXIpO1xcbiBcXHRpZiAoIW1hc3Rlcl9oZWxwKSB7XFxuIFxcdFxcdHJldCA9IC1FU0hVVERPV047XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjI4LjIwNjM5NDU2OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjczNDc5NjM1OTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0ZUUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NJUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0lSQ1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0FNQU5EQVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19QUFRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0FORVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1RGVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19CUk9BRENBU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBhZGRpbmcgYSBkZWFkIGV4cGVjdGF0aW9uIGluIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm50cmFjayBsb2dpYy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBhbmQgdmFyaW91cyBjb25udHJhY2sgaGVscGVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTIzZjRmYWIwM2ExNjM3MGM0YTkzMDA2ZGVmZTAxMmQ5YzY5MzJlN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjI2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuaW5kZXggMTBiMTMwYTdiMjMwYi4uZjFmMGM1ODJkYjVkZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuQEAgLTUyOCw2ICs1MjgsMTIgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuIFx0aW50IHJldDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZuZl9jb25udHJhY2tfZXhwZWN0X2xvY2spO1xuK1x0aWYgKGV4cGVjdC1cdTAwM2VmbGFncyBcdTAwMjYgTkZfQ1RfRVhQRUNUX0RFQUQpIHtcbitcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSgxKTtcbitcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4gXHRtYXN0ZXJfaGVscCA9IG5mY3RfaGVscChleHBlY3QtXHUwMDNlbWFzdGVyKTtcbiBcdGlmICghbWFzdGVyX2hlbHApIHtcbiBcdFx0cmV0ID0gLUVTSFVURE9XTjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjI4LjIwNjM5NzE5OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzYwOTcyMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29ubnRyYWNrIEV4cGVjdCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2AuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gdGhlIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgbm93IGNoZWNraW5nIGlmIHRoZSBgZXhwZWN0YCBlbnRyeSBoYXMgdGhlIGBORl9DVF9FWFBFQ1RfREVBRGAgZmxhZyBzZXQuIElmIGl0ICppcyogc2V0LCBhIHdhcm5pbmcgaXMgdHJpZ2dlcmVkIHdpdGggYERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSlgLCBhbiBlcnJvciBjb2RlIGAtRUlOVkFMYCBpcyByZXR1cm5lZCwgYW5kIHRoZW4gdGhlIGZ1bmN0aW9uIGV4aXRzLlxuXG5UaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYXMgdGhleSBhcmUgYWRkaW5nIGEgbmV3IGNoZWNrIGluIHRoYXQgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0IHdpbGwgYWZmZWN0IGhvdyB0aGluZ3Mgd29yay5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBgbmZfY29ubnRyYWNrX2V4cGVjdC5jYCBtb2R1bGUgYW5kIGl0cyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgY29ubnRyYWNrIHN5c3RlbS4gVGhpcyB3aWxsIGhlbHAgbWUgZXZhbHVhdGUgdGhlIGltcGFjdCBvZiB0aGlzIG5ldyBjaGVjayBhbmQgaXRzIGltcGxpY2F0aW9ucyBvbiB0aGUgb3ZlcmFsbCBjb25uZWN0aW9uIHRyYWNraW5nIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzQ6MzIuNjQyNDk3MjExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjAwNjg4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmM9NDY1PXN0YXRpYyBpbmxpbmUgaW50IF9fbmZfY3RfZXhwZWN0X2NoZWNrKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01MjMtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmM6NTI0OmludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01MjUtXFx0XFx0XFx0XFx0dTMyIHBvcnRpZCwgaW50IHJlcG9ydCwgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtNTU3LX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYzo1NTg6RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01NTktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mjg1Nj1jdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0KGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yODkyLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyODkzOlxcdGVyciA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChleHAsIHBvcnRpZCwgcmVwb3J0LCAwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg5NC1cXHRuZl9jdF9leHBlY3RfcHV0KGV4cCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzU5Nj1jdG5ldGxpbmtfY3JlYXRlX2V4cGVjdChzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzYzMy1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzYzNDpcXHRlcnIgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoZXhwLCBwb3J0aWQsIHJlcG9ydCwgMCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM2MzUtXFx0bmZfY3RfZXhwZWN0X3B1dChleHApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDozMi43NDQ1MTA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk0Mzc3MzI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MgcmVnYXJkaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2AsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIERlZXAgaW50byBgbmZfY29ubnRyYWNrX2V4cGVjdC5jYCBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlbGV2YW50IGZvciBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbm90IGp1c3QgYmxpbmRseSBsb29rIGF0IHRoZSBjb2RlLCBidXQgdG8gY29uc2lkZXIgdGhlICpwdXJwb3NlKiBvZiB0aGlzIGZpbGUgd2l0aGluIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIGZyYW1ld29yay4gRXhwZWN0YXRpb25zLCBlc3NlbnRpYWxseSwgYXJlIGFib3V0IGhhbmRsaW5nIHJlbGF0ZWQgY29ubmVjdGlvbnMsIHJpZ2h0PyBUaGluayBGVFAgZGF0YSBjb25uZWN0aW9ucywgb3IgU0lQIHNpZ25hbGluZyBhbmQgbWVkaWEuIFRoZXJlZm9yZSwgYW55IGNvbmZpZ3VyYXRpb25zIGFmZmVjdGluZyBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIHRoZXNlIFwiZXhwZWN0ZWRcIiBmbG93cyBhcmUgZ29pbmcgdG8gYmUgbXkgcHJpbWFyeSBpbnRlcmVzdC5cblxuSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqU2l6ZSBhbmQgTWVtb3J5IEFsbG9jYXRpb246KiogQXJlIHRoZXJlIGxpbWl0cyBvbiB0aGUgbnVtYmVyIG9mIGV4cGVjdGVkIGNvbm5lY3Rpb25zIHRoYXQgY2FuIGJlIHRyYWNrZWQ/IEFyZSB0aGVyZSBjb25maWd1cmFibGUgcGFyYW1ldGVycyB0aGF0IGNvbnRyb2wgdGhlIGhhc2ggdGFibGUgc2l6ZSBvciB0aGUgbWVtb3J5IHVzZWQgdG8gc3RvcmUgdGhlc2UgZXhwZWN0ZWQgY29ubmVjdGlvbnM/IEhvdyBhcmUgdGhlc2UgcG90ZW50aWFsbHkgdHVuZWQ/IFRoaXMgd291bGQgYmUga2V5IGZvciBwZXJmb3JtYW5jZSB1bmRlciBsb2FkLlxuKiAgICoqVGltZW91dCBWYWx1ZXM6KiogQ29ubmVjdGlvbiB0cmFja2luZyBoYXMgdGltZW91dHM7IGhvdyBhZ2dyZXNzaXZlbHkgY2FuIHRoZXNlIGJlIGNvbmZpZ3VyZWQ/IFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaW1wcm9wZXIgY29uZmlndXJhdGlvbiBtaWdodCBjYXVzZSBleGNlc3NpdmUgcmVzb3VyY2UgdXNhZ2Ugb3IgZHJvcCBsZWdpdGltYXRlIGNvbm5lY3Rpb25zLlxuKiAgICoqUHJvdG9jb2wtU3BlY2lmaWMgT3B0aW9uczoqKiBJcyB0aGVyZSBhbnl0aGluZyBzcGVjaWZpYyB0bywgc2F5LCBGVFAgb3IgU0lQIGV4cGVjdGF0aW9uIGhhbmRsaW5nPyBGbGFncyB0byBlbmFibGUvZGlzYWJsZSBzcGVjaWZpYyBiZWhhdmlvcnMgb3IgYWRqdXN0bWVudHMgdG8gaG93IHRoZSBleHBlY3RhdGlvbiBzdGF0ZXMgYXJlIG1hbmFnZWQgZm9yIGRpZmZlcmVudCBwcm90b2NvbHM/XG4qICAgKipEZWJ1Z2dpbmcgYW5kIExvZ2dpbmc6KiogQXJlIHRoZXJlIGRlYnVnIG9wdGlvbnMgdG8gZW5hYmxlIG1vcmUgdmVyYm9zZSBsb2dnaW5nIGFib3V0IGV4cGVjdGF0aW9uIGV2ZW50cz8gVGhpcyB3b3VsZCBiZSBjcml0aWNhbCBmb3IgdHJvdWJsZXNob290aW5nIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXNzdWVzLlxuKiAgICoqSW50ZXJmYWNlIEZpbHRlcmluZzoqKiBJJ2QgZXhwZWN0IHRoZXJlIHRvIGJlIHNvbWUgZGVncmVlIG9mIGNvbnRyb2wgb3ZlciB3aGljaCBpbnRlcmZhY2VzIGFuZCBuZXRmaWx0ZXIgaG9va3MgdGhpcyBtb2R1bGUgYWN0cyBvbi4gQ29uZmlndXJhdGlvbiB0aGF0IGxldHMgeW91IGZpbmUtdHVuZSB0aGVzZSB3b3VsZCBiZSB2YWx1YWJsZS5cbiogICAqKkNvbmN1cnJlbmN5L0xvY2tpbmc6KiogS25vd2luZyB0aGlzIGlzIGtlcm5lbC1sZXZlbCBjb2RlLCBJ4oCZbGwgbmVlZCB0byB1bmRlcnN0YW5kIGFueSBsb2NraW5nIG1lY2hhbmlzbXMgb3IgY29uY3VycmVuY3kgY29uc2lkZXJhdGlvbnMuIENvbmZpZ3VyYXRpb24gbWlnaHQgc3VidGx5IGluZmx1ZW5jZSB0aGVzZSwgZm9yIGluc3RhbmNlLCBieSBjb250cm9sbGluZyB0aHJlYWQgY291bnRzIG9yIHVzaW5nIGRpZmZlcmVudCBsb2NraW5nIHN0cmF0ZWdpZXMuXG4qICAgKipFcnJvciBIYW5kbGluZyBhbmQgR3JhY2VmdWwgRGVncmFkYXRpb246KiogSG93IHJvYnVzdCBpcyB0aGlzIGNvZGU/IFdoYXQgaGFwcGVucyBpZiBhbiBleHBlY3RhdGlvbiB0YWJsZSBmaWxscyB1cD8gQXJlIHRoZXJlIGFueSBjb25maWd1cmF0aW9ucyB0aGF0IGFsbG93IGZvciBncmFjZWZ1bCBoYW5kbGluZyBvZiByZXNvdXJjZSBjb25zdHJhaW50cz9cblxuRXNzZW50aWFsbHksIEknbSBleHBlY3RpbmcgdGhpcyBmaWxlIHRvIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIG9yIG1vZGlmeWluZyBleHBlY3RhdGlvbnMuIFRoaXMgcmVxdWlyZXMgdW5kZXJzdGFuZGluZyBwYXJhbWV0ZXJzIHJlbGF0ZWQgdG8gbWVtb3J5LCB0aW1lb3V0cywgcHJvdG9jb2wgaGFuZGxpbmcsIGRlYnVnL2xvZ2dpbmcsIGFuZCBzZWN1cml0eS4gSSdsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGVzZSBvcHRpb25zIGNhbiBiZSB1c2VkIHRvIG9wdGltaXplIGFuZCB0cm91Ymxlc2hvb3QgY29ubmVjdGlvbiB0cmFja2luZyBmb3IgcmVhbC13b3JsZCBzY2VuYXJpb3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDozNy42ODgyODYxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjQ5NzY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfZXhwZWN0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0zPW5ldGZpbHRlci0kKENPTkZJR19ORVRGSUxURVJfTkVUTElOSykgKz0gbmZuZXRsaW5rLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTQtXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo1Om5mX2Nvbm50cmFjay15XFx0Oj0gbmZfY29ubnRyYWNrX2NvcmUubyBuZl9jb25udHJhY2tfc3RhbmRhbG9uZS5vIG5mX2Nvbm50cmFja19leHBlY3QubyBuZl9jb25udHJhY2tfaGVscGVyLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNi1cXHRcXHQgICBuZl9jb25udHJhY2tfcHJvdG8ubyBuZl9jb25udHJhY2tfcHJvdG9fZ2VuZXJpYy5vIG5mX2Nvbm50cmFja19wcm90b190Y3AubyBuZl9jb25udHJhY2tfcHJvdG9fdWRwLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDozNy43ODA3ODgzNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NTc3ODAxMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlciBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBuZl9jb25udHJhY2sgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEknbSBkaXZpbmcgaW50byB0aGlzLiBUaGUgcGllY2UgSSdtIGxvb2tpbmcgYXQsIHRoaXMgY29kZSBvciBtb2R1bGUsIGlzIGNsZWFybHkgcGFydCBvZiBgbmZfY29ubnRyYWNrYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMsIGxldCdzIG5haWwgZG93biB3aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIG9yIG9wdGlvbnMgYXJlIHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGBuZl9jb25udHJhY2tgIGZyYW1ld29yay4gVGltZSB0byB0cmFjZSBiYWNrIHRocm91Z2ggdGhlIGtlcm5lbCBjb25maWcgYW5kIHNlZSB3aGF0IGZsYWdzIGxpZ2h0IHRoaXMgdXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBidWlsZCBwcm9jZXNzIGFyb3VuZCBpdC4gTGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgcmV2ZWFsLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBhIHNwZWNpZmljIGBDT05GSUdfYCBvcHRpb24sIG9yIHBvdGVudGlhbGx5IGEgY29tYmluYXRpb24gb2YgdGhlbSwgdGhhdCBnb3Zlcm5zIHRoZSBpbmNsdXNpb24gYW5kLCBieSBleHRlbnNpb24sIHRoZSBiZWhhdmlvciBvZiB0aGlzIHBhcnQgb2YgYG5mX2Nvbm50cmFja2AuIFRoZSBnb2FsIGlzIGEgY2xlYXIgdmlldyBvZiBpdHMgYnVpbGQgZGVwZW5kZW5jeSB0cmVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzUyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzQ6NDEuNzM4NTcxMjQyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMDM1MTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2Nvbm50cmFjay15XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9Mz1uZXRmaWx0ZXItJChDT05GSUdfTkVURklMVEVSX05FVExJTkspICs9IG5mbmV0bGluay5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS00LVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6NTpuZl9jb25udHJhY2steVxcdDo9IG5mX2Nvbm50cmFja19jb3JlLm8gbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUubyBuZl9jb25udHJhY2tfZXhwZWN0Lm8gbmZfY29ubnRyYWNrX2hlbHBlci5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTYtXFx0XFx0ICAgbmZfY29ubnRyYWNrX3Byb3RvLm8gbmZfY29ubnRyYWNrX3Byb3RvX2dlbmVyaWMubyBuZl9jb25udHJhY2tfcHJvdG9fdGNwLm8gbmZfY29ubnRyYWNrX3Byb3RvX3VkcC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzQ6NDEuODA4NjExNTM1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMzAzMTY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkdyZXBwaW5nIGZvciBuZl9jb25udHJhY2subyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgXCJyaWdodCwgSSBuZWVkIHRvIGdldCBzdGFydGVkIG9uIHRoaXMuLi4gd2hhdGV2ZXIgaXQgaXMuIEFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgbmZfY29ubnRyYWNrLm9gIGJpdC4gSXQncyBhIGtlcm5lbCBtb2R1bGUsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgSSdtIGRpdmluZyBpbnRvIHNvbWV0aGluZyBuZXR3b3JrLXJlbGF0ZWQuIFNvLCBsZXQncyBzdGFydCB3aXRoIGEgZ29vZCBvbGQgYGdyZXBgLiBHZXQgdGhlIHNlYXJjaCBnb2luZywgYW5kIHNlZSB3aGF0IHRoZSBzeXN0ZW0gaGFzIHRvIHNheSBhYm91dCB0aGF0IG1vZHVsZS4gU2VlIHdoZXJlIGl0J3MgcmVmZXJlbmNlZCwgaG93IGl0J3MgdXNlZCwgYW5kIHdoYXQgZmlsZXMgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCBpdC4gSXQncyBhIHByZXR0eSBzdGFuZGFyZCBmaXJzdCBtb3ZlIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6NDE3MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjQ1LjI0MTY0NjM5OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ5NjI3NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0xND1uZl9jb25udHJhY2stJChDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMUykgKz0gbmZfY29ubnRyYWNrX2xhYmVscy5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxNTpuZl9jb25udHJhY2stJChDT05GSUdfTkZfQ09OTlRSQUNLX09WUykgKz0gbmZfY29ubnRyYWNrX292cy5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNi1uZl9jb25udHJhY2stJChDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUCkgKz0gbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAub1xcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0zMT1vYmotJChDT05GSUdfTkVURklMVEVSX05FVExJTktfSE9PSykgKz0gbmZuZXRsaW5rX2hvb2sub1xcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zMy0jIGNvbm5lY3Rpb24gdHJhY2tpbmdcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19ORl9DT05OVFJBQ0spICs9IG5mX2Nvbm50cmFjay5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzQ6NDUuMzA2NjE2NDMyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTIzNjI1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgYSBOZXRmaWx0ZXIgQ29ubnRyYWNrIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIHRoYXQgYENPTkZJR19ORl9DT05OVFJBQ0tgIGlzIGRlZmluaXRlbHkgYSByZXF1aXJlbWVudCwgbm8gc3VycHJpc2VzIHRoZXJlLiBNeSBmb2N1cyBpcyBub3cgb24gdGhlIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGZ1bmN0aW9uLiBUaGlzIGlzIGtleS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQncyBiZWluZyAqY2FsbGVkKiBmcm9tLCB0byB0cmFjZSB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLlxuXG5SaWdodCwgYWNjb3JkaW5nIHRvIHRoZSBjb2RlLCBpdCdzIGNhbGxlZCBmcm9tIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YC4gQm90aCBvZiB0aG9zZSBhcmUgbG9jYXRlZCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIFNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb24gYWN0dWFsbHkgY29udHJvbHMgdGhlIGluY2x1c2lvbiBvZiBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkZXBlbmRlbmN5IGNoYWluIGFuZCBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucy4gSSBuZWVkIHRvIGZpbmQgdGhlIHNwZWNpZmljIEtjb25maWcgc3ltYm9sIHRoYXQgZW5hYmxlcyB0aGF0IGZpbGUgdG8gYmUgY29tcGlsZWQgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MDEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDo0OS4wOTg5ODA5NzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjY4ODc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfbmV0bGluay5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDSykgKz0gbmZfY29ubnRyYWNrLm9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMzYtIyBuZXRsaW5rIGludGVyZmFjZSBmb3IgbmZfY29ubnRyYWNrXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfTkZfQ1RfTkVUTElOSykgKz0gbmZfY29ubnRyYWNrX25ldGxpbmsub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMzgtb2JqLSQoQ09ORklHX05GX0NUX05FVExJTktfVElNRU9VVCkgKz0gbmZuZXRsaW5rX2N0dGltZW91dC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjQ5LjI5MTY3NjE2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDIwNDcxNDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBjbGVhciB0aGF0IGBDT05GSUdfTkZfQ1RfTkVUTElOS2AgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGhlcmUuIE5vIHN1cnByaXNlcyB0aGVyZSwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIGRlcGVuZGVuY2llcy4gTm93LCBJJ20gc3BvdHRpbmcgdGhhdCBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCBpcyBhbHNvIGJlaW5nIGV4cG9ydGVkLiBUaGF0J3MgYSBiaXQgaW50ZXJlc3Rpbmc7IEkgd29uZGVyIGlmIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgdXRpbGl6ZWQgb3V0c2lkZSBvZiBpdHMgaW1tZWRpYXRlIGludGVuZGVkIHB1cnBvc2U/IFRpbWUgdG8gZGVsdmUgYSBiaXQgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjYWxsIHNpdGVzLCBvciBpZiB0aGlzIGV4cG9ydCBpcyBwb3RlbnRpYWxseSBvdmVyLWJyb2FkLiBHb3R0YSBjaGVjayBmb3IgYW55IHVuZm9yZXNlZW4gc2lkZS1lZmZlY3RzIG9mIHJlbHlpbmcgb24gdGhhdCBwYXJ0aWN1bGFyIHN5bWJvbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA3OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjUyLjcxMjE1MDg1NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU3MjM0MzQwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg9MTU4PXZvaWQgbmZfY3RfZXhwZWN0X3B1dChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwKTtcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oOjE1OTppbnQgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaC0xNjAtXFx0XFx0XFx0XFx0dTMyIHBvcnRpZCwgaW50IHJlcG9ydCwgdW5zaWduZWQgaW50IGZsYWdzKTtcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oPTE2MT1zdGF0aWMgaW5saW5lIGludCBuZl9jdF9leHBlY3RfcmVsYXRlZChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaC0xNjMte1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg6MTY0OlxcdHJldHVybiBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoZXhwZWN0LCAwLCAwLCBmbGFncyk7XFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaC0xNjUtfVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmM9NDY1PXN0YXRpYyBpbmxpbmUgaW50IF9fbmZfY3RfZXhwZWN0X2NoZWNrKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01MjMtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmM6NTI0OmludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01MjUtXFx0XFx0XFx0XFx0dTMyIHBvcnRpZCwgaW50IHJlcG9ydCwgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtNTU3LX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYzo1NTg6RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01NTktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mjg1Nj1jdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0KGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yODkyLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyODkzOlxcdGVyciA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChleHAsIHBvcnRpZCwgcmVwb3J0LCAwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg5NC1cXHRuZl9jdF9leHBlY3RfcHV0KGV4cCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzU5Nj1jdG5ldGxpbmtfY3JlYXRlX2V4cGVjdChzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzYzMy1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzYzNDpcXHRlcnIgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoZXhwLCBwb3J0aWQsIHJlcG9ydCwgMCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM2MzUtXFx0bmZfY3RfZXhwZWN0X3B1dChleHApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDo1NS4yODQ1MDAxODZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2NzkwNTk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBFeHBlY3RhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBuZl9jdF9leHBlY3RfcmVsYXRlZGAgZnVuY3Rpb24uIFRoZSBjb2RlIHNheXMgaXQncyBhbiBpbmxpbmUgc3RhdGljIGZ1bmN0aW9uLCB0dWNrZWQgYXdheSBpbiBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaGAuIFRoYXQgdGVsbHMgbWUgaXQncyBsaWtlbHkgYSByZWxhdGl2ZWx5IGZyZXF1ZW50bHkgdXNlZCBoZWxwZXIsIHByb2JhYmx5IG9wdGltaXplZCBmb3Igc3BlZWQgc2luY2UgaXQncyBpbmxpbmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCwgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSAqdXNlZCouIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZW50cnkgcG9pbnRzIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgY29udGV4dC4gTGV0IG1lIHRyYWNlIHRoZSBjYWxscyB0byBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRgIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBpdHMgcm9sZSB3aXRoaW4gdGhlIE5ldGZpbHRlciBjb25udHJhY2sgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDg3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzQ6NTkuOTUyNDEwOTUyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDMxNDQ3NTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2N0X2V4cGVjdF9yZWxhdGVkXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg9MTU5PWludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oLTE2MC1cXHRcXHRcXHRcXHR1MzIgcG9ydGlkLCBpbnQgcmVwb3J0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpO1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg6MTYxOnN0YXRpYyBpbmxpbmUgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaC0xNjItXFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBmbGFncylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19uZmN0LmM9MjEwPXZvaWQgaXBfdnNfbmZjdF9leHBlY3RfcmVsYXRlZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbmZjdC5jLTIzMi1cXHRcXHQgICAgICBfX2Z1bmNfXywgY3QsIEFSR19UVVBMRShcXHUwMDI2ZXhwLVxcdTAwM2V0dXBsZSkpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19uZmN0LmM6MjMzOlxcdG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25mY3QuYy0yMzQtXFx0bmZfY3RfZXhwZWN0X3B1dChleHApO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM9ODM9c3RhdGljIGludCBhbWFuZGFfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTU1LVxcdFxcdFxcdFxcdFxcdCAgICBvZmYgLSBkYXRhb2ZmLCBsZW4sIGV4cCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTU2OlxcdFxcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTE1Ny1cXHRcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYz0xOT1pbnQgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYy04Ny1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYzo4ODpcXHRuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTg5LVxcdG5mX2N0X2V4cGVjdF9wdXQoZXhwKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jPTM2MT1zdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jLTUyMS1cXHRcXHQvKiBDYW4ndCBleHBlY3QgdGhpcz8gIEJlc3QgdG8gZHJvcCBwYWNrZXQgbm93LiAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jOjUyMjpcXHRcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmMtNTIzLVxcdFxcdFxcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXFxcImNhbm5vdCBhZGQgZXhwZWN0YXRpb25cXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTIwOT1zdGF0aWMgaW50IGV4cGVjdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0yNjItXFx0fSBlbHNlIHtcXHRcXHQvKiBDb25udHJhY2sgb25seSAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjI2MzpcXHRcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCwgMCkgPT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjI2NDpcXHRcXHRcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsIDApID09IDApIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0yNjUtXFx0XFx0XFx0XFx0cHJfZGVidWcoXFxcIm5mX2N0X2gzMjM6IGV4cGVjdCBSVFAgXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0yODM9c3RhdGljIGludCBleHBlY3RfdDEyMChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMzIyLVxcdH0gZWxzZSB7XFx0XFx0LyogQ29ubnRyYWNrIG9ubHkgKi9cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzozMjM6XFx0XFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgPT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTMyNC1cXHRcXHRcXHRwcl9kZWJ1ZyhcXFwibmZfY3RfaDMyMzogZXhwZWN0IFQuMTIwIFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9NjE4PXN0YXRpYyBpbnQgZXhwZWN0X2gyNDUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjU1LVxcdH0gZWxzZSB7XFx0XFx0LyogQ29ubnRyYWNrIG9ubHkgKi9cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzo2NTY6XFx0XFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgPT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTY1Ny1cXHRcXHRcXHRwcl9kZWJ1ZyhcXFwibmZfY3RfcTkzMTogZXhwZWN0IEguMjQ1IFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9NzM1PXN0YXRpYyBpbnQgZXhwZWN0X2NhbGxmb3J3YXJkaW5nKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy03ODMtXFx0fSBlbHNlIHtcXHRcXHQvKiBDb25udHJhY2sgb25seSAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjc4NDpcXHRcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSA9PSAwKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNzg1LVxcdFxcdFxcdHByX2RlYnVnKFxcXCJuZl9jdF9xOTMxOiBleHBlY3QgQ2FsbCBGb3J3YXJkaW5nIFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTE4Mz1zdGF0aWMgaW50IGV4cGVjdF9xOTMxKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyMjctXFx0fSBlbHNlIHtcXHRcXHQvKiBDb25udHJhY2sgb25seSAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjEyMjg6XFx0XFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgPT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyMjktXFx0XFx0XFx0cHJfZGVidWcoXFxcIm5mX2N0X3JhczogZXhwZWN0IFEuOTMxIFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTI2Mz1zdGF0aWMgaW50IHByb2Nlc3NfZ2NmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyOTUtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTI5NjpcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSA9PSAwKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTI5Ny1cXHRcXHRwcl9kZWJ1ZyhcXFwibmZfY3RfcmFzOiBleHBlY3QgUkFTIFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTQ4Nj1zdGF0aWMgaW50IHByb2Nlc3NfYWNmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1MjQtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTUyNTpcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSA9PSAwKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTUyNi1cXHRcXHRwcl9kZWJ1ZyhcXFwibmZfY3RfcmFzOiBleHBlY3QgUS45MzEgXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNTUzPXN0YXRpYyBpbnQgcHJvY2Vzc19sY2Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTU3OC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNTc5OlxcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApID09IDApIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTgwLVxcdFxcdHByX2RlYnVnKFxcXCJuZl9jdF9yYXM6IGV4cGVjdCBRLjkzMSBcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jPTk3PXN0YXRpYyBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jLTIzNy1cXHRcXHRcXHRcXHRcXHRcXHQgZXhwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuYzoyMzg6XFx0XFx0XFx0ZWxzZSBpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmMtMjM5LVxcdFxcdFxcdFxcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3BwdHAuYz0xMjg9c3RhdGljIGludCBleHBfZ3JlKHN0cnVjdCBuZl9jb25uICpjdCwgX19iZTE2IGNhbGxpZCwgX19iZTE2IHBlZXJfY2FsbGlkKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHB0cC5jLTE2My1cXHRcXHRob29rLVxcdTAwM2VleHBfZ3JlKGV4cF9vcmlnLCBleHBfcmVwbHkpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3BwdHAuYzoxNjQ6XFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cF9vcmlnLCAwKSAhPSAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3BwdHAuYy0xNjUtXFx0XFx0Z290byBvdXRfcHV0X2JvdGg7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHB0cC5jOjE2NjpcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwX3JlcGx5LCAwKSAhPSAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3BwdHAuYy0xNjctXFx0XFx0Z290byBvdXRfdW5leHBlY3Rfb3JpZztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NhbmUuYz01Mz1zdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NhbmUuYy0xNTctXFx0LyogQ2FuJ3QgZXhwZWN0IHRoaXM/ICBCZXN0IHRvIGRyb3AgcGFja2V0IG5vdy4gKi9cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zYW5lLmM6MTU4OlxcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zYW5lLmMtMTU5LVxcdFxcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXFxcImNhbm5vdCBhZGQgZXhwZWN0YXRpb25cXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jPTkyMz1zdGF0aWMgaW50IHNldF9leHBlY3RlZF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTEwNjYtXFx0XFx0ICovXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmM6MTA2NzpcXHRcXHRpbnQgZXJycCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0cF9leHAsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmMtMTA2OC1cXHRcXHRcXHRcXHRcXHRcXHRORl9DVF9FWFBfRl9TS0lQX01BU1RFUik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYy0xMDcwLVxcdFxcdGlmIChlcnJwID09IDAgfHwgZXJycCA9PSAtRUFMUkVBRFkpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYzoxMDcxOlxcdFxcdFxcdGludCBlcnJjcCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0Y3BfZXhwLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTEwNzItXFx0XFx0XFx0XFx0XFx0XFx0TkZfQ1RfRVhQX0ZfU0tJUF9NQVNURVIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmM9MTMyMz1zdGF0aWMgaW50IHByb2Nlc3NfcmVnaXN0ZXJfcmVxdWVzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTE0MTgtXFx0ZWxzZSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmM6MTQxOTpcXHRcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmMtMTQyMC1cXHRcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmM9MzI9c3RhdGljIGludCB0ZnRwX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYy03Mi1cXHRcXHRcXHRyZXQgPSBuZl9uYXRfdGZ0cChza2IsIGN0LCBjdGluZm8sIGV4cCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jOjczOlxcdFxcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYy03NC1cXHRcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9oZWxwZXIuYz0yMDI9dTE2IG5mX25hdF9leHBfZmluZF9wb3J0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsIHUxNiBwb3J0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfaGVscGVyLmMtMjE4LVxcdFxcdGV4cC1cXHUwMDNldHVwbGUuZHN0LnUudGNwLnBvcnQgPSBodG9ucyhwb3J0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9oZWxwZXIuYzoyMTk6XFx0XFx0cmVzID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9oZWxwZXIuYy0yMjAtXFx0XFx0aWYgKHJlcyA9PSAwKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jPTIzPXN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jLTMxLVxcdGV4cC1cXHUwMDNlZXhwZWN0Zm4gPSBuZl9uYXRfZm9sbG93X21hc3RlcjtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF90ZnRwLmM6MzI6XFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYy0zMy1cXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMTE9c3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzYyLSNlbmRpZlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTM2MzpcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM2NC1cXHRcXHRyZWdzLVxcdTAwM2V2ZXJkaWN0LmNvZGUgPSBORl9EUk9QO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTowMi45ODM4NjUwMjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwODgyMDY3MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIENvbm50cmFjayBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBwcmV0dHkgaW50ZXJlc3RpbmcgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAuIEl0J3MgZXNzZW50aWFsbHkgYSBjaGVjayBmb3IgYE5GX0NUX0VYUEVDVF9ERUFEYCB3aXRoaW4gYSBzcGlubG9jaywgcHJldmVudGluZyB0aGUgYWRkaXRpb24gb2YgYSBcImRlYWRcIiBleHBlY3RhdGlvbi4gVGhpcyBpcyBjbGVhcmx5IGEgY3JpdGljYWwgZnVuY3Rpb24gd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29ubnRyYWNrIHN5c3RlbSwgc28gaXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0byBnaXZlIGEgY2xvc2VyIGxvb2suXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIGlzIHRoaXMgc29tZXRoaW5nIHdlIHNob3VsZCBmdXp6PyBBYnNvbHV0ZWx5LCBpdCdzIGNvcmUgZnVuY3Rpb25hbGl0eS5cblxuTGV0J3MgZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFdlbGwsIG9idmlvdXNseSBgQ09ORklHX05GX0NPTk5UUkFDS2AgaXMgbmVlZGVkLCB0aGF0J3MgYSBnaXZlbi4gVGhlbiBJIHNlZSBgQ09ORklHX05GX0NUX05FVExJTktgIGlzIGFsc28gbmVlZGVkIGZvciBjYWxscyBsaWtlIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YCwgc28gdGhhdCdzIGFub3RoZXIgcHJlcmVxdWlzaXRlLlxuXG5Ob3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIGltcGFjdC4gTG9va2luZyBhdCB0aGUgY2FsbCBncmFwaCwgaXQgbG9va3MgbGlrZSBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCBpcyBhbHNvIGNhbGxlZCBieSBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRgLCB3aGljaCBpcyBjYWxsZWQgYnkgc28gbWFueSBvZiB0aGUgaGVscGVyIG1vZHVsZXMuIEkgbmVlZCB0byB0ZXN0IHRoYXQgdG8gY29uZmlybSB0aGlzIGNoYW5nZSBkb2Vzbid0IGJyZWFrIGFueXRoaW5nLiBTbywgYENPTkZJR19ORl9DT05OVFJBQ0tfRlRQYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfU0lQYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfSVJDYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfSDMyM2AsIGBDT05GSUdfTkZfQ09OTlRSQUNLX1BQVFBgLCBgQ09ORklHX05GX0NPTk5UUkFDS19TQU5FYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfVEZUUGAsIGFuZCBgQ09ORklHX05GX0NPTk5UUkFDS19CUk9BRENBU1RgIGFyZSBhbGwgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIHRlc3RpbmcuXG5cbkknbGwgZG91YmxlLWNoZWNrIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlc2UgY29uZmlndXJhdGlvbnMuIFRoZW4gSSdsbCBoYXZlIGEgZ29vZCBpZGVhIG9mIHdoYXQgSSdtIGRlYWxpbmcgd2l0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMjYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MTQuMDcyMDczODM0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDUwOTY2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NPTk5UUkFDS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTUtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gbWFyayB0cmFja2luZyBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgc2VjdXJpdHkgbWFyayBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM3LVxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHpvbmVzJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0OS1cXHRib29sIFxcXCJTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1Nzpjb25maWcgTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTgtXFx0Ym9vbCBcXFwiQ29ubmVjdGlvbiB0cmFja2luZyBldmVudHNcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjc6Y29uZmlnIE5GX0NPTk5UUkFDS19USU1FT1VUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTc3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRVNUQU1QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxODg6Y29uZmlnIE5GX0NPTk5UUkFDS19MQUJFTFNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVxcdGJvb2wgXFxcIkNvbm5lY3Rpb24gdHJhY2tpbmcgbGFiZWxzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5Ni1cXHRib29sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MjAxPWNvbmZpZyBORl9DVF9QUk9UT19TQ1RQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMTI6Y29uZmlnIE5GX0NPTk5UUkFDS19BTUFOREFcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjEzLVxcdHRyaXN0YXRlIFxcXCJBbWFuZGEgYmFja3VwIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMjc6Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVxcdHRyaXN0YXRlIFxcXCJGVFAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMzgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjQwLVxcdHRyaXN0YXRlIFxcXCJILjMyMyBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjU4OmNvbmZpZyBORl9DT05OVFJBQ0tfSVJDXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1OS1cXHR0cmlzdGF0ZSBcXFwiSVJDIERDQyBwcm90b2NvbCBzdXBwb3J0IChvYnNvbGV0ZSlcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjczLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzQ6Y29uZmlnIE5GX0NPTk5UUkFDS19CUk9BRENBU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVxcdHRyaXN0YXRlXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzgtXFx0dHJpc3RhdGUgXFxcIk5ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyOTY6Y29uZmlnIE5GX0NPTk5UUkFDS19TTk1QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5Ny1cXHR0cmlzdGF0ZSBcXFwiU05NUCBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMTE6Y29uZmlnIE5GX0NPTk5UUkFDS19QUFRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cXHR0cmlzdGF0ZSBcXFwiUFB0UCBwcm90b2NvbCBzdXBwb3J0IChkZXByZWNhdGVkKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMjktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzMxLVxcdHRyaXN0YXRlIFxcXCJTQU5FIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNDM6Y29uZmlnIE5GX0NPTk5UUkFDS19TSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQ0LVxcdHRyaXN0YXRlIFxcXCJTSVAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM1NTpjb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVxcdHRyaXN0YXRlIFxcXCJURlRQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjE0LjE3NzE3NTQwM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzc2NjIzNTkyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5GX0NUX05FVExJTksgQ2hlY2stSW4qKlxuXG5SaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgYE5GX0NUX05FVExJTktgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW50YWwgbW9kZWwgb2YgaXRzIGN1cnJlbnQgc3RhdGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB0aGUgcmVjZW50IGFjdGl2aXR5LCBzcGVjaWZpY2FsbHkgYW55IHBhdGNoZXMgb3IgYnVnIGZpeGVzIHRoYXQgaGF2ZSB0b3VjaGVkIGl0IGluIHRoZSBsYXN0IGZldyBtb250aHMuIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUgYW55IGxpbmdlcmluZyBxdWVzdGlvbnMgb24gdGhlIG1haWxpbmcgbGlzdHMgSSBuZWVkIHRvIGFkZHJlc3Mgb3IgZm9sbG93IHVwIG9uIHJlbGF0ZWQgdG8gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgTkVUTElOSyBpbnRlcmZhY2UuIEkgc2hvdWxkIHZlcmlmeSB0aGF0IHRoZSByZWNlbnQgY2hhbmdlcyBkaWQgbm90IGJyZWFrIGFueXRoaW5nIGFuZCB0aGF0IHRoZSBuZXRsaW5rIG1lc3NhZ2VzIGFyZSBzdGlsbCB2YWxpZC4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlY2VudCBrZXJuZWwgdmVyc2lvbiBpcyBzdGlsbCBjb21wYXRpYmxlLiBJIHNob3VsZCBxdWlja2x5IGNoZWNrIHRoZSBjb21taXQgbG9ncyBhbmQgYW55IHJlbGF0ZWQgZG9jdW1lbnRhdGlvbi4gVGltZSB0byBzZWUgaWYgYW55IG9mIHRoZSByZWNlbnQgYWRkaXRpb25zIGFyZSBpbnRyb2R1Y2luZyBhbnkgbmV3IGNvbXBsZXhpdGllcyBvciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIEZpbmFsbHksIEkgc2hvdWxkIGNvbnNpZGVyIGlmIGFueSBzaWduaWZpY2FudCBhcmNoaXRlY3R1cmFsIGRpc2N1c3Npb25zIGFyZSBhY3RpdmUgdGhhdCBtaWdodCBpbXBhY3QgZnV0dXJlIGRldmVsb3BtZW50IG9yIHBvdGVudGlhbCByZWZhY3RvcmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzNDUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNToyNy45NDM0MTQzMjFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDg0MjE4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ1RfTkVUTElOS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MzU1PWNvbmZpZyBORl9DT05OVFJBQ0tfVEZUUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM2NS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzY2OmNvbmZpZyBORl9DVF9ORVRMSU5LXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM2Ny1cXHR0cmlzdGF0ZSAnQ29ubmVjdGlvbiB0cmFja2luZyBuZXRsaW5rIGludGVyZmFjZSdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM3Mzpjb25maWcgTkZfQ1RfTkVUTElOS19USU1FT1VUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZSAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZW91dCB0dW5pbmcgdmlhIE5ldGxpbmsnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozODU6Y29uZmlnIE5GX0NUX05FVExJTktfSEVMUEVSXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4Ni1cXHR0cmlzdGF0ZSAnQ29ubmVjdGlvbiB0cmFja2luZyBoZWxwZXJzIGluIHVzZXItc3BhY2UgdmlhIE5ldGxpbmsnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjI4LjE5NDI2MzM1NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDM4NjU3NzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBDb25uZWN0aW9uIFRyYWNraW5nIGZvciBOZXR3b3JrIEZpbHRlcmluZyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGNvbm5lY3Rpb24gdHJhY2tpbmcgY29kZS4uLiBJdCBsb29rcyBsaWtlIGBORl9DT05OVFJBQ0tgIGFuZCBgTkZfQ1RfTkVUTElOS2AgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgaGVyZS4gSSBzZWUgYSBidW5jaCBvZiBzcGVjaWZpYyBwcm90b2NvbHMgbWVudGlvbmVkLCBsaWtlIEZUUCwgU0lQLCBJUkMsIGFuZCBzbyBvbiwgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIG1vZHVsZXMg4oCTIGBORl9DT05OVFJBQ0tfRlRQYCwgYE5GX0NPTk5UUkFDS19TSVBgLCBldGMuIEhvd2V2ZXIsIGZvciBub3csIGxldCdzIGtlZXAgaXQgZm9jdXNlZCBhbmQganVzdCBjb25jZW50cmF0ZSBvbiB0aGUgcHJpbWFyeSBtb2R1bGVzOiBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX0NUX05FVExJTktgLlxuXG5NeSBwcmltYXJ5IGludGVyZXN0IHJpZ2h0IG5vdyBpcyB0aGUgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMga2V5LiBJIHNob3VsZCBhbHNvIGludmVzdGlnYXRlIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YCwgdGhleSBhcHBlYXIgcmVsZXZhbnQuIEhhbmcgb24uLi4gQXJlIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YCBzdGF0aWM/IFllcywgdGhlIGNvbXBpbGVyIGNvbmZpcm1zIHRoZXkgYXJlLiBBbHJpZ2h0LCBzbyBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4gTGV0J3Mgc2VlIGlmIHRoaXMgaW5mbHVlbmNlcyBob3cgdGhleSdyZSB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgyNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTozNC42MzI5MjQyODFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NjQyNDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN0bmV0bGlua19nbHVlX2F0dGFjaF9leHBlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI4NTU9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyODU2OmN0bmV0bGlua19nbHVlX2F0dGFjaF9leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yODU3LVxcdFxcdFxcdCAgICAgdTMyIHBvcnRpZCwgdTMyIHJlcG9ydClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yOTA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jdF9ob29rIGN0bmV0bGlua19nbHVlX2hvb2sgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjkxMC1cXHQucGFyc2VcXHRcXHQ9IGN0bmV0bGlua19nbHVlX3BhcnNlLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyOTExOlxcdC5hdHRhY2hfZXhwZWN0XFx0PSBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yOTEyLVxcdC5zZXFfYWRqdXN0XFx0PSBjdG5ldGxpbmtfZ2x1ZV9zZXFhZGosXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjM0LjcwMTU3MzM5NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODUwMDA1NDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGNvbmZpcm1pbmcgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IOKAkyB5ZXMsIHRoZSBjaGFuZ2VzIHNlZW0gdG8gYmUgcHJpbWFyaWx5IGNvbmZpbmVkIHRvIGEgc3RhdGljIHNjb3BlLiBNeSBhdHRlbnRpb24gaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGA7IHRoYXQgZnVuY3Rpb24gaXMgZXhwb3J0ZWQsIHdoaWNoIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmb2N1c2VkIGZ1enppbmcuXG5cbk15IG5leHQgc3RlcCBpcyB0byBzb2xpZGlmeSB0aGlzIGZvY3VzLiBJ4oCZbSBhc2tpbmcgbXlzZWxmLCBhcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyB0b3VjaGVkIGJ5IHRoaXMgcGF0Y2ggdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IE5vcGUsIGl0IGFwcGVhcnMgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgaXMgdGhlIGtleSBzeW1ib2wgdG8gdGFyZ2V0LlxuXG5Ob3csIHRvIGFzc2VzcyByZWFjaGFiaWxpdHkuIElzIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGFjdHVhbGx5IHVzZWQ/IEEgcXVpY2sgY2hlY2sgcmV2ZWFscyBpdCdzIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmsgYW5kIHZhcmlvdXMgY29ubnRyYWNrIGhlbHBlciBmdW5jdGlvbnMuIEV4Y2VsbGVudCwgdGhhdCBzdHJlbmd0aGVucyBteSBpbml0aWFsIGh5cG90aGVzaXMuXG5cblRoZSBwYXRjaCBpdHNlbGYgYXBwZWFycyB0byBhZGRyZXNzIHByZXZlbnRpb24gb2YgYWRkaW5nIGEgZGVhZCBleHBlY3RhdGlvbiwgYXMgSSBpbml0aWFsbHkgdGhvdWdodC4gSSdtIHNhdGlzZmllZDsgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBUaGVyZWZvcmUsIEkgd2lsbCBzZXQgYFdvcnRoRnV6emluZz10cnVlYC5cblxuRm9yIGZvY3VzZWQgZnV6emluZywgdGhlIGZvY3VzIHN5bWJvbCwgYXMgZXhwZWN0ZWQsIGlzIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLiBUbyBlbnN1cmUgdGhvcm91Z2ggY292ZXJhZ2UsIEknbGwgZW5hYmxlIHRoZSBmb2xsb3dpbmcgY29uZmlnczogYE5GX0NPTk5UUkFDS2AsIGBORl9DVF9ORVRMSU5LYC4gVG8gY292ZXIgdGhlIGhlbHBlcnMgdGhhdCBjYWxsIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLCBJIGFsc28gbmVlZCB0byBlbmFibGU6IGBORl9DT05OVFJBQ0tfRlRQYCwgYE5GX0NPTk5UUkFDS19TSVBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19IMzIzYCwgYE5GX0NPTk5UUkFDS19QUFRQYCwgYE5GX0NPTk5UUkFDS19TQU5FYCwgYE5GX0NPTk5UUkFDS19URlRQYCwgYW5kIGBORl9DT05OVFJBQ0tfQlJPQURDQVNUYC4gVGhpcyB3aWxsIGVuc3VyZSBwcm9wZXIgY292ZXJhZ2Ugb2YgdGhlIGNvbm50cmFjayBoZWxwZXJzLCBhbmQgaGVscCBpbiBlZmZpY2llbnQgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NzcsIk91dHB1dFRva2VucyI6MTk5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjQxLjU1MTU4MTg3N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDQ0NTYxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9DVF9ORVRMSU5LXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfRlRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0lQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfSVJDXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfQU1BTkRBXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfSDMyM1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1BQVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19TQU5FXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfVEZUUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGFkZGluZyBhIGRlYWQgZXhwZWN0YXRpb24gaW4gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGxvZ2ljLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGFuZCB2YXJpb3VzIGNvbm50cmFjayBoZWxwZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0ZUUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NJUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0lSQ1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0FNQU5EQVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19QUFRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0FORVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1RGVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19CUk9BRENBU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBhZGRpbmcgYSBkZWFkIGV4cGVjdGF0aW9uIGluIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm50cmFjayBsb2dpYy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBhbmQgdmFyaW91cyBjb25udHJhY2sgaGVscGVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6NDEuNjg2MDM0ODIzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDU0NzMyNjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6NDEuNjg2NDk5OTQzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjk0NTQyNjE5NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgdGhlIGBORl9DVF9FWFBFQ1RfREVBRGAgZmxhZyBpbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCB0byBwcmV2ZW50IG9wZXJhdGluZyBvbiBhIGRlYWQgY29ubnRyYWNrIGV4cGVjdGF0aW9uLiBUaGlzIGlzIGEgbG9naWNhbCBmaXggdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHN0YXRlIGJ1Z3MsIHdoaWNoIGFyZSB0eXBpY2FsbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEyM2Y0ZmFiMDNhMTYzNzBjNGE5MzAwNmRlZmUwMTJkOWM2OTMyZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxMTozNDoyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbmluZGV4IDEwYjEzMGE3YjIzMGIuLmYxZjBjNTgyZGI1ZGYgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbkBAIC01MjgsNiArNTI4LDEyIEBAIGludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcbiBcdGludCByZXQ7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2bmZfY29ubnRyYWNrX2V4cGVjdF9sb2NrKTtcbitcdGlmIChleHBlY3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE5GX0NUX0VYUEVDVF9ERUFEKSB7XG4rXHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG4rXHRcdHJldCA9IC1FSU5WQUw7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuIFx0bWFzdGVyX2hlbHAgPSBuZmN0X2hlbHAoZXhwZWN0LVx1MDAzZW1hc3Rlcik7XG4gXHRpZiAoIW1hc3Rlcl9oZWxwKSB7XG4gXHRcdHJldCA9IC1FU0hVVERPV047XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTo0MS42ODY1MDA3MzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQ1NDIxOTQ0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb25udHJhY2sgRXhwZWN0YXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIGNydWNpYWwgY2hlY2sgd2l0aGluIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2AuIFRoZSBjb3JlIG9mIGl0IGlzIGEgc2ltcGxlIGNvbmRpdGlvbmFsOiBpdCdzIGxvb2tpbmcgdG8gc2VlIGlmIHRoZSBgTkZfQ1RfRVhQRUNUX0RFQURgIGZsYWcgaXMgc2V0IG9uIHRoZSBgZXhwZWN0LVx1MDAzZWZsYWdzYC4gRXNzZW50aWFsbHksIGl0J3MgZ3VhcmRpbmcgYWdhaW5zdCBvcGVyYXRpb25zIG9uIGEgXCJkZWFkXCIgZXhwZWN0YXRpb24uXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBzb2xpZCBmaXggZm9yIGEgdXNlLWFmdGVyLWZyZWUgb3IgYSByZWxhdGVkIGludmFsaWQgc3RhdGUgY29uZGl0aW9uLiBUaGVzZSBhcmUgdGhlIGtpbmRzIG9mIHN1YnRsZSBidWdzIHRoYXQgY2FuIGJlIG5vdG9yaW91c2x5IGRpZmZpY3VsdCB0byB0cmFjayBkb3duIHdpdGhvdXQgdmVyeSBjYXJlZnVsIGNvZGUgcmV2aWV3cyBvciBkZWRpY2F0ZWQgZGVidWdnaW5nIHRvb2xzIGxpa2UgS0FTQU4uIFdoaWxlIEtBU0FOIG9yIG90aGVyIGRlYnVnZ2VycyB3b3VsZCAqZXZlbnR1YWxseSogZmxhZyB0aGlzLCB0aGlzIHBhdGNoIG9mZmVycyBhIHByb2FjdGl2ZSBkZWZlbnNlLCBwcmV2ZW50aW5nIHRoZSBlcnJvciBmcm9tIGhhcHBlbmluZyBpbiB0aGUgZmlyc3QgcGxhY2UsIG9yIGluIGEgZGlmZmVyZW50IHNjZW5hcmlvIGZyb20ganVzdCBLQVNBTiBiZWluZyB0cmlnZ2VyZWQuIEl0J3MgYSBsb2dpY2FsIGNoZWNrIGRlc2lnbmVkIHRvIGVuc3VyZSB0aGUgY29kZSdzIGludGVncml0eS5cblxuSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgZG9lc24ndCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBJdCBkb2Vzbid0IHNlZW0gdG8gdG91Y2ggYW55IG5ldyBzdHJ1Y3R1cmVzIG9yIHNlbmQgYW55dGhpbmcgdG8gdXNlciBzcGFjZS4gSXTigJlzIGp1c3QgY2hlY2tpbmcgYSBmbGFnLCBhIGJpdG1hc2sgcmVhbGx5LiBJdCdzIGFib3V0IHByZXZlbnRpbmcgdGhlIHN5c3RlbSBmcm9tIGRvaW5nIHNvbWV0aGluZyBiYWQgd2l0aCBhIGRlZnVuY3QgZXhwZWN0YXRpb24uXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGlzIGEgZGVmZW5zaXZlIGFkZGl0aW9uLCBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIGxvZ2ljIG9yIFVBRiBpc3N1ZSwgS01TQU4gaXNuJ3QgbmVlZGVkIGhlcmUuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYSBidWcgYXQgYSBoaWdoZXIgbGV2ZWwgdGhhbiB0aGUgc3BlY2lmaWMgbWVtb3J5IG1hbmFnZW1lbnQgS01TQU4gYWRkcmVzc2VzLiBJJ20gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgb24gdGhpcyBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzgsIk91dHB1dFRva2VucyI6MTMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzczLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6NTEuMTQwNzI1MDA4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIHRoZSBgTkZfQ1RfRVhQRUNUX0RFQURgIGZsYWcgaW4gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgdG8gcHJldmVudCBvcGVyYXRpbmcgb24gYSBkZWFkIGNvbm50cmFjayBleHBlY3RhdGlvbi4gVGhpcyBpcyBhIGxvZ2ljYWwgZml4IHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBzdGF0ZSBidWdzLCB3aGljaCBhcmUgdHlwaWNhbGx5IGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIHRoZSBgTkZfQ1RfRVhQRUNUX0RFQURgIGZsYWcgaW4gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgdG8gcHJldmVudCBvcGVyYXRpbmcgb24gYSBkZWFkIGNvbm50cmFjayBleHBlY3RhdGlvbi4gVGhpcyBpcyBhIGxvZ2ljYWwgZml4IHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBzdGF0ZSBidWdzLCB3aGljaCBhcmUgdHlwaWNhbGx5IGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowrvrgg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 11:16:20 +0000 UTC FinishedAt: 2026-08-10 11:35:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6b8c8af514d739d0335f5579b585e02babe8a727", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_NETLINK", "NF_CONNTRACK_FTP", "NF_CONNTRACK_SIP", "NF_CONNTRACK_IRC", "NF_CONNTRACK_AMANDA", "NF_CONNTRACK_H323", "NF_CONNTRACK_PPTP", "NF_CONNTRACK_SANE", "NF_CONNTRACK_TFTP", "NF_CONNTRACK_BROADCAST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6b8c8af514d739d0335f5579b585e02babe8a727", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_NETLINK", "NF_CONNTRACK_FTP", "NF_CONNTRACK_SIP", "NF_CONNTRACK_IRC", "NF_CONNTRACK_AMANDA", "NF_CONNTRACK_H323", "NF_CONNTRACK_PPTP", "NF_CONNTRACK_SANE", "NF_CONNTRACK_TFTP", "NF_CONNTRACK_BROADCAST" ], "series_id": "84cb5d57-3ab9-4c39-ad0e-a274da114ff7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_ct_expect_related_report" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19GVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NJUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfSVJDJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19BTUFOREEmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0gzMjMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1BQVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NBTkUmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1RGVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0JST0FEQ0FTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgdGhlIGBORl9DVF9FWFBFQ1RfREVBRGAgZmxhZyBpbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCB0byBwcmV2ZW50IG9wZXJhdGluZyBvbiBhIGRlYWQgY29ubnRyYWNrIGV4cGVjdGF0aW9uLiBUaGlzIGlzIGEgbG9naWNhbCBmaXggdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHN0YXRlIGJ1Z3MsIHdoaWNoIGFyZSB0eXBpY2FsbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBhZGRpbmcgYSBkZWFkIGV4cGVjdGF0aW9uIGluIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm50cmFjayBsb2dpYy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBhbmQgdmFyaW91cyBjb25udHJhY2sgaGVscGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEyM2Y0ZmFiMDNhMTYzNzBjNGE5MzAwNmRlZmUwMTJkOWM2OTMyZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxMTozNDoyNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG5pbmRleCAxMGIxMzBhN2IyMzBiLi5mMWYwYzU4MmRiNWRmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG5AQCAtNTI4LDYgJiM0Mzs1MjgsMTIgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuIFx0aW50IHJldDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZuZl9jb25udHJhY2tfZXhwZWN0X2xvY2spO1xuJiM0MztcdGlmIChleHBlY3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE5GX0NUX0VYUEVDVF9ERUFEKSB7XG4mIzQzO1x0XHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xuJiM0MztcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7XG4gXHRtYXN0ZXJfaGVscCA9IG5mY3RfaGVscChleHBlY3QtXHUwMDNlbWFzdGVyKTtcbiBcdGlmICghbWFzdGVyX2hlbHApIHtcbiBcdFx0cmV0ID0gLUVTSFVURE9XTjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O05GX0NUX05FVExJTksmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0ZUUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfU0lQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19JUkMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0FNQU5EQSYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfSDMyMyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfUFBUUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfU0FORSYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfVEZUUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfQlJPQURDQVNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGFkZGluZyBhIGRlYWQgZXhwZWN0YXRpb24gaW4gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGxvZ2ljLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGFuZCB2YXJpb3VzIGNvbm50cmFjayBoZWxwZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTIzZjRmYWIwM2ExNjM3MGM0YTkzMDA2ZGVmZTAxMmQ5YzY5MzJlNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwppbmRleCAxMGIxMzBhN2IyMzBiLi5mMWYwYzU4MmRiNWRmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwpAQCAtNTI4LDYgJiM0Mzs1MjgsMTIgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LAogCWludCByZXQ7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtuZl9jb25udHJhY2tfZXhwZWN0X2xvY2spOwomIzQzOwlpZiAoZXhwZWN0LSZndDtmbGFncyAmYW1wOyBORl9DVF9FWFBFQ1RfREVBRCkgewomIzQzOwkJREVCVUdfTkVUX1dBUk5fT05fT05DRSgxKTsKJiM0MzsJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwogCW1hc3Rlcl9oZWxwID0gbmZjdF9oZWxwKGV4cGVjdC0mZ3Q7bWFzdGVyKTsKIAlpZiAoIW1hc3Rlcl9oZWxwKSB7CiAJCXJldCA9IC1FU0hVVERPV047CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29ubnRyYWNrIEV4cGVjdCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jYC4gSXQgc2VlbXMgdGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gdGhlIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3JlIG5vdyBjaGVja2luZyBpZiB0aGUgYGV4cGVjdGAgZW50cnkgaGFzIHRoZSBgTkZfQ1RfRVhQRUNUX0RFQURgIGZsYWcgc2V0LiBJZiBpdCAqaXMqIHNldCwgYSB3YXJuaW5nIGlzIHRyaWdnZXJlZCB3aXRoIGBERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpYCwgYW4gZXJyb3IgY29kZSBgLUVJTlZBTGAgaXMgcmV0dXJuZWQsIGFuZCB0aGVuIHRoZSBmdW5jdGlvbiBleGl0cy4KClRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhcyB0aGV5IGFyZSBhZGRpbmcgYSBuZXcgY2hlY2sgaW4gdGhhdCBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQgd2lsbCBhZmZlY3QgaG93IHRoaW5ncyB3b3JrLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBgbmZfY29ubnRyYWNrX2V4cGVjdC5jYCBtb2R1bGUgYW5kIGl0cyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgY29ubnRyYWNrIHN5c3RlbS4gVGhpcyB3aWxsIGhlbHAgbWUgZXZhbHVhdGUgdGhlIGltcGFjdCBvZiB0aGlzIG5ldyBjaGVjayBhbmQgaXRzIGltcGxpY2F0aW9ucyBvbiB0aGUgb3ZlcmFsbCBjb25uZWN0aW9uIHRyYWNraW5nIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jPTQ2NT1zdGF0aWMgaW5saW5lIGludCBfX25mX2N0X2V4cGVjdF9jaGVjayhzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jLTUyMy1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jOjUyNDppbnQgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01MjUtXHRcdFx0XHR1MzIgcG9ydGlkLCBpbnQgcmVwb3J0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtNTU3LX1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jOjU1ODpFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQpO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtNTU5LVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yODU2PWN0bmV0bGlua19nbHVlX2F0dGFjaF9leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yODkyLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI4OTM6XHRlcnIgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoZXhwLCBwb3J0aWQsIHJlcG9ydCwgMCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg5NC1cdG5mX2N0X2V4cGVjdF9wdXQoZXhwKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzU5Nj1jdG5ldGxpbmtfY3JlYXRlX2V4cGVjdChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM2MzMtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzYzNDpcdGVyciA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChleHAsIHBvcnRpZCwgcmVwb3J0LCAwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNjM1LVx0bmZfY3RfZXhwZWN0X3B1dChleHApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MgcmVnYXJkaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2AsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkRpdmluZyBEZWVwIGludG8gYG5mX2Nvbm50cmFja19leHBlY3QuY2AgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgZm9yIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBub3QganVzdCBibGluZGx5IGxvb2sgYXQgdGhlIGNvZGUsIGJ1dCB0byBjb25zaWRlciB0aGUgKnB1cnBvc2UqIG9mIHRoaXMgZmlsZSB3aXRoaW4gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZnJhbWV3b3JrLiBFeHBlY3RhdGlvbnMsIGVzc2VudGlhbGx5LCBhcmUgYWJvdXQgaGFuZGxpbmcgcmVsYXRlZCBjb25uZWN0aW9ucywgcmlnaHQ/IFRoaW5rIEZUUCBkYXRhIGNvbm5lY3Rpb25zLCBvciBTSVAgc2lnbmFsaW5nIGFuZCBtZWRpYS4gVGhlcmVmb3JlLCBhbnkgY29uZmlndXJhdGlvbnMgYWZmZWN0aW5nIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgdGhlc2UgJiMzNDtleHBlY3RlZCYjMzQ7IGZsb3dzIGFyZSBnb2luZyB0byBiZSBteSBwcmltYXJ5IGludGVyZXN0LgoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipTaXplIGFuZCBNZW1vcnkgQWxsb2NhdGlvbjoqKiBBcmUgdGhlcmUgbGltaXRzIG9uIHRoZSBudW1iZXIgb2YgZXhwZWN0ZWQgY29ubmVjdGlvbnMgdGhhdCBjYW4gYmUgdHJhY2tlZD8gQXJlIHRoZXJlIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzIHRoYXQgY29udHJvbCB0aGUgaGFzaCB0YWJsZSBzaXplIG9yIHRoZSBtZW1vcnkgdXNlZCB0byBzdG9yZSB0aGVzZSBleHBlY3RlZCBjb25uZWN0aW9ucz8gSG93IGFyZSB0aGVzZSBwb3RlbnRpYWxseSB0dW5lZD8gVGhpcyB3b3VsZCBiZSBrZXkgZm9yIHBlcmZvcm1hbmNlIHVuZGVyIGxvYWQuCiogICAqKlRpbWVvdXQgVmFsdWVzOioqIENvbm5lY3Rpb24gdHJhY2tpbmcgaGFzIHRpbWVvdXRzOyBob3cgYWdncmVzc2l2ZWx5IGNhbiB0aGVzZSBiZSBjb25maWd1cmVkPyBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGltcHJvcGVyIGNvbmZpZ3VyYXRpb24gbWlnaHQgY2F1c2UgZXhjZXNzaXZlIHJlc291cmNlIHVzYWdlIG9yIGRyb3AgbGVnaXRpbWF0ZSBjb25uZWN0aW9ucy4KKiAgICoqUHJvdG9jb2wtU3BlY2lmaWMgT3B0aW9uczoqKiBJcyB0aGVyZSBhbnl0aGluZyBzcGVjaWZpYyB0bywgc2F5LCBGVFAgb3IgU0lQIGV4cGVjdGF0aW9uIGhhbmRsaW5nPyBGbGFncyB0byBlbmFibGUvZGlzYWJsZSBzcGVjaWZpYyBiZWhhdmlvcnMgb3IgYWRqdXN0bWVudHMgdG8gaG93IHRoZSBleHBlY3RhdGlvbiBzdGF0ZXMgYXJlIG1hbmFnZWQgZm9yIGRpZmZlcmVudCBwcm90b2NvbHM/CiogICAqKkRlYnVnZ2luZyBhbmQgTG9nZ2luZzoqKiBBcmUgdGhlcmUgZGVidWcgb3B0aW9ucyB0byBlbmFibGUgbW9yZSB2ZXJib3NlIGxvZ2dpbmcgYWJvdXQgZXhwZWN0YXRpb24gZXZlbnRzPyBUaGlzIHdvdWxkIGJlIGNyaXRpY2FsIGZvciB0cm91Ymxlc2hvb3RpbmcgY29ubmVjdGlvbiB0cmFja2luZyBpc3N1ZXMuCiogICAqKkludGVyZmFjZSBGaWx0ZXJpbmc6KiogSSYjMzk7ZCBleHBlY3QgdGhlcmUgdG8gYmUgc29tZSBkZWdyZWUgb2YgY29udHJvbCBvdmVyIHdoaWNoIGludGVyZmFjZXMgYW5kIG5ldGZpbHRlciBob29rcyB0aGlzIG1vZHVsZSBhY3RzIG9uLiBDb25maWd1cmF0aW9uIHRoYXQgbGV0cyB5b3UgZmluZS10dW5lIHRoZXNlIHdvdWxkIGJlIHZhbHVhYmxlLgoqICAgKipDb25jdXJyZW5jeS9Mb2NraW5nOioqIEtub3dpbmcgdGhpcyBpcyBrZXJuZWwtbGV2ZWwgY29kZSwgSeKAmWxsIG5lZWQgdG8gdW5kZXJzdGFuZCBhbnkgbG9ja2luZyBtZWNoYW5pc21zIG9yIGNvbmN1cnJlbmN5IGNvbnNpZGVyYXRpb25zLiBDb25maWd1cmF0aW9uIG1pZ2h0IHN1YnRseSBpbmZsdWVuY2UgdGhlc2UsIGZvciBpbnN0YW5jZSwgYnkgY29udHJvbGxpbmcgdGhyZWFkIGNvdW50cyBvciB1c2luZyBkaWZmZXJlbnQgbG9ja2luZyBzdHJhdGVnaWVzLgoqICAgKipFcnJvciBIYW5kbGluZyBhbmQgR3JhY2VmdWwgRGVncmFkYXRpb246KiogSG93IHJvYnVzdCBpcyB0aGlzIGNvZGU/IFdoYXQgaGFwcGVucyBpZiBhbiBleHBlY3RhdGlvbiB0YWJsZSBmaWxscyB1cD8gQXJlIHRoZXJlIGFueSBjb25maWd1cmF0aW9ucyB0aGF0IGFsbG93IGZvciBncmFjZWZ1bCBoYW5kbGluZyBvZiByZXNvdXJjZSBjb25zdHJhaW50cz8KCkVzc2VudGlhbGx5LCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gYmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgb3IgbW9kaWZ5aW5nIGV4cGVjdGF0aW9ucy4gVGhpcyByZXF1aXJlcyB1bmRlcnN0YW5kaW5nIHBhcmFtZXRlcnMgcmVsYXRlZCB0byBtZW1vcnksIHRpbWVvdXRzLCBwcm90b2NvbCBoYW5kbGluZywgZGVidWcvbG9nZ2luZywgYW5kIHNlY3VyaXR5LiBJJiMzOTtsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGVzZSBvcHRpb25zIGNhbiBiZSB1c2VkIHRvIG9wdGltaXplIGFuZCB0cm91Ymxlc2hvb3QgY29ubmVjdGlvbiB0cmFja2luZyBmb3IgcmVhbC13b3JsZCBzY2VuYXJpb3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubnRyYWNrX2V4cGVjdC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT0zPW5ldGZpbHRlci0kKENPTkZJR19ORVRGSUxURVJfTkVUTElOSykgJiM0Mzs9IG5mbmV0bGluay5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTQtXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjU6bmZfY29ubnRyYWNrLXlcdDo9IG5mX2Nvbm50cmFja19jb3JlLm8gbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUubyBuZl9jb25udHJhY2tfZXhwZWN0Lm8gbmZfY29ubnRyYWNrX2hlbHBlci5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTYtXHRcdCAgIG5mX2Nvbm50cmFja19wcm90by5vIG5mX2Nvbm50cmFja19wcm90b19nZW5lcmljLm8gbmZfY29ubnRyYWNrX3Byb3RvX3RjcC5vIG5mX2Nvbm50cmFja19wcm90b191ZHAubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NTIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlciBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgbmZfY29ubnRyYWNrIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzLiBUaGUgcGllY2UgSSYjMzk7bSBsb29raW5nIGF0LCB0aGlzIGNvZGUgb3IgbW9kdWxlLCBpcyBjbGVhcmx5IHBhcnQgb2YgYG5mX2Nvbm50cmFja2AuIE15IGZpcnN0IGluc3RpbmN0IGlzLCBsZXQmIzM5O3MgbmFpbCBkb3duIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gb3Igb3B0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGVuYWJsaW5nIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgYG5mX2Nvbm50cmFja2AgZnJhbWV3b3JrLiBUaW1lIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUga2VybmVsIGNvbmZpZyBhbmQgc2VlIHdoYXQgZmxhZ3MgbGlnaHQgdGhpcyB1cC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgYXJvdW5kIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgcmV2ZWFsLiBJJiMzOTttIGFzc3VtaW5nIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgYENPTkZJR19gIG9wdGlvbiwgb3IgcG90ZW50aWFsbHkgYSBjb21iaW5hdGlvbiBvZiB0aGVtLCB0aGF0IGdvdmVybnMgdGhlIGluY2x1c2lvbiBhbmQsIGJ5IGV4dGVuc2lvbiwgdGhlIGJlaGF2aW9yIG9mIHRoaXMgcGFydCBvZiBgbmZfY29ubnRyYWNrYC4gVGhlIGdvYWwgaXMgYSBjbGVhciB2aWV3IG9mIGl0cyBidWlsZCBkZXBlbmRlbmN5IHRyZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubnRyYWNrLXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTM9bmV0ZmlsdGVyLSQoQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LKSAmIzQzOz0gbmZuZXRsaW5rLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNC1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6NTpuZl9jb25udHJhY2steVx0Oj0gbmZfY29ubnRyYWNrX2NvcmUubyBuZl9jb25udHJhY2tfc3RhbmRhbG9uZS5vIG5mX2Nvbm50cmFja19leHBlY3QubyBuZl9jb25udHJhY2tfaGVscGVyLm8gXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNi1cdFx0ICAgbmZfY29ubnRyYWNrX3Byb3RvLm8gbmZfY29ubnRyYWNrX3Byb3RvX2dlbmVyaWMubyBuZl9jb25udHJhY2tfcHJvdG9fdGNwLm8gbmZfY29ubnRyYWNrX3Byb3RvX3VkcC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE3MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipHcmVwcGluZyBmb3IgbmZfY29ubnRyYWNrLm8qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgJiMzNDtyaWdodCwgSSBuZWVkIHRvIGdldCBzdGFydGVkIG9uIHRoaXMuLi4gd2hhdGV2ZXIgaXQgaXMuIEFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgbmZfY29ubnRyYWNrLm9gIGJpdC4gSXQmIzM5O3MgYSBrZXJuZWwgbW9kdWxlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBjb25uZWN0aW9uIHRyYWNraW5nLiBUaGF0IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIEkmIzM5O20gZGl2aW5nIGludG8gc29tZXRoaW5nIG5ldHdvcmstcmVsYXRlZC4gU28sIGxldCYjMzk7cyBzdGFydCB3aXRoIGEgZ29vZCBvbGQgYGdyZXBgLiBHZXQgdGhlIHNlYXJjaCBnb2luZywgYW5kIHNlZSB3aGF0IHRoZSBzeXN0ZW0gaGFzIHRvIHNheSBhYm91dCB0aGF0IG1vZHVsZS4gU2VlIHdoZXJlIGl0JiMzOTtzIHJlZmVyZW5jZWQsIGhvdyBpdCYjMzk7cyB1c2VkLCBhbmQgd2hhdCBmaWxlcyBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IGl0LiBJdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBmaXJzdCBtb3ZlIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubnRyYWNrLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0PW5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTKSAmIzQzOz0gbmZfY29ubnRyYWNrX2xhYmVscy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE1Om5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfT1ZTKSAmIzQzOz0gbmZfY29ubnRyYWNrX292cy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE2LW5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DVF9QUk9UT19TQ1RQKSAmIzQzOz0gbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAub1xuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MzE9b2JqLSQoQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0hPT0spICYjNDM7PSBuZm5ldGxpbmtfaG9vay5vXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zMy0jIGNvbm5lY3Rpb24gdHJhY2tpbmdcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDSykgJiM0Mzs9IG5mX2Nvbm50cmFjay5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTM1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjAxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqSW52ZXN0aWdhdGluZyBhIE5ldGZpbHRlciBDb25udHJhY2sgRGVwZW5kZW5jeSoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IGBDT05GSUdfTkZfQ09OTlRSQUNLYCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZW1lbnQsIG5vIHN1cnByaXNlcyB0aGVyZS4gTXkgZm9jdXMgaXMgbm93IG9uIHRoZSBtb2RpZmljYXRpb25zIHRvIHRoZSBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCBmdW5jdGlvbi4gVGhpcyBpcyBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGl0JiMzOTtzIGJlaW5nICpjYWxsZWQqIGZyb20sIHRvIHRyYWNlIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuCgpSaWdodCwgYWNjb3JkaW5nIHRvIHRoZSBjb2RlLCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgY3RuZXRsaW5rX2dsdWVfYXR0YWNoX2V4cGVjdGAgYW5kIGBjdG5ldGxpbmtfY3JlYXRlX2V4cGVjdGAuIEJvdGggb2YgdGhvc2UgYXJlIGxvY2F0ZWQgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmNgLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9uIGFjdHVhbGx5IGNvbnRyb2xzIHRoZSBpbmNsdXNpb24gb2YgYG5mX2Nvbm50cmFja19uZXRsaW5rLmNgLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGRlcGVuZGVuY3kgY2hhaW4gYW5kIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBtb2RpZmljYXRpb25zLiBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgS2NvbmZpZyBzeW1ib2wgdGhhdCBlbmFibGVzIHRoYXQgZmlsZSB0byBiZSBjb21waWxlZCBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubnRyYWNrX25ldGxpbmsubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDSykgJiM0Mzs9IG5mX2Nvbm50cmFjay5vXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zNi0jIG5ldGxpbmsgaW50ZXJmYWNlIGZvciBuZl9jb25udHJhY2tcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX05GX0NUX05FVExJTkspICYjNDM7PSBuZl9jb25udHJhY2tfbmV0bGluay5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19ORl9DVF9ORVRMSU5LX1RJTUVPVVQpICYjNDM7PSBuZm5ldGxpbmtfY3R0aW1lb3V0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA3OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIE1vZHVsZSBEZXBlbmRlbmN5IEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIGNsZWFyIHRoYXQgYENPTkZJR19ORl9DVF9ORVRMSU5LYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgaGVyZS4gTm8gc3VycHJpc2VzIHRoZXJlLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgZGVwZW5kZW5jaWVzLiBOb3csIEkmIzM5O20gc3BvdHRpbmcgdGhhdCBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCBpcyBhbHNvIGJlaW5nIGV4cG9ydGVkLiBUaGF0JiMzOTtzIGEgYml0IGludGVyZXN0aW5nOyBJIHdvbmRlciBpZiB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHV0aWxpemVkIG91dHNpZGUgb2YgaXRzIGltbWVkaWF0ZSBpbnRlbmRlZCBwdXJwb3NlPyBUaW1lIHRvIGRlbHZlIGEgYml0IGRlZXBlciBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY2FsbCBzaXRlcywgb3IgaWYgdGhpcyBleHBvcnQgaXMgcG90ZW50aWFsbHkgb3Zlci1icm9hZC4gR290dGEgY2hlY2sgZm9yIGFueSB1bmZvcmVzZWVuIHNpZGUtZWZmZWN0cyBvZiByZWx5aW5nIG9uIHRoYXQgcGFydGljdWxhciBzeW1ib2wuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oPTE1OD12b2lkIG5mX2N0X2V4cGVjdF9wdXQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCk7XG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oOjE1OTppbnQgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oLTE2MC1cdFx0XHRcdHUzMiBwb3J0aWQsIGludCByZXBvcnQsIHVuc2lnbmVkIGludCBmbGFncyk7XG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oPTE2MT1zdGF0aWMgaW5saW5lIGludCBuZl9jdF9leHBlY3RfcmVsYXRlZChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuLS1cbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmgtMTYzLXtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg6MTY0Olx0cmV0dXJuIG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChleHBlY3QsIDAsIDAsIGZsYWdzKTtcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmgtMTY1LX1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYz00NjU9c3RhdGljIGlubGluZSBpbnQgX19uZl9jdF9leHBlY3RfY2hlY2soc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01MjMtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYzo1MjQ6aW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtNTI1LVx0XHRcdFx0dTMyIHBvcnRpZCwgaW50IHJlcG9ydCwgdW5zaWduZWQgaW50IGZsYWdzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jLTU1Ny19XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYzo1NTg6RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jLTU1OS1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mjg1Nj1jdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0KGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg5Mi1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyODkzOlx0ZXJyID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KGV4cCwgcG9ydGlkLCByZXBvcnQsIDApO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI4OTQtXHRuZl9jdF9leHBlY3RfcHV0KGV4cCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTM1OTY9Y3RuZXRsaW5rX2NyZWF0ZV9leHBlY3Qoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0zNjMzLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjM2MzQ6XHRlcnIgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoZXhwLCBwb3J0aWQsIHJlcG9ydCwgMCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzYzNS1cdG5mX2N0X2V4cGVjdF9wdXQoZXhwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA4NwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIEV4cGVjdGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRgIGZ1bmN0aW9uLiBUaGUgY29kZSBzYXlzIGl0JiMzOTtzIGFuIGlubGluZSBzdGF0aWMgZnVuY3Rpb24sIHR1Y2tlZCBhd2F5IGluIGBpbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oYC4gVGhhdCB0ZWxscyBtZSBpdCYjMzk7cyBsaWtlbHkgYSByZWxhdGl2ZWx5IGZyZXF1ZW50bHkgdXNlZCBoZWxwZXIsIHByb2JhYmx5IG9wdGltaXplZCBmb3Igc3BlZWQgc2luY2UgaXQmIzM5O3MgaW5saW5lLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGgsIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKnVzZWQqLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGVudHJ5IHBvaW50cyB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQuIExldCBtZSB0cmFjZSB0aGUgY2FsbHMgdG8gYG5mX2N0X2V4cGVjdF9yZWxhdGVkYCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaXRzIHJvbGUgd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29ubnRyYWNrIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY3RfZXhwZWN0X3JlbGF0ZWRcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaD0xNTk9aW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaC0xNjAtXHRcdFx0XHR1MzIgcG9ydGlkLCBpbnQgcmVwb3J0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpO1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaDoxNjE6c3RhdGljIGlubGluZSBpbnQgbmZfY3RfZXhwZWN0X3JlbGF0ZWQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmgtMTYyLVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBmbGFncylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbmZjdC5jPTIxMD12b2lkIGlwX3ZzX25mY3RfZXhwZWN0X3JlbGF0ZWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19uZmN0LmMtMjMyLVx0XHQgICAgICBfX2Z1bmNfXywgY3QsIEFSR19UVVBMRShcdTAwMjZleHAtXHUwMDNldHVwbGUpKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19uZmN0LmM6MjMzOlx0bmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19uZmN0LmMtMjM0LVx0bmZfY3RfZXhwZWN0X3B1dChleHApO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jPTgzPXN0YXRpYyBpbnQgYW1hbmRhX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYy0xNTUtXHRcdFx0XHRcdCAgICBvZmYgLSBkYXRhb2ZmLCBsZW4sIGV4cCk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19hbWFuZGEuYzoxNTY6XHRcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTU3LVx0XHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXCYjMzQ7Y2Fubm90IGFkZCBleHBlY3RhdGlvblwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmM9MTk9aW50IG5mX2Nvbm50cmFja19icm9hZGNhc3RfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTg3LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmM6ODg6XHRuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYnJvYWRjYXN0LmMtODktXHRuZl9jdF9leHBlY3RfcHV0KGV4cCk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmM9MzYxPXN0YXRpYyBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jLTUyMS1cdFx0LyogQ2FuJiMzOTt0IGV4cGVjdCB0aGlzPyAgQmVzdCB0byBkcm9wIHBhY2tldCBub3cuICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19mdHAuYzo1MjI6XHRcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jLTUyMy1cdFx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwmIzM0O2Nhbm5vdCBhZGQgZXhwZWN0YXRpb25cJiMzNDspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTIwOT1zdGF0aWMgaW50IGV4cGVjdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMjYyLVx0fSBlbHNlIHtcdFx0LyogQ29ubnRyYWNrIG9ubHkgKi9cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjI2MzpcdFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0cF9leHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjI2NDpcdFx0XHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTI2NS1cdFx0XHRcdHByX2RlYnVnKFwmIzM0O25mX2N0X2gzMjM6IGV4cGVjdCBSVFAgXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0yODM9c3RhdGljIGludCBleHBlY3RfdDEyMChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTMyMi1cdH0gZWxzZSB7XHRcdC8qIENvbm50cmFjayBvbmx5ICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzozMjM6XHRcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTMyNC1cdFx0XHRwcl9kZWJ1ZyhcJiMzNDtuZl9jdF9oMzIzOiBleHBlY3QgVC4xMjAgXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz02MTg9c3RhdGljIGludCBleHBlY3RfaDI0NShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjU1LVx0fSBlbHNlIHtcdFx0LyogQ29ubnRyYWNrIG9ubHkgKi9cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjY1NjpcdFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgPT0gMCkge1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjU3LVx0XHRcdHByX2RlYnVnKFwmIzM0O25mX2N0X3E5MzE6IGV4cGVjdCBILjI0NSBcJiMzNDspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTczNT1zdGF0aWMgaW50IGV4cGVjdF9jYWxsZm9yd2FyZGluZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTc4My1cdH0gZWxzZSB7XHRcdC8qIENvbm50cmFjayBvbmx5ICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzo3ODQ6XHRcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTc4NS1cdFx0XHRwcl9kZWJ1ZyhcJiMzNDtuZl9jdF9xOTMxOiBleHBlY3QgQ2FsbCBGb3J3YXJkaW5nIFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTE4Mz1zdGF0aWMgaW50IGV4cGVjdF9xOTMxKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xMjI3LVx0fSBlbHNlIHtcdFx0LyogQ29ubnRyYWNrIG9ubHkgKi9cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjEyMjg6XHRcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyMjktXHRcdFx0cHJfZGVidWcoXCYjMzQ7bmZfY3RfcmFzOiBleHBlY3QgUS45MzEgXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xMjYzPXN0YXRpYyBpbnQgcHJvY2Vzc19nY2Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyOTUtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxMjk2Olx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgPT0gMCkge1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTI5Ny1cdFx0cHJfZGVidWcoXCYjMzQ7bmZfY3RfcmFzOiBleHBlY3QgUkFTIFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTQ4Nj1zdGF0aWMgaW50IHByb2Nlc3NfYWNmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTI0LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTUyNTpcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1MjYtXHRcdHByX2RlYnVnKFwmIzM0O25mX2N0X3JhczogZXhwZWN0IFEuOTMxIFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTU1Mz1zdGF0aWMgaW50IHByb2Nlc3NfbGNmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTc4LVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTU3OTpcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApID09IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1ODAtXHRcdHByX2RlYnVnKFwmIzM0O25mX2N0X3JhczogZXhwZWN0IFEuOTMxIFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmM9OTc9c3RhdGljIGludCBoZWxwKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jLTIzNy1cdFx0XHRcdFx0XHQgZXhwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jOjIzODpcdFx0XHRlbHNlIGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jLTIzOS1cdFx0XHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmM9MTI4PXN0YXRpYyBpbnQgZXhwX2dyZShzdHJ1Y3QgbmZfY29ubiAqY3QsIF9fYmUxNiBjYWxsaWQsIF9fYmUxNiBwZWVyX2NhbGxpZClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmMtMTYzLVx0XHRob29rLVx1MDAzZWV4cF9ncmUoZXhwX29yaWcsIGV4cF9yZXBseSk7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmM6MTY0Olx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cF9vcmlnLCAwKSAhPSAwKVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHB0cC5jLTE2NS1cdFx0Z290byBvdXRfcHV0X2JvdGg7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcHRwLmM6MTY2Olx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cF9yZXBseSwgMCkgIT0gMClcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3BwdHAuYy0xNjctXHRcdGdvdG8gb3V0X3VuZXhwZWN0X29yaWc7XG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2FuZS5jPTUzPXN0YXRpYyBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NhbmUuYy0xNTctXHQvKiBDYW4mIzM5O3QgZXhwZWN0IHRoaXM/ICBCZXN0IHRvIGRyb3AgcGFja2V0IG5vdy4gKi9cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NhbmUuYzoxNTg6XHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zYW5lLmMtMTU5LVx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwmIzM0O2Nhbm5vdCBhZGQgZXhwZWN0YXRpb25cJiMzNDspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jPTkyMz1zdGF0aWMgaW50IHNldF9leHBlY3RlZF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYy0xMDY2LVx0XHQgKi9cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jOjEwNjc6XHRcdGludCBlcnJwID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTEwNjgtXHRcdFx0XHRcdFx0TkZfQ1RfRVhQX0ZfU0tJUF9NQVNURVIpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTEwNzAtXHRcdGlmIChlcnJwID09IDAgfHwgZXJycCA9PSAtRUFMUkVBRFkpIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jOjEwNzE6XHRcdFx0aW50IGVycmNwID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYy0xMDcyLVx0XHRcdFx0XHRcdE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYz0xMzIzPXN0YXRpYyBpbnQgcHJvY2Vzc19yZWdpc3Rlcl9yZXF1ZXN0KHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTE0MTgtXHRlbHNlIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jOjE0MTk6XHRcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTE0MjAtXHRcdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcJiMzNDtjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmM9MzI9c3RhdGljIGludCB0ZnRwX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmMtNzItXHRcdFx0cmV0ID0gbmZfbmF0X3RmdHAoc2tiLCBjdCwgY3RpbmZvLCBleHApO1xubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jOjczOlx0XHRlbHNlIGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYy03NC1cdFx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwmIzM0O2Nhbm5vdCBhZGQgZXhwZWN0YXRpb25cJiMzNDspO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2hlbHBlci5jPTIwMj11MTYgbmZfbmF0X2V4cF9maW5kX3BvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cCwgdTE2IHBvcnQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9uYXRfaGVscGVyLmMtMjE4LVx0XHRleHAtXHUwMDNldHVwbGUuZHN0LnUudGNwLnBvcnQgPSBodG9ucyhwb3J0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2hlbHBlci5jOjIxOTpcdFx0cmVzID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKTtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2hlbHBlci5jLTIyMC1cdFx0aWYgKHJlcyA9PSAwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYz0yMz1zdGF0aWMgdW5zaWduZWQgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX25hdF90ZnRwLmMtMzEtXHRleHAtXHUwMDNlZXhwZWN0Zm4gPSBuZl9uYXRfZm9sbG93X21hc3Rlcjtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYzozMjpcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYy0zMy1cdFx0bmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCBcJiMzNDtjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXCYjMzQ7KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMTE9c3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM2Mi0jZW5kaWZcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTM2MzpcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEzNjQtXHRcdHJlZ3MtXHUwMDNldmVyZGljdC5jb2RlID0gTkZfRFJPUDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwMjYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1NzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIENvbm50cmFjayBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBhIHByZXR0eSBpbnRlcmVzdGluZyBmdW5jdGlvbmFsIGNoYW5nZSB0byBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YC4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSBjaGVjayBmb3IgYE5GX0NUX0VYUEVDVF9ERUFEYCB3aXRoaW4gYSBzcGlubG9jaywgcHJldmVudGluZyB0aGUgYWRkaXRpb24gb2YgYSAmIzM0O2RlYWQmIzM0OyBleHBlY3RhdGlvbi4gVGhpcyBpcyBjbGVhcmx5IGEgY3JpdGljYWwgZnVuY3Rpb24gd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29ubnRyYWNrIHN5c3RlbSwgc28gaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gZ2l2ZSBhIGNsb3NlciBsb29rLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyBzb21ldGhpbmcgd2Ugc2hvdWxkIGZ1eno/IEFic29sdXRlbHksIGl0JiMzOTtzIGNvcmUgZnVuY3Rpb25hbGl0eS4KCkxldCYjMzk7cyBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gV2VsbCwgb2J2aW91c2x5IGBDT05GSUdfTkZfQ09OTlRSQUNLYCBpcyBuZWVkZWQsIHRoYXQmIzM5O3MgYSBnaXZlbi4gVGhlbiBJIHNlZSBgQ09ORklHX05GX0NUX05FVExJTktgIGlzIGFsc28gbmVlZGVkIGZvciBjYWxscyBsaWtlIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YCwgc28gdGhhdCYjMzk7cyBhbm90aGVyIHByZXJlcXVpc2l0ZS4KCk5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgd2lkZXIgaW1wYWN0LiBMb29raW5nIGF0IHRoZSBjYWxsIGdyYXBoLCBpdCBsb29rcyBsaWtlIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGlzIGFsc28gY2FsbGVkIGJ5IGBuZl9jdF9leHBlY3RfcmVsYXRlZGAsIHdoaWNoIGlzIGNhbGxlZCBieSBzbyBtYW55IG9mIHRoZSBoZWxwZXIgbW9kdWxlcy4gSSBuZWVkIHRvIHRlc3QgdGhhdCB0byBjb25maXJtIHRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGJyZWFrIGFueXRoaW5nLiBTbywgYENPTkZJR19ORl9DT05OVFJBQ0tfRlRQYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfU0lQYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfSVJDYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfSDMyM2AsIGBDT05GSUdfTkZfQ09OTlRSQUNLX1BQVFBgLCBgQ09ORklHX05GX0NPTk5UUkFDS19TQU5FYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfVEZUUGAsIGFuZCBgQ09ORklHX05GX0NPTk5UUkFDS19CUk9BRENBU1RgIGFyZSBhbGwgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIHRlc3RpbmcuCgpJJiMzOTtsbCBkb3VibGUtY2hlY2sgYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVzZSBjb25maWd1cmF0aW9ucy4gVGhlbiBJJiMzOTtsbCBoYXZlIGEgZ29vZCBpZGVhIG9mIHdoYXQgSSYjMzk7bSBkZWFsaW5nIHdpdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DT05OVFJBQ0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODMtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTExNS1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiBtYXJrIHRyYWNraW5nIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyBzZWN1cml0eSBtYXJrIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMzctXHRib29sICAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgem9uZXMmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNDctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTQ5LVx0Ym9vbCBcJiMzNDtTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTU3OmNvbmZpZyBORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGV2ZW50c1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTY3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRU9VVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0JiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTc2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjE3Nzpjb25maWcgTkZfQ09OTlRSQUNLX1RJTUVTVEFNUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cdGJvb2wgICYjMzk7Q29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xODctXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTg4OmNvbmZpZyBORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVx0Ym9vbCBcJiMzNDtDb25uZWN0aW9uIHRyYWNraW5nIGxhYmVsc1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xOTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTk2LVx0Ym9vbFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMDE9Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIxMjpjb25maWcgTkZfQ09OTlRSQUNLX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O0FtYW5kYSBiYWNrdXAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMjYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjI3OmNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVx0dHJpc3RhdGUgXCYjMzQ7RlRQIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjM4LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNDAtXHR0cmlzdGF0ZSBcJiMzNDtILjMyMyBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNTg6Y29uZmlnIE5GX0NPTk5UUkFDS19JUkNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtJUkMgRENDIHByb3RvY29sIHN1cHBvcnQgKG9ic29sZXRlKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzMtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc0OmNvbmZpZyBORl9DT05OVFJBQ0tfQlJPQURDQVNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVx0dHJpc3RhdGVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xubmV0L25ldGZpbHRlci9LY29uZmlnLTI3OC1cdHRyaXN0YXRlIFwmIzM0O05ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjI5Njpjb25maWcgTkZfQ09OTlRSQUNLX1NOTVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yOTctXHR0cmlzdGF0ZSBcJiMzNDtTTk1QIHNlcnZpY2UgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzExOmNvbmZpZyBORl9DT05OVFJBQ0tfUFBUUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cdHRyaXN0YXRlIFwmIzM0O1BQdFAgcHJvdG9jb2wgc3VwcG9ydCAoZGVwcmVjYXRlZClcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzI5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMzEtXHR0cmlzdGF0ZSBcJiMzNDtTQU5FIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM0Mzpjb25maWcgTkZfQ09OTlRSQUNLX1NJUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cdHRyaXN0YXRlIFwmIzM0O1NJUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM1NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNTU6Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVx0dHJpc3RhdGUgXCYjMzQ7VEZUUCBwcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMzQ1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5GX0NUX05FVExJTksgQ2hlY2stSW4qKgoKUmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgTkZfQ1RfTkVUTElOS2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbnRhbCBtb2RlbCBvZiBpdHMgY3VycmVudCBzdGF0ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSByZWNlbnQgYWN0aXZpdHksIHNwZWNpZmljYWxseSBhbnkgcGF0Y2hlcyBvciBidWcgZml4ZXMgdGhhdCBoYXZlIHRvdWNoZWQgaXQgaW4gdGhlIGxhc3QgZmV3IG1vbnRocy4gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgbGluZ2VyaW5nIHF1ZXN0aW9ucyBvbiB0aGUgbWFpbGluZyBsaXN0cyBJIG5lZWQgdG8gYWRkcmVzcyBvciBmb2xsb3cgdXAgb24gcmVsYXRlZCB0byB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBORVRMSU5LIGludGVyZmFjZS4gSSBzaG91bGQgdmVyaWZ5IHRoYXQgdGhlIHJlY2VudCBjaGFuZ2VzIGRpZCBub3QgYnJlYWsgYW55dGhpbmcgYW5kIHRoYXQgdGhlIG5ldGxpbmsgbWVzc2FnZXMgYXJlIHN0aWxsIHZhbGlkLiBJIGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVjZW50IGtlcm5lbCB2ZXJzaW9uIGlzIHN0aWxsIGNvbXBhdGlibGUuIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgdGhlIGNvbW1pdCBsb2dzIGFuZCBhbnkgcmVsYXRlZCBkb2N1bWVudGF0aW9uLiBUaW1lIHRvIHNlZSBpZiBhbnkgb2YgdGhlIHJlY2VudCBhZGRpdGlvbnMgYXJlIGludHJvZHVjaW5nIGFueSBuZXcgY29tcGxleGl0aWVzIG9yIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4gRmluYWxseSwgSSBzaG91bGQgY29uc2lkZXIgaWYgYW55IHNpZ25pZmljYW50IGFyY2hpdGVjdHVyYWwgZGlzY3Vzc2lvbnMgYXJlIGFjdGl2ZSB0aGF0IG1pZ2h0IGltcGFjdCBmdXR1cmUgZGV2ZWxvcG1lbnQgb3IgcG90ZW50aWFsIHJlZmFjdG9yaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfQ1RfTkVUTElOSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zNTU9Y29uZmlnIE5GX0NPTk5UUkFDS19URlRQXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM2NS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNjY6Y29uZmlnIE5GX0NUX05FVExJTktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNjctXHR0cmlzdGF0ZSAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgbmV0bGluayBpbnRlcmZhY2UmIzM5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzczOmNvbmZpZyBORl9DVF9ORVRMSU5LX1RJTUVPVVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzQtXHR0cmlzdGF0ZSAgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIHRpbWVvdXQgdHVuaW5nIHZpYSBOZXRsaW5rJiMzOTtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg0LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjM4NTpjb25maWcgTkZfQ1RfTkVUTElOS19IRUxQRVJcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODYtXHR0cmlzdGF0ZSAmIzM5O0Nvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVycyBpbiB1c2VyLXNwYWNlIHZpYSBOZXRsaW5rJiMzOTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MjQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbm5lY3Rpb24gVHJhY2tpbmcgZm9yIE5ldHdvcmsgRmlsdGVyaW5nKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBjb25uZWN0aW9uIHRyYWNraW5nIGNvZGUuLi4gSXQgbG9va3MgbGlrZSBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX0NUX05FVExJTktgIGFyZSB0aGUgY29yZSBjb21wb25lbnRzIGhlcmUuIEkgc2VlIGEgYnVuY2ggb2Ygc3BlY2lmaWMgcHJvdG9jb2xzIG1lbnRpb25lZCwgbGlrZSBGVFAsIFNJUCwgSVJDLCBhbmQgc28gb24sIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyBtb2R1bGVzIOKAkyBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfU0lQYCwgZXRjLiBIb3dldmVyLCBmb3Igbm93LCBsZXQmIzM5O3Mga2VlcCBpdCBmb2N1c2VkIGFuZCBqdXN0IGNvbmNlbnRyYXRlIG9uIHRoZSBwcmltYXJ5IG1vZHVsZXM6IGBORl9DT05OVFJBQ0tgIGFuZCBgTkZfQ1RfTkVUTElOS2AuCgpNeSBwcmltYXJ5IGludGVyZXN0IHJpZ2h0IG5vdyBpcyB0aGUgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMga2V5LiBJIHNob3VsZCBhbHNvIGludmVzdGlnYXRlIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YCwgdGhleSBhcHBlYXIgcmVsZXZhbnQuIEhhbmcgb24uLi4gQXJlIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YCBzdGF0aWM/IFllcywgdGhlIGNvbXBpbGVyIGNvbmZpcm1zIHRoZXkgYXJlLiBBbHJpZ2h0LCBzbyBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBpbmZsdWVuY2VzIGhvdyB0aGV5JiMzOTtyZSB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI4NTU9c3RhdGljIGludFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI4NTY6Y3RuZXRsaW5rX2dsdWVfYXR0YWNoX2V4cGVjdChjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg1Ny1cdFx0XHQgICAgIHUzMiBwb3J0aWQsIHUzMiByZXBvcnQpXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI5MDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZm5sX2N0X2hvb2sgY3RuZXRsaW5rX2dsdWVfaG9vayA9IHtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjkxMC1cdC5wYXJzZVx0XHQ9IGN0bmV0bGlua19nbHVlX3BhcnNlLFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jOjI5MTE6XHQuYXR0YWNoX2V4cGVjdFx0PSBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTI5MTItXHQuc2VxX2FkanVzdFx0PSBjdG5ldGxpbmtfZ2x1ZV9zZXFhZGosXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTc3CgkJCQkJCQlvdXRwdXQ6IDE5OQoJCQkJCQkJdGhvdWdodHM6IDI1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGNvbmZpcm1pbmcgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IOKAkyB5ZXMsIHRoZSBjaGFuZ2VzIHNlZW0gdG8gYmUgcHJpbWFyaWx5IGNvbmZpbmVkIHRvIGEgc3RhdGljIHNjb3BlLiBNeSBhdHRlbnRpb24gaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGA7IHRoYXQgZnVuY3Rpb24gaXMgZXhwb3J0ZWQsIHdoaWNoIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmb2N1c2VkIGZ1enppbmcuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gc29saWRpZnkgdGhpcyBmb2N1cy4gSeKAmW0gYXNraW5nIG15c2VsZiwgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdG91Y2hlZCBieSB0aGlzIHBhdGNoIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBOb3BlLCBpdCBhcHBlYXJzIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGlzIHRoZSBrZXkgc3ltYm9sIHRvIHRhcmdldC4KCk5vdywgdG8gYXNzZXNzIHJlYWNoYWJpbGl0eS4gSXMgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgYWN0dWFsbHkgdXNlZD8gQSBxdWljayBjaGVjayByZXZlYWxzIGl0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmsgYW5kIHZhcmlvdXMgY29ubnRyYWNrIGhlbHBlciBmdW5jdGlvbnMuIEV4Y2VsbGVudCwgdGhhdCBzdHJlbmd0aGVucyBteSBpbml0aWFsIGh5cG90aGVzaXMuCgpUaGUgcGF0Y2ggaXRzZWxmIGFwcGVhcnMgdG8gYWRkcmVzcyBwcmV2ZW50aW9uIG9mIGFkZGluZyBhIGRlYWQgZXhwZWN0YXRpb24sIGFzIEkgaW5pdGlhbGx5IHRob3VnaHQuIEkmIzM5O20gc2F0aXNmaWVkOyB0aGlzIHdhcnJhbnRzIGZ1enppbmcuIFRoZXJlZm9yZSwgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLgoKRm9yIGZvY3VzZWQgZnV6emluZywgdGhlIGZvY3VzIHN5bWJvbCwgYXMgZXhwZWN0ZWQsIGlzIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLiBUbyBlbnN1cmUgdGhvcm91Z2ggY292ZXJhZ2UsIEkmIzM5O2xsIGVuYWJsZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3M6IGBORl9DT05OVFJBQ0tgLCBgTkZfQ1RfTkVUTElOS2AuIFRvIGNvdmVyIHRoZSBoZWxwZXJzIHRoYXQgY2FsbCBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCwgSSBhbHNvIG5lZWQgdG8gZW5hYmxlOiBgTkZfQ09OTlRSQUNLX0ZUUGAsIGBORl9DT05OVFJBQ0tfU0lQYCwgYE5GX0NPTk5UUkFDS19JUkNgLCBgTkZfQ09OTlRSQUNLX0FNQU5EQWAsIGBORl9DT05OVFJBQ0tfSDMyM2AsIGBORl9DT05OVFJBQ0tfUFBUUGAsIGBORl9DT05OVFJBQ0tfU0FORWAsIGBORl9DT05OVFJBQ0tfVEZUUGAsIGFuZCBgTkZfQ09OTlRSQUNLX0JST0FEQ0FTVGAuIFRoaXMgd2lsbCBlbnN1cmUgcHJvcGVyIGNvdmVyYWdlIG9mIHRoZSBjb25udHJhY2sgaGVscGVycywgYW5kIGhlbHAgaW4gZWZmaWNpZW50IGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkZfQ1RfTkVUTElOSyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfRlRQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TSVAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0lSQyYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfQU1BTkRBJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19IMzIzJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19QUFRQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TQU5FJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19URlRQJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19CUk9BRENBU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIHByZXZlbnQgYWRkaW5nIGEgZGVhZCBleHBlY3RhdGlvbiBpbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBjb25udHJhY2sgbG9naWMuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgYW5kIHZhcmlvdXMgY29ubnRyYWNrIGhlbHBlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9ORVRMSU5LJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19GVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NJUCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0tfSVJDJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19BTUFOREEmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0gzMjMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1BQVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NBTkUmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1RGVFAmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0JST0FEQ0FTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBhZGRpbmcgYSBkZWFkIGV4cGVjdGF0aW9uIGluIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm50cmFjayBsb2dpYy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBhbmQgdmFyaW91cyBjb25udHJhY2sgaGVscGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTE6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIHRoZSBgTkZfQ1RfRVhQRUNUX0RFQURgIGZsYWcgaW4gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgdG8gcHJldmVudCBvcGVyYXRpbmcgb24gYSBkZWFkIGNvbm50cmFjayBleHBlY3RhdGlvbi4gVGhpcyBpcyBhIGxvZ2ljYWwgZml4IHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBzdGF0ZSBidWdzLCB3aGljaCBhcmUgdHlwaWNhbGx5IGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTIzZjRmYWIwM2ExNjM3MGM0YTkzMDA2ZGVmZTAxMmQ5YzY5MzJlNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwppbmRleCAxMGIxMzBhN2IyMzBiLi5mMWYwYzU4MmRiNWRmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwpAQCAtNTI4LDYgJiM0Mzs1MjgsMTIgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LAogCWludCByZXQ7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtuZl9jb25udHJhY2tfZXhwZWN0X2xvY2spOwomIzQzOwlpZiAoZXhwZWN0LSZndDtmbGFncyAmYW1wOyBORl9DVF9FWFBFQ1RfREVBRCkgewomIzQzOwkJREVCVUdfTkVUX1dBUk5fT05fT05DRSgxKTsKJiM0MzsJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwogCW1hc3Rlcl9oZWxwID0gbmZjdF9oZWxwKGV4cGVjdC0mZ3Q7bWFzdGVyKTsKIAlpZiAoIW1hc3Rlcl9oZWxwKSB7CiAJCXJldCA9IC1FU0hVVERPV047CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxMTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM4CgkJCQkJCQlvdXRwdXQ6IDEzMAoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb25udHJhY2sgRXhwZWN0YXRpb24gUGF0Y2gqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBjcnVjaWFsIGNoZWNrIHdpdGhpbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNgLiBUaGUgY29yZSBvZiBpdCBpcyBhIHNpbXBsZSBjb25kaXRpb25hbDogaXQmIzM5O3MgbG9va2luZyB0byBzZWUgaWYgdGhlIGBORl9DVF9FWFBFQ1RfREVBRGAgZmxhZyBpcyBzZXQgb24gdGhlIGBleHBlY3QtJmd0O2ZsYWdzYC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGd1YXJkaW5nIGFnYWluc3Qgb3BlcmF0aW9ucyBvbiBhICYjMzQ7ZGVhZCYjMzQ7IGV4cGVjdGF0aW9uLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIHNvbGlkIGZpeCBmb3IgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIHJlbGF0ZWQgaW52YWxpZCBzdGF0ZSBjb25kaXRpb24uIFRoZXNlIGFyZSB0aGUga2luZHMgb2Ygc3VidGxlIGJ1Z3MgdGhhdCBjYW4gYmUgbm90b3Jpb3VzbHkgZGlmZmljdWx0IHRvIHRyYWNrIGRvd24gd2l0aG91dCB2ZXJ5IGNhcmVmdWwgY29kZSByZXZpZXdzIG9yIGRlZGljYXRlZCBkZWJ1Z2dpbmcgdG9vbHMgbGlrZSBLQVNBTi4gV2hpbGUgS0FTQU4gb3Igb3RoZXIgZGVidWdnZXJzIHdvdWxkICpldmVudHVhbGx5KiBmbGFnIHRoaXMsIHRoaXMgcGF0Y2ggb2ZmZXJzIGEgcHJvYWN0aXZlIGRlZmVuc2UsIHByZXZlbnRpbmcgdGhlIGVycm9yIGZyb20gaGFwcGVuaW5nIGluIHRoZSBmaXJzdCBwbGFjZSwgb3IgaW4gYSBkaWZmZXJlbnQgc2NlbmFyaW8gZnJvbSBqdXN0IEtBU0FOIGJlaW5nIHRyaWdnZXJlZC4gSXQmIzM5O3MgYSBsb2dpY2FsIGNoZWNrIGRlc2lnbmVkIHRvIGVuc3VyZSB0aGUgY29kZSYjMzk7cyBpbnRlZ3JpdHkuCgpJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoaXMgZG9lc24mIzM5O3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gSXQgZG9lc24mIzM5O3Qgc2VlbSB0byB0b3VjaCBhbnkgbmV3IHN0cnVjdHVyZXMgb3Igc2VuZCBhbnl0aGluZyB0byB1c2VyIHNwYWNlLiBJdOKAmXMganVzdCBjaGVja2luZyBhIGZsYWcsIGEgYml0bWFzayByZWFsbHkuIEl0JiMzOTtzIGFib3V0IHByZXZlbnRpbmcgdGhlIHN5c3RlbSBmcm9tIGRvaW5nIHNvbWV0aGluZyBiYWQgd2l0aCBhIGRlZnVuY3QgZXhwZWN0YXRpb24uCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBpcyBhIGRlZmVuc2l2ZSBhZGRpdGlvbiwgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBsb2dpYyBvciBVQUYgaXNzdWUsIEtNU0FOIGlzbiYjMzk7dCBuZWVkZWQgaGVyZS4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZyBhdCBhIGhpZ2hlciBsZXZlbCB0aGFuIHRoZSBzcGVjaWZpYyBtZW1vcnkgbWFuYWdlbWVudCBLTVNBTiBhZGRyZXNzZXMuIEkmIzM5O20gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgb24gdGhpcyBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgdGhlIGBORl9DVF9FWFBFQ1RfREVBRGAgZmxhZyBpbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCB0byBwcmV2ZW50IG9wZXJhdGluZyBvbiBhIGRlYWQgY29ubnRyYWNrIGV4cGVjdGF0aW9uLiBUaGlzIGlzIGEgbG9naWNhbCBmaXggdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHN0YXRlIGJ1Z3MsIHdoaWNoIGFyZSB0eXBpY2FsbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciB0aGUgYE5GX0NUX0VYUEVDVF9ERUFEYCBmbGFnIGluIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIHRvIHByZXZlbnQgb3BlcmF0aW5nIG9uIGEgZGVhZCBjb25udHJhY2sgZXhwZWN0YXRpb24uIFRoaXMgaXMgYSBsb2dpY2FsIGZpeCB0byBwcmV2ZW50IHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgc3RhdGUgYnVncywgd2hpY2ggYXJlIHR5cGljYWxseSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZWQgdG8gdXNlciBzcGFjZSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjI3LjcyNDAwNjQ3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNDE2Nzc0MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0ZUUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NJUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0lSQ1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0FNQU5EQVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19QUFRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0FORVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1RGVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19CUk9BRENBU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgdGhlIGBORl9DVF9FWFBFQ1RfREVBRGAgZmxhZyBpbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCB0byBwcmV2ZW50IG9wZXJhdGluZyBvbiBhIGRlYWQgY29ubnRyYWNrIGV4cGVjdGF0aW9uLiBUaGlzIGlzIGEgbG9naWNhbCBmaXggdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHN0YXRlIGJ1Z3MsIHdoaWNoIGFyZSB0eXBpY2FsbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGFkZGluZyBhIGRlYWQgZXhwZWN0YXRpb24gaW4gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGxvZ2ljLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGFuZCB2YXJpb3VzIGNvbm50cmFjayBoZWxwZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDoyNy43MjQwMTM4NjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTM3MjQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGEyM2Y0ZmFiMDNhMTYzNzBjNGE5MzAwNmRlZmUwMTJkOWM2OTMyZTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTE6MzQ6MjYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xcbmluZGV4IDEwYjEzMGE3YjIzMGIuLmYxZjBjNTgyZGI1ZGYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xcbkBAIC01MjgsNiArNTI4LDEyIEBAIGludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2bmZfY29ubnRyYWNrX2V4cGVjdF9sb2NrKTtcXG4rXFx0aWYgKGV4cGVjdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBORl9DVF9FWFBFQ1RfREVBRCkge1xcbitcXHRcXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpO1xcbitcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXG4gXFx0bWFzdGVyX2hlbHAgPSBuZmN0X2hlbHAoZXhwZWN0LVxcdTAwM2VtYXN0ZXIpO1xcbiBcXHRpZiAoIW1hc3Rlcl9oZWxwKSB7XFxuIFxcdFxcdHJldCA9IC1FU0hVVERPV047XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjI4LjIwNjM5NDU2OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjczNDc5NjM1OTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0ZUUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NJUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0lSQ1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0FNQU5EQVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19QUFRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0FORVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1RGVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19CUk9BRENBU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBhZGRpbmcgYSBkZWFkIGV4cGVjdGF0aW9uIGluIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm50cmFjayBsb2dpYy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBhbmQgdmFyaW91cyBjb25udHJhY2sgaGVscGVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTIzZjRmYWIwM2ExNjM3MGM0YTkzMDA2ZGVmZTAxMmQ5YzY5MzJlN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDExOjM0OjI2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuaW5kZXggMTBiMTMwYTdiMjMwYi4uZjFmMGM1ODJkYjVkZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuQEAgLTUyOCw2ICs1MjgsMTIgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuIFx0aW50IHJldDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZuZl9jb25udHJhY2tfZXhwZWN0X2xvY2spO1xuK1x0aWYgKGV4cGVjdC1cdTAwM2VmbGFncyBcdTAwMjYgTkZfQ1RfRVhQRUNUX0RFQUQpIHtcbitcdFx0REVCVUdfTkVUX1dBUk5fT05fT05DRSgxKTtcbitcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4gXHRtYXN0ZXJfaGVscCA9IG5mY3RfaGVscChleHBlY3QtXHUwMDNlbWFzdGVyKTtcbiBcdGlmICghbWFzdGVyX2hlbHApIHtcbiBcdFx0cmV0ID0gLUVTSFVURE9XTjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjI4LjIwNjM5NzE5OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzYwOTcyMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29ubnRyYWNrIEV4cGVjdCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2AuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gdGhlIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgbm93IGNoZWNraW5nIGlmIHRoZSBgZXhwZWN0YCBlbnRyeSBoYXMgdGhlIGBORl9DVF9FWFBFQ1RfREVBRGAgZmxhZyBzZXQuIElmIGl0ICppcyogc2V0LCBhIHdhcm5pbmcgaXMgdHJpZ2dlcmVkIHdpdGggYERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSlgLCBhbiBlcnJvciBjb2RlIGAtRUlOVkFMYCBpcyByZXR1cm5lZCwgYW5kIHRoZW4gdGhlIGZ1bmN0aW9uIGV4aXRzLlxuXG5UaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYXMgdGhleSBhcmUgYWRkaW5nIGEgbmV3IGNoZWNrIGluIHRoYXQgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0IHdpbGwgYWZmZWN0IGhvdyB0aGluZ3Mgd29yay5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBgbmZfY29ubnRyYWNrX2V4cGVjdC5jYCBtb2R1bGUgYW5kIGl0cyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgY29ubnRyYWNrIHN5c3RlbS4gVGhpcyB3aWxsIGhlbHAgbWUgZXZhbHVhdGUgdGhlIGltcGFjdCBvZiB0aGlzIG5ldyBjaGVjayBhbmQgaXRzIGltcGxpY2F0aW9ucyBvbiB0aGUgb3ZlcmFsbCBjb25uZWN0aW9uIHRyYWNraW5nIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzQ6MzIuNjQyNDk3MjExWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjAwNjg4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmM9NDY1PXN0YXRpYyBpbmxpbmUgaW50IF9fbmZfY3RfZXhwZWN0X2NoZWNrKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01MjMtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmM6NTI0OmludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01MjUtXFx0XFx0XFx0XFx0dTMyIHBvcnRpZCwgaW50IHJlcG9ydCwgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtNTU3LX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYzo1NTg6RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01NTktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mjg1Nj1jdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0KGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yODkyLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyODkzOlxcdGVyciA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChleHAsIHBvcnRpZCwgcmVwb3J0LCAwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg5NC1cXHRuZl9jdF9leHBlY3RfcHV0KGV4cCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzU5Nj1jdG5ldGxpbmtfY3JlYXRlX2V4cGVjdChzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzYzMy1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzYzNDpcXHRlcnIgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoZXhwLCBwb3J0aWQsIHJlcG9ydCwgMCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM2MzUtXFx0bmZfY3RfZXhwZWN0X3B1dChleHApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDozMi43NDQ1MTA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk0Mzc3MzI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MgcmVnYXJkaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2AsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIERlZXAgaW50byBgbmZfY29ubnRyYWNrX2V4cGVjdC5jYCBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlbGV2YW50IGZvciBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbm90IGp1c3QgYmxpbmRseSBsb29rIGF0IHRoZSBjb2RlLCBidXQgdG8gY29uc2lkZXIgdGhlICpwdXJwb3NlKiBvZiB0aGlzIGZpbGUgd2l0aGluIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIGZyYW1ld29yay4gRXhwZWN0YXRpb25zLCBlc3NlbnRpYWxseSwgYXJlIGFib3V0IGhhbmRsaW5nIHJlbGF0ZWQgY29ubmVjdGlvbnMsIHJpZ2h0PyBUaGluayBGVFAgZGF0YSBjb25uZWN0aW9ucywgb3IgU0lQIHNpZ25hbGluZyBhbmQgbWVkaWEuIFRoZXJlZm9yZSwgYW55IGNvbmZpZ3VyYXRpb25zIGFmZmVjdGluZyBob3cgdGhlIGtlcm5lbCBoYW5kbGVzIHRoZXNlIFwiZXhwZWN0ZWRcIiBmbG93cyBhcmUgZ29pbmcgdG8gYmUgbXkgcHJpbWFyeSBpbnRlcmVzdC5cblxuSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqU2l6ZSBhbmQgTWVtb3J5IEFsbG9jYXRpb246KiogQXJlIHRoZXJlIGxpbWl0cyBvbiB0aGUgbnVtYmVyIG9mIGV4cGVjdGVkIGNvbm5lY3Rpb25zIHRoYXQgY2FuIGJlIHRyYWNrZWQ/IEFyZSB0aGVyZSBjb25maWd1cmFibGUgcGFyYW1ldGVycyB0aGF0IGNvbnRyb2wgdGhlIGhhc2ggdGFibGUgc2l6ZSBvciB0aGUgbWVtb3J5IHVzZWQgdG8gc3RvcmUgdGhlc2UgZXhwZWN0ZWQgY29ubmVjdGlvbnM/IEhvdyBhcmUgdGhlc2UgcG90ZW50aWFsbHkgdHVuZWQ/IFRoaXMgd291bGQgYmUga2V5IGZvciBwZXJmb3JtYW5jZSB1bmRlciBsb2FkLlxuKiAgICoqVGltZW91dCBWYWx1ZXM6KiogQ29ubmVjdGlvbiB0cmFja2luZyBoYXMgdGltZW91dHM7IGhvdyBhZ2dyZXNzaXZlbHkgY2FuIHRoZXNlIGJlIGNvbmZpZ3VyZWQ/IFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaW1wcm9wZXIgY29uZmlndXJhdGlvbiBtaWdodCBjYXVzZSBleGNlc3NpdmUgcmVzb3VyY2UgdXNhZ2Ugb3IgZHJvcCBsZWdpdGltYXRlIGNvbm5lY3Rpb25zLlxuKiAgICoqUHJvdG9jb2wtU3BlY2lmaWMgT3B0aW9uczoqKiBJcyB0aGVyZSBhbnl0aGluZyBzcGVjaWZpYyB0bywgc2F5LCBGVFAgb3IgU0lQIGV4cGVjdGF0aW9uIGhhbmRsaW5nPyBGbGFncyB0byBlbmFibGUvZGlzYWJsZSBzcGVjaWZpYyBiZWhhdmlvcnMgb3IgYWRqdXN0bWVudHMgdG8gaG93IHRoZSBleHBlY3RhdGlvbiBzdGF0ZXMgYXJlIG1hbmFnZWQgZm9yIGRpZmZlcmVudCBwcm90b2NvbHM/XG4qICAgKipEZWJ1Z2dpbmcgYW5kIExvZ2dpbmc6KiogQXJlIHRoZXJlIGRlYnVnIG9wdGlvbnMgdG8gZW5hYmxlIG1vcmUgdmVyYm9zZSBsb2dnaW5nIGFib3V0IGV4cGVjdGF0aW9uIGV2ZW50cz8gVGhpcyB3b3VsZCBiZSBjcml0aWNhbCBmb3IgdHJvdWJsZXNob290aW5nIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXNzdWVzLlxuKiAgICoqSW50ZXJmYWNlIEZpbHRlcmluZzoqKiBJJ2QgZXhwZWN0IHRoZXJlIHRvIGJlIHNvbWUgZGVncmVlIG9mIGNvbnRyb2wgb3ZlciB3aGljaCBpbnRlcmZhY2VzIGFuZCBuZXRmaWx0ZXIgaG9va3MgdGhpcyBtb2R1bGUgYWN0cyBvbi4gQ29uZmlndXJhdGlvbiB0aGF0IGxldHMgeW91IGZpbmUtdHVuZSB0aGVzZSB3b3VsZCBiZSB2YWx1YWJsZS5cbiogICAqKkNvbmN1cnJlbmN5L0xvY2tpbmc6KiogS25vd2luZyB0aGlzIGlzIGtlcm5lbC1sZXZlbCBjb2RlLCBJ4oCZbGwgbmVlZCB0byB1bmRlcnN0YW5kIGFueSBsb2NraW5nIG1lY2hhbmlzbXMgb3IgY29uY3VycmVuY3kgY29uc2lkZXJhdGlvbnMuIENvbmZpZ3VyYXRpb24gbWlnaHQgc3VidGx5IGluZmx1ZW5jZSB0aGVzZSwgZm9yIGluc3RhbmNlLCBieSBjb250cm9sbGluZyB0aHJlYWQgY291bnRzIG9yIHVzaW5nIGRpZmZlcmVudCBsb2NraW5nIHN0cmF0ZWdpZXMuXG4qICAgKipFcnJvciBIYW5kbGluZyBhbmQgR3JhY2VmdWwgRGVncmFkYXRpb246KiogSG93IHJvYnVzdCBpcyB0aGlzIGNvZGU/IFdoYXQgaGFwcGVucyBpZiBhbiBleHBlY3RhdGlvbiB0YWJsZSBmaWxscyB1cD8gQXJlIHRoZXJlIGFueSBjb25maWd1cmF0aW9ucyB0aGF0IGFsbG93IGZvciBncmFjZWZ1bCBoYW5kbGluZyBvZiByZXNvdXJjZSBjb25zdHJhaW50cz9cblxuRXNzZW50aWFsbHksIEknbSBleHBlY3RpbmcgdGhpcyBmaWxlIHRvIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIG9yIG1vZGlmeWluZyBleHBlY3RhdGlvbnMuIFRoaXMgcmVxdWlyZXMgdW5kZXJzdGFuZGluZyBwYXJhbWV0ZXJzIHJlbGF0ZWQgdG8gbWVtb3J5LCB0aW1lb3V0cywgcHJvdG9jb2wgaGFuZGxpbmcsIGRlYnVnL2xvZ2dpbmcsIGFuZCBzZWN1cml0eS4gSSdsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGVzZSBvcHRpb25zIGNhbiBiZSB1c2VkIHRvIG9wdGltaXplIGFuZCB0cm91Ymxlc2hvb3QgY29ubmVjdGlvbiB0cmFja2luZyBmb3IgcmVhbC13b3JsZCBzY2VuYXJpb3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDozNy42ODgyODYxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjQ5NzY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfZXhwZWN0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0zPW5ldGZpbHRlci0kKENPTkZJR19ORVRGSUxURVJfTkVUTElOSykgKz0gbmZuZXRsaW5rLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTQtXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo1Om5mX2Nvbm50cmFjay15XFx0Oj0gbmZfY29ubnRyYWNrX2NvcmUubyBuZl9jb25udHJhY2tfc3RhbmRhbG9uZS5vIG5mX2Nvbm50cmFja19leHBlY3QubyBuZl9jb25udHJhY2tfaGVscGVyLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtNi1cXHRcXHQgICBuZl9jb25udHJhY2tfcHJvdG8ubyBuZl9jb25udHJhY2tfcHJvdG9fZ2VuZXJpYy5vIG5mX2Nvbm50cmFja19wcm90b190Y3AubyBuZl9jb25udHJhY2tfcHJvdG9fdWRwLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDozNy43ODA3ODgzNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NTc3ODAxMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlciBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBuZl9jb25udHJhY2sgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEknbSBkaXZpbmcgaW50byB0aGlzLiBUaGUgcGllY2UgSSdtIGxvb2tpbmcgYXQsIHRoaXMgY29kZSBvciBtb2R1bGUsIGlzIGNsZWFybHkgcGFydCBvZiBgbmZfY29ubnRyYWNrYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMsIGxldCdzIG5haWwgZG93biB3aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIG9yIG9wdGlvbnMgYXJlIHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGBuZl9jb25udHJhY2tgIGZyYW1ld29yay4gVGltZSB0byB0cmFjZSBiYWNrIHRocm91Z2ggdGhlIGtlcm5lbCBjb25maWcgYW5kIHNlZSB3aGF0IGZsYWdzIGxpZ2h0IHRoaXMgdXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBidWlsZCBwcm9jZXNzIGFyb3VuZCBpdC4gTGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZXMgcmV2ZWFsLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBhIHNwZWNpZmljIGBDT05GSUdfYCBvcHRpb24sIG9yIHBvdGVudGlhbGx5IGEgY29tYmluYXRpb24gb2YgdGhlbSwgdGhhdCBnb3Zlcm5zIHRoZSBpbmNsdXNpb24gYW5kLCBieSBleHRlbnNpb24sIHRoZSBiZWhhdmlvciBvZiB0aGlzIHBhcnQgb2YgYG5mX2Nvbm50cmFja2AuIFRoZSBnb2FsIGlzIGEgY2xlYXIgdmlldyBvZiBpdHMgYnVpbGQgZGVwZW5kZW5jeSB0cmVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzUyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzQ6NDEuNzM4NTcxMjQyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMDM1MTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2Nvbm50cmFjay15XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9Mz1uZXRmaWx0ZXItJChDT05GSUdfTkVURklMVEVSX05FVExJTkspICs9IG5mbmV0bGluay5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS00LVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6NTpuZl9jb25udHJhY2steVxcdDo9IG5mX2Nvbm50cmFja19jb3JlLm8gbmZfY29ubnRyYWNrX3N0YW5kYWxvbmUubyBuZl9jb25udHJhY2tfZXhwZWN0Lm8gbmZfY29ubnRyYWNrX2hlbHBlci5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTYtXFx0XFx0ICAgbmZfY29ubnRyYWNrX3Byb3RvLm8gbmZfY29ubnRyYWNrX3Byb3RvX2dlbmVyaWMubyBuZl9jb25udHJhY2tfcHJvdG9fdGNwLm8gbmZfY29ubnRyYWNrX3Byb3RvX3VkcC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzQ6NDEuODA4NjExNTM1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMzAzMTY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkdyZXBwaW5nIGZvciBuZl9jb25udHJhY2subyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgXCJyaWdodCwgSSBuZWVkIHRvIGdldCBzdGFydGVkIG9uIHRoaXMuLi4gd2hhdGV2ZXIgaXQgaXMuIEFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgbmZfY29ubnRyYWNrLm9gIGJpdC4gSXQncyBhIGtlcm5lbCBtb2R1bGUsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdHJhY2tpbmcuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgSSdtIGRpdmluZyBpbnRvIHNvbWV0aGluZyBuZXR3b3JrLXJlbGF0ZWQuIFNvLCBsZXQncyBzdGFydCB3aXRoIGEgZ29vZCBvbGQgYGdyZXBgLiBHZXQgdGhlIHNlYXJjaCBnb2luZywgYW5kIHNlZSB3aGF0IHRoZSBzeXN0ZW0gaGFzIHRvIHNheSBhYm91dCB0aGF0IG1vZHVsZS4gU2VlIHdoZXJlIGl0J3MgcmVmZXJlbmNlZCwgaG93IGl0J3MgdXNlZCwgYW5kIHdoYXQgZmlsZXMgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCBpdC4gSXQncyBhIHByZXR0eSBzdGFuZGFyZCBmaXJzdCBtb3ZlIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6NDE3MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjQ1LjI0MTY0NjM5OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ5NjI3NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0xND1uZl9jb25udHJhY2stJChDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMUykgKz0gbmZfY29ubnRyYWNrX2xhYmVscy5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxNTpuZl9jb25udHJhY2stJChDT05GSUdfTkZfQ09OTlRSQUNLX09WUykgKz0gbmZfY29ubnRyYWNrX292cy5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNi1uZl9jb25udHJhY2stJChDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUCkgKz0gbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAub1xcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0zMT1vYmotJChDT05GSUdfTkVURklMVEVSX05FVExJTktfSE9PSykgKz0gbmZuZXRsaW5rX2hvb2sub1xcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zMy0jIGNvbm5lY3Rpb24gdHJhY2tpbmdcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19ORl9DT05OVFJBQ0spICs9IG5mX2Nvbm50cmFjay5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0zNS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzQ6NDUuMzA2NjE2NDMyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTIzNjI1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgYSBOZXRmaWx0ZXIgQ29ubnRyYWNrIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIHRoYXQgYENPTkZJR19ORl9DT05OVFJBQ0tgIGlzIGRlZmluaXRlbHkgYSByZXF1aXJlbWVudCwgbm8gc3VycHJpc2VzIHRoZXJlLiBNeSBmb2N1cyBpcyBub3cgb24gdGhlIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGZ1bmN0aW9uLiBUaGlzIGlzIGtleS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQncyBiZWluZyAqY2FsbGVkKiBmcm9tLCB0byB0cmFjZSB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLlxuXG5SaWdodCwgYWNjb3JkaW5nIHRvIHRoZSBjb2RlLCBpdCdzIGNhbGxlZCBmcm9tIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YC4gQm90aCBvZiB0aG9zZSBhcmUgbG9jYXRlZCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIFNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb24gYWN0dWFsbHkgY29udHJvbHMgdGhlIGluY2x1c2lvbiBvZiBgbmZfY29ubnRyYWNrX25ldGxpbmsuY2AuIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkZXBlbmRlbmN5IGNoYWluIGFuZCBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucy4gSSBuZWVkIHRvIGZpbmQgdGhlIHNwZWNpZmljIEtjb25maWcgc3ltYm9sIHRoYXQgZW5hYmxlcyB0aGF0IGZpbGUgdG8gYmUgY29tcGlsZWQgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MDEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDo0OS4wOTg5ODA5NzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjY4ODc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jb25udHJhY2tfbmV0bGluay5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDSykgKz0gbmZfY29ubnRyYWNrLm9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMzYtIyBuZXRsaW5rIGludGVyZmFjZSBmb3IgbmZfY29ubnRyYWNrXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfTkZfQ1RfTkVUTElOSykgKz0gbmZfY29ubnRyYWNrX25ldGxpbmsub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMzgtb2JqLSQoQ09ORklHX05GX0NUX05FVExJTktfVElNRU9VVCkgKz0gbmZuZXRsaW5rX2N0dGltZW91dC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjQ5LjI5MTY3NjE2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDIwNDcxNDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBjbGVhciB0aGF0IGBDT05GSUdfTkZfQ1RfTkVUTElOS2AgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGhlcmUuIE5vIHN1cnByaXNlcyB0aGVyZSwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIGRlcGVuZGVuY2llcy4gTm93LCBJJ20gc3BvdHRpbmcgdGhhdCBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCBpcyBhbHNvIGJlaW5nIGV4cG9ydGVkLiBUaGF0J3MgYSBiaXQgaW50ZXJlc3Rpbmc7IEkgd29uZGVyIGlmIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgdXRpbGl6ZWQgb3V0c2lkZSBvZiBpdHMgaW1tZWRpYXRlIGludGVuZGVkIHB1cnBvc2U/IFRpbWUgdG8gZGVsdmUgYSBiaXQgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjYWxsIHNpdGVzLCBvciBpZiB0aGlzIGV4cG9ydCBpcyBwb3RlbnRpYWxseSBvdmVyLWJyb2FkLiBHb3R0YSBjaGVjayBmb3IgYW55IHVuZm9yZXNlZW4gc2lkZS1lZmZlY3RzIG9mIHJlbHlpbmcgb24gdGhhdCBwYXJ0aWN1bGFyIHN5bWJvbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA3OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM0OjUyLjcxMjE1MDg1NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU3MjM0MzQwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg9MTU4PXZvaWQgbmZfY3RfZXhwZWN0X3B1dChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwKTtcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oOjE1OTppbnQgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaC0xNjAtXFx0XFx0XFx0XFx0dTMyIHBvcnRpZCwgaW50IHJlcG9ydCwgdW5zaWduZWQgaW50IGZsYWdzKTtcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oPTE2MT1zdGF0aWMgaW5saW5lIGludCBuZl9jdF9leHBlY3RfcmVsYXRlZChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxcbi0tXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaC0xNjMte1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg6MTY0OlxcdHJldHVybiBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoZXhwZWN0LCAwLCAwLCBmbGFncyk7XFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaC0xNjUtfVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmM9NDY1PXN0YXRpYyBpbmxpbmUgaW50IF9fbmZfY3RfZXhwZWN0X2NoZWNrKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01MjMtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmM6NTI0OmludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01MjUtXFx0XFx0XFx0XFx0dTMyIHBvcnRpZCwgaW50IHJlcG9ydCwgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMtNTU3LX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYzo1NTg6RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYy01NTktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9Mjg1Nj1jdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0KGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yODkyLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyODkzOlxcdGVyciA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChleHAsIHBvcnRpZCwgcmVwb3J0LCAwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjg5NC1cXHRuZl9jdF9leHBlY3RfcHV0KGV4cCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM9MzU5Nj1jdG5ldGxpbmtfY3JlYXRlX2V4cGVjdChzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMzYzMy1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmM6MzYzNDpcXHRlcnIgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoZXhwLCBwb3J0aWQsIHJlcG9ydCwgMCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jLTM2MzUtXFx0bmZfY3RfZXhwZWN0X3B1dChleHApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNDo1NS4yODQ1MDAxODZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2NzkwNTk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBFeHBlY3RhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBuZl9jdF9leHBlY3RfcmVsYXRlZGAgZnVuY3Rpb24uIFRoZSBjb2RlIHNheXMgaXQncyBhbiBpbmxpbmUgc3RhdGljIGZ1bmN0aW9uLCB0dWNrZWQgYXdheSBpbiBgaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaGAuIFRoYXQgdGVsbHMgbWUgaXQncyBsaWtlbHkgYSByZWxhdGl2ZWx5IGZyZXF1ZW50bHkgdXNlZCBoZWxwZXIsIHByb2JhYmx5IG9wdGltaXplZCBmb3Igc3BlZWQgc2luY2UgaXQncyBpbmxpbmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCwgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSAqdXNlZCouIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZW50cnkgcG9pbnRzIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgY29udGV4dC4gTGV0IG1lIHRyYWNlIHRoZSBjYWxscyB0byBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRgIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBpdHMgcm9sZSB3aXRoaW4gdGhlIE5ldGZpbHRlciBjb25udHJhY2sgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDg3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzQ6NTkuOTUyNDEwOTUyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDMxNDQ3NTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2N0X2V4cGVjdF9yZWxhdGVkXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg9MTU5PWludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oLTE2MC1cXHRcXHRcXHRcXHR1MzIgcG9ydGlkLCBpbnQgcmVwb3J0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpO1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0Lmg6MTYxOnN0YXRpYyBpbmxpbmUgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXFxuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaC0xNjItXFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBmbGFncylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19uZmN0LmM9MjEwPXZvaWQgaXBfdnNfbmZjdF9leHBlY3RfcmVsYXRlZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbmZjdC5jLTIzMi1cXHRcXHQgICAgICBfX2Z1bmNfXywgY3QsIEFSR19UVVBMRShcXHUwMDI2ZXhwLVxcdTAwM2V0dXBsZSkpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19uZmN0LmM6MjMzOlxcdG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX25mY3QuYy0yMzQtXFx0bmZfY3RfZXhwZWN0X3B1dChleHApO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM9ODM9c3RhdGljIGludCBhbWFuZGFfaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmMtMTU1LVxcdFxcdFxcdFxcdFxcdCAgICBvZmYgLSBkYXRhb2ZmLCBsZW4sIGV4cCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfYW1hbmRhLmM6MTU2OlxcdFxcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2FtYW5kYS5jLTE1Ny1cXHRcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYz0xOT1pbnQgbmZfY29ubnRyYWNrX2Jyb2FkY2FzdF9oZWxwKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYy04Ny1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19icm9hZGNhc3QuYzo4ODpcXHRuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Jyb2FkY2FzdC5jLTg5LVxcdG5mX2N0X2V4cGVjdF9wdXQoZXhwKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jPTM2MT1zdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jLTUyMS1cXHRcXHQvKiBDYW4ndCBleHBlY3QgdGhpcz8gIEJlc3QgdG8gZHJvcCBwYWNrZXQgbm93LiAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2Z0cC5jOjUyMjpcXHRcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZnRwLmMtNTIzLVxcdFxcdFxcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXFxcImNhbm5vdCBhZGQgZXhwZWN0YXRpb25cXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jPTIwOT1zdGF0aWMgaW50IGV4cGVjdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0yNjItXFx0fSBlbHNlIHtcXHRcXHQvKiBDb25udHJhY2sgb25seSAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjI2MzpcXHRcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCwgMCkgPT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjI2NDpcXHRcXHRcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsIDApID09IDApIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0yNjUtXFx0XFx0XFx0XFx0cHJfZGVidWcoXFxcIm5mX2N0X2gzMjM6IGV4cGVjdCBSVFAgXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0yODM9c3RhdGljIGludCBleHBlY3RfdDEyMChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMzIyLVxcdH0gZWxzZSB7XFx0XFx0LyogQ29ubnRyYWNrIG9ubHkgKi9cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzozMjM6XFx0XFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgPT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTMyNC1cXHRcXHRcXHRwcl9kZWJ1ZyhcXFwibmZfY3RfaDMyMzogZXhwZWN0IFQuMTIwIFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9NjE4PXN0YXRpYyBpbnQgZXhwZWN0X2gyNDUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNjU1LVxcdH0gZWxzZSB7XFx0XFx0LyogQ29ubnRyYWNrIG9ubHkgKi9cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzo2NTY6XFx0XFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgPT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTY1Ny1cXHRcXHRcXHRwcl9kZWJ1ZyhcXFwibmZfY3RfcTkzMTogZXhwZWN0IEguMjQ1IFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9NzM1PXN0YXRpYyBpbnQgZXhwZWN0X2NhbGxmb3J3YXJkaW5nKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy03ODMtXFx0fSBlbHNlIHtcXHRcXHQvKiBDb25udHJhY2sgb25seSAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjc4NDpcXHRcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSA9PSAwKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtNzg1LVxcdFxcdFxcdHByX2RlYnVnKFxcXCJuZl9jdF9xOTMxOiBleHBlY3QgQ2FsbCBGb3J3YXJkaW5nIFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTE4Mz1zdGF0aWMgaW50IGV4cGVjdF9xOTMxKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyMjctXFx0fSBlbHNlIHtcXHRcXHQvKiBDb25udHJhY2sgb25seSAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jOjEyMjg6XFx0XFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgPT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyMjktXFx0XFx0XFx0cHJfZGVidWcoXFxcIm5mX2N0X3JhczogZXhwZWN0IFEuOTMxIFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTI2Mz1zdGF0aWMgaW50IHByb2Nlc3NfZ2NmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTEyOTUtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTI5NjpcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSA9PSAwKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTI5Ny1cXHRcXHRwcl9kZWJ1ZyhcXFwibmZfY3RfcmFzOiBleHBlY3QgUkFTIFxcXCIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM9MTQ4Nj1zdGF0aWMgaW50IHByb2Nlc3NfYWNmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfbWFpbi5jLTE1MjQtXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmM6MTUyNTpcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSA9PSAwKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTUyNi1cXHRcXHRwcl9kZWJ1ZyhcXFwibmZfY3RfcmFzOiBleHBlY3QgUS45MzEgXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYz0xNTUzPXN0YXRpYyBpbnQgcHJvY2Vzc19sY2Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMtMTU3OC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYzoxNTc5OlxcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApID09IDApIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYy0xNTgwLVxcdFxcdHByX2RlYnVnKFxcXCJuZl9jdF9yYXM6IGV4cGVjdCBRLjkzMSBcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jPTk3PXN0YXRpYyBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2lyYy5jLTIzNy1cXHRcXHRcXHRcXHRcXHRcXHQgZXhwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19pcmMuYzoyMzg6XFx0XFx0XFx0ZWxzZSBpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaXJjLmMtMjM5LVxcdFxcdFxcdFxcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3BwdHAuYz0xMjg9c3RhdGljIGludCBleHBfZ3JlKHN0cnVjdCBuZl9jb25uICpjdCwgX19iZTE2IGNhbGxpZCwgX19iZTE2IHBlZXJfY2FsbGlkKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHB0cC5jLTE2My1cXHRcXHRob29rLVxcdTAwM2VleHBfZ3JlKGV4cF9vcmlnLCBleHBfcmVwbHkpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3BwdHAuYzoxNjQ6XFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cF9vcmlnLCAwKSAhPSAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3BwdHAuYy0xNjUtXFx0XFx0Z290byBvdXRfcHV0X2JvdGg7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHB0cC5jOjE2NjpcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwX3JlcGx5LCAwKSAhPSAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3BwdHAuYy0xNjctXFx0XFx0Z290byBvdXRfdW5leHBlY3Rfb3JpZztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NhbmUuYz01Mz1zdGF0aWMgaW50IGhlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NhbmUuYy0xNTctXFx0LyogQ2FuJ3QgZXhwZWN0IHRoaXM/ICBCZXN0IHRvIGRyb3AgcGFja2V0IG5vdy4gKi9cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zYW5lLmM6MTU4OlxcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zYW5lLmMtMTU5LVxcdFxcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXFxcImNhbm5vdCBhZGQgZXhwZWN0YXRpb25cXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jPTkyMz1zdGF0aWMgaW50IHNldF9leHBlY3RlZF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTEwNjYtXFx0XFx0ICovXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmM6MTA2NzpcXHRcXHRpbnQgZXJycCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0cF9leHAsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmMtMTA2OC1cXHRcXHRcXHRcXHRcXHRcXHRORl9DVF9FWFBfRl9TS0lQX01BU1RFUik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYy0xMDcwLVxcdFxcdGlmIChlcnJwID09IDAgfHwgZXJycCA9PSAtRUFMUkVBRFkpIHtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYzoxMDcxOlxcdFxcdFxcdGludCBlcnJjcCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0Y3BfZXhwLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTEwNzItXFx0XFx0XFx0XFx0XFx0XFx0TkZfQ1RfRVhQX0ZfU0tJUF9NQVNURVIpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmM9MTMyMz1zdGF0aWMgaW50IHByb2Nlc3NfcmVnaXN0ZXJfcmVxdWVzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jLTE0MTgtXFx0ZWxzZSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmM6MTQxOTpcXHRcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKSB7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmMtMTQyMC1cXHRcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja190ZnRwLmM9MzI9c3RhdGljIGludCB0ZnRwX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYy03Mi1cXHRcXHRcXHRyZXQgPSBuZl9uYXRfdGZ0cChza2IsIGN0LCBjdGluZm8sIGV4cCk7XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfdGZ0cC5jOjczOlxcdFxcdGVsc2UgaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3RmdHAuYy03NC1cXHRcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9oZWxwZXIuYz0yMDI9dTE2IG5mX25hdF9leHBfZmluZF9wb3J0KHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHAsIHUxNiBwb3J0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfaGVscGVyLmMtMjE4LVxcdFxcdGV4cC1cXHUwMDNldHVwbGUuZHN0LnUudGNwLnBvcnQgPSBodG9ucyhwb3J0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9oZWxwZXIuYzoyMTk6XFx0XFx0cmVzID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKTtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9oZWxwZXIuYy0yMjAtXFx0XFx0aWYgKHJlcyA9PSAwKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jPTIzPXN0YXRpYyB1bnNpZ25lZCBpbnQgaGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9uYXRfdGZ0cC5jLTMxLVxcdGV4cC1cXHUwMDNlZXhwZWN0Zm4gPSBuZl9uYXRfZm9sbG93X21hc3RlcjtcXG5uZXQvbmV0ZmlsdGVyL25mX25hdF90ZnRwLmM6MzI6XFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkge1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X3RmdHAuYy0zMy1cXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgYWRkIGV4cGVjdGF0aW9uXFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMTE9c3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzYyLSNlbmRpZlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTM2MzpcXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM2NC1cXHRcXHRyZWdzLVxcdTAwM2V2ZXJkaWN0LmNvZGUgPSBORl9EUk9QO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTowMi45ODM4NjUwMjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwODgyMDY3MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIENvbm50cmFjayBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBwcmV0dHkgaW50ZXJlc3RpbmcgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAuIEl0J3MgZXNzZW50aWFsbHkgYSBjaGVjayBmb3IgYE5GX0NUX0VYUEVDVF9ERUFEYCB3aXRoaW4gYSBzcGlubG9jaywgcHJldmVudGluZyB0aGUgYWRkaXRpb24gb2YgYSBcImRlYWRcIiBleHBlY3RhdGlvbi4gVGhpcyBpcyBjbGVhcmx5IGEgY3JpdGljYWwgZnVuY3Rpb24gd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29ubnRyYWNrIHN5c3RlbSwgc28gaXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0byBnaXZlIGEgY2xvc2VyIGxvb2suXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIGlzIHRoaXMgc29tZXRoaW5nIHdlIHNob3VsZCBmdXp6PyBBYnNvbHV0ZWx5LCBpdCdzIGNvcmUgZnVuY3Rpb25hbGl0eS5cblxuTGV0J3MgZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFdlbGwsIG9idmlvdXNseSBgQ09ORklHX05GX0NPTk5UUkFDS2AgaXMgbmVlZGVkLCB0aGF0J3MgYSBnaXZlbi4gVGhlbiBJIHNlZSBgQ09ORklHX05GX0NUX05FVExJTktgIGlzIGFsc28gbmVlZGVkIGZvciBjYWxscyBsaWtlIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YCwgc28gdGhhdCdzIGFub3RoZXIgcHJlcmVxdWlzaXRlLlxuXG5Ob3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIGltcGFjdC4gTG9va2luZyBhdCB0aGUgY2FsbCBncmFwaCwgaXQgbG9va3MgbGlrZSBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCBpcyBhbHNvIGNhbGxlZCBieSBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRgLCB3aGljaCBpcyBjYWxsZWQgYnkgc28gbWFueSBvZiB0aGUgaGVscGVyIG1vZHVsZXMuIEkgbmVlZCB0byB0ZXN0IHRoYXQgdG8gY29uZmlybSB0aGlzIGNoYW5nZSBkb2Vzbid0IGJyZWFrIGFueXRoaW5nLiBTbywgYENPTkZJR19ORl9DT05OVFJBQ0tfRlRQYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfU0lQYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfSVJDYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfQU1BTkRBYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfSDMyM2AsIGBDT05GSUdfTkZfQ09OTlRSQUNLX1BQVFBgLCBgQ09ORklHX05GX0NPTk5UUkFDS19TQU5FYCwgYENPTkZJR19ORl9DT05OVFJBQ0tfVEZUUGAsIGFuZCBgQ09ORklHX05GX0NPTk5UUkFDS19CUk9BRENBU1RgIGFyZSBhbGwgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIHRlc3RpbmcuXG5cbkknbGwgZG91YmxlLWNoZWNrIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlc2UgY29uZmlndXJhdGlvbnMuIFRoZW4gSSdsbCBoYXZlIGEgZ29vZCBpZGVhIG9mIHdoYXQgSSdtIGRlYWxpbmcgd2l0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMjYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6MTQuMDcyMDczODM0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDUwOTY2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NPTk5UUkFDS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzQ9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX09TRlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgxLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mjpjb25maWcgTkZfQ09OTlRSQUNLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTExMT1jb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBORl9DT05OVFJBQ0tfTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTUtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gbWFyayB0cmFja2luZyBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0VDTUFSS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXFx0Ym9vbCAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgc2VjdXJpdHkgbWFyayBzdXBwb3J0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEzNS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTM2OmNvbmZpZyBORl9DT05OVFJBQ0tfWk9ORVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTM3LVxcdGJvb2wgICdDb25uZWN0aW9uIHRyYWNraW5nIHpvbmVzJ1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTQ4OmNvbmZpZyBORl9DT05OVFJBQ0tfUFJPQ0ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE0OS1cXHRib29sIFxcXCJTdXBwbHkgQ1QgbGlzdCBpbiBwcm9jZnMgKE9CU09MRVRFKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTYtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjE1Nzpjb25maWcgTkZfQ09OTlRSQUNLX0VWRU5UU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTgtXFx0Ym9vbCBcXFwiQ29ubmVjdGlvbiB0cmFja2luZyBldmVudHNcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjc6Y29uZmlnIE5GX0NPTk5UUkFDS19USU1FT1VUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2OC1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lb3V0J1xcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTc3OmNvbmZpZyBORl9DT05OVFJBQ0tfVElNRVNUQU1QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE3OC1cXHRib29sICAnQ29ubmVjdGlvbiB0cmFja2luZyB0aW1lc3RhbXBpbmcnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg3LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxODg6Y29uZmlnIE5GX0NPTk5UUkFDS19MQUJFTFNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTg5LVxcdGJvb2wgXFxcIkNvbm5lY3Rpb24gdHJhY2tpbmcgbGFiZWxzXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5NC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTk1OmNvbmZpZyBORl9DT05OVFJBQ0tfT1ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE5Ni1cXHRib29sXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MjAxPWNvbmZpZyBORl9DVF9QUk9UT19TQ1RQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjExLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMTI6Y29uZmlnIE5GX0NPTk5UUkFDS19BTUFOREFcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjEzLVxcdHRyaXN0YXRlIFxcXCJBbWFuZGEgYmFja3VwIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMjc6Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjI4LVxcdHRyaXN0YXRlIFxcXCJGVFAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMzgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjQwLVxcdHRyaXN0YXRlIFxcXCJILjMyMyBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1Ny1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MjU4OmNvbmZpZyBORl9DT05OVFJBQ0tfSVJDXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI1OS1cXHR0cmlzdGF0ZSBcXFwiSVJDIERDQyBwcm90b2NvbCBzdXBwb3J0IChvYnNvbGV0ZSlcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjczLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyNzQ6Y29uZmlnIE5GX0NPTk5UUkFDS19CUk9BRENBU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjc1LVxcdHRyaXN0YXRlXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI3Ni1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6Mjc3OmNvbmZpZyBORl9DT05OVFJBQ0tfTkVUQklPU19OU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yNzgtXFx0dHJpc3RhdGUgXFxcIk5ldEJJT1MgbmFtZSBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjk1LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyOTY6Y29uZmlnIE5GX0NPTk5UUkFDS19TTk1QXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTI5Ny1cXHR0cmlzdGF0ZSBcXFwiU05NUCBzZXJ2aWNlIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzEwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozMTE6Y29uZmlnIE5GX0NPTk5UUkFDS19QUFRQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTMxMi1cXHR0cmlzdGF0ZSBcXFwiUFB0UCBwcm90b2NvbCBzdXBwb3J0IChkZXByZWNhdGVkKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zMjktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjMzMDpjb25maWcgTkZfQ09OTlRSQUNLX1NBTkVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzMxLVxcdHRyaXN0YXRlIFxcXCJTQU5FIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNDM6Y29uZmlnIE5GX0NPTk5UUkFDS19TSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzQ0LVxcdHRyaXN0YXRlIFxcXCJTSVAgcHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNTQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM1NTpjb25maWcgTkZfQ09OTlRSQUNLX1RGVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzU2LVxcdHRyaXN0YXRlIFxcXCJURlRQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjE0LjE3NzE3NTQwM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzc2NjIzNTkyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5GX0NUX05FVExJTksgQ2hlY2stSW4qKlxuXG5SaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgYE5GX0NUX05FVExJTktgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW50YWwgbW9kZWwgb2YgaXRzIGN1cnJlbnQgc3RhdGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHZlcmlmeSB0aGUgcmVjZW50IGFjdGl2aXR5LCBzcGVjaWZpY2FsbHkgYW55IHBhdGNoZXMgb3IgYnVnIGZpeGVzIHRoYXQgaGF2ZSB0b3VjaGVkIGl0IGluIHRoZSBsYXN0IGZldyBtb250aHMuIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUgYW55IGxpbmdlcmluZyBxdWVzdGlvbnMgb24gdGhlIG1haWxpbmcgbGlzdHMgSSBuZWVkIHRvIGFkZHJlc3Mgb3IgZm9sbG93IHVwIG9uIHJlbGF0ZWQgdG8gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgTkVUTElOSyBpbnRlcmZhY2UuIEkgc2hvdWxkIHZlcmlmeSB0aGF0IHRoZSByZWNlbnQgY2hhbmdlcyBkaWQgbm90IGJyZWFrIGFueXRoaW5nIGFuZCB0aGF0IHRoZSBuZXRsaW5rIG1lc3NhZ2VzIGFyZSBzdGlsbCB2YWxpZC4gSSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlY2VudCBrZXJuZWwgdmVyc2lvbiBpcyBzdGlsbCBjb21wYXRpYmxlLiBJIHNob3VsZCBxdWlja2x5IGNoZWNrIHRoZSBjb21taXQgbG9ncyBhbmQgYW55IHJlbGF0ZWQgZG9jdW1lbnRhdGlvbi4gVGltZSB0byBzZWUgaWYgYW55IG9mIHRoZSByZWNlbnQgYWRkaXRpb25zIGFyZSBpbnRyb2R1Y2luZyBhbnkgbmV3IGNvbXBsZXhpdGllcyBvciBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIEZpbmFsbHksIEkgc2hvdWxkIGNvbnNpZGVyIGlmIGFueSBzaWduaWZpY2FudCBhcmNoaXRlY3R1cmFsIGRpc2N1c3Npb25zIGFyZSBhY3RpdmUgdGhhdCBtaWdodCBpbXBhY3QgZnV0dXJlIGRldmVsb3BtZW50IG9yIHBvdGVudGlhbCByZWZhY3RvcmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzNDUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNToyNy45NDM0MTQzMjFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDg0MjE4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ1RfTkVUTElOS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MzU1PWNvbmZpZyBORl9DT05OVFJBQ0tfVEZUUFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM2NS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzY2OmNvbmZpZyBORl9DVF9ORVRMSU5LXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM2Ny1cXHR0cmlzdGF0ZSAnQ29ubmVjdGlvbiB0cmFja2luZyBuZXRsaW5rIGludGVyZmFjZSdcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNzItXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM3Mzpjb25maWcgTkZfQ1RfTkVUTElOS19USU1FT1VUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZSAgJ0Nvbm5lY3Rpb24gdHJhY2tpbmcgdGltZW91dCB0dW5pbmcgdmlhIE5ldGxpbmsnXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozODU6Y29uZmlnIE5GX0NUX05FVExJTktfSEVMUEVSXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4Ni1cXHR0cmlzdGF0ZSAnQ29ubmVjdGlvbiB0cmFja2luZyBoZWxwZXJzIGluIHVzZXItc3BhY2UgdmlhIE5ldGxpbmsnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjI4LjE5NDI2MzM1NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDM4NjU3NzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBDb25uZWN0aW9uIFRyYWNraW5nIGZvciBOZXR3b3JrIEZpbHRlcmluZyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGNvbm5lY3Rpb24gdHJhY2tpbmcgY29kZS4uLiBJdCBsb29rcyBsaWtlIGBORl9DT05OVFJBQ0tgIGFuZCBgTkZfQ1RfTkVUTElOS2AgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgaGVyZS4gSSBzZWUgYSBidW5jaCBvZiBzcGVjaWZpYyBwcm90b2NvbHMgbWVudGlvbmVkLCBsaWtlIEZUUCwgU0lQLCBJUkMsIGFuZCBzbyBvbiwgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIG1vZHVsZXMg4oCTIGBORl9DT05OVFJBQ0tfRlRQYCwgYE5GX0NPTk5UUkFDS19TSVBgLCBldGMuIEhvd2V2ZXIsIGZvciBub3csIGxldCdzIGtlZXAgaXQgZm9jdXNlZCBhbmQganVzdCBjb25jZW50cmF0ZSBvbiB0aGUgcHJpbWFyeSBtb2R1bGVzOiBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX0NUX05FVExJTktgLlxuXG5NeSBwcmltYXJ5IGludGVyZXN0IHJpZ2h0IG5vdyBpcyB0aGUgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMga2V5LiBJIHNob3VsZCBhbHNvIGludmVzdGlnYXRlIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YCwgdGhleSBhcHBlYXIgcmVsZXZhbnQuIEhhbmcgb24uLi4gQXJlIGBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0YCBhbmQgYGN0bmV0bGlua19jcmVhdGVfZXhwZWN0YCBzdGF0aWM/IFllcywgdGhlIGNvbXBpbGVyIGNvbmZpcm1zIHRoZXkgYXJlLiBBbHJpZ2h0LCBzbyBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4gTGV0J3Mgc2VlIGlmIHRoaXMgaW5mbHVlbmNlcyBob3cgdGhleSdyZSB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgyNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTozNC42MzI5MjQyODFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NjQyNDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN0bmV0bGlua19nbHVlX2F0dGFjaF9leHBlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfbmV0bGluay5jPTI4NTU9c3RhdGljIGludFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyODU2OmN0bmV0bGlua19nbHVlX2F0dGFjaF9leHBlY3QoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yODU3LVxcdFxcdFxcdCAgICAgdTMyIHBvcnRpZCwgdTMyIHJlcG9ydClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYz0yOTA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZubF9jdF9ob29rIGN0bmV0bGlua19nbHVlX2hvb2sgPSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19uZXRsaW5rLmMtMjkxMC1cXHQucGFyc2VcXHRcXHQ9IGN0bmV0bGlua19nbHVlX3BhcnNlLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYzoyOTExOlxcdC5hdHRhY2hfZXhwZWN0XFx0PSBjdG5ldGxpbmtfZ2x1ZV9hdHRhY2hfZXhwZWN0LFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX25ldGxpbmsuYy0yOTEyLVxcdC5zZXFfYWRqdXN0XFx0PSBjdG5ldGxpbmtfZ2x1ZV9zZXFhZGosXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjM0LjcwMTU3MzM5NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODUwMDA1NDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGNvbmZpcm1pbmcgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IOKAkyB5ZXMsIHRoZSBjaGFuZ2VzIHNlZW0gdG8gYmUgcHJpbWFyaWx5IGNvbmZpbmVkIHRvIGEgc3RhdGljIHNjb3BlLiBNeSBhdHRlbnRpb24gaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGA7IHRoYXQgZnVuY3Rpb24gaXMgZXhwb3J0ZWQsIHdoaWNoIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmb2N1c2VkIGZ1enppbmcuXG5cbk15IG5leHQgc3RlcCBpcyB0byBzb2xpZGlmeSB0aGlzIGZvY3VzLiBJ4oCZbSBhc2tpbmcgbXlzZWxmLCBhcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyB0b3VjaGVkIGJ5IHRoaXMgcGF0Y2ggdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IE5vcGUsIGl0IGFwcGVhcnMgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgaXMgdGhlIGtleSBzeW1ib2wgdG8gdGFyZ2V0LlxuXG5Ob3csIHRvIGFzc2VzcyByZWFjaGFiaWxpdHkuIElzIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGFjdHVhbGx5IHVzZWQ/IEEgcXVpY2sgY2hlY2sgcmV2ZWFscyBpdCdzIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmsgYW5kIHZhcmlvdXMgY29ubnRyYWNrIGhlbHBlciBmdW5jdGlvbnMuIEV4Y2VsbGVudCwgdGhhdCBzdHJlbmd0aGVucyBteSBpbml0aWFsIGh5cG90aGVzaXMuXG5cblRoZSBwYXRjaCBpdHNlbGYgYXBwZWFycyB0byBhZGRyZXNzIHByZXZlbnRpb24gb2YgYWRkaW5nIGEgZGVhZCBleHBlY3RhdGlvbiwgYXMgSSBpbml0aWFsbHkgdGhvdWdodC4gSSdtIHNhdGlzZmllZDsgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBUaGVyZWZvcmUsIEkgd2lsbCBzZXQgYFdvcnRoRnV6emluZz10cnVlYC5cblxuRm9yIGZvY3VzZWQgZnV6emluZywgdGhlIGZvY3VzIHN5bWJvbCwgYXMgZXhwZWN0ZWQsIGlzIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLiBUbyBlbnN1cmUgdGhvcm91Z2ggY292ZXJhZ2UsIEknbGwgZW5hYmxlIHRoZSBmb2xsb3dpbmcgY29uZmlnczogYE5GX0NPTk5UUkFDS2AsIGBORl9DVF9ORVRMSU5LYC4gVG8gY292ZXIgdGhlIGhlbHBlcnMgdGhhdCBjYWxsIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLCBJIGFsc28gbmVlZCB0byBlbmFibGU6IGBORl9DT05OVFJBQ0tfRlRQYCwgYE5GX0NPTk5UUkFDS19TSVBgLCBgTkZfQ09OTlRSQUNLX0lSQ2AsIGBORl9DT05OVFJBQ0tfQU1BTkRBYCwgYE5GX0NPTk5UUkFDS19IMzIzYCwgYE5GX0NPTk5UUkFDS19QUFRQYCwgYE5GX0NPTk5UUkFDS19TQU5FYCwgYE5GX0NPTk5UUkFDS19URlRQYCwgYW5kIGBORl9DT05OVFJBQ0tfQlJPQURDQVNUYC4gVGhpcyB3aWxsIGVuc3VyZSBwcm9wZXIgY292ZXJhZ2Ugb2YgdGhlIGNvbm50cmFjayBoZWxwZXJzLCBhbmQgaGVscCBpbiBlZmZpY2llbnQgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NzcsIk91dHB1dFRva2VucyI6MTk5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDExOjM1OjQxLjU1MTU4MTg3N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDQ0NTYxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9DVF9ORVRMSU5LXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfRlRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0lQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfSVJDXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfQU1BTkRBXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfSDMyM1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1BQVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19TQU5FXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfVEZUUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0JST0FEQ0FTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGFkZGluZyBhIGRlYWQgZXhwZWN0YXRpb24gaW4gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgY29ubnRyYWNrIGxvZ2ljLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGFuZCB2YXJpb3VzIGNvbm50cmFjayBoZWxwZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkZfQ1RfTkVUTElOS1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0ZUUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NJUFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0lSQ1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0FNQU5EQVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19QUFRQXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0FORVwiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1RGVFBcIixcbiAgICBcIk5GX0NPTk5UUkFDS19CUk9BRENBU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBhZGRpbmcgYSBkZWFkIGV4cGVjdGF0aW9uIGluIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm50cmFjayBsb2dpYy4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBhbmQgdmFyaW91cyBjb25udHJhY2sgaGVscGVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6NDEuNjg2MDM0ODIzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDU0NzMyNjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6NDEuNjg2NDk5OTQzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjk0NTQyNjE5NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgdGhlIGBORl9DVF9FWFBFQ1RfREVBRGAgZmxhZyBpbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0YCB0byBwcmV2ZW50IG9wZXJhdGluZyBvbiBhIGRlYWQgY29ubnRyYWNrIGV4cGVjdGF0aW9uLiBUaGlzIGlzIGEgbG9naWNhbCBmaXggdG8gcHJldmVudCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIHN0YXRlIGJ1Z3MsIHdoaWNoIGFyZSB0eXBpY2FsbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVkIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEyM2Y0ZmFiMDNhMTYzNzBjNGE5MzAwNmRlZmUwMTJkOWM2OTMyZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxMTozNDoyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbmluZGV4IDEwYjEzMGE3YjIzMGIuLmYxZjBjNTgyZGI1ZGYgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbkBAIC01MjgsNiArNTI4LDEyIEBAIGludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcbiBcdGludCByZXQ7XG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2bmZfY29ubnRyYWNrX2V4cGVjdF9sb2NrKTtcbitcdGlmIChleHBlY3QtXHUwMDNlZmxhZ3MgXHUwMDI2IE5GX0NUX0VYUEVDVF9ERUFEKSB7XG4rXHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG4rXHRcdHJldCA9IC1FSU5WQUw7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuIFx0bWFzdGVyX2hlbHAgPSBuZmN0X2hlbHAoZXhwZWN0LVx1MDAzZW1hc3Rlcik7XG4gXHRpZiAoIW1hc3Rlcl9oZWxwKSB7XG4gXHRcdHJldCA9IC1FU0hVVERPV047XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxMTozNTo0MS42ODY1MDA3MzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQ1NDIxOTQ0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb25udHJhY2sgRXhwZWN0YXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIGNydWNpYWwgY2hlY2sgd2l0aGluIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnRgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2AuIFRoZSBjb3JlIG9mIGl0IGlzIGEgc2ltcGxlIGNvbmRpdGlvbmFsOiBpdCdzIGxvb2tpbmcgdG8gc2VlIGlmIHRoZSBgTkZfQ1RfRVhQRUNUX0RFQURgIGZsYWcgaXMgc2V0IG9uIHRoZSBgZXhwZWN0LVx1MDAzZWZsYWdzYC4gRXNzZW50aWFsbHksIGl0J3MgZ3VhcmRpbmcgYWdhaW5zdCBvcGVyYXRpb25zIG9uIGEgXCJkZWFkXCIgZXhwZWN0YXRpb24uXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBzb2xpZCBmaXggZm9yIGEgdXNlLWFmdGVyLWZyZWUgb3IgYSByZWxhdGVkIGludmFsaWQgc3RhdGUgY29uZGl0aW9uLiBUaGVzZSBhcmUgdGhlIGtpbmRzIG9mIHN1YnRsZSBidWdzIHRoYXQgY2FuIGJlIG5vdG9yaW91c2x5IGRpZmZpY3VsdCB0byB0cmFjayBkb3duIHdpdGhvdXQgdmVyeSBjYXJlZnVsIGNvZGUgcmV2aWV3cyBvciBkZWRpY2F0ZWQgZGVidWdnaW5nIHRvb2xzIGxpa2UgS0FTQU4uIFdoaWxlIEtBU0FOIG9yIG90aGVyIGRlYnVnZ2VycyB3b3VsZCAqZXZlbnR1YWxseSogZmxhZyB0aGlzLCB0aGlzIHBhdGNoIG9mZmVycyBhIHByb2FjdGl2ZSBkZWZlbnNlLCBwcmV2ZW50aW5nIHRoZSBlcnJvciBmcm9tIGhhcHBlbmluZyBpbiB0aGUgZmlyc3QgcGxhY2UsIG9yIGluIGEgZGlmZmVyZW50IHNjZW5hcmlvIGZyb20ganVzdCBLQVNBTiBiZWluZyB0cmlnZ2VyZWQuIEl0J3MgYSBsb2dpY2FsIGNoZWNrIGRlc2lnbmVkIHRvIGVuc3VyZSB0aGUgY29kZSdzIGludGVncml0eS5cblxuSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgZG9lc24ndCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBJdCBkb2Vzbid0IHNlZW0gdG8gdG91Y2ggYW55IG5ldyBzdHJ1Y3R1cmVzIG9yIHNlbmQgYW55dGhpbmcgdG8gdXNlciBzcGFjZS4gSXTigJlzIGp1c3QgY2hlY2tpbmcgYSBmbGFnLCBhIGJpdG1hc2sgcmVhbGx5LiBJdCdzIGFib3V0IHByZXZlbnRpbmcgdGhlIHN5c3RlbSBmcm9tIGRvaW5nIHNvbWV0aGluZyBiYWQgd2l0aCBhIGRlZnVuY3QgZXhwZWN0YXRpb24uXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGlzIGEgZGVmZW5zaXZlIGFkZGl0aW9uLCBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIGxvZ2ljIG9yIFVBRiBpc3N1ZSwgS01TQU4gaXNuJ3QgbmVlZGVkIGhlcmUuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYSBidWcgYXQgYSBoaWdoZXIgbGV2ZWwgdGhhbiB0aGUgc3BlY2lmaWMgbWVtb3J5IG1hbmFnZW1lbnQgS01TQU4gYWRkcmVzc2VzLiBJJ20gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgb24gdGhpcyBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzgsIk91dHB1dFRva2VucyI6MTMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzczLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTE6MzU6NTEuMTQwNzI1MDA4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIHRoZSBgTkZfQ1RfRVhQRUNUX0RFQURgIGZsYWcgaW4gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgdG8gcHJldmVudCBvcGVyYXRpbmcgb24gYSBkZWFkIGNvbm50cmFjayBleHBlY3RhdGlvbi4gVGhpcyBpcyBhIGxvZ2ljYWwgZml4IHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBzdGF0ZSBidWdzLCB3aGljaCBhcmUgdHlwaWNhbGx5IGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yIHRoZSBgTkZfQ1RfRVhQRUNUX0RFQURgIGZsYWcgaW4gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydGAgdG8gcHJldmVudCBvcGVyYXRpbmcgb24gYSBkZWFkIGNvbm50cmFjayBleHBlY3RhdGlvbi4gVGhpcyBpcyBhIGxvZ2ljYWwgZml4IHRvIHByZXZlbnQgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBzdGF0ZSBidWdzLCB3aGljaCBhcmUgdHlwaWNhbGx5IGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllZCB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowrvrgg[1] Phase: Succeeded StartedAt: 2026-08-10 11:36:02 +0000 UTC FinishedAt: 2026-08-10 11:36:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-10 11:36:02 +0000 UTC FinishedAt: 2026-08-10 11:36:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2] Phase: Succeeded StartedAt: 2026-08-10 11:36:02 +0000 UTC FinishedAt: 2026-08-10 15:23:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-10 11:36:02 +0000 UTC FinishedAt: 2026-08-10 15:23:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-10 11:36:02 +0000 UTC FinishedAt: 2026-08-10 11:36:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-10 11:36:02 +0000 UTC FinishedAt: 2026-08-10 11:36:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowrvrgg/series-workflowrvrgg-convert-artifact-1852867678/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-10 11:36:12 +0000 UTC FinishedAt: 2026-08-10 11:56:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-10 11:36:12 +0000 UTC FinishedAt: 2026-08-10 11:56:18 +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:*550116e8-3af3-43c9-be06-a209b142c82e,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-workflowrvrgg/series-workflowrvrgg-convert-artifact-1852867678/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": "fca0d800-2d9d-4508-a05d-2ab5d362b1a7", "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-workflowrvrgg/series-workflowrvrgg-build-action-1139582276/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-10 11:36:12 +0000 UTC FinishedAt: 2026-08-10 11:56:08 +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:*550116e8-3af3-43c9-be06-a209b142c82e,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-workflowrvrgg/series-workflowrvrgg-convert-artifact-1852867678/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": "fca0d800-2d9d-4508-a05d-2ab5d362b1a7", "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-workflowrvrgg/series-workflowrvrgg-build-action-1139582276/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-10 11:56:18 +0000 UTC FinishedAt: 2026-08-10 11:56:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-10 11:56:18 +0000 UTC FinishedAt: 2026-08-10 11:56:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-10 11:56:18 +0000 UTC FinishedAt: 2026-08-10 11:56:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-10 11:56:18 +0000 UTC FinishedAt: 2026-08-10 11:56:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowrvrgg/series-workflowrvrgg-convert-artifact-4018262289/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-10 11:56:28 +0000 UTC FinishedAt: 2026-08-10 11:58:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-10 11:56:28 +0000 UTC FinishedAt: 2026-08-10 11:58:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fca0d800-2d9d-4508-a05d-2ab5d362b1a7,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-workflowrvrgg/series-workflowrvrgg-build-action-1139582276/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-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-10 11:58:28 +0000 UTC FinishedAt: 2026-08-10 11:58:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-10 11:58:28 +0000 UTC FinishedAt: 2026-08-10 11:58:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-10 11:58:28 +0000 UTC FinishedAt: 2026-08-10 12:16:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-10 11:58:28 +0000 UTC FinishedAt: 2026-08-10 12:16:43 +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:*550116e8-3af3-43c9-be06-a209b142c82e,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-workflowrvrgg/series-workflowrvrgg-convert-artifact-4018262289/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": "f11260d5-5fb7-4218-a854-6ef0ddb826cd", "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-workflowrvrgg/series-workflowrvrgg-build-action-2778251485/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-10 11:58:28 +0000 UTC FinishedAt: 2026-08-10 12:16:33 +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:*550116e8-3af3-43c9-be06-a209b142c82e,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-workflowrvrgg/series-workflowrvrgg-convert-artifact-4018262289/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": "f11260d5-5fb7-4218-a854-6ef0ddb826cd", "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-workflowrvrgg/series-workflowrvrgg-build-action-2778251485/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-10 12:16:43 +0000 UTC FinishedAt: 2026-08-10 12:16:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-10 12:16:43 +0000 UTC FinishedAt: 2026-08-10 12:16:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-10 12:16:43 +0000 UTC FinishedAt: 2026-08-10 12:18:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-10 12:16:43 +0000 UTC FinishedAt: 2026-08-10 12:18:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f11260d5-5fb7-4218-a854-6ef0ddb826cd,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-workflowrvrgg/series-workflowrvrgg-build-action-2778251485/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-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-10 12:18:42 +0000 UTC FinishedAt: 2026-08-10 15:23:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-10 12:18:42 +0000 UTC FinishedAt: 2026-08-10 15:23:28 +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":["nf_ct_expect_related_report"],"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:*fca0d800-2d9d-4508-a05d-2ab5d362b1a7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f11260d5-5fb7-4218-a854-6ef0ddb826cd,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-workflowrvrgg/series-workflowrvrgg-build-action-1139582276/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-workflowrvrgg/series-workflowrvrgg-build-action-2778251485/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-10 12:18:42 +0000 UTC FinishedAt: 2026-08-10 12:18:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-10 12:18:42 +0000 UTC FinishedAt: 2026-08-10 12:18:47 +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":["nf_ct_expect_related_report"],"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-workflowrvrgg/series-workflowrvrgg-convert-artifact-3187279686/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-10 12:18:42 +0000 UTC FinishedAt: 2026-08-10 12:18:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-10 12:18:42 +0000 UTC FinishedAt: 2026-08-10 12:18:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-10 12:18:43 +0000 UTC FinishedAt: 2026-08-10 12:18:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-10 12:18:53 +0000 UTC FinishedAt: 2026-08-10 15:23:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrvrgg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6b8c8af514d739d0335f5579b585e02babe8a727","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_NETLINK","NF_CONNTRACK_FTP","NF_CONNTRACK_SIP","NF_CONNTRACK_IRC","NF_CONNTRACK_AMANDA","NF_CONNTRACK_H323","NF_CONNTRACK_PPTP","NF_CONNTRACK_SANE","NF_CONNTRACK_TFTP","NF_CONNTRACK_BROADCAST"],"series_id":"84cb5d57-3ab9-4c39-ad0e-a274da114ff7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-10 12:18:53 +0000 UTC FinishedAt: 2026-08-10 15:23:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fca0d800-2d9d-4508-a05d-2ab5d362b1a7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f11260d5-5fb7-4218-a854-6ef0ddb826cd,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-workflowrvrgg/series-workflowrvrgg-build-action-1139582276/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-workflowrvrgg/series-workflowrvrgg-build-action-2778251485/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-workflowrvrgg/series-workflowrvrgg-convert-artifact-3187279686/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,}