Name: series-workflow9qwn2 Phase: Succeeded StartedAt: 2026-07-09 00:28:56 +0000 UTC FinishedAt: 2026-07-09 03:18:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[0] Phase: Succeeded StartedAt: 2026-07-09 00:28:56 +0000 UTC FinishedAt: 2026-07-09 01:09:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 00:28:56 +0000 UTC FinishedAt: 2026-07-09 01:09:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH12K" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH12K" ], "series_id": "7b9bebf0-c2ff-455c-bf55-0c45263a0b94" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath12k_qmi_init_service" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDEySyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDEya19xbWlfaW5pdF9zZXJ2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBhdGgxMmtfcW1pX2luaXRfc2VydmljZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgUENJIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBkZXZpY2UgcHJvYmUsIHdoaWNoIGlzIGZ1enphYmxlIHZpYSBQQ0kgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGViMjFlZmJiMDk4NDNlNjQzNDcwNTU3OTY1MDhkODNiYTU0Yzg4YzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDAxOjA3OjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jXG5pbmRleCBmZDc2MmI1ZDdiYjU5Ny4uMzFlOWZhOWE2MmJlMTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jXG5AQCAtNDA1NCw3ICYjNDM7NDA1NCw4IEBAIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0YWItXHUwMDNlcW1pLmV2ZW50X3dxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoXCYjMzQ7YXRoMTJrX3FtaV9kcml2ZXJfZXZlbnRcJiMzNDssIDApO1xuIFx0aWYgKCFhYi1cdTAwM2VxbWkuZXZlbnRfd3EpIHtcbiBcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIHdvcmtxdWV1ZVxcblwmIzM0Oyk7XG4tXHRcdHJldHVybiAtRUZBVUxUO1xuJiM0MztcdFx0cmV0ID0gLUVGQVVMVDtcbiYjNDM7XHRcdGdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTtcbiBcdH1cbiBcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFiLVx1MDAzZXFtaS5ldmVudF9saXN0KTtcbkBAIC00MDY3LDkgJiM0Mzs0MDY4LDE1IEBAIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGFkZCBxbWkgbG9va3VwXFxuXCYjMzQ7KTtcbiBcdFx0ZGVzdHJveV93b3JrcXVldWUoYWItXHUwMDNlcW1pLmV2ZW50X3dxKTtcbi1cdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTtcbiBcdH1cbiBcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7ZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTpcbiYjNDM7XHRxbWlfaGFuZGxlX3JlbGVhc2UoXHUwMDI2YWItXHUwMDNlcW1pLmhhbmRsZSk7XG4mIzQzO1x0YWItXHUwMDNlcW1pLmFiID0gTlVMTDtcbiYjNDM7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGgxMmtfcW1pX2luaXRfc2VydmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFBDSSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgZGV2aWNlIHByb2JlLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgUENJIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGViMjFlZmJiMDk4NDNlNjQzNDcwNTU3OTY1MDhkODNiYTU0Yzg4YzAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCA5IDAxOjA3OjQyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMKaW5kZXggZmQ3NjJiNWQ3YmI1OTcuLjMxZTlmYTlhNjJiZTE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMKQEAgLTQwNTQsNyAmIzQzOzQwNTQsOCBAQCBpbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYikKIAlhYi0mZ3Q7cW1pLmV2ZW50X3dxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoJiMzNDthdGgxMmtfcW1pX2RyaXZlcl9ldmVudCYjMzQ7LCAwKTsKIAlpZiAoIWFiLSZndDtxbWkuZXZlbnRfd3EpIHsKIAkJYXRoMTJrX2VycihhYiwgJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgd29ya3F1ZXVlXG4mIzM0Oyk7Ci0JCXJldHVybiAtRUZBVUxUOwomIzQzOwkJcmV0ID0gLUVGQVVMVDsKJiM0MzsJCWdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTsKIAl9CiAKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FiLSZndDtxbWkuZXZlbnRfbGlzdCk7CkBAIC00MDY3LDkgJiM0Mzs0MDY4LDE1IEBAIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKQogCWlmIChyZXQgJmx0OyAwKSB7CiAJCWF0aDEya193YXJuKGFiLCAmIzM0O2ZhaWxlZCB0byBhZGQgcW1pIGxvb2t1cFxuJiMzNDspOwogCQlkZXN0cm95X3dvcmtxdWV1ZShhYi0mZ3Q7cW1pLmV2ZW50X3dxKTsKLQkJcmV0dXJuIHJldDsKJiM0MzsJCWdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTsKIAl9CiAKJiM0MzsJcmV0dXJuIHJldDsKJiM0MzsKJiM0MztlcnJfcmVsZWFzZV9xbWlfaGFuZGxlOgomIzQzOwlxbWlfaGFuZGxlX3JlbGVhc2UoJmFtcDthYi0mZ3Q7cW1pLmhhbmRsZSk7CiYjNDM7CWFiLSZndDtxbWkuYWIgPSBOVUxMOwomIzQzOwogCXJldHVybiByZXQ7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4MAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBtb2RpZnkgdGhlIGBhdGgxMmtfcW1pX2luaXRfc2VydmljZWAgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBhIGBnb3RvIGVycl9yZWxlYXNlX3FtaV9oYW5kbGVgIG9uIGNlcnRhaW4gYWxsb2NhdGlvbiBmYWlsdXJlcyDigJMgbmFtZWx5IHdoZW4gYWxsb2NhdGluZyBgYWItJmd0O3FtaS5ldmVudF93cWAgYW5kIHdoZW4gYHFtaV9hZGRfbG9va3VwYCBmYWlscy4gT24gdGhpcyBlcnJvciBwYXRoLCB0aGUgY29kZSBub3cgY29ycmVjdGx5IGNhbGxzIGBxbWlfaGFuZGxlX3JlbGVhc2VgIG9uIGBhYi0mZ3Q7cW1pLmhhbmRsZWAgYW5kIGFsc28gc2V0cyBgYWItJmd0O3FtaS5hYmAgdG8gYE5VTExgLiBHb29kIHByYWN0aWNlLCBlbnN1cmluZyBhIGNsZWFuIHN0YXRlIG9uIGVycm9yLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlLCBhbmQgd2hhdCBzY2VuYXJpb3MgaXQgbWlnaHQgaW1wYWN0LiBTaW5jZSBpdCYjMzk7cyB3aXRoaW4gdGhlIGBhdGgxMmtgIGRyaXZlciwgdGhlIHF1ZXN0aW9uIGlzLCAqY2FuKiB0aGlzIGVycm9yIHBhdGggZXZlbiBiZSBoaXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgdGhpcyBhIFBDSSBkZXZpY2UgZHJpdmVyLCBvciBpcyBpdCBBSEIsIGFuZCB3b3VsZCB2aXJ0dWFsaXphdGlvbiBhZmZlY3QgaXRzIHVzYWdlPyBUaGVyZWZvcmUsIEkmIzM5O2xsIGBncmVwYCBmb3IgYGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlYCBhbmQgc2VlIHdoZXJlIGl0JiMzOTtzIGNhbGxlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnQgYW5kIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjb2RlIGlzIHVzZWQgaW4gY29udGV4dCwgYW5kIHdoZXRoZXIgdGhpcyBlcnJvciBoYW5kbGluZyBpcyBlc3NlbnRpYWwgZm9yIGEgdmlydHVhbGl6ZWQgaW5zdGFudGlhdGlvbiBvZiB0aGUgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgY29uZGl0aW9ucyB3aGljaCB0cmlnZ2VyIHRoZSBgZ290b2AgYXJlIGF0IGFsbCBwb3NzaWJsZSBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3FtaV9pbml0X3NlcnZpY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9ODE1PXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTgyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjgyNDpcdHJldCA9IGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTgyNS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jPTM5NjU9c3RhdGljIHZvaWQgYXRoMTJrX3FtaV9kcml2ZXJfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MDM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYzo0MDM4OmludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MDM5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oPTY0ND12b2lkIGF0aDEya19xbWlfZGVpbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oOjY0NTppbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oLTY0Ni12b2lkIGF0aDEya19xbWlfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQ5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIEluaXRpYWxpemF0aW9uIEZsb3cgb2YgdGhlIGF0aDEyayBEcml2ZXIqKgoKUmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBhdGgxMmsgZHJpdmVyIGNvZGUgYWdhaW4uIEkgc2VlIGBhdGgxMmtfY29yZV9zb2NfY3JlYXRlYCBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCB0aGUgY29yZSBTT0MgY29tcG9uZW50cy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgd2hhdCYjMzk7cyBpbnRlcmVzdGluZyBpcyB0aGF0IGl0IGNhbGxzIGBhdGgxMmtfcW1pX2luaXRfc2VydmljZWAuICBJIGtub3cgUU1JIChRdWFsY29tbSBNU00gSW50ZXJmYWNlKSBpcyBoZWF2aWx5IGludm9sdmVkIGluIHRoZSBmaXJtd2FyZSBpbnRlcmFjdGlvbiBvbiB0aGVzZSBjaGlwcywgc28gdGhhdCBtYWtlcyBzZW5zZS4gU2VlbXMgbGlrZSB0aGUgU09DIGNyZWF0aW9uIGlzIGludGVydHdpbmVkIHdpdGggc2V0dGluZyB1cCB0aGUgUU1JIHNlcnZpY2UsIGEgY29tbW9uIHBhdHRlcm4uCgpCdXQgaGFuZyBvbuKApiB3aGVyZSBleGFjdGx5IGlzIGBhdGgxMmtfY29yZV9zb2NfY3JlYXRlYCBiZWluZyAqY2FsbGVkKiBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aGUgZXhlY3V0aW9uIGZsb3cgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFRoaXMgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgdGhlIHdob2xlIHRoaW5nIGJvb3RzdHJhcHMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIHBvd2VyLXVwIHNlcXVlbmNlIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLiBJIG5lZWQgdG8ga25vdyB0aGUgZW50cnkgcG9pbnQgdG8gdGhpcyB3aG9sZSBTT0MgY3JlYXRpb24gcHJvY2Vzcy4gSXMgaXQgZHJpdmVuIGJ5IHByb2JlIGZ1bmN0aW9uIG9yIHNvbWV0aGluZyBlbHNlPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIHBhcmFtb3VudCB0byBncmFzcGluZyB0aGUgZW50aXJlIGluaXRpYWxpemF0aW9uIGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfY29yZV9zb2NfY3JlYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTgwND1pbnQgYXRoMTJrX2NvcmVfY2hlY2tfc21iaW9zKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6ODE1OnN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0yMTQ4PXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIxNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoyMTYyOlx0XHRyZXQgPSBhdGgxMmtfY29yZV9zb2NfY3JlYXRlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIxNjMtXHRcdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjY5CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipUcmFjaW5nIHRoZSBPcmlnaW5zIG9mIGBhdGgxMmtfY29yZV9od19ncm91cF9jcmVhdGVgKioKCkFscmlnaHQsIHNvIHRoZSBxdWVzdGlvbiBpcywgd2hlcmUgaW4gdGhpcyBzcHJhd2xpbmcgY29kZWJhc2UgaXMgYGF0aDEya19jb3JlX2h3X2dyb3VwX2NyZWF0ZWAgYWN0dWFsbHkgZ2V0dGluZyBpbnZva2VkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzdGFjayB0byBncmFzcCBpdHMgcm9sZSBhbmQgY29udGV4dCB3aXRoaW4gdGhlIGRyaXZlci4gVGltZSB0byBkaWcgaW4uIEkgc2hvdWxkIHN0YXJ0IGJ5IGRvaW5nIGEgcXVpY2sgZ3JlcCB0aHJvdWdoIHRoZSBjb2RlLCBpZGVhbGx5IHVzaW5nIHNvbWV0aGluZyBlZmZpY2llbnQgdGhhdCBjYW4gaGFuZGxlIGNyb3NzLXJlZmVyZW5jaW5nIHdpdGhpbiB0aGlzIGxhcmdlIHByb2plY3QuIFRoZSBnb2FsIGlzIGEgbGlzdCBvZiBhbGwgY2FsbCBzaXRlcy4gVGhhdCBpbml0aWFsIHNlYXJjaCB3aWxsIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50cywgd2hpY2ggaG9wZWZ1bGx5IHdpbGwgcmV2ZWFsIGEgY2xlYXIgcGF0aCB0aHJvdWdoIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgb3IgaW50ZXJydXB0IGhhbmRsaW5nIGZsb3dzLiBGcm9tIHRoZXJlLCBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgdGhlIGNhbGwgLSBpcyBpdCBkdXJpbmcgZGV2aWNlIHByb2JlLCBhIGhhcmR3YXJlIGV2ZW50LCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlbiwgSSBjYW4gc3RhcnQgYW5hbHl6aW5nIHRob3NlIGNhbGwgc2l0ZXMgaW4gZGV0YWlsLiBJJiMzOTttIGhvcGluZyB0aGUgY29kZSBwcm92aWRlcyBlbm91Z2ggZGVzY3JpcHRpdmUgY29tbWVudHMsIG9yIHRoYXQgdGhlIGZ1bmN0aW9uIG5hbWVzIHRoZW1zZWx2ZXMgZ2l2ZSBhIGhpbnQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTE4MTk9c3RhdGljIGlubGluZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTgyMDpib29sIGF0aDEya19jb3JlX2h3X2dyb3VwX2NyZWF0ZV9yZWFkeShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE4MjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTIxMTY9dm9pZCBhdGgxMmtfY29yZV9od19ncm91cF9jbGVhbnVwKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIxNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoyMTQ4OnN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMjE0OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MjIyOT1pbnQgYXRoMTJrX2NvcmVfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIyNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoyMjU1Olx0aWYgKGF0aDEya19jb3JlX2h3X2dyb3VwX2NyZWF0ZV9yZWFkeShhZykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjIyNTY6XHRcdHJldCA9IGF0aDEya19jb3JlX2h3X2dyb3VwX2NyZWF0ZShhZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0yMjU3LVx0XHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM4NgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipUcmFjaW5nIHRoZSBJbml0aWFsaXphdGlvbiBvZiB0aGUgYXRoMTBrIENvcmUqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiB0aGUgYGF0aDEwa2AgZHJpdmVyIGNvcmUuIFRoZSBzcGVjaWZpYyBxdWVzdGlvbiBidXJuaW5nIGluIG15IG1pbmQgcmlnaHQgbm93IGlzOiBXaGVyZSBleGFjdGx5IGRvZXMgdGhlIGBhdGgxMmtfY29yZV9pbml0YCBmdW5jdGlvbiBnZXQgY2FsbGVkPyBVbmRlcnN0YW5kaW5nIHRoaXMgaXMgY3JpdGljYWwgZm9yIGdyYXNwaW5nIHRoZSBjb21wbGV0ZSBzdGFydHVwIHNlcXVlbmNlIGFuZCBob3cgdGhlIHZhcmlvdXMgY29tcG9uZW50cyBvZiB0aGUgZHJpdmVyIGFyZSBicm91Z2h0IHRvIGxpZmUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgYW5kIHNlZSB3aGF0JiMzOTtzIHRyaWdnZXJpbmcgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24uIElzIGl0IHBhcnQgb2Ygc29tZSBsYXJnZXIgZGV2aWNlIHByb2JpbmcgcHJvY2Vzcz8gSXMgaXQgcmVsYXRlZCB0byBQQ0kgb3IgU0RJTyBpbml0aWFsaXphdGlvbj8gUGVyaGFwcyBpdCYjMzk7cyBjYWxsZWQgZnJvbSBhIG1vZHVsZSBsb2FkIGhhbmRsZXI/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgZmluZCB0aGUgcHJlY2lzZSBsb2NhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uIGNhbGwsIHNvIEkgY2FuIHRoZW4gYW5hbHl6ZSB3aGF0IGhhcHBlbnMgYmVmb3JlIGFuZCBhZnRlciBgYXRoMTJrX2NvcmVfaW5pdGAuIEdvdHRhIGZvbGxvdyB0aGUgYnJlYWRjcnVtYnMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19jb3JlX2luaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0xMDE5PXN0YXRpYyBpbnQgYXRoMTJrX2FoYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTExMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTExMTpcdHJldCA9IGF0aDEya19jb3JlX2luaXQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMTEyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTIxODg9dm9pZCBhdGgxMmtfY29yZV9od19ncm91cF9zZXRfbWxvX2NhcGFibGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMjIyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjIyMjk6aW50IGF0aDEya19jb3JlX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIyMzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oPTEyNjQ9aW50IGF0aDEya19jb3JlX3ByZV9pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg6MTI2NTppbnQgYXRoMTJrX2NvcmVfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmF0aDEyayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaC0xMjY2LXZvaWQgYXRoMTJrX2NvcmVfZGVpbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYXRoMTJrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE1MjQ9c3RhdGljIGludCBhdGgxMmtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTY0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTY0NTpcdHJldCA9IGF0aDEya19jb3JlX2luaXQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNjQ2LVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTkzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGF0aDEyayBEcml2ZXI6IEEgUXVpY2sgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgYnVnIGZpeCwgYW5kIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBhdGgxMmtfYWhiX3Byb2JlYCBhbmQgYGF0aDEya19wY2lfcHJvYmVgLiBOb3csIEFIQiBhbmQgUENJIGRyaXZlcnMgYXJlIHVzdWFsbHkgYSBuby1nbyBpbiBteSBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBzZXR1cHMgdW5sZXNzIHRoZXJlJiMzOTtzIGRlZGljYXRlZCBlbXVsYXRpb24gb3IgSSBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzIGRpcmVjdGx5LiBCdXQgaG9sZCBvbiwgSSByZW1lbWJlciBTeXprYWxsZXIgY2FuIGFjdHVhbGx5IGZ1enogUENJIGRldmljZXMgdXNpbmcgYHN5el9wY2lfdnBjaWAgYW5kIHJlbGF0ZWQgbWVjaGFuaXNtcy4gQW5kLCBpZiBJJiMzOTttIHRoaW5raW5nIHJpZ2h0LCBgYXRoMTJrYCAqaXMqIGEgUENJIGRyaXZlciwgaXNuJiMzOTt0IGl0PyBCaW5nbyEgU3l6a2FsbGVyIGhhcyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gbG9vayBpbnRvLgoKVGhlIHNwZWNpZmljIGZpeCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBidWcgZml4IGluIGBhdGgxMmtfcW1pX2luaXRfc2VydmljZWAg4oCTIGxvb2tzIGxpa2UgYSBtZW1vcnkgb3IgcmVzb3VyY2UgbGVhayBmaXggb24gYW4gZXJyb3IgcGF0aC4gSXQgYWRkcyBhIGBnb3RvIGVycl9yZWxlYXNlX3FtaV9oYW5kbGVgIG9uIGZhaWx1cmVzIGR1cmluZyBgYWItJmd0O3FtaS5ldmVudF93cWAgYWxsb2NhdGlvbiBhbmQgYHFtaV9hZGRfbG9va3VwYC4gU2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZSwgc28gZnV6emluZyBpcyBwcm9iYWJseSB3b3J0aCB0aGUgZWZmb3J0LgoKRmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHF1aWNrbHkgY2hlY2sgaWYgYGF0aDEya2AgaXMgYWN0dWFsbHkgZW5hYmxlZCBpbiBteSBjdXJyZW50IGNvbmZpZ3MsIG9yIGlmIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGl0LiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgcGVlayBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgQVRIMTJLXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUEgXHUwMDI2XHUwMDI2IFBDSVxuICAgNTpcdFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcbiAgIDY6XHRcdHNlbGVjdCBNSElfQlVTXG4gICA3Olx0XHRzZWxlY3QgUVJUUlxuICAgODpcdFx0c2VsZWN0IFFSVFJfTUhJXG4gICA5Olx0XHRzZWxlY3QgUENJX1BXUkNUUkxfUFdSU0VRIGlmIEhBVkVfUFdSQ1RSTFxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgKElFRUVcbiAgMTI6XHRcdCAgODAyLjExYmUpIGZhbWlseSBvZiBjaGlwc2V0cywgZm9yIGV4YW1wbGUgV0NONzg1MCBhbmRcbiAgMTM6XHRcdCAgUUNOOTI3NC5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBhdGgxMmsuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIEFUSDEyS19BSEJcbiAgMTg6XHRcdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgUkVNT1RFUFJPQ1xuICAyMDpcdFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxuICAyMTpcdFx0c2VsZWN0IFFDT01fU0NNXG4gIDIyOlx0XHRoZWxwXG4gIDIzOlx0XHQgIEVuYWJsZSBzdXBwb3J0IGZvciBBdGgxMmsgQUhCIGJ1cyBjaGlwc2V0cywgZXhhbXBsZSBJUFE1MzMyLlxuICAyNDpcdFxuICAyNTpcdGNvbmZpZyBBVEgxMktfREVCVUdcbiAgMjY6XHRcdGJvb2wgXCYjMzQ7YXRoMTJrIGRlYnVnZ2luZ1wmIzM0O1xuICAyNzpcdFx0ZGVwZW5kcyBvbiBBVEgxMktcbiAgMjg6XHRcdGhlbHBcbiAgMjk6XHRcdCAgRW5hYmxlIGRlYnVnIHN1cHBvcnQsIGZvciBleGFtcGxlIGRlYnVnIG1lc3NhZ2VzIHdoaWNoIG11c3RcbiAgMzA6XHRcdCAgYmUgZW5hYmxlZCBzZXBhcmF0ZWx5IHVzaW5nIHRoZSBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIuXG4gIDMxOlx0XG4gIDMyOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxuICAzMzpcdFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBBVEgxMktfREVCVUdGU1xuICAzNjpcdFx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4gIDM3Olx0XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBFbmFibGUgYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxuICA0MDpcdFxuICA0MTpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiAgNDI6XHRcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgQVRIMTJLX1RSQUNJTkdcbiAgNDU6XHRcdGJvb2wgXCYjMzQ7YXRoMTJrIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuICA0NjpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IEVWRU5UX1RSQUNJTkdcbiAgNDc6XHRcdGhlbHBcbiAgNDg6XHRcdCAgRW5hYmxlIGF0aDEyayB0cmFjaW5nIGluZnJhc3RydWN0dXJlLlxuICA0OTpcdFxuICA1MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiAgNTE6XHRcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cbiAgNTI6XHRcbiAgNTM6XHRjb25maWcgQVRIMTJLX0NPUkVEVU1QXG4gIDU0Olx0XHRib29sIFwmIzM0O2F0aDEyayBjb3JlZHVtcFwmIzM0O1xuICA1NTpcdFx0ZGVwZW5kcyBvbiBBVEgxMktcbiAgNTY6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICA1NzpcdFx0aGVscFxuICA1ODpcdFx0ICBFbmFibGUgYXRoMTJrIGNvcmVkdW1wIGNvbGxlY3Rpb25cbiAgNTk6XHRcbiAgNjA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXG4gIDYxOlx0XHQgIGR1bXAgY29sbGVjdGlvbiBub3QgcmVxdWlyZWQgY2hvb3NlIE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NjYKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgYGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlYCoqCgpPa2F5LCBzbyB0aGUgY29uZmlnIGlzIGBBVEgxMktgLCBhbmQgdGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBpcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgdGhpcyBpcyBldmVuIGZ1enphYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEx1Y2tpbHksIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCBzbyBwcm9iaW5nIFBDSSBkcml2ZXJzLCBsaWtlIHRoaXMgb25lLCBzaG91bGRuJiMzOTt0IGJlIGEgcHJvYmxlbS4gQnV0LCB3YWl0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGRlcGVuZGVuY2llcyEgYGF0aDEya2AgZGVwZW5kcyBvbiBgTUFDODAyMTEgJmFtcDsmYW1wOyBIQVNfRE1BICZhbXA7JmFtcDsgUENJYC4gUmlnaHQsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIHRob3NlIGluIGFkZGl0aW9uIHRvIGVuYWJsaW5nIGBBVEgxMktgIGFuZCwgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcywgYEFUSDEyS19ERUJVR2AuCgpOb3csIHRoZSBjb3JlIG9mIHRoZSBpc3N1ZTogaXMgYGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlYCBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nPyBZZXMsIGl0JiMzOTtzIHRoZSBmdW5jdGlvbiBiZWluZyBkaXJlY3RseSBtb2RpZmllZCBieSB0aGUgcGF0Y2gsIHNvIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gT2theSwgYnV0IGxldCYjMzk7cyBiZSByZWFsaXN0aWMuIFRoaXMgbG9va3MgbGlrZSBhIHNpbXBsZSBlcnJvciBwYXRoIGZpeC4gSXMgaXQgZXZlbiAqd29ydGgqIGZ1enppbmc/IFllcywgaXQmIzM5O3Mgc3RpbGwgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYSBkcml2ZXIsIHNvIHRoZXJlJiMzOTtzIGFsd2F5cyBhIHBvc3NpYmlsaXR5IG9mIHVuY292ZXJpbmcgc29tZXRoaW5nLgoKTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgQVRIMTJLYCBpcyB0aGUgbWFpbiBjb25maWcgSSBuZWVkLCBhbmQgdGhlbiB2ZXJpZnkgdGhlIGZ1bmN0aW9uIGlzIHdoYXQgSSB0aGluayBpdCBpcyBieSBsb29raW5nIGF0IGBhdGgxMmtfcW1pX2luaXRfc2VydmljZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmNgLiBJJiMzOTttIGNvbmZpZGVudCB0aGF0IGlmIHRoZSBwYXRjaCBpcyB0aGVyZSwgYW5kIHRoZSBkZXBlbmRlbmNpZXMgYXJlIG1ldCwgSSBjYW4gc3VjY2Vzc2Z1bGx5IGZ1enogaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwMzgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDAzODpcdGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuNDAzOTpcdHtcbjQwNDA6XHRcdGludCByZXQ7XG40MDQxOlx0XG40MDQyOlx0XHRtZW1zZXQoXHUwMDI2YWItXHUwMDNlcW1pLnRhcmdldCwgMCwgc2l6ZW9mKHN0cnVjdCB0YXJnZXRfaW5mbykpO1xuNDA0MzpcdFx0bWVtc2V0KFx1MDAyNmFiLVx1MDAzZXFtaS50YXJnZXRfbWVtLCAwLCBzaXplb2Yoc3RydWN0IHRhcmdldF9tZW1fY2h1bmspKTtcbjQwNDQ6XHRcdGFiLVx1MDAzZXFtaS5hYiA9IGFiO1xuNDA0NTpcdFxuNDA0NjpcdFx0YWItXHUwMDNlcW1pLnRhcmdldF9tZW1fbW9kZSA9IGFiLVx1MDAzZXRhcmdldF9tZW1fbW9kZTtcbjQwNDc6XHRcdHJldCA9IHFtaV9oYW5kbGVfaW5pdChcdTAwMjZhYi1cdTAwM2VxbWkuaGFuZGxlLCBBVEgxMktfUU1JX1JFU1BfTEVOX01BWCxcbjQwNDg6XHRcdFx0XHQgICAgICBcdTAwMjZhdGgxMmtfcW1pX29wcywgYXRoMTJrX3FtaV9tc2dfaGFuZGxlcnMpO1xuNDA0OTpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuNDA1MDpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGluaXRpYWxpemUgcW1pIGhhbmRsZVxcblwmIzM0Oyk7XG40MDUxOlx0XHRcdHJldHVybiByZXQ7XG40MDUyOlx0XHR9XG40MDUzOlx0XG40MDU0Olx0XHRhYi1cdTAwM2VxbWkuZXZlbnRfd3EgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZShcJiMzNDthdGgxMmtfcW1pX2RyaXZlcl9ldmVudFwmIzM0OywgMCk7XG40MDU1Olx0XHRpZiAoIWFiLVx1MDAzZXFtaS5ldmVudF93cSkge1xuNDA1NjpcdFx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgd29ya3F1ZXVlXFxuXCYjMzQ7KTtcbjQwNTc6XHRcdFx0cmV0ID0gLUVGQVVMVDtcbjQwNTg6XHRcdFx0Z290byBlcnJfcmVsZWFzZV9xbWlfaGFuZGxlO1xuNDA1OTpcdFx0fVxuNDA2MDpcdFxuNDA2MTpcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWItXHUwMDNlcW1pLmV2ZW50X2xpc3QpO1xuNDA2MjpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWItXHUwMDNlcW1pLmV2ZW50X2xvY2spO1xuNDA2MzpcdFx0SU5JVF9XT1JLKFx1MDAyNmFiLVx1MDAzZXFtaS5ldmVudF93b3JrLCBhdGgxMmtfcW1pX2RyaXZlcl9ldmVudF93b3JrKTtcbjQwNjQ6XHRcbjQwNjU6XHRcdHJldCA9IHFtaV9hZGRfbG9va3VwKFx1MDAyNmFiLVx1MDAzZXFtaS5oYW5kbGUsIFFNSV9TRVJWSUNFX0lEX1dMRlcsXG40MDY2Olx0XHRcdFx0ICAgICBBVEgxMktfUU1JX1dMRldfU0VSVklDRV9WRVJTX1YwMSxcbjQwNjc6XHRcdFx0XHQgICAgIGFiLVx1MDAzZXFtaS5zZXJ2aWNlX2luc19pZCk7XG40MDY4Olx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG40MDY5Olx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gYWRkIHFtaSBsb29rdXBcXG5cJiMzNDspO1xuNDA3MDpcdFx0XHRkZXN0cm95X3dvcmtxdWV1ZShhYi1cdTAwM2VxbWkuZXZlbnRfd3EpO1xuNDA3MTpcdFx0XHRnb3RvIGVycl9yZWxlYXNlX3FtaV9oYW5kbGU7XG40MDcyOlx0XHR9XG40MDczOlx0XG40MDc0Olx0XHRyZXR1cm4gcmV0O1xuNDA3NTpcdFxuNDA3NjpcdGVycl9yZWxlYXNlX3FtaV9oYW5kbGU6XG40MDc3Olx0XHRxbWlfaGFuZGxlX3JlbGVhc2UoXHUwMDI2YWItXHUwMDNlcW1pLmhhbmRsZSk7XG40MDc4Olx0XHRhYi1cdTAwM2VxbWkuYWIgPSBOVUxMO1xuNDA3OTpcdFxuNDA4MDpcdFx0cmV0dXJuIHJldDtcbjQwODE6XHR9XG40MDgyOlx0XG40MDgzOlx0dm9pZCBhdGgxMmtfcW1pX2RlaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG40MDg0Olx0e1xuNDA4NTpcdFx0aWYgKCFhYi1cdTAwM2VxbWkuYWIpXG40MDg2Olx0XHRcdHJldHVybjtcbjQwODc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODIwNQoJCQkJCQkJb3V0cHV0OiA5OQoJCQkJCQkJdGhvdWdodHM6IDI0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBhZGRyZXNzZXMgYSByZXNvdXJjZSBsZWFrIHdpdGhpbiB0aGUgYGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlYCBmdW5jdGlvbi4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhleSYjMzk7dmUgYWRkZWQgYSBgZ290byBlcnJfcmVsZWFzZV9xbWlfaGFuZGxlYCBpbiBhIGNvdXBsZSBvZiBwbGFjZXMgd2hlcmUgYWxsb2NhdGlvbiBmYWlscyDigJMgc3BlY2lmaWNhbGx5IHdoZW4gYWxsb2NhdGluZyBgYWItJmd0O3FtaS5ldmVudF93cWAgYW5kIGFsc28gdXBvbiBmYWlsdXJlIG9mIGBxbWlfYWRkX2xvb2t1cGAuIFRoZSBlcnJvciBwYXRoIHRoZW4gcHJvcGVybHkgcmVsZWFzZXMgdGhlIFFNSSBoYW5kbGUgdXNpbmcgYHFtaV9oYW5kbGVfcmVsZWFzZSgmYW1wO2FiLSZndDtxbWkuaGFuZGxlKWAgYW5kIG51bGxzIG91dCBgYWItJmd0O3FtaS5hYmAuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsICppcyB0aGlzIGNoYW5nZSBmdXp6LXdvcnRoeT8qIEFic29sdXRlbHksIHRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB3aXRoaW4gYSBkcml2ZXIsIHNvIHRoYXQmIzM5O3MgYSBwcmltZSB0YXJnZXQuIFRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYGF0aDEya2AsIGFuZCB0aGUgc3BlY2lmaWMgY29uZmlnIG5lZWRlZCBpcyBgQVRIMTJLYC4gVGhlIGtleSBzeW1ib2wgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcgd2lsbCwgb2YgY291cnNlLCBiZSBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgLgoKTm93LCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuc3VyZSB0aGUgdGFyZ2V0IGlzIHJlYWNoYWJsZS4gYEFUSDEyS2AgaXRzZWxmIGRlcGVuZHMgb24gYE1BQzgwMjExYCwgYEhBU19ETUFgLCBhbmQgYFBDSWAuIFNpbmNlIHRoZSBmdXp6ZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZW5hYmxlIHRob3NlIGRlcGVuZGVuY2llcywgbGlzdGluZyBqdXN0IGBBVEgxMktgIGlzIHN1ZmZpY2llbnQuCgpOZXh0LCBJIG5lZWQgdG8gY29uZmlybSBpZiBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgIGlzIGV2ZW4gcmVhY2hhYmxlLiBBIHF1aWNrIHJldmlldyBjb25maXJtcyBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIHRoZSBwcm9iZSBvcGVyYXRpb24uIEV4Y2VsbGVudCwgdGhlIFBDSSBmdXp6ZXIgY2FuIHRyaWdnZXIgdGhhdC4gVGhpcyBtYWtlcyB0aGlzIHBhdGNoIGEgdmlhYmxlIHRhcmdldCBmb3IgZnV6emluZy4KCkFscmlnaHQsIEkmIzM5O20gcmVhZHkgdG8gc2V0IHVwIHRoZSBmdXp6aW5nIHRhc2sgYmFzZWQgb24gdGhlc2UgZmluZGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGgxMmtfcW1pX2luaXRfc2VydmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFBDSSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgZGV2aWNlIHByb2JlLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgUENJIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDEySyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDEya19xbWlfaW5pdF9zZXJ2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBhdGgxMmtfcW1pX2luaXRfc2VydmljZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgUENJIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBkZXZpY2UgcHJvYmUsIHdoaWNoIGlzIGZ1enphYmxlIHZpYSBQQ0kgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA3OjQzLjcyOTM4NDEwMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MDgxNDYyNDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEyS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDEya19xbWlfaW5pdF9zZXJ2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBQQ0kgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSwgd2hpY2ggaXMgZnV6emFibGUgdmlhIFBDSSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTowNzo0My43MjkzODg0OTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDMwMjE4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGViMjFlZmJiMDk4NDNlNjQzNDcwNTU3OTY1MDhkODNiYTU0Yzg4YzBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgOSAwMTowNzo0MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xcbmluZGV4IGZkNzYyYjVkN2JiNTk3Li4zMWU5ZmE5YTYyYmUxNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xcbkBAIC00MDU0LDcgKzQwNTQsOCBAQCBpbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4gXFx0YWItXFx1MDAzZXFtaS5ldmVudF93cSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKFxcXCJhdGgxMmtfcW1pX2RyaXZlcl9ldmVudFxcXCIsIDApO1xcbiBcXHRpZiAoIWFiLVxcdTAwM2VxbWkuZXZlbnRfd3EpIHtcXG4gXFx0XFx0YXRoMTJrX2VycihhYiwgXFxcImZhaWxlZCB0byBhbGxvY2F0ZSB3b3JrcXVldWVcXFxcblxcXCIpO1xcbi1cXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFx0XFx0cmV0ID0gLUVGQVVMVDtcXG4rXFx0XFx0Z290byBlcnJfcmVsZWFzZV9xbWlfaGFuZGxlO1xcbiBcXHR9XFxuIFxcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWItXFx1MDAzZXFtaS5ldmVudF9saXN0KTtcXG5AQCAtNDA2Nyw5ICs0MDY4LDE1IEBAIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBhZGQgcW1pIGxvb2t1cFxcXFxuXFxcIik7XFxuIFxcdFxcdGRlc3Ryb3lfd29ya3F1ZXVlKGFiLVxcdTAwM2VxbWkuZXZlbnRfd3EpO1xcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHRnb3RvIGVycl9yZWxlYXNlX3FtaV9oYW5kbGU7XFxuIFxcdH1cXG4gXFxuK1xcdHJldHVybiByZXQ7XFxuK1xcbitlcnJfcmVsZWFzZV9xbWlfaGFuZGxlOlxcbitcXHRxbWlfaGFuZGxlX3JlbGVhc2UoXFx1MDAyNmFiLVxcdTAwM2VxbWkuaGFuZGxlKTtcXG4rXFx0YWItXFx1MDAzZXFtaS5hYiA9IE5VTEw7XFxuK1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTowNzo0NC4yMTAzOTEzMzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NjAwNDQ2MTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEyS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDEya19xbWlfaW5pdF9zZXJ2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBQQ0kgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSwgd2hpY2ggaXMgZnV6emFibGUgdmlhIFBDSSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGViMjFlZmJiMDk4NDNlNjQzNDcwNTU3OTY1MDhkODNiYTU0Yzg4YzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDAxOjA3OjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmNcbmluZGV4IGZkNzYyYjVkN2JiNTk3Li4zMWU5ZmE5YTYyYmUxNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmNcbkBAIC00MDU0LDcgKzQwNTQsOCBAQCBpbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdGFiLVx1MDAzZXFtaS5ldmVudF93cSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKFwiYXRoMTJrX3FtaV9kcml2ZXJfZXZlbnRcIiwgMCk7XG4gXHRpZiAoIWFiLVx1MDAzZXFtaS5ldmVudF93cSkge1xuIFx0XHRhdGgxMmtfZXJyKGFiLCBcImZhaWxlZCB0byBhbGxvY2F0ZSB3b3JrcXVldWVcXG5cIik7XG4tXHRcdHJldHVybiAtRUZBVUxUO1xuK1x0XHRyZXQgPSAtRUZBVUxUO1xuK1x0XHRnb3RvIGVycl9yZWxlYXNlX3FtaV9oYW5kbGU7XG4gXHR9XG4gXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhYi1cdTAwM2VxbWkuZXZlbnRfbGlzdCk7XG5AQCAtNDA2Nyw5ICs0MDY4LDE1IEBAIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCJmYWlsZWQgdG8gYWRkIHFtaSBsb29rdXBcXG5cIik7XG4gXHRcdGRlc3Ryb3lfd29ya3F1ZXVlKGFiLVx1MDAzZXFtaS5ldmVudF93cSk7XG4tXHRcdHJldHVybiByZXQ7XG4rXHRcdGdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTtcbiBcdH1cbiBcbitcdHJldHVybiByZXQ7XG4rXG4rZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTpcbitcdHFtaV9oYW5kbGVfcmVsZWFzZShcdTAwMjZhYi1cdTAwM2VxbWkuaGFuZGxlKTtcbitcdGFiLVx1MDAzZXFtaS5hYiA9IE5VTEw7XG4rXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA3OjQ0LjIxMDM5MjY1NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODA0NTI2ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIG1vZGlmeSB0aGUgYGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGEgYGdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZWAgb24gY2VydGFpbiBhbGxvY2F0aW9uIGZhaWx1cmVzIOKAkyBuYW1lbHkgd2hlbiBhbGxvY2F0aW5nIGBhYi1cdTAwM2VxbWkuZXZlbnRfd3FgIGFuZCB3aGVuIGBxbWlfYWRkX2xvb2t1cGAgZmFpbHMuIE9uIHRoaXMgZXJyb3IgcGF0aCwgdGhlIGNvZGUgbm93IGNvcnJlY3RseSBjYWxscyBgcW1pX2hhbmRsZV9yZWxlYXNlYCBvbiBgYWItXHUwMDNlcW1pLmhhbmRsZWAgYW5kIGFsc28gc2V0cyBgYWItXHUwMDNlcW1pLmFiYCB0byBgTlVMTGAuIEdvb2QgcHJhY3RpY2UsIGVuc3VyaW5nIGEgY2xlYW4gc3RhdGUgb24gZXJyb3IuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZSwgYW5kIHdoYXQgc2NlbmFyaW9zIGl0IG1pZ2h0IGltcGFjdC4gU2luY2UgaXQncyB3aXRoaW4gdGhlIGBhdGgxMmtgIGRyaXZlciwgdGhlIHF1ZXN0aW9uIGlzLCAqY2FuKiB0aGlzIGVycm9yIHBhdGggZXZlbiBiZSBoaXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgdGhpcyBhIFBDSSBkZXZpY2UgZHJpdmVyLCBvciBpcyBpdCBBSEIsIGFuZCB3b3VsZCB2aXJ0dWFsaXphdGlvbiBhZmZlY3QgaXRzIHVzYWdlPyBUaGVyZWZvcmUsIEknbGwgYGdyZXBgIGZvciBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgIGFuZCBzZWUgd2hlcmUgaXQncyBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50IGFuZCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgY29kZSBpcyB1c2VkIGluIGNvbnRleHQsIGFuZCB3aGV0aGVyIHRoaXMgZXJyb3IgaGFuZGxpbmcgaXMgZXNzZW50aWFsIGZvciBhIHZpcnR1YWxpemVkIGluc3RhbnRpYXRpb24gb2YgdGhlIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGNvbmRpdGlvbnMgd2hpY2ggdHJpZ2dlciB0aGUgYGdvdG9gIGFyZSBhdCBhbGwgcG9zc2libGUgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDgwLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MDc6NDguODkwODQ3MzY5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3ODI1NjY4NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9ODE1PXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjgyNDpcXHRyZXQgPSBhdGgxMmtfcW1pX2luaXRfc2VydmljZShhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODI1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmM9Mzk2NT1zdGF0aWMgdm9pZCBhdGgxMmtfcW1pX2RyaXZlcl9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMtNDAzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jOjQwMzg6aW50IGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MDM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmg9NjQ0PXZvaWQgYXRoMTJrX3FtaV9kZWluaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oOjY0NTppbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaC02NDYtdm9pZCBhdGgxMmtfcW1pX2ZyZWVfcmVzb3VyY2Uoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA3OjUyLjY3MzQxODM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwMzIxNzI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyBvZiB0aGUgYXRoMTJrIERyaXZlcioqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBhdGgxMmsgZHJpdmVyIGNvZGUgYWdhaW4uIEkgc2VlIGBhdGgxMmtfY29yZV9zb2NfY3JlYXRlYCBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCB0aGUgY29yZSBTT0MgY29tcG9uZW50cy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCB3aGF0J3MgaW50ZXJlc3RpbmcgaXMgdGhhdCBpdCBjYWxscyBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgLiAgSSBrbm93IFFNSSAoUXVhbGNvbW0gTVNNIEludGVyZmFjZSkgaXMgaGVhdmlseSBpbnZvbHZlZCBpbiB0aGUgZmlybXdhcmUgaW50ZXJhY3Rpb24gb24gdGhlc2UgY2hpcHMsIHNvIHRoYXQgbWFrZXMgc2Vuc2UuIFNlZW1zIGxpa2UgdGhlIFNPQyBjcmVhdGlvbiBpcyBpbnRlcnR3aW5lZCB3aXRoIHNldHRpbmcgdXAgdGhlIFFNSSBzZXJ2aWNlLCBhIGNvbW1vbiBwYXR0ZXJuLlxuXG5CdXQgaGFuZyBvbuKApiB3aGVyZSBleGFjdGx5IGlzIGBhdGgxMmtfY29yZV9zb2NfY3JlYXRlYCBiZWluZyAqY2FsbGVkKiBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aGUgZXhlY3V0aW9uIGZsb3cgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFRoaXMgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgdGhlIHdob2xlIHRoaW5nIGJvb3RzdHJhcHMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIHBvd2VyLXVwIHNlcXVlbmNlIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLiBJIG5lZWQgdG8ga25vdyB0aGUgZW50cnkgcG9pbnQgdG8gdGhpcyB3aG9sZSBTT0MgY3JlYXRpb24gcHJvY2Vzcy4gSXMgaXQgZHJpdmVuIGJ5IHByb2JlIGZ1bmN0aW9uIG9yIHNvbWV0aGluZyBlbHNlPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIHBhcmFtb3VudCB0byBncmFzcGluZyB0aGUgZW50aXJlIGluaXRpYWxpemF0aW9uIGxhbmRzY2FwZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0OSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA3OjU2LjA3NjYzNzU4NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTYwOTI3MDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19jb3JlX3NvY19jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9ODA0PWludCBhdGgxMmtfY29yZV9jaGVja19zbWJpb3Moc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTgxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzo4MTU6c3RhdGljIGludCBhdGgxMmtfY29yZV9zb2NfY3JlYXRlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTIxNDg9c3RhdGljIGludCBhdGgxMmtfY29yZV9od19ncm91cF9jcmVhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0yMTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjIxNjI6XFx0XFx0cmV0ID0gYXRoMTJrX2NvcmVfc29jX2NyZWF0ZShhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMjE2My1cXHRcXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA3OjU4LjAzNzU2OTk1NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjIxOTA1OTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqVHJhY2luZyB0aGUgT3JpZ2lucyBvZiBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlYCoqXG5cbkFscmlnaHQsIHNvIHRoZSBxdWVzdGlvbiBpcywgd2hlcmUgaW4gdGhpcyBzcHJhd2xpbmcgY29kZWJhc2UgaXMgYGF0aDEya19jb3JlX2h3X2dyb3VwX2NyZWF0ZWAgYWN0dWFsbHkgZ2V0dGluZyBpbnZva2VkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzdGFjayB0byBncmFzcCBpdHMgcm9sZSBhbmQgY29udGV4dCB3aXRoaW4gdGhlIGRyaXZlci4gVGltZSB0byBkaWcgaW4uIEkgc2hvdWxkIHN0YXJ0IGJ5IGRvaW5nIGEgcXVpY2sgZ3JlcCB0aHJvdWdoIHRoZSBjb2RlLCBpZGVhbGx5IHVzaW5nIHNvbWV0aGluZyBlZmZpY2llbnQgdGhhdCBjYW4gaGFuZGxlIGNyb3NzLXJlZmVyZW5jaW5nIHdpdGhpbiB0aGlzIGxhcmdlIHByb2plY3QuIFRoZSBnb2FsIGlzIGEgbGlzdCBvZiBhbGwgY2FsbCBzaXRlcy4gVGhhdCBpbml0aWFsIHNlYXJjaCB3aWxsIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50cywgd2hpY2ggaG9wZWZ1bGx5IHdpbGwgcmV2ZWFsIGEgY2xlYXIgcGF0aCB0aHJvdWdoIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgb3IgaW50ZXJydXB0IGhhbmRsaW5nIGZsb3dzLiBGcm9tIHRoZXJlLCBJJ2xsIG5lZWQgdG8gbG9vayBhdCB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciB0aGUgY2FsbCAtIGlzIGl0IGR1cmluZyBkZXZpY2UgcHJvYmUsIGEgaGFyZHdhcmUgZXZlbnQsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGVuLCBJIGNhbiBzdGFydCBhbmFseXppbmcgdGhvc2UgY2FsbCBzaXRlcyBpbiBkZXRhaWwuIEknbSBob3BpbmcgdGhlIGNvZGUgcHJvdmlkZXMgZW5vdWdoIGRlc2NyaXB0aXZlIGNvbW1lbnRzLCBvciB0aGF0IHRoZSBmdW5jdGlvbiBuYW1lcyB0aGVtc2VsdmVzIGdpdmUgYSBoaW50IVxuXG5cbiIsIklucHV0VG9rZW5zIjozNjY5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MDg6MjcuMjU5NDc3NTgyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MjI1MDcyNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTE4MTk9c3RhdGljIGlubGluZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjE4MjA6Ym9vbCBhdGgxMmtfY29yZV9od19ncm91cF9jcmVhdGVfcmVhZHkoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTgyMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0yMTE2PXZvaWQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY2xlYW51cChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIxNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MjE0ODpzdGF0aWMgaW50IGF0aDEya19jb3JlX2h3X2dyb3VwX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0yMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTIyMjk9aW50IGF0aDEya19jb3JlX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIyNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MjI1NTpcXHRpZiAoYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlX3JlYWR5KGFnKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjIyNTY6XFx0XFx0cmV0ID0gYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlKGFnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0yMjU3LVxcdFxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MDg6MjguOTgxOTkyNTA1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzNTAzODg1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlRyYWNpbmcgdGhlIEluaXRpYWxpemF0aW9uIG9mIHRoZSBhdGgxMGsgQ29yZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiB0aGUgYGF0aDEwa2AgZHJpdmVyIGNvcmUuIFRoZSBzcGVjaWZpYyBxdWVzdGlvbiBidXJuaW5nIGluIG15IG1pbmQgcmlnaHQgbm93IGlzOiBXaGVyZSBleGFjdGx5IGRvZXMgdGhlIGBhdGgxMmtfY29yZV9pbml0YCBmdW5jdGlvbiBnZXQgY2FsbGVkPyBVbmRlcnN0YW5kaW5nIHRoaXMgaXMgY3JpdGljYWwgZm9yIGdyYXNwaW5nIHRoZSBjb21wbGV0ZSBzdGFydHVwIHNlcXVlbmNlIGFuZCBob3cgdGhlIHZhcmlvdXMgY29tcG9uZW50cyBvZiB0aGUgZHJpdmVyIGFyZSBicm91Z2h0IHRvIGxpZmUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgYW5kIHNlZSB3aGF0J3MgdHJpZ2dlcmluZyB0aGUgY29yZSBpbml0aWFsaXphdGlvbi4gSXMgaXQgcGFydCBvZiBzb21lIGxhcmdlciBkZXZpY2UgcHJvYmluZyBwcm9jZXNzPyBJcyBpdCByZWxhdGVkIHRvIFBDSSBvciBTRElPIGluaXRpYWxpemF0aW9uPyBQZXJoYXBzIGl0J3MgY2FsbGVkIGZyb20gYSBtb2R1bGUgbG9hZCBoYW5kbGVyPyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIGZpbmQgdGhlIHByZWNpc2UgbG9jYXRpb24gb2YgdGhhdCBmdW5jdGlvbiBjYWxsLCBzbyBJIGNhbiB0aGVuIGFuYWx5emUgd2hhdCBoYXBwZW5zIGJlZm9yZSBhbmQgYWZ0ZXIgYGF0aDEya19jb3JlX2luaXRgLiBHb3R0YSBmb2xsb3cgdGhlIGJyZWFkY3J1bWJzIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzg2LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MDg6MzMuMTE3MDM0MDY5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzMwNzA5OTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19jb3JlX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0xMDE5PXN0YXRpYyBpbnQgYXRoMTJrX2FoYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTExMTpcXHRyZXQgPSBhdGgxMmtfY29yZV9pbml0KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTExMTItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MjE4OD12b2lkIGF0aDEya19jb3JlX2h3X2dyb3VwX3NldF9tbG9fY2FwYWJsZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIyMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MjIyOTppbnQgYXRoMTJrX2NvcmVfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIyMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg9MTI2ND1pbnQgYXRoMTJrX2NvcmVfcHJlX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg6MTI2NTppbnQgYXRoMTJrX2NvcmVfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmF0aDEyayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtMTI2Ni12b2lkIGF0aDEya19jb3JlX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmF0aDEyayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE1MjQ9c3RhdGljIGludCBhdGgxMmtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTY0NTpcXHRyZXQgPSBhdGgxMmtfY29yZV9pbml0KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE2NDYtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTowODozNC44NDc3NTE3NDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEyMzg4MDM5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBhdGgxMmsgRHJpdmVyOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgYnVnIGZpeCwgYW5kIGl0J3MgY2FsbGVkIGZyb20gYGF0aDEya19haGJfcHJvYmVgIGFuZCBgYXRoMTJrX3BjaV9wcm9iZWAuIE5vdywgQUhCIGFuZCBQQ0kgZHJpdmVycyBhcmUgdXN1YWxseSBhIG5vLWdvIGluIG15IHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIHNldHVwcyB1bmxlc3MgdGhlcmUncyBkZWRpY2F0ZWQgZW11bGF0aW9uIG9yIEkgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyBkaXJlY3RseS4gQnV0IGhvbGQgb24sIEkgcmVtZW1iZXIgU3l6a2FsbGVyIGNhbiBhY3R1YWxseSBmdXp6IFBDSSBkZXZpY2VzIHVzaW5nIGBzeXpfcGNpX3ZwY2lgIGFuZCByZWxhdGVkIG1lY2hhbmlzbXMuIEFuZCwgaWYgSSdtIHRoaW5raW5nIHJpZ2h0LCBgYXRoMTJrYCAqaXMqIGEgUENJIGRyaXZlciwgaXNuJ3QgaXQ/IEJpbmdvISBTeXprYWxsZXIgaGFzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0byBsb29rIGludG8uXG5cblRoZSBzcGVjaWZpYyBmaXggaXMgYSBzdHJhaWdodGZvcndhcmQgYnVnIGZpeCBpbiBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgIOKAkyBsb29rcyBsaWtlIGEgbWVtb3J5IG9yIHJlc291cmNlIGxlYWsgZml4IG9uIGFuIGVycm9yIHBhdGguIEl0IGFkZHMgYSBgZ290byBlcnJfcmVsZWFzZV9xbWlfaGFuZGxlYCBvbiBmYWlsdXJlcyBkdXJpbmcgYGFiLVx1MDAzZXFtaS5ldmVudF93cWAgYWxsb2NhdGlvbiBhbmQgYHFtaV9hZGRfbG9va3VwYC4gU2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZSwgc28gZnV6emluZyBpcyBwcm9iYWJseSB3b3J0aCB0aGUgZWZmb3J0LlxuXG5GaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgcXVpY2tseSBjaGVjayBpZiBgYXRoMTJrYCBpcyBhY3R1YWxseSBlbmFibGVkIGluIG15IGN1cnJlbnQgY29uZmlncywgb3IgaWYgSSdsbCBuZWVkIHRvIGVuYWJsZSBpdC4gSSdsbCB0YWtlIGEgcXVpY2sgcGVlayBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnYCB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTkzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA4OjM5Ljk3MTYzNDI4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgQVRIMTJLXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgIDU6XFx0XFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcXG4gICA2OlxcdFxcdHNlbGVjdCBNSElfQlVTXFxuICAgNzpcXHRcXHRzZWxlY3QgUVJUUlxcbiAgIDg6XFx0XFx0c2VsZWN0IFFSVFJfTUhJXFxuICAgOTpcXHRcXHRzZWxlY3QgUENJX1BXUkNUUkxfUFdSU0VRIGlmIEhBVkVfUFdSQ1RSTFxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgKElFRUVcXG4gIDEyOlxcdFxcdCAgODAyLjExYmUpIGZhbWlseSBvZiBjaGlwc2V0cywgZm9yIGV4YW1wbGUgV0NONzg1MCBhbmRcXG4gIDEzOlxcdFxcdCAgUUNOOTI3NC5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgYXRoMTJrLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgQVRIMTJLX0FIQlxcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgUkVNT1RFUFJPQ1xcbiAgMjA6XFx0XFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxcbiAgMjE6XFx0XFx0c2VsZWN0IFFDT01fU0NNXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIEVuYWJsZSBzdXBwb3J0IGZvciBBdGgxMmsgQUhCIGJ1cyBjaGlwc2V0cywgZXhhbXBsZSBJUFE1MzMyLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgQVRIMTJLX0RFQlVHXFxuICAyNjpcXHRcXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbiAgMjc6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMktcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgRW5hYmxlIGRlYnVnIHN1cHBvcnQsIGZvciBleGFtcGxlIGRlYnVnIG1lc3NhZ2VzIHdoaWNoIG11c3RcXG4gIDMwOlxcdFxcdCAgYmUgZW5hYmxlZCBzZXBhcmF0ZWx5IHVzaW5nIHRoZSBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIuXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICAzMzpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBBVEgxMktfREVCVUdGU1xcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXG4gIDQwOlxcdFxcbiAgNDE6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcXG4gIDQyOlxcdFxcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuICA0NTpcXHRcXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbiAgNDY6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgRVZFTlRfVFJBQ0lOR1xcbiAgNDc6XFx0XFx0aGVscFxcbiAgNDg6XFx0XFx0ICBFbmFibGUgYXRoMTJrIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICA1MTpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICA1MjpcXHRcXG4gIDUzOlxcdGNvbmZpZyBBVEgxMktfQ09SRURVTVBcXG4gIDU0OlxcdFxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG4gIDU1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLXFxuICA1NjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDU3OlxcdFxcdGhlbHBcXG4gIDU4OlxcdFxcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICA2MTpcXHRcXHQgIGR1bXAgY29sbGVjdGlvbiBub3QgcmVxdWlyZWQgY2hvb3NlIE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA4OjM5Ljk3MTY5OTY5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjA0MDE1OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIGBhdGgxMmtfcW1pX2luaXRfc2VydmljZWAqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlnIGlzIGBBVEgxMktgLCBhbmQgdGhlIHBhdGNoIEknbSBsb29raW5nIGF0IGlzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGV2ZW4gZnV6emFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTHVja2lseSwgc3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIsIHNvIHByb2JpbmcgUENJIGRyaXZlcnMsIGxpa2UgdGhpcyBvbmUsIHNob3VsZG4ndCBiZSBhIHByb2JsZW0uIEJ1dCwgd2FpdCwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBkZXBlbmRlbmNpZXMhIGBhdGgxMmtgIGRlcGVuZHMgb24gYE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBQQ0lgLiBSaWdodCwgSSdsbCBuZWVkIHRvIGVuYWJsZSB0aG9zZSBpbiBhZGRpdGlvbiB0byBlbmFibGluZyBgQVRIMTJLYCBhbmQsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIGBBVEgxMktfREVCVUdgLlxuXG5Ob3csIHRoZSBjb3JlIG9mIHRoZSBpc3N1ZTogaXMgYGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlYCBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nPyBZZXMsIGl0J3MgdGhlIGZ1bmN0aW9uIGJlaW5nIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IHRoZSBwYXRjaCwgc28gaXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIE9rYXksIGJ1dCBsZXQncyBiZSByZWFsaXN0aWMuIFRoaXMgbG9va3MgbGlrZSBhIHNpbXBsZSBlcnJvciBwYXRoIGZpeC4gSXMgaXQgZXZlbiAqd29ydGgqIGZ1enppbmc/IFllcywgaXQncyBzdGlsbCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgc28gdGhlcmUncyBhbHdheXMgYSBwb3NzaWJpbGl0eSBvZiB1bmNvdmVyaW5nIHNvbWV0aGluZy5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgQVRIMTJLYCBpcyB0aGUgbWFpbiBjb25maWcgSSBuZWVkLCBhbmQgdGhlbiB2ZXJpZnkgdGhlIGZ1bmN0aW9uIGlzIHdoYXQgSSB0aGluayBpdCBpcyBieSBsb29raW5nIGF0IGBhdGgxMmtfcW1pX2luaXRfc2VydmljZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmNgLiBJJ20gY29uZmlkZW50IHRoYXQgaWYgdGhlIHBhdGNoIGlzIHRoZXJlLCBhbmQgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LCBJIGNhbiBzdWNjZXNzZnVsbHkgZnV6eiBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY2NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA4OjQ1LjE3NTcxNzUzOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDM4LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MDM4OlxcdGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbjQwMzk6XFx0e1xcbjQwNDA6XFx0XFx0aW50IHJldDtcXG40MDQxOlxcdFxcbjQwNDI6XFx0XFx0bWVtc2V0KFxcdTAwMjZhYi1cXHUwMDNlcW1pLnRhcmdldCwgMCwgc2l6ZW9mKHN0cnVjdCB0YXJnZXRfaW5mbykpO1xcbjQwNDM6XFx0XFx0bWVtc2V0KFxcdTAwMjZhYi1cXHUwMDNlcW1pLnRhcmdldF9tZW0sIDAsIHNpemVvZihzdHJ1Y3QgdGFyZ2V0X21lbV9jaHVuaykpO1xcbjQwNDQ6XFx0XFx0YWItXFx1MDAzZXFtaS5hYiA9IGFiO1xcbjQwNDU6XFx0XFxuNDA0NjpcXHRcXHRhYi1cXHUwMDNlcW1pLnRhcmdldF9tZW1fbW9kZSA9IGFiLVxcdTAwM2V0YXJnZXRfbWVtX21vZGU7XFxuNDA0NzpcXHRcXHRyZXQgPSBxbWlfaGFuZGxlX2luaXQoXFx1MDAyNmFiLVxcdTAwM2VxbWkuaGFuZGxlLCBBVEgxMktfUU1JX1JFU1BfTEVOX01BWCxcXG40MDQ4OlxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZhdGgxMmtfcW1pX29wcywgYXRoMTJrX3FtaV9tc2dfaGFuZGxlcnMpO1xcbjQwNDk6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG40MDUwOlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGluaXRpYWxpemUgcW1pIGhhbmRsZVxcXFxuXFxcIik7XFxuNDA1MTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjQwNTI6XFx0XFx0fVxcbjQwNTM6XFx0XFxuNDA1NDpcXHRcXHRhYi1cXHUwMDNlcW1pLmV2ZW50X3dxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoXFxcImF0aDEya19xbWlfZHJpdmVyX2V2ZW50XFxcIiwgMCk7XFxuNDA1NTpcXHRcXHRpZiAoIWFiLVxcdTAwM2VxbWkuZXZlbnRfd3EpIHtcXG40MDU2OlxcdFxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgd29ya3F1ZXVlXFxcXG5cXFwiKTtcXG40MDU3OlxcdFxcdFxcdHJldCA9IC1FRkFVTFQ7XFxuNDA1ODpcXHRcXHRcXHRnb3RvIGVycl9yZWxlYXNlX3FtaV9oYW5kbGU7XFxuNDA1OTpcXHRcXHR9XFxuNDA2MDpcXHRcXG40MDYxOlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZhYi1cXHUwMDNlcW1pLmV2ZW50X2xpc3QpO1xcbjQwNjI6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFiLVxcdTAwM2VxbWkuZXZlbnRfbG9jayk7XFxuNDA2MzpcXHRcXHRJTklUX1dPUksoXFx1MDAyNmFiLVxcdTAwM2VxbWkuZXZlbnRfd29yaywgYXRoMTJrX3FtaV9kcml2ZXJfZXZlbnRfd29yayk7XFxuNDA2NDpcXHRcXG40MDY1OlxcdFxcdHJldCA9IHFtaV9hZGRfbG9va3VwKFxcdTAwMjZhYi1cXHUwMDNlcW1pLmhhbmRsZSwgUU1JX1NFUlZJQ0VfSURfV0xGVyxcXG40MDY2OlxcdFxcdFxcdFxcdCAgICAgQVRIMTJLX1FNSV9XTEZXX1NFUlZJQ0VfVkVSU19WMDEsXFxuNDA2NzpcXHRcXHRcXHRcXHQgICAgIGFiLVxcdTAwM2VxbWkuc2VydmljZV9pbnNfaWQpO1xcbjQwNjg6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG40MDY5OlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGFkZCBxbWkgbG9va3VwXFxcXG5cXFwiKTtcXG40MDcwOlxcdFxcdFxcdGRlc3Ryb3lfd29ya3F1ZXVlKGFiLVxcdTAwM2VxbWkuZXZlbnRfd3EpO1xcbjQwNzE6XFx0XFx0XFx0Z290byBlcnJfcmVsZWFzZV9xbWlfaGFuZGxlO1xcbjQwNzI6XFx0XFx0fVxcbjQwNzM6XFx0XFxuNDA3NDpcXHRcXHRyZXR1cm4gcmV0O1xcbjQwNzU6XFx0XFxuNDA3NjpcXHRlcnJfcmVsZWFzZV9xbWlfaGFuZGxlOlxcbjQwNzc6XFx0XFx0cW1pX2hhbmRsZV9yZWxlYXNlKFxcdTAwMjZhYi1cXHUwMDNlcW1pLmhhbmRsZSk7XFxuNDA3ODpcXHRcXHRhYi1cXHUwMDNlcW1pLmFiID0gTlVMTDtcXG40MDc5OlxcdFxcbjQwODA6XFx0XFx0cmV0dXJuIHJldDtcXG40MDgxOlxcdH1cXG40MDgyOlxcdFxcbjQwODM6XFx0dm9pZCBhdGgxMmtfcW1pX2RlaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuNDA4NDpcXHR7XFxuNDA4NTpcXHRcXHRpZiAoIWFiLVxcdTAwM2VxbWkuYWIpXFxuNDA4NjpcXHRcXHRcXHRyZXR1cm47XFxuNDA4NzpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MDg6NDUuMTc1ODk5NjE5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NTcxMDk2MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGFkZHJlc3NlcyBhIHJlc291cmNlIGxlYWsgd2l0aGluIHRoZSBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgIGZ1bmN0aW9uLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGV5J3ZlIGFkZGVkIGEgYGdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZWAgaW4gYSBjb3VwbGUgb2YgcGxhY2VzIHdoZXJlIGFsbG9jYXRpb24gZmFpbHMg4oCTIHNwZWNpZmljYWxseSB3aGVuIGFsbG9jYXRpbmcgYGFiLVx1MDAzZXFtaS5ldmVudF93cWAgYW5kIGFsc28gdXBvbiBmYWlsdXJlIG9mIGBxbWlfYWRkX2xvb2t1cGAuIFRoZSBlcnJvciBwYXRoIHRoZW4gcHJvcGVybHkgcmVsZWFzZXMgdGhlIFFNSSBoYW5kbGUgdXNpbmcgYHFtaV9oYW5kbGVfcmVsZWFzZShcdTAwMjZhYi1cdTAwM2VxbWkuaGFuZGxlKWAgYW5kIG51bGxzIG91dCBgYWItXHUwMDNlcW1pLmFiYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAqaXMgdGhpcyBjaGFuZ2UgZnV6ei13b3J0aHk/KiBBYnNvbHV0ZWx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gd2l0aGluIGEgZHJpdmVyLCBzbyB0aGF0J3MgYSBwcmltZSB0YXJnZXQuIFRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYGF0aDEya2AsIGFuZCB0aGUgc3BlY2lmaWMgY29uZmlnIG5lZWRlZCBpcyBgQVRIMTJLYC4gVGhlIGtleSBzeW1ib2wgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcgd2lsbCwgb2YgY291cnNlLCBiZSBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgLlxuXG5Ob3csIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCB0byBlbnN1cmUgdGhlIHRhcmdldCBpcyByZWFjaGFibGUuIGBBVEgxMktgIGl0c2VsZiBkZXBlbmRzIG9uIGBNQUM4MDIxMWAsIGBIQVNfRE1BYCwgYW5kIGBQQ0lgLiBTaW5jZSB0aGUgZnV6emVyIGNhbiBiZSBjb25maWd1cmVkIHRvIGVuYWJsZSB0aG9zZSBkZXBlbmRlbmNpZXMsIGxpc3RpbmcganVzdCBgQVRIMTJLYCBpcyBzdWZmaWNpZW50LlxuXG5OZXh0LCBJIG5lZWQgdG8gY29uZmlybSBpZiBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgIGlzIGV2ZW4gcmVhY2hhYmxlLiBBIHF1aWNrIHJldmlldyBjb25maXJtcyBpdCdzIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlIG9wZXJhdGlvbi4gRXhjZWxsZW50LCB0aGUgUENJIGZ1enplciBjYW4gdHJpZ2dlciB0aGF0LiBUaGlzIG1ha2VzIHRoaXMgcGF0Y2ggYSB2aWFibGUgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5BbHJpZ2h0LCBJJ20gcmVhZHkgdG8gc2V0IHVwIHRoZSBmdXp6aW5nIHRhc2sgYmFzZWQgb24gdGhlc2UgZmluZGluZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyMDUsIk91dHB1dFRva2VucyI6OTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTowODo1MC43MzMwMTExNzFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzgyMjE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIMTJLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFBDSSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgZGV2aWNlIHByb2JlLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgUENJIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIMTJLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFBDSSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgZGV2aWNlIHByb2JlLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgUENJIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qwn2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 00:28:56 +0000 UTC FinishedAt: 2026-07-09 01:08:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH12K" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH12K" ], "series_id": "7b9bebf0-c2ff-455c-bf55-0c45263a0b94" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath12k_qmi_init_service" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDEySyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDEya19xbWlfaW5pdF9zZXJ2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBhdGgxMmtfcW1pX2luaXRfc2VydmljZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgUENJIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBkZXZpY2UgcHJvYmUsIHdoaWNoIGlzIGZ1enphYmxlIHZpYSBQQ0kgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGViMjFlZmJiMDk4NDNlNjQzNDcwNTU3OTY1MDhkODNiYTU0Yzg4YzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDAxOjA3OjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jXG5pbmRleCBmZDc2MmI1ZDdiYjU5Ny4uMzFlOWZhOWE2MmJlMTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jXG5AQCAtNDA1NCw3ICYjNDM7NDA1NCw4IEBAIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0YWItXHUwMDNlcW1pLmV2ZW50X3dxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoXCYjMzQ7YXRoMTJrX3FtaV9kcml2ZXJfZXZlbnRcJiMzNDssIDApO1xuIFx0aWYgKCFhYi1cdTAwM2VxbWkuZXZlbnRfd3EpIHtcbiBcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIHdvcmtxdWV1ZVxcblwmIzM0Oyk7XG4tXHRcdHJldHVybiAtRUZBVUxUO1xuJiM0MztcdFx0cmV0ID0gLUVGQVVMVDtcbiYjNDM7XHRcdGdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTtcbiBcdH1cbiBcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFiLVx1MDAzZXFtaS5ldmVudF9saXN0KTtcbkBAIC00MDY3LDkgJiM0Mzs0MDY4LDE1IEBAIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGFkZCBxbWkgbG9va3VwXFxuXCYjMzQ7KTtcbiBcdFx0ZGVzdHJveV93b3JrcXVldWUoYWItXHUwMDNlcW1pLmV2ZW50X3dxKTtcbi1cdFx0cmV0dXJuIHJldDtcbiYjNDM7XHRcdGdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTtcbiBcdH1cbiBcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7ZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTpcbiYjNDM7XHRxbWlfaGFuZGxlX3JlbGVhc2UoXHUwMDI2YWItXHUwMDNlcW1pLmhhbmRsZSk7XG4mIzQzO1x0YWItXHUwMDNlcW1pLmFiID0gTlVMTDtcbiYjNDM7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGgxMmtfcW1pX2luaXRfc2VydmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFBDSSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgZGV2aWNlIHByb2JlLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgUENJIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGViMjFlZmJiMDk4NDNlNjQzNDcwNTU3OTY1MDhkODNiYTU0Yzg4YzAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCA5IDAxOjA3OjQyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMKaW5kZXggZmQ3NjJiNWQ3YmI1OTcuLjMxZTlmYTlhNjJiZTE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMKQEAgLTQwNTQsNyAmIzQzOzQwNTQsOCBAQCBpbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYikKIAlhYi0mZ3Q7cW1pLmV2ZW50X3dxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoJiMzNDthdGgxMmtfcW1pX2RyaXZlcl9ldmVudCYjMzQ7LCAwKTsKIAlpZiAoIWFiLSZndDtxbWkuZXZlbnRfd3EpIHsKIAkJYXRoMTJrX2VycihhYiwgJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgd29ya3F1ZXVlXG4mIzM0Oyk7Ci0JCXJldHVybiAtRUZBVUxUOwomIzQzOwkJcmV0ID0gLUVGQVVMVDsKJiM0MzsJCWdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTsKIAl9CiAKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2FiLSZndDtxbWkuZXZlbnRfbGlzdCk7CkBAIC00MDY3LDkgJiM0Mzs0MDY4LDE1IEBAIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKQogCWlmIChyZXQgJmx0OyAwKSB7CiAJCWF0aDEya193YXJuKGFiLCAmIzM0O2ZhaWxlZCB0byBhZGQgcW1pIGxvb2t1cFxuJiMzNDspOwogCQlkZXN0cm95X3dvcmtxdWV1ZShhYi0mZ3Q7cW1pLmV2ZW50X3dxKTsKLQkJcmV0dXJuIHJldDsKJiM0MzsJCWdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTsKIAl9CiAKJiM0MzsJcmV0dXJuIHJldDsKJiM0MzsKJiM0MztlcnJfcmVsZWFzZV9xbWlfaGFuZGxlOgomIzQzOwlxbWlfaGFuZGxlX3JlbGVhc2UoJmFtcDthYi0mZ3Q7cW1pLmhhbmRsZSk7CiYjNDM7CWFiLSZndDtxbWkuYWIgPSBOVUxMOwomIzQzOwogCXJldHVybiByZXQ7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4MAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBtb2RpZnkgdGhlIGBhdGgxMmtfcW1pX2luaXRfc2VydmljZWAgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBhIGBnb3RvIGVycl9yZWxlYXNlX3FtaV9oYW5kbGVgIG9uIGNlcnRhaW4gYWxsb2NhdGlvbiBmYWlsdXJlcyDigJMgbmFtZWx5IHdoZW4gYWxsb2NhdGluZyBgYWItJmd0O3FtaS5ldmVudF93cWAgYW5kIHdoZW4gYHFtaV9hZGRfbG9va3VwYCBmYWlscy4gT24gdGhpcyBlcnJvciBwYXRoLCB0aGUgY29kZSBub3cgY29ycmVjdGx5IGNhbGxzIGBxbWlfaGFuZGxlX3JlbGVhc2VgIG9uIGBhYi0mZ3Q7cW1pLmhhbmRsZWAgYW5kIGFsc28gc2V0cyBgYWItJmd0O3FtaS5hYmAgdG8gYE5VTExgLiBHb29kIHByYWN0aWNlLCBlbnN1cmluZyBhIGNsZWFuIHN0YXRlIG9uIGVycm9yLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlLCBhbmQgd2hhdCBzY2VuYXJpb3MgaXQgbWlnaHQgaW1wYWN0LiBTaW5jZSBpdCYjMzk7cyB3aXRoaW4gdGhlIGBhdGgxMmtgIGRyaXZlciwgdGhlIHF1ZXN0aW9uIGlzLCAqY2FuKiB0aGlzIGVycm9yIHBhdGggZXZlbiBiZSBoaXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgdGhpcyBhIFBDSSBkZXZpY2UgZHJpdmVyLCBvciBpcyBpdCBBSEIsIGFuZCB3b3VsZCB2aXJ0dWFsaXphdGlvbiBhZmZlY3QgaXRzIHVzYWdlPyBUaGVyZWZvcmUsIEkmIzM5O2xsIGBncmVwYCBmb3IgYGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlYCBhbmQgc2VlIHdoZXJlIGl0JiMzOTtzIGNhbGxlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnQgYW5kIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjb2RlIGlzIHVzZWQgaW4gY29udGV4dCwgYW5kIHdoZXRoZXIgdGhpcyBlcnJvciBoYW5kbGluZyBpcyBlc3NlbnRpYWwgZm9yIGEgdmlydHVhbGl6ZWQgaW5zdGFudGlhdGlvbiBvZiB0aGUgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgY29uZGl0aW9ucyB3aGljaCB0cmlnZ2VyIHRoZSBgZ290b2AgYXJlIGF0IGFsbCBwb3NzaWJsZSBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3FtaV9pbml0X3NlcnZpY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9ODE1PXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTgyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjgyNDpcdHJldCA9IGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTgyNS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jPTM5NjU9c3RhdGljIHZvaWQgYXRoMTJrX3FtaV9kcml2ZXJfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MDM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYzo0MDM4OmludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MDM5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oPTY0ND12b2lkIGF0aDEya19xbWlfZGVpbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oOjY0NTppbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oLTY0Ni12b2lkIGF0aDEya19xbWlfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQ5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIEluaXRpYWxpemF0aW9uIEZsb3cgb2YgdGhlIGF0aDEyayBEcml2ZXIqKgoKUmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBhdGgxMmsgZHJpdmVyIGNvZGUgYWdhaW4uIEkgc2VlIGBhdGgxMmtfY29yZV9zb2NfY3JlYXRlYCBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCB0aGUgY29yZSBTT0MgY29tcG9uZW50cy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgd2hhdCYjMzk7cyBpbnRlcmVzdGluZyBpcyB0aGF0IGl0IGNhbGxzIGBhdGgxMmtfcW1pX2luaXRfc2VydmljZWAuICBJIGtub3cgUU1JIChRdWFsY29tbSBNU00gSW50ZXJmYWNlKSBpcyBoZWF2aWx5IGludm9sdmVkIGluIHRoZSBmaXJtd2FyZSBpbnRlcmFjdGlvbiBvbiB0aGVzZSBjaGlwcywgc28gdGhhdCBtYWtlcyBzZW5zZS4gU2VlbXMgbGlrZSB0aGUgU09DIGNyZWF0aW9uIGlzIGludGVydHdpbmVkIHdpdGggc2V0dGluZyB1cCB0aGUgUU1JIHNlcnZpY2UsIGEgY29tbW9uIHBhdHRlcm4uCgpCdXQgaGFuZyBvbuKApiB3aGVyZSBleGFjdGx5IGlzIGBhdGgxMmtfY29yZV9zb2NfY3JlYXRlYCBiZWluZyAqY2FsbGVkKiBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aGUgZXhlY3V0aW9uIGZsb3cgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFRoaXMgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgdGhlIHdob2xlIHRoaW5nIGJvb3RzdHJhcHMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIHBvd2VyLXVwIHNlcXVlbmNlIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLiBJIG5lZWQgdG8ga25vdyB0aGUgZW50cnkgcG9pbnQgdG8gdGhpcyB3aG9sZSBTT0MgY3JlYXRpb24gcHJvY2Vzcy4gSXMgaXQgZHJpdmVuIGJ5IHByb2JlIGZ1bmN0aW9uIG9yIHNvbWV0aGluZyBlbHNlPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIHBhcmFtb3VudCB0byBncmFzcGluZyB0aGUgZW50aXJlIGluaXRpYWxpemF0aW9uIGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMmtfY29yZV9zb2NfY3JlYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTgwND1pbnQgYXRoMTJrX2NvcmVfY2hlY2tfc21iaW9zKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6ODE1OnN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0yMTQ4PXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIxNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoyMTYyOlx0XHRyZXQgPSBhdGgxMmtfY29yZV9zb2NfY3JlYXRlKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIxNjMtXHRcdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjY5CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipUcmFjaW5nIHRoZSBPcmlnaW5zIG9mIGBhdGgxMmtfY29yZV9od19ncm91cF9jcmVhdGVgKioKCkFscmlnaHQsIHNvIHRoZSBxdWVzdGlvbiBpcywgd2hlcmUgaW4gdGhpcyBzcHJhd2xpbmcgY29kZWJhc2UgaXMgYGF0aDEya19jb3JlX2h3X2dyb3VwX2NyZWF0ZWAgYWN0dWFsbHkgZ2V0dGluZyBpbnZva2VkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzdGFjayB0byBncmFzcCBpdHMgcm9sZSBhbmQgY29udGV4dCB3aXRoaW4gdGhlIGRyaXZlci4gVGltZSB0byBkaWcgaW4uIEkgc2hvdWxkIHN0YXJ0IGJ5IGRvaW5nIGEgcXVpY2sgZ3JlcCB0aHJvdWdoIHRoZSBjb2RlLCBpZGVhbGx5IHVzaW5nIHNvbWV0aGluZyBlZmZpY2llbnQgdGhhdCBjYW4gaGFuZGxlIGNyb3NzLXJlZmVyZW5jaW5nIHdpdGhpbiB0aGlzIGxhcmdlIHByb2plY3QuIFRoZSBnb2FsIGlzIGEgbGlzdCBvZiBhbGwgY2FsbCBzaXRlcy4gVGhhdCBpbml0aWFsIHNlYXJjaCB3aWxsIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50cywgd2hpY2ggaG9wZWZ1bGx5IHdpbGwgcmV2ZWFsIGEgY2xlYXIgcGF0aCB0aHJvdWdoIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgb3IgaW50ZXJydXB0IGhhbmRsaW5nIGZsb3dzLiBGcm9tIHRoZXJlLCBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgdGhlIGNhbGwgLSBpcyBpdCBkdXJpbmcgZGV2aWNlIHByb2JlLCBhIGhhcmR3YXJlIGV2ZW50LCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlbiwgSSBjYW4gc3RhcnQgYW5hbHl6aW5nIHRob3NlIGNhbGwgc2l0ZXMgaW4gZGV0YWlsLiBJJiMzOTttIGhvcGluZyB0aGUgY29kZSBwcm92aWRlcyBlbm91Z2ggZGVzY3JpcHRpdmUgY29tbWVudHMsIG9yIHRoYXQgdGhlIGZ1bmN0aW9uIG5hbWVzIHRoZW1zZWx2ZXMgZ2l2ZSBhIGhpbnQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTE4MTk9c3RhdGljIGlubGluZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MTgyMDpib29sIGF0aDEya19jb3JlX2h3X2dyb3VwX2NyZWF0ZV9yZWFkeShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTE4MjEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTIxMTY9dm9pZCBhdGgxMmtfY29yZV9od19ncm91cF9jbGVhbnVwKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIxNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoyMTQ4OnN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMjE0OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MjIyOT1pbnQgYXRoMTJrX2NvcmVfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIyNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzoyMjU1Olx0aWYgKGF0aDEya19jb3JlX2h3X2dyb3VwX2NyZWF0ZV9yZWFkeShhZykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjIyNTY6XHRcdHJldCA9IGF0aDEya19jb3JlX2h3X2dyb3VwX2NyZWF0ZShhZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0yMjU3LVx0XHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM4NgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipUcmFjaW5nIHRoZSBJbml0aWFsaXphdGlvbiBvZiB0aGUgYXRoMTBrIENvcmUqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiB0aGUgYGF0aDEwa2AgZHJpdmVyIGNvcmUuIFRoZSBzcGVjaWZpYyBxdWVzdGlvbiBidXJuaW5nIGluIG15IG1pbmQgcmlnaHQgbm93IGlzOiBXaGVyZSBleGFjdGx5IGRvZXMgdGhlIGBhdGgxMmtfY29yZV9pbml0YCBmdW5jdGlvbiBnZXQgY2FsbGVkPyBVbmRlcnN0YW5kaW5nIHRoaXMgaXMgY3JpdGljYWwgZm9yIGdyYXNwaW5nIHRoZSBjb21wbGV0ZSBzdGFydHVwIHNlcXVlbmNlIGFuZCBob3cgdGhlIHZhcmlvdXMgY29tcG9uZW50cyBvZiB0aGUgZHJpdmVyIGFyZSBicm91Z2h0IHRvIGxpZmUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgYW5kIHNlZSB3aGF0JiMzOTtzIHRyaWdnZXJpbmcgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24uIElzIGl0IHBhcnQgb2Ygc29tZSBsYXJnZXIgZGV2aWNlIHByb2JpbmcgcHJvY2Vzcz8gSXMgaXQgcmVsYXRlZCB0byBQQ0kgb3IgU0RJTyBpbml0aWFsaXphdGlvbj8gUGVyaGFwcyBpdCYjMzk7cyBjYWxsZWQgZnJvbSBhIG1vZHVsZSBsb2FkIGhhbmRsZXI/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgZmluZCB0aGUgcHJlY2lzZSBsb2NhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uIGNhbGwsIHNvIEkgY2FuIHRoZW4gYW5hbHl6ZSB3aGF0IGhhcHBlbnMgYmVmb3JlIGFuZCBhZnRlciBgYXRoMTJrX2NvcmVfaW5pdGAuIEdvdHRhIGZvbGxvdyB0aGUgYnJlYWRjcnVtYnMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDEya19jb3JlX2luaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0xMDE5PXN0YXRpYyBpbnQgYXRoMTJrX2FoYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTExMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTExMTpcdHJldCA9IGF0aDEya19jb3JlX2luaXQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMTEyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTIxODg9dm9pZCBhdGgxMmtfY29yZV9od19ncm91cF9zZXRfbWxvX2NhcGFibGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMjIyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjIyMjk6aW50IGF0aDEya19jb3JlX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIyMzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oPTEyNjQ9aW50IGF0aDEya19jb3JlX3ByZV9pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg6MTI2NTppbnQgYXRoMTJrX2NvcmVfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmF0aDEyayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaC0xMjY2LXZvaWQgYXRoMTJrX2NvcmVfZGVpbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYXRoMTJrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE1MjQ9c3RhdGljIGludCBhdGgxMmtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTY0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTY0NTpcdHJldCA9IGF0aDEya19jb3JlX2luaXQoYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNjQ2LVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTkzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGF0aDEyayBEcml2ZXI6IEEgUXVpY2sgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgYnVnIGZpeCwgYW5kIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBhdGgxMmtfYWhiX3Byb2JlYCBhbmQgYGF0aDEya19wY2lfcHJvYmVgLiBOb3csIEFIQiBhbmQgUENJIGRyaXZlcnMgYXJlIHVzdWFsbHkgYSBuby1nbyBpbiBteSBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBzZXR1cHMgdW5sZXNzIHRoZXJlJiMzOTtzIGRlZGljYXRlZCBlbXVsYXRpb24gb3IgSSBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzIGRpcmVjdGx5LiBCdXQgaG9sZCBvbiwgSSByZW1lbWJlciBTeXprYWxsZXIgY2FuIGFjdHVhbGx5IGZ1enogUENJIGRldmljZXMgdXNpbmcgYHN5el9wY2lfdnBjaWAgYW5kIHJlbGF0ZWQgbWVjaGFuaXNtcy4gQW5kLCBpZiBJJiMzOTttIHRoaW5raW5nIHJpZ2h0LCBgYXRoMTJrYCAqaXMqIGEgUENJIGRyaXZlciwgaXNuJiMzOTt0IGl0PyBCaW5nbyEgU3l6a2FsbGVyIGhhcyBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gbG9vayBpbnRvLgoKVGhlIHNwZWNpZmljIGZpeCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBidWcgZml4IGluIGBhdGgxMmtfcW1pX2luaXRfc2VydmljZWAg4oCTIGxvb2tzIGxpa2UgYSBtZW1vcnkgb3IgcmVzb3VyY2UgbGVhayBmaXggb24gYW4gZXJyb3IgcGF0aC4gSXQgYWRkcyBhIGBnb3RvIGVycl9yZWxlYXNlX3FtaV9oYW5kbGVgIG9uIGZhaWx1cmVzIGR1cmluZyBgYWItJmd0O3FtaS5ldmVudF93cWAgYWxsb2NhdGlvbiBhbmQgYHFtaV9hZGRfbG9va3VwYC4gU2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZSwgc28gZnV6emluZyBpcyBwcm9iYWJseSB3b3J0aCB0aGUgZWZmb3J0LgoKRmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHF1aWNrbHkgY2hlY2sgaWYgYGF0aDEya2AgaXMgYWN0dWFsbHkgZW5hYmxlZCBpbiBteSBjdXJyZW50IGNvbmZpZ3MsIG9yIGlmIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGl0LiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgcGVlayBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgQVRIMTJLXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUEgXHUwMDI2XHUwMDI2IFBDSVxuICAgNTpcdFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcbiAgIDY6XHRcdHNlbGVjdCBNSElfQlVTXG4gICA3Olx0XHRzZWxlY3QgUVJUUlxuICAgODpcdFx0c2VsZWN0IFFSVFJfTUhJXG4gICA5Olx0XHRzZWxlY3QgUENJX1BXUkNUUkxfUFdSU0VRIGlmIEhBVkVfUFdSQ1RSTFxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgKElFRUVcbiAgMTI6XHRcdCAgODAyLjExYmUpIGZhbWlseSBvZiBjaGlwc2V0cywgZm9yIGV4YW1wbGUgV0NONzg1MCBhbmRcbiAgMTM6XHRcdCAgUUNOOTI3NC5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBhdGgxMmsuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIEFUSDEyS19BSEJcbiAgMTg6XHRcdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgUkVNT1RFUFJPQ1xuICAyMDpcdFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxuICAyMTpcdFx0c2VsZWN0IFFDT01fU0NNXG4gIDIyOlx0XHRoZWxwXG4gIDIzOlx0XHQgIEVuYWJsZSBzdXBwb3J0IGZvciBBdGgxMmsgQUhCIGJ1cyBjaGlwc2V0cywgZXhhbXBsZSBJUFE1MzMyLlxuICAyNDpcdFxuICAyNTpcdGNvbmZpZyBBVEgxMktfREVCVUdcbiAgMjY6XHRcdGJvb2wgXCYjMzQ7YXRoMTJrIGRlYnVnZ2luZ1wmIzM0O1xuICAyNzpcdFx0ZGVwZW5kcyBvbiBBVEgxMktcbiAgMjg6XHRcdGhlbHBcbiAgMjk6XHRcdCAgRW5hYmxlIGRlYnVnIHN1cHBvcnQsIGZvciBleGFtcGxlIGRlYnVnIG1lc3NhZ2VzIHdoaWNoIG11c3RcbiAgMzA6XHRcdCAgYmUgZW5hYmxlZCBzZXBhcmF0ZWx5IHVzaW5nIHRoZSBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIuXG4gIDMxOlx0XG4gIDMyOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuIEJ1dCBpZlxuICAzMzpcdFx0ICB5b3Ugd2FudCBvcHRpbWFsIHBlcmZvcm1hbmNlIGNob29zZSBOLlxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBBVEgxMktfREVCVUdGU1xuICAzNjpcdFx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4gIDM3Olx0XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBFbmFibGUgYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxuICA0MDpcdFxuICA0MTpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiAgNDI6XHRcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgQVRIMTJLX1RSQUNJTkdcbiAgNDU6XHRcdGJvb2wgXCYjMzQ7YXRoMTJrIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuICA0NjpcdFx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IEVWRU5UX1RSQUNJTkdcbiAgNDc6XHRcdGhlbHBcbiAgNDg6XHRcdCAgRW5hYmxlIGF0aDEyayB0cmFjaW5nIGluZnJhc3RydWN0dXJlLlxuICA0OTpcdFxuICA1MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcbiAgNTE6XHRcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cbiAgNTI6XHRcbiAgNTM6XHRjb25maWcgQVRIMTJLX0NPUkVEVU1QXG4gIDU0Olx0XHRib29sIFwmIzM0O2F0aDEyayBjb3JlZHVtcFwmIzM0O1xuICA1NTpcdFx0ZGVwZW5kcyBvbiBBVEgxMktcbiAgNTY6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICA1NzpcdFx0aGVscFxuICA1ODpcdFx0ICBFbmFibGUgYXRoMTJrIGNvcmVkdW1wIGNvbGxlY3Rpb25cbiAgNTk6XHRcbiAgNjA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXG4gIDYxOlx0XHQgIGR1bXAgY29sbGVjdGlvbiBub3QgcmVxdWlyZWQgY2hvb3NlIE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NjYKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgYGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlYCoqCgpPa2F5LCBzbyB0aGUgY29uZmlnIGlzIGBBVEgxMktgLCBhbmQgdGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBpcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgdGhpcyBpcyBldmVuIGZ1enphYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEx1Y2tpbHksIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCBzbyBwcm9iaW5nIFBDSSBkcml2ZXJzLCBsaWtlIHRoaXMgb25lLCBzaG91bGRuJiMzOTt0IGJlIGEgcHJvYmxlbS4gQnV0LCB3YWl0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGRlcGVuZGVuY2llcyEgYGF0aDEya2AgZGVwZW5kcyBvbiBgTUFDODAyMTEgJmFtcDsmYW1wOyBIQVNfRE1BICZhbXA7JmFtcDsgUENJYC4gUmlnaHQsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIHRob3NlIGluIGFkZGl0aW9uIHRvIGVuYWJsaW5nIGBBVEgxMktgIGFuZCwgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcywgYEFUSDEyS19ERUJVR2AuCgpOb3csIHRoZSBjb3JlIG9mIHRoZSBpc3N1ZTogaXMgYGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlYCBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nPyBZZXMsIGl0JiMzOTtzIHRoZSBmdW5jdGlvbiBiZWluZyBkaXJlY3RseSBtb2RpZmllZCBieSB0aGUgcGF0Y2gsIHNvIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gT2theSwgYnV0IGxldCYjMzk7cyBiZSByZWFsaXN0aWMuIFRoaXMgbG9va3MgbGlrZSBhIHNpbXBsZSBlcnJvciBwYXRoIGZpeC4gSXMgaXQgZXZlbiAqd29ydGgqIGZ1enppbmc/IFllcywgaXQmIzM5O3Mgc3RpbGwgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYSBkcml2ZXIsIHNvIHRoZXJlJiMzOTtzIGFsd2F5cyBhIHBvc3NpYmlsaXR5IG9mIHVuY292ZXJpbmcgc29tZXRoaW5nLgoKTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgQVRIMTJLYCBpcyB0aGUgbWFpbiBjb25maWcgSSBuZWVkLCBhbmQgdGhlbiB2ZXJpZnkgdGhlIGZ1bmN0aW9uIGlzIHdoYXQgSSB0aGluayBpdCBpcyBieSBsb29raW5nIGF0IGBhdGgxMmtfcW1pX2luaXRfc2VydmljZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmNgLiBJJiMzOTttIGNvbmZpZGVudCB0aGF0IGlmIHRoZSBwYXRjaCBpcyB0aGVyZSwgYW5kIHRoZSBkZXBlbmRlbmNpZXMgYXJlIG1ldCwgSSBjYW4gc3VjY2Vzc2Z1bGx5IGZ1enogaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwMzgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDAzODpcdGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuNDAzOTpcdHtcbjQwNDA6XHRcdGludCByZXQ7XG40MDQxOlx0XG40MDQyOlx0XHRtZW1zZXQoXHUwMDI2YWItXHUwMDNlcW1pLnRhcmdldCwgMCwgc2l6ZW9mKHN0cnVjdCB0YXJnZXRfaW5mbykpO1xuNDA0MzpcdFx0bWVtc2V0KFx1MDAyNmFiLVx1MDAzZXFtaS50YXJnZXRfbWVtLCAwLCBzaXplb2Yoc3RydWN0IHRhcmdldF9tZW1fY2h1bmspKTtcbjQwNDQ6XHRcdGFiLVx1MDAzZXFtaS5hYiA9IGFiO1xuNDA0NTpcdFxuNDA0NjpcdFx0YWItXHUwMDNlcW1pLnRhcmdldF9tZW1fbW9kZSA9IGFiLVx1MDAzZXRhcmdldF9tZW1fbW9kZTtcbjQwNDc6XHRcdHJldCA9IHFtaV9oYW5kbGVfaW5pdChcdTAwMjZhYi1cdTAwM2VxbWkuaGFuZGxlLCBBVEgxMktfUU1JX1JFU1BfTEVOX01BWCxcbjQwNDg6XHRcdFx0XHQgICAgICBcdTAwMjZhdGgxMmtfcW1pX29wcywgYXRoMTJrX3FtaV9tc2dfaGFuZGxlcnMpO1xuNDA0OTpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuNDA1MDpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGluaXRpYWxpemUgcW1pIGhhbmRsZVxcblwmIzM0Oyk7XG40MDUxOlx0XHRcdHJldHVybiByZXQ7XG40MDUyOlx0XHR9XG40MDUzOlx0XG40MDU0Olx0XHRhYi1cdTAwM2VxbWkuZXZlbnRfd3EgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZShcJiMzNDthdGgxMmtfcW1pX2RyaXZlcl9ldmVudFwmIzM0OywgMCk7XG40MDU1Olx0XHRpZiAoIWFiLVx1MDAzZXFtaS5ldmVudF93cSkge1xuNDA1NjpcdFx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgd29ya3F1ZXVlXFxuXCYjMzQ7KTtcbjQwNTc6XHRcdFx0cmV0ID0gLUVGQVVMVDtcbjQwNTg6XHRcdFx0Z290byBlcnJfcmVsZWFzZV9xbWlfaGFuZGxlO1xuNDA1OTpcdFx0fVxuNDA2MDpcdFxuNDA2MTpcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWItXHUwMDNlcW1pLmV2ZW50X2xpc3QpO1xuNDA2MjpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWItXHUwMDNlcW1pLmV2ZW50X2xvY2spO1xuNDA2MzpcdFx0SU5JVF9XT1JLKFx1MDAyNmFiLVx1MDAzZXFtaS5ldmVudF93b3JrLCBhdGgxMmtfcW1pX2RyaXZlcl9ldmVudF93b3JrKTtcbjQwNjQ6XHRcbjQwNjU6XHRcdHJldCA9IHFtaV9hZGRfbG9va3VwKFx1MDAyNmFiLVx1MDAzZXFtaS5oYW5kbGUsIFFNSV9TRVJWSUNFX0lEX1dMRlcsXG40MDY2Olx0XHRcdFx0ICAgICBBVEgxMktfUU1JX1dMRldfU0VSVklDRV9WRVJTX1YwMSxcbjQwNjc6XHRcdFx0XHQgICAgIGFiLVx1MDAzZXFtaS5zZXJ2aWNlX2luc19pZCk7XG40MDY4Olx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG40MDY5Olx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gYWRkIHFtaSBsb29rdXBcXG5cJiMzNDspO1xuNDA3MDpcdFx0XHRkZXN0cm95X3dvcmtxdWV1ZShhYi1cdTAwM2VxbWkuZXZlbnRfd3EpO1xuNDA3MTpcdFx0XHRnb3RvIGVycl9yZWxlYXNlX3FtaV9oYW5kbGU7XG40MDcyOlx0XHR9XG40MDczOlx0XG40MDc0Olx0XHRyZXR1cm4gcmV0O1xuNDA3NTpcdFxuNDA3NjpcdGVycl9yZWxlYXNlX3FtaV9oYW5kbGU6XG40MDc3Olx0XHRxbWlfaGFuZGxlX3JlbGVhc2UoXHUwMDI2YWItXHUwMDNlcW1pLmhhbmRsZSk7XG40MDc4Olx0XHRhYi1cdTAwM2VxbWkuYWIgPSBOVUxMO1xuNDA3OTpcdFxuNDA4MDpcdFx0cmV0dXJuIHJldDtcbjQwODE6XHR9XG40MDgyOlx0XG40MDgzOlx0dm9pZCBhdGgxMmtfcW1pX2RlaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG40MDg0Olx0e1xuNDA4NTpcdFx0aWYgKCFhYi1cdTAwM2VxbWkuYWIpXG40MDg2Olx0XHRcdHJldHVybjtcbjQwODc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDE6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODIwNQoJCQkJCQkJb3V0cHV0OiA5OQoJCQkJCQkJdGhvdWdodHM6IDI0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCBhZGRyZXNzZXMgYSByZXNvdXJjZSBsZWFrIHdpdGhpbiB0aGUgYGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlYCBmdW5jdGlvbi4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhleSYjMzk7dmUgYWRkZWQgYSBgZ290byBlcnJfcmVsZWFzZV9xbWlfaGFuZGxlYCBpbiBhIGNvdXBsZSBvZiBwbGFjZXMgd2hlcmUgYWxsb2NhdGlvbiBmYWlscyDigJMgc3BlY2lmaWNhbGx5IHdoZW4gYWxsb2NhdGluZyBgYWItJmd0O3FtaS5ldmVudF93cWAgYW5kIGFsc28gdXBvbiBmYWlsdXJlIG9mIGBxbWlfYWRkX2xvb2t1cGAuIFRoZSBlcnJvciBwYXRoIHRoZW4gcHJvcGVybHkgcmVsZWFzZXMgdGhlIFFNSSBoYW5kbGUgdXNpbmcgYHFtaV9oYW5kbGVfcmVsZWFzZSgmYW1wO2FiLSZndDtxbWkuaGFuZGxlKWAgYW5kIG51bGxzIG91dCBgYWItJmd0O3FtaS5hYmAuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsICppcyB0aGlzIGNoYW5nZSBmdXp6LXdvcnRoeT8qIEFic29sdXRlbHksIHRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB3aXRoaW4gYSBkcml2ZXIsIHNvIHRoYXQmIzM5O3MgYSBwcmltZSB0YXJnZXQuIFRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYGF0aDEya2AsIGFuZCB0aGUgc3BlY2lmaWMgY29uZmlnIG5lZWRlZCBpcyBgQVRIMTJLYC4gVGhlIGtleSBzeW1ib2wgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcgd2lsbCwgb2YgY291cnNlLCBiZSBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgLgoKTm93LCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuc3VyZSB0aGUgdGFyZ2V0IGlzIHJlYWNoYWJsZS4gYEFUSDEyS2AgaXRzZWxmIGRlcGVuZHMgb24gYE1BQzgwMjExYCwgYEhBU19ETUFgLCBhbmQgYFBDSWAuIFNpbmNlIHRoZSBmdXp6ZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZW5hYmxlIHRob3NlIGRlcGVuZGVuY2llcywgbGlzdGluZyBqdXN0IGBBVEgxMktgIGlzIHN1ZmZpY2llbnQuCgpOZXh0LCBJIG5lZWQgdG8gY29uZmlybSBpZiBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgIGlzIGV2ZW4gcmVhY2hhYmxlLiBBIHF1aWNrIHJldmlldyBjb25maXJtcyBpdCYjMzk7cyBjYWxsZWQgZHVyaW5nIHRoZSBwcm9iZSBvcGVyYXRpb24uIEV4Y2VsbGVudCwgdGhlIFBDSSBmdXp6ZXIgY2FuIHRyaWdnZXIgdGhhdC4gVGhpcyBtYWtlcyB0aGlzIHBhdGNoIGEgdmlhYmxlIHRhcmdldCBmb3IgZnV6emluZy4KCkFscmlnaHQsIEkmIzM5O20gcmVhZHkgdG8gc2V0IHVwIHRoZSBmdXp6aW5nIHRhc2sgYmFzZWQgb24gdGhlc2UgZmluZGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAxOjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMksmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGgxMmtfcW1pX2luaXRfc2VydmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFBDSSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgZGV2aWNlIHByb2JlLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgUENJIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDEySyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDEya19xbWlfaW5pdF9zZXJ2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBhdGgxMmtfcW1pX2luaXRfc2VydmljZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgUENJIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBkZXZpY2UgcHJvYmUsIHdoaWNoIGlzIGZ1enphYmxlIHZpYSBQQ0kgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA3OjQzLjcyOTM4NDEwMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MDgxNDYyNDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEyS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDEya19xbWlfaW5pdF9zZXJ2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBQQ0kgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSwgd2hpY2ggaXMgZnV6emFibGUgdmlhIFBDSSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTowNzo0My43MjkzODg0OTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDMwMjE4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGViMjFlZmJiMDk4NDNlNjQzNDcwNTU3OTY1MDhkODNiYTU0Yzg4YzBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgOSAwMTowNzo0MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xcbmluZGV4IGZkNzYyYjVkN2JiNTk3Li4zMWU5ZmE5YTYyYmUxNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1xcbkBAIC00MDU0LDcgKzQwNTQsOCBAQCBpbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4gXFx0YWItXFx1MDAzZXFtaS5ldmVudF93cSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKFxcXCJhdGgxMmtfcW1pX2RyaXZlcl9ldmVudFxcXCIsIDApO1xcbiBcXHRpZiAoIWFiLVxcdTAwM2VxbWkuZXZlbnRfd3EpIHtcXG4gXFx0XFx0YXRoMTJrX2VycihhYiwgXFxcImZhaWxlZCB0byBhbGxvY2F0ZSB3b3JrcXVldWVcXFxcblxcXCIpO1xcbi1cXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFx0XFx0cmV0ID0gLUVGQVVMVDtcXG4rXFx0XFx0Z290byBlcnJfcmVsZWFzZV9xbWlfaGFuZGxlO1xcbiBcXHR9XFxuIFxcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YWItXFx1MDAzZXFtaS5ldmVudF9saXN0KTtcXG5AQCAtNDA2Nyw5ICs0MDY4LDE1IEBAIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBhZGQgcW1pIGxvb2t1cFxcXFxuXFxcIik7XFxuIFxcdFxcdGRlc3Ryb3lfd29ya3F1ZXVlKGFiLVxcdTAwM2VxbWkuZXZlbnRfd3EpO1xcbi1cXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHRnb3RvIGVycl9yZWxlYXNlX3FtaV9oYW5kbGU7XFxuIFxcdH1cXG4gXFxuK1xcdHJldHVybiByZXQ7XFxuK1xcbitlcnJfcmVsZWFzZV9xbWlfaGFuZGxlOlxcbitcXHRxbWlfaGFuZGxlX3JlbGVhc2UoXFx1MDAyNmFiLVxcdTAwM2VxbWkuaGFuZGxlKTtcXG4rXFx0YWItXFx1MDAzZXFtaS5hYiA9IE5VTEw7XFxuK1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTowNzo0NC4yMTAzOTEzMzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NjAwNDQ2MTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEyS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDEya19xbWlfaW5pdF9zZXJ2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBQQ0kgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSwgd2hpY2ggaXMgZnV6emFibGUgdmlhIFBDSSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGViMjFlZmJiMDk4NDNlNjQzNDcwNTU3OTY1MDhkODNiYTU0Yzg4YzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDAxOjA3OjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmNcbmluZGV4IGZkNzYyYjVkN2JiNTk3Li4zMWU5ZmE5YTYyYmUxNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmNcbkBAIC00MDU0LDcgKzQwNTQsOCBAQCBpbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdGFiLVx1MDAzZXFtaS5ldmVudF93cSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKFwiYXRoMTJrX3FtaV9kcml2ZXJfZXZlbnRcIiwgMCk7XG4gXHRpZiAoIWFiLVx1MDAzZXFtaS5ldmVudF93cSkge1xuIFx0XHRhdGgxMmtfZXJyKGFiLCBcImZhaWxlZCB0byBhbGxvY2F0ZSB3b3JrcXVldWVcXG5cIik7XG4tXHRcdHJldHVybiAtRUZBVUxUO1xuK1x0XHRyZXQgPSAtRUZBVUxUO1xuK1x0XHRnb3RvIGVycl9yZWxlYXNlX3FtaV9oYW5kbGU7XG4gXHR9XG4gXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZhYi1cdTAwM2VxbWkuZXZlbnRfbGlzdCk7XG5AQCAtNDA2Nyw5ICs0MDY4LDE1IEBAIGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCJmYWlsZWQgdG8gYWRkIHFtaSBsb29rdXBcXG5cIik7XG4gXHRcdGRlc3Ryb3lfd29ya3F1ZXVlKGFiLVx1MDAzZXFtaS5ldmVudF93cSk7XG4tXHRcdHJldHVybiByZXQ7XG4rXHRcdGdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTtcbiBcdH1cbiBcbitcdHJldHVybiByZXQ7XG4rXG4rZXJyX3JlbGVhc2VfcW1pX2hhbmRsZTpcbitcdHFtaV9oYW5kbGVfcmVsZWFzZShcdTAwMjZhYi1cdTAwM2VxbWkuaGFuZGxlKTtcbitcdGFiLVx1MDAzZXFtaS5hYiA9IE5VTEw7XG4rXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA3OjQ0LjIxMDM5MjY1NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODA0NTI2ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIG1vZGlmeSB0aGUgYGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGEgYGdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZWAgb24gY2VydGFpbiBhbGxvY2F0aW9uIGZhaWx1cmVzIOKAkyBuYW1lbHkgd2hlbiBhbGxvY2F0aW5nIGBhYi1cdTAwM2VxbWkuZXZlbnRfd3FgIGFuZCB3aGVuIGBxbWlfYWRkX2xvb2t1cGAgZmFpbHMuIE9uIHRoaXMgZXJyb3IgcGF0aCwgdGhlIGNvZGUgbm93IGNvcnJlY3RseSBjYWxscyBgcW1pX2hhbmRsZV9yZWxlYXNlYCBvbiBgYWItXHUwMDNlcW1pLmhhbmRsZWAgYW5kIGFsc28gc2V0cyBgYWItXHUwMDNlcW1pLmFiYCB0byBgTlVMTGAuIEdvb2QgcHJhY3RpY2UsIGVuc3VyaW5nIGEgY2xlYW4gc3RhdGUgb24gZXJyb3IuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZSwgYW5kIHdoYXQgc2NlbmFyaW9zIGl0IG1pZ2h0IGltcGFjdC4gU2luY2UgaXQncyB3aXRoaW4gdGhlIGBhdGgxMmtgIGRyaXZlciwgdGhlIHF1ZXN0aW9uIGlzLCAqY2FuKiB0aGlzIGVycm9yIHBhdGggZXZlbiBiZSBoaXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgdGhpcyBhIFBDSSBkZXZpY2UgZHJpdmVyLCBvciBpcyBpdCBBSEIsIGFuZCB3b3VsZCB2aXJ0dWFsaXphdGlvbiBhZmZlY3QgaXRzIHVzYWdlPyBUaGVyZWZvcmUsIEknbGwgYGdyZXBgIGZvciBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgIGFuZCBzZWUgd2hlcmUgaXQncyBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50IGFuZCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgY29kZSBpcyB1c2VkIGluIGNvbnRleHQsIGFuZCB3aGV0aGVyIHRoaXMgZXJyb3IgaGFuZGxpbmcgaXMgZXNzZW50aWFsIGZvciBhIHZpcnR1YWxpemVkIGluc3RhbnRpYXRpb24gb2YgdGhlIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGNvbmRpdGlvbnMgd2hpY2ggdHJpZ2dlciB0aGUgYGdvdG9gIGFyZSBhdCBhbGwgcG9zc2libGUgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDgwLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MDc6NDguODkwODQ3MzY5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3ODI1NjY4NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9ODE1PXN0YXRpYyBpbnQgYXRoMTJrX2NvcmVfc29jX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjgyNDpcXHRyZXQgPSBhdGgxMmtfcW1pX2luaXRfc2VydmljZShhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODI1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmM9Mzk2NT1zdGF0aWMgdm9pZCBhdGgxMmtfcW1pX2RyaXZlcl9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMtNDAzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jOjQwMzg6aW50IGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MDM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmg9NjQ0PXZvaWQgYXRoMTJrX3FtaV9kZWluaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oOjY0NTppbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaC02NDYtdm9pZCBhdGgxMmtfcW1pX2ZyZWVfcmVzb3VyY2Uoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA3OjUyLjY3MzQxODM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwMzIxNzI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyBvZiB0aGUgYXRoMTJrIERyaXZlcioqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBhdGgxMmsgZHJpdmVyIGNvZGUgYWdhaW4uIEkgc2VlIGBhdGgxMmtfY29yZV9zb2NfY3JlYXRlYCBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCB0aGUgY29yZSBTT0MgY29tcG9uZW50cy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCB3aGF0J3MgaW50ZXJlc3RpbmcgaXMgdGhhdCBpdCBjYWxscyBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgLiAgSSBrbm93IFFNSSAoUXVhbGNvbW0gTVNNIEludGVyZmFjZSkgaXMgaGVhdmlseSBpbnZvbHZlZCBpbiB0aGUgZmlybXdhcmUgaW50ZXJhY3Rpb24gb24gdGhlc2UgY2hpcHMsIHNvIHRoYXQgbWFrZXMgc2Vuc2UuIFNlZW1zIGxpa2UgdGhlIFNPQyBjcmVhdGlvbiBpcyBpbnRlcnR3aW5lZCB3aXRoIHNldHRpbmcgdXAgdGhlIFFNSSBzZXJ2aWNlLCBhIGNvbW1vbiBwYXR0ZXJuLlxuXG5CdXQgaGFuZyBvbuKApiB3aGVyZSBleGFjdGx5IGlzIGBhdGgxMmtfY29yZV9zb2NfY3JlYXRlYCBiZWluZyAqY2FsbGVkKiBmcm9tPyBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aGUgZXhlY3V0aW9uIGZsb3cgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIFRoaXMgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCBob3cgdGhlIHdob2xlIHRoaW5nIGJvb3RzdHJhcHMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIHBvd2VyLXVwIHNlcXVlbmNlIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uLiBJIG5lZWQgdG8ga25vdyB0aGUgZW50cnkgcG9pbnQgdG8gdGhpcyB3aG9sZSBTT0MgY3JlYXRpb24gcHJvY2Vzcy4gSXMgaXQgZHJpdmVuIGJ5IHByb2JlIGZ1bmN0aW9uIG9yIHNvbWV0aGluZyBlbHNlPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGlzIHBhcmFtb3VudCB0byBncmFzcGluZyB0aGUgZW50aXJlIGluaXRpYWxpemF0aW9uIGxhbmRzY2FwZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0OSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA3OjU2LjA3NjYzNzU4NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTYwOTI3MDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19jb3JlX3NvY19jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9ODA0PWludCBhdGgxMmtfY29yZV9jaGVja19zbWJpb3Moc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTgxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYzo4MTU6c3RhdGljIGludCBhdGgxMmtfY29yZV9zb2NfY3JlYXRlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtODE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTIxNDg9c3RhdGljIGludCBhdGgxMmtfY29yZV9od19ncm91cF9jcmVhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0yMTYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjIxNjI6XFx0XFx0cmV0ID0gYXRoMTJrX2NvcmVfc29jX2NyZWF0ZShhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMjE2My1cXHRcXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA3OjU4LjAzNzU2OTk1NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjIxOTA1OTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqVHJhY2luZyB0aGUgT3JpZ2lucyBvZiBgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlYCoqXG5cbkFscmlnaHQsIHNvIHRoZSBxdWVzdGlvbiBpcywgd2hlcmUgaW4gdGhpcyBzcHJhd2xpbmcgY29kZWJhc2UgaXMgYGF0aDEya19jb3JlX2h3X2dyb3VwX2NyZWF0ZWAgYWN0dWFsbHkgZ2V0dGluZyBpbnZva2VkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBzdGFjayB0byBncmFzcCBpdHMgcm9sZSBhbmQgY29udGV4dCB3aXRoaW4gdGhlIGRyaXZlci4gVGltZSB0byBkaWcgaW4uIEkgc2hvdWxkIHN0YXJ0IGJ5IGRvaW5nIGEgcXVpY2sgZ3JlcCB0aHJvdWdoIHRoZSBjb2RlLCBpZGVhbGx5IHVzaW5nIHNvbWV0aGluZyBlZmZpY2llbnQgdGhhdCBjYW4gaGFuZGxlIGNyb3NzLXJlZmVyZW5jaW5nIHdpdGhpbiB0aGlzIGxhcmdlIHByb2plY3QuIFRoZSBnb2FsIGlzIGEgbGlzdCBvZiBhbGwgY2FsbCBzaXRlcy4gVGhhdCBpbml0aWFsIHNlYXJjaCB3aWxsIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50cywgd2hpY2ggaG9wZWZ1bGx5IHdpbGwgcmV2ZWFsIGEgY2xlYXIgcGF0aCB0aHJvdWdoIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgb3IgaW50ZXJydXB0IGhhbmRsaW5nIGZsb3dzLiBGcm9tIHRoZXJlLCBJJ2xsIG5lZWQgdG8gbG9vayBhdCB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciB0aGUgY2FsbCAtIGlzIGl0IGR1cmluZyBkZXZpY2UgcHJvYmUsIGEgaGFyZHdhcmUgZXZlbnQsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGVuLCBJIGNhbiBzdGFydCBhbmFseXppbmcgdGhvc2UgY2FsbCBzaXRlcyBpbiBkZXRhaWwuIEknbSBob3BpbmcgdGhlIGNvZGUgcHJvdmlkZXMgZW5vdWdoIGRlc2NyaXB0aXZlIGNvbW1lbnRzLCBvciB0aGF0IHRoZSBmdW5jdGlvbiBuYW1lcyB0aGVtc2VsdmVzIGdpdmUgYSBoaW50IVxuXG5cbiIsIklucHV0VG9rZW5zIjozNjY5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MDg6MjcuMjU5NDc3NTgyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MjI1MDcyNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTE4MTk9c3RhdGljIGlubGluZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjE4MjA6Ym9vbCBhdGgxMmtfY29yZV9od19ncm91cF9jcmVhdGVfcmVhZHkoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMtMTgyMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYz0yMTE2PXZvaWQgYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY2xlYW51cChzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIxNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MjE0ODpzdGF0aWMgaW50IGF0aDEya19jb3JlX2h3X2dyb3VwX2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0yMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jPTIyMjk9aW50IGF0aDEya19jb3JlX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIyNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MjI1NTpcXHRpZiAoYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlX3JlYWR5KGFnKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jOjIyNTY6XFx0XFx0cmV0ID0gYXRoMTJrX2NvcmVfaHdfZ3JvdXBfY3JlYXRlKGFnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYy0yMjU3LVxcdFxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MDg6MjguOTgxOTkyNTA1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzNTAzODg1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlRyYWNpbmcgdGhlIEluaXRpYWxpemF0aW9uIG9mIHRoZSBhdGgxMGsgQ29yZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiB0aGUgYGF0aDEwa2AgZHJpdmVyIGNvcmUuIFRoZSBzcGVjaWZpYyBxdWVzdGlvbiBidXJuaW5nIGluIG15IG1pbmQgcmlnaHQgbm93IGlzOiBXaGVyZSBleGFjdGx5IGRvZXMgdGhlIGBhdGgxMmtfY29yZV9pbml0YCBmdW5jdGlvbiBnZXQgY2FsbGVkPyBVbmRlcnN0YW5kaW5nIHRoaXMgaXMgY3JpdGljYWwgZm9yIGdyYXNwaW5nIHRoZSBjb21wbGV0ZSBzdGFydHVwIHNlcXVlbmNlIGFuZCBob3cgdGhlIHZhcmlvdXMgY29tcG9uZW50cyBvZiB0aGUgZHJpdmVyIGFyZSBicm91Z2h0IHRvIGxpZmUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgYW5kIHNlZSB3aGF0J3MgdHJpZ2dlcmluZyB0aGUgY29yZSBpbml0aWFsaXphdGlvbi4gSXMgaXQgcGFydCBvZiBzb21lIGxhcmdlciBkZXZpY2UgcHJvYmluZyBwcm9jZXNzPyBJcyBpdCByZWxhdGVkIHRvIFBDSSBvciBTRElPIGluaXRpYWxpemF0aW9uPyBQZXJoYXBzIGl0J3MgY2FsbGVkIGZyb20gYSBtb2R1bGUgbG9hZCBoYW5kbGVyPyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIGZpbmQgdGhlIHByZWNpc2UgbG9jYXRpb24gb2YgdGhhdCBmdW5jdGlvbiBjYWxsLCBzbyBJIGNhbiB0aGVuIGFuYWx5emUgd2hhdCBoYXBwZW5zIGJlZm9yZSBhbmQgYWZ0ZXIgYGF0aDEya19jb3JlX2luaXRgLiBHb3R0YSBmb2xsb3cgdGhlIGJyZWFkY3J1bWJzIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzg2LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MDg6MzMuMTE3MDM0MDY5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzMwNzA5OTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya19jb3JlX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0xMDE5PXN0YXRpYyBpbnQgYXRoMTJrX2FoYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTExMTpcXHRyZXQgPSBhdGgxMmtfY29yZV9pbml0KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTExMTItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM9MjE4OD12b2lkIGF0aDEya19jb3JlX2h3X2dyb3VwX3NldF9tbG9fY2FwYWJsZShzdHJ1Y3QgYXRoMTJrX2h3X2dyb3VwICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIyMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmM6MjIyOTppbnQgYXRoMTJrX2NvcmVfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jLTIyMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg9MTI2ND1pbnQgYXRoMTJrX2NvcmVfcHJlX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmg6MTI2NTppbnQgYXRoMTJrX2NvcmVfaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmF0aDEyayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgtMTI2Ni12b2lkIGF0aDEya19jb3JlX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmF0aDEyayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE1MjQ9c3RhdGljIGludCBhdGgxMmtfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTY0NTpcXHRyZXQgPSBhdGgxMmtfY29yZV9pbml0KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE2NDYtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTowODozNC44NDc3NTE3NDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEyMzg4MDM5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBhdGgxMmsgRHJpdmVyOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgYnVnIGZpeCwgYW5kIGl0J3MgY2FsbGVkIGZyb20gYGF0aDEya19haGJfcHJvYmVgIGFuZCBgYXRoMTJrX3BjaV9wcm9iZWAuIE5vdywgQUhCIGFuZCBQQ0kgZHJpdmVycyBhcmUgdXN1YWxseSBhIG5vLWdvIGluIG15IHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIHNldHVwcyB1bmxlc3MgdGhlcmUncyBkZWRpY2F0ZWQgZW11bGF0aW9uIG9yIEkgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyBkaXJlY3RseS4gQnV0IGhvbGQgb24sIEkgcmVtZW1iZXIgU3l6a2FsbGVyIGNhbiBhY3R1YWxseSBmdXp6IFBDSSBkZXZpY2VzIHVzaW5nIGBzeXpfcGNpX3ZwY2lgIGFuZCByZWxhdGVkIG1lY2hhbmlzbXMuIEFuZCwgaWYgSSdtIHRoaW5raW5nIHJpZ2h0LCBgYXRoMTJrYCAqaXMqIGEgUENJIGRyaXZlciwgaXNuJ3QgaXQ/IEJpbmdvISBTeXprYWxsZXIgaGFzIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0byBsb29rIGludG8uXG5cblRoZSBzcGVjaWZpYyBmaXggaXMgYSBzdHJhaWdodGZvcndhcmQgYnVnIGZpeCBpbiBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgIOKAkyBsb29rcyBsaWtlIGEgbWVtb3J5IG9yIHJlc291cmNlIGxlYWsgZml4IG9uIGFuIGVycm9yIHBhdGguIEl0IGFkZHMgYSBgZ290byBlcnJfcmVsZWFzZV9xbWlfaGFuZGxlYCBvbiBmYWlsdXJlcyBkdXJpbmcgYGFiLVx1MDAzZXFtaS5ldmVudF93cWAgYWxsb2NhdGlvbiBhbmQgYHFtaV9hZGRfbG9va3VwYC4gU2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZSwgc28gZnV6emluZyBpcyBwcm9iYWJseSB3b3J0aCB0aGUgZWZmb3J0LlxuXG5GaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgcXVpY2tseSBjaGVjayBpZiBgYXRoMTJrYCBpcyBhY3R1YWxseSBlbmFibGVkIGluIG15IGN1cnJlbnQgY29uZmlncywgb3IgaWYgSSdsbCBuZWVkIHRvIGVuYWJsZSBpdC4gSSdsbCB0YWtlIGEgcXVpY2sgcGVlayBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnYCB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTkzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA4OjM5Ljk3MTYzNDI4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgQVRIMTJLXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BIFxcdTAwMjZcXHUwMDI2IFBDSVxcbiAgIDU6XFx0XFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcXG4gICA2OlxcdFxcdHNlbGVjdCBNSElfQlVTXFxuICAgNzpcXHRcXHRzZWxlY3QgUVJUUlxcbiAgIDg6XFx0XFx0c2VsZWN0IFFSVFJfTUhJXFxuICAgOTpcXHRcXHRzZWxlY3QgUENJX1BXUkNUUkxfUFdSU0VRIGlmIEhBVkVfUFdSQ1RSTFxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgKElFRUVcXG4gIDEyOlxcdFxcdCAgODAyLjExYmUpIGZhbWlseSBvZiBjaGlwc2V0cywgZm9yIGV4YW1wbGUgV0NONzg1MCBhbmRcXG4gIDEzOlxcdFxcdCAgUUNOOTI3NC5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgYXRoMTJrLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgQVRIMTJLX0FIQlxcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgUkVNT1RFUFJPQ1xcbiAgMjA6XFx0XFx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxcbiAgMjE6XFx0XFx0c2VsZWN0IFFDT01fU0NNXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIEVuYWJsZSBzdXBwb3J0IGZvciBBdGgxMmsgQUhCIGJ1cyBjaGlwc2V0cywgZXhhbXBsZSBJUFE1MzMyLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgQVRIMTJLX0RFQlVHXFxuICAyNjpcXHRcXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbiAgMjc6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMktcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgRW5hYmxlIGRlYnVnIHN1cHBvcnQsIGZvciBleGFtcGxlIGRlYnVnIG1lc3NhZ2VzIHdoaWNoIG11c3RcXG4gIDMwOlxcdFxcdCAgYmUgZW5hYmxlZCBzZXBhcmF0ZWx5IHVzaW5nIHRoZSBkZWJ1Z19tYXNrIG1vZHVsZSBwYXJhbWV0ZXIuXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICAzMzpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICAzNDpcXHRcXG4gIDM1OlxcdGNvbmZpZyBBVEgxMktfREVCVUdGU1xcbiAgMzY6XFx0XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXG4gIDQwOlxcdFxcbiAgNDE6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLiBCdXQgaWZcXG4gIDQyOlxcdFxcdCAgeW91IHdhbnQgb3B0aW1hbCBwZXJmb3JtYW5jZSBjaG9vc2UgTi5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuICA0NTpcXHRcXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbiAgNDY6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgRVZFTlRfVFJBQ0lOR1xcbiAgNDc6XFx0XFx0aGVscFxcbiAgNDg6XFx0XFx0ICBFbmFibGUgYXRoMTJrIHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICA1MTpcXHRcXHQgIHlvdSB3YW50IG9wdGltYWwgcGVyZm9ybWFuY2UgY2hvb3NlIE4uXFxuICA1MjpcXHRcXG4gIDUzOlxcdGNvbmZpZyBBVEgxMktfQ09SRURVTVBcXG4gIDU0OlxcdFxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG4gIDU1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTJLXFxuICA1NjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDU3OlxcdFxcdGhlbHBcXG4gIDU4OlxcdFxcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy4gQnV0IGlmXFxuICA2MTpcXHRcXHQgIGR1bXAgY29sbGVjdGlvbiBub3QgcmVxdWlyZWQgY2hvb3NlIE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA4OjM5Ljk3MTY5OTY5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjA0MDE1OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIGBhdGgxMmtfcW1pX2luaXRfc2VydmljZWAqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlnIGlzIGBBVEgxMktgLCBhbmQgdGhlIHBhdGNoIEknbSBsb29raW5nIGF0IGlzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGV2ZW4gZnV6emFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTHVja2lseSwgc3l6a2FsbGVyIGhhcyBhIFBDSSBmdXp6ZXIsIHNvIHByb2JpbmcgUENJIGRyaXZlcnMsIGxpa2UgdGhpcyBvbmUsIHNob3VsZG4ndCBiZSBhIHByb2JsZW0uIEJ1dCwgd2FpdCwgSSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBkZXBlbmRlbmNpZXMhIGBhdGgxMmtgIGRlcGVuZHMgb24gYE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBQQ0lgLiBSaWdodCwgSSdsbCBuZWVkIHRvIGVuYWJsZSB0aG9zZSBpbiBhZGRpdGlvbiB0byBlbmFibGluZyBgQVRIMTJLYCBhbmQsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIGBBVEgxMktfREVCVUdgLlxuXG5Ob3csIHRoZSBjb3JlIG9mIHRoZSBpc3N1ZTogaXMgYGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlYCBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nPyBZZXMsIGl0J3MgdGhlIGZ1bmN0aW9uIGJlaW5nIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IHRoZSBwYXRjaCwgc28gaXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIE9rYXksIGJ1dCBsZXQncyBiZSByZWFsaXN0aWMuIFRoaXMgbG9va3MgbGlrZSBhIHNpbXBsZSBlcnJvciBwYXRoIGZpeC4gSXMgaXQgZXZlbiAqd29ydGgqIGZ1enppbmc/IFllcywgaXQncyBzdGlsbCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgc28gdGhlcmUncyBhbHdheXMgYSBwb3NzaWJpbGl0eSBvZiB1bmNvdmVyaW5nIHNvbWV0aGluZy5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgQVRIMTJLYCBpcyB0aGUgbWFpbiBjb25maWcgSSBuZWVkLCBhbmQgdGhlbiB2ZXJpZnkgdGhlIGZ1bmN0aW9uIGlzIHdoYXQgSSB0aGluayBpdCBpcyBieSBsb29raW5nIGF0IGBhdGgxMmtfcW1pX2luaXRfc2VydmljZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmNgLiBJJ20gY29uZmlkZW50IHRoYXQgaWYgdGhlIHBhdGNoIGlzIHRoZXJlLCBhbmQgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LCBJIGNhbiBzdWNjZXNzZnVsbHkgZnV6eiBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY2NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAxOjA4OjQ1LjE3NTcxNzUzOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDM4LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MDM4OlxcdGludCBhdGgxMmtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbjQwMzk6XFx0e1xcbjQwNDA6XFx0XFx0aW50IHJldDtcXG40MDQxOlxcdFxcbjQwNDI6XFx0XFx0bWVtc2V0KFxcdTAwMjZhYi1cXHUwMDNlcW1pLnRhcmdldCwgMCwgc2l6ZW9mKHN0cnVjdCB0YXJnZXRfaW5mbykpO1xcbjQwNDM6XFx0XFx0bWVtc2V0KFxcdTAwMjZhYi1cXHUwMDNlcW1pLnRhcmdldF9tZW0sIDAsIHNpemVvZihzdHJ1Y3QgdGFyZ2V0X21lbV9jaHVuaykpO1xcbjQwNDQ6XFx0XFx0YWItXFx1MDAzZXFtaS5hYiA9IGFiO1xcbjQwNDU6XFx0XFxuNDA0NjpcXHRcXHRhYi1cXHUwMDNlcW1pLnRhcmdldF9tZW1fbW9kZSA9IGFiLVxcdTAwM2V0YXJnZXRfbWVtX21vZGU7XFxuNDA0NzpcXHRcXHRyZXQgPSBxbWlfaGFuZGxlX2luaXQoXFx1MDAyNmFiLVxcdTAwM2VxbWkuaGFuZGxlLCBBVEgxMktfUU1JX1JFU1BfTEVOX01BWCxcXG40MDQ4OlxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZhdGgxMmtfcW1pX29wcywgYXRoMTJrX3FtaV9tc2dfaGFuZGxlcnMpO1xcbjQwNDk6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG40MDUwOlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGluaXRpYWxpemUgcW1pIGhhbmRsZVxcXFxuXFxcIik7XFxuNDA1MTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjQwNTI6XFx0XFx0fVxcbjQwNTM6XFx0XFxuNDA1NDpcXHRcXHRhYi1cXHUwMDNlcW1pLmV2ZW50X3dxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoXFxcImF0aDEya19xbWlfZHJpdmVyX2V2ZW50XFxcIiwgMCk7XFxuNDA1NTpcXHRcXHRpZiAoIWFiLVxcdTAwM2VxbWkuZXZlbnRfd3EpIHtcXG40MDU2OlxcdFxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgd29ya3F1ZXVlXFxcXG5cXFwiKTtcXG40MDU3OlxcdFxcdFxcdHJldCA9IC1FRkFVTFQ7XFxuNDA1ODpcXHRcXHRcXHRnb3RvIGVycl9yZWxlYXNlX3FtaV9oYW5kbGU7XFxuNDA1OTpcXHRcXHR9XFxuNDA2MDpcXHRcXG40MDYxOlxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZhYi1cXHUwMDNlcW1pLmV2ZW50X2xpc3QpO1xcbjQwNjI6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFiLVxcdTAwM2VxbWkuZXZlbnRfbG9jayk7XFxuNDA2MzpcXHRcXHRJTklUX1dPUksoXFx1MDAyNmFiLVxcdTAwM2VxbWkuZXZlbnRfd29yaywgYXRoMTJrX3FtaV9kcml2ZXJfZXZlbnRfd29yayk7XFxuNDA2NDpcXHRcXG40MDY1OlxcdFxcdHJldCA9IHFtaV9hZGRfbG9va3VwKFxcdTAwMjZhYi1cXHUwMDNlcW1pLmhhbmRsZSwgUU1JX1NFUlZJQ0VfSURfV0xGVyxcXG40MDY2OlxcdFxcdFxcdFxcdCAgICAgQVRIMTJLX1FNSV9XTEZXX1NFUlZJQ0VfVkVSU19WMDEsXFxuNDA2NzpcXHRcXHRcXHRcXHQgICAgIGFiLVxcdTAwM2VxbWkuc2VydmljZV9pbnNfaWQpO1xcbjQwNjg6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG40MDY5OlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGFkZCBxbWkgbG9va3VwXFxcXG5cXFwiKTtcXG40MDcwOlxcdFxcdFxcdGRlc3Ryb3lfd29ya3F1ZXVlKGFiLVxcdTAwM2VxbWkuZXZlbnRfd3EpO1xcbjQwNzE6XFx0XFx0XFx0Z290byBlcnJfcmVsZWFzZV9xbWlfaGFuZGxlO1xcbjQwNzI6XFx0XFx0fVxcbjQwNzM6XFx0XFxuNDA3NDpcXHRcXHRyZXR1cm4gcmV0O1xcbjQwNzU6XFx0XFxuNDA3NjpcXHRlcnJfcmVsZWFzZV9xbWlfaGFuZGxlOlxcbjQwNzc6XFx0XFx0cW1pX2hhbmRsZV9yZWxlYXNlKFxcdTAwMjZhYi1cXHUwMDNlcW1pLmhhbmRsZSk7XFxuNDA3ODpcXHRcXHRhYi1cXHUwMDNlcW1pLmFiID0gTlVMTDtcXG40MDc5OlxcdFxcbjQwODA6XFx0XFx0cmV0dXJuIHJldDtcXG40MDgxOlxcdH1cXG40MDgyOlxcdFxcbjQwODM6XFx0dm9pZCBhdGgxMmtfcW1pX2RlaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuNDA4NDpcXHR7XFxuNDA4NTpcXHRcXHRpZiAoIWFiLVxcdTAwM2VxbWkuYWIpXFxuNDA4NjpcXHRcXHRcXHRyZXR1cm47XFxuNDA4NzpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDE6MDg6NDUuMTc1ODk5NjE5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NTcxMDk2MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGFkZHJlc3NlcyBhIHJlc291cmNlIGxlYWsgd2l0aGluIHRoZSBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgIGZ1bmN0aW9uLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGV5J3ZlIGFkZGVkIGEgYGdvdG8gZXJyX3JlbGVhc2VfcW1pX2hhbmRsZWAgaW4gYSBjb3VwbGUgb2YgcGxhY2VzIHdoZXJlIGFsbG9jYXRpb24gZmFpbHMg4oCTIHNwZWNpZmljYWxseSB3aGVuIGFsbG9jYXRpbmcgYGFiLVx1MDAzZXFtaS5ldmVudF93cWAgYW5kIGFsc28gdXBvbiBmYWlsdXJlIG9mIGBxbWlfYWRkX2xvb2t1cGAuIFRoZSBlcnJvciBwYXRoIHRoZW4gcHJvcGVybHkgcmVsZWFzZXMgdGhlIFFNSSBoYW5kbGUgdXNpbmcgYHFtaV9oYW5kbGVfcmVsZWFzZShcdTAwMjZhYi1cdTAwM2VxbWkuaGFuZGxlKWAgYW5kIG51bGxzIG91dCBgYWItXHUwMDNlcW1pLmFiYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAqaXMgdGhpcyBjaGFuZ2UgZnV6ei13b3J0aHk/KiBBYnNvbHV0ZWx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gd2l0aGluIGEgZHJpdmVyLCBzbyB0aGF0J3MgYSBwcmltZSB0YXJnZXQuIFRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYGF0aDEya2AsIGFuZCB0aGUgc3BlY2lmaWMgY29uZmlnIG5lZWRlZCBpcyBgQVRIMTJLYC4gVGhlIGtleSBzeW1ib2wgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcgd2lsbCwgb2YgY291cnNlLCBiZSBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgLlxuXG5Ob3csIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCB0byBlbnN1cmUgdGhlIHRhcmdldCBpcyByZWFjaGFibGUuIGBBVEgxMktgIGl0c2VsZiBkZXBlbmRzIG9uIGBNQUM4MDIxMWAsIGBIQVNfRE1BYCwgYW5kIGBQQ0lgLiBTaW5jZSB0aGUgZnV6emVyIGNhbiBiZSBjb25maWd1cmVkIHRvIGVuYWJsZSB0aG9zZSBkZXBlbmRlbmNpZXMsIGxpc3RpbmcganVzdCBgQVRIMTJLYCBpcyBzdWZmaWNpZW50LlxuXG5OZXh0LCBJIG5lZWQgdG8gY29uZmlybSBpZiBgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VgIGlzIGV2ZW4gcmVhY2hhYmxlLiBBIHF1aWNrIHJldmlldyBjb25maXJtcyBpdCdzIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlIG9wZXJhdGlvbi4gRXhjZWxsZW50LCB0aGUgUENJIGZ1enplciBjYW4gdHJpZ2dlciB0aGF0LiBUaGlzIG1ha2VzIHRoaXMgcGF0Y2ggYSB2aWFibGUgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5BbHJpZ2h0LCBJJ20gcmVhZHkgdG8gc2V0IHVwIHRoZSBmdXp6aW5nIHRhc2sgYmFzZWQgb24gdGhlc2UgZmluZGluZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyMDUsIk91dHB1dFRva2VucyI6OTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMTowODo1MC43MzMwMTExNzFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzgyMjE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIMTJLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFBDSSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgZGV2aWNlIHByb2JlLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgUENJIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIMTJLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTJrX3FtaV9pbml0X3NlcnZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFBDSSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgZGV2aWNlIHByb2JlLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgUENJIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qwn2[1] Phase: Succeeded StartedAt: 2026-07-09 01:09:24 +0000 UTC FinishedAt: 2026-07-09 01:09:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-09 01:09:24 +0000 UTC FinishedAt: 2026-07-09 01:09:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2] Phase: Succeeded StartedAt: 2026-07-09 01:09:24 +0000 UTC FinishedAt: 2026-07-09 03:18:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-09 01:09:24 +0000 UTC FinishedAt: 2026-07-09 03:18:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-09 01:09:24 +0000 UTC FinishedAt: 2026-07-09 01:10:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-09 01:09:24 +0000 UTC FinishedAt: 2026-07-09 01:09:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9qwn2/series-workflow9qwn2-convert-artifact-3640836940/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-09 01:10:02 +0000 UTC FinishedAt: 2026-07-09 01:43:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-09 01:10:02 +0000 UTC FinishedAt: 2026-07-09 01:43:21 +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:*61295ccf-2db4-4a6a-aad3-0bcc328f0a5f,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-workflow9qwn2/series-workflow9qwn2-convert-artifact-3640836940/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": "d66397ff-3646-434c-bc4c-4152c4258534", "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-workflow9qwn2/series-workflow9qwn2-build-action-3469787514/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-09 01:10:02 +0000 UTC FinishedAt: 2026-07-09 01:43:00 +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:*61295ccf-2db4-4a6a-aad3-0bcc328f0a5f,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-workflow9qwn2/series-workflow9qwn2-convert-artifact-3640836940/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": "d66397ff-3646-434c-bc4c-4152c4258534", "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-workflow9qwn2/series-workflow9qwn2-build-action-3469787514/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-09 01:43:21 +0000 UTC FinishedAt: 2026-07-09 01:43:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-09 01:43:21 +0000 UTC FinishedAt: 2026-07-09 01:43:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-09 01:43:21 +0000 UTC FinishedAt: 2026-07-09 01:43:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-09 01:43:21 +0000 UTC FinishedAt: 2026-07-09 01:43:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9qwn2/series-workflow9qwn2-convert-artifact-22120587/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-09 01:43:42 +0000 UTC FinishedAt: 2026-07-09 01:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-09 01:43:42 +0000 UTC FinishedAt: 2026-07-09 01:46:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d66397ff-3646-434c-bc4c-4152c4258534,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-workflow9qwn2/series-workflow9qwn2-build-action-3469787514/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-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-09 01:46:21 +0000 UTC FinishedAt: 2026-07-09 01:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-09 01:46:21 +0000 UTC FinishedAt: 2026-07-09 01:46:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-09 01:46:21 +0000 UTC FinishedAt: 2026-07-09 02:22:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-09 01:46:21 +0000 UTC FinishedAt: 2026-07-09 02:22:23 +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:*61295ccf-2db4-4a6a-aad3-0bcc328f0a5f,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-workflow9qwn2/series-workflow9qwn2-convert-artifact-22120587/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": "9dbe9601-b3ab-4456-a74c-031358577957", "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-workflow9qwn2/series-workflow9qwn2-build-action-2691442479/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-09 01:46:21 +0000 UTC FinishedAt: 2026-07-09 02:22:13 +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:*61295ccf-2db4-4a6a-aad3-0bcc328f0a5f,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-workflow9qwn2/series-workflow9qwn2-convert-artifact-22120587/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": "9dbe9601-b3ab-4456-a74c-031358577957", "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-workflow9qwn2/series-workflow9qwn2-build-action-2691442479/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-09 02:22:23 +0000 UTC FinishedAt: 2026-07-09 02:22:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-09 02:22:23 +0000 UTC FinishedAt: 2026-07-09 02:22:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-09 02:22:23 +0000 UTC FinishedAt: 2026-07-09 02:24:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-09 02:22:23 +0000 UTC FinishedAt: 2026-07-09 02:24: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:*9dbe9601-b3ab-4456-a74c-031358577957,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-workflow9qwn2/series-workflow9qwn2-build-action-2691442479/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-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-09 02:24:41 +0000 UTC FinishedAt: 2026-07-09 03:18:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-09 02:24:41 +0000 UTC FinishedAt: 2026-07-09 03:18:08 +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":["ath12k_qmi_init_service"],"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:*d66397ff-3646-434c-bc4c-4152c4258534,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9dbe9601-b3ab-4456-a74c-031358577957,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-workflow9qwn2/series-workflow9qwn2-build-action-3469787514/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-workflow9qwn2/series-workflow9qwn2-build-action-2691442479/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-09 02:24:41 +0000 UTC FinishedAt: 2026-07-09 02:24:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-09 02:24:41 +0000 UTC FinishedAt: 2026-07-09 02:24: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":["ath12k_qmi_init_service"],"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-workflow9qwn2/series-workflow9qwn2-convert-artifact-3349469732/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-09 02:24:41 +0000 UTC FinishedAt: 2026-07-09 02:24:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-09 02:24:41 +0000 UTC FinishedAt: 2026-07-09 02:24:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-09 02:24:41 +0000 UTC FinishedAt: 2026-07-09 02:24:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-09 02:24:51 +0000 UTC FinishedAt: 2026-07-09 03:18:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9qwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath12k_qmi_init_service"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH12K"],"series_id":"7b9bebf0-c2ff-455c-bf55-0c45263a0b94","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-09 02:24:51 +0000 UTC FinishedAt: 2026-07-09 03:17:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d66397ff-3646-434c-bc4c-4152c4258534,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9dbe9601-b3ab-4456-a74c-031358577957,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-workflow9qwn2/series-workflow9qwn2-build-action-3469787514/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-workflow9qwn2/series-workflow9qwn2-build-action-2691442479/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-workflow9qwn2/series-workflow9qwn2-convert-artifact-3349469732/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,}