Name: series-workflowbcstk Phase: Succeeded StartedAt: 2026-07-23 01:37:51 +0000 UTC FinishedAt: 2026-07-23 03:39:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[0] Phase: Succeeded StartedAt: 2026-07-23 01:37:51 +0000 UTC FinishedAt: 2026-07-23 02:00:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 01:37:51 +0000 UTC FinishedAt: 2026-07-23 02:00:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925E" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925E" ], "series_id": "bf76ede5-9575-4824-b283-989f4bdc00cf" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_load_clc", "mt7925_run_firmware" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIGxvYWRpbmcgaW4gdGhlIE1lZGlhdGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIGhhcyBhIFVTQiBpbnRlcmZhY2UgKG10NzkyNXUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gVGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBjYW4gYmUgZnV6emVkIGJ5IHByb3ZpZGluZyBtYWxmb3JtZWQgZmlybXdhcmUgZmlsZXMgdmlhIHRoZSBmaXJtd2FyZSBsb2FkaW5nIG1lY2hhbmlzbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMTo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ1MjI0Mzc3NWJhNjllNTViOWRlMTFlMTQzYjUxM2ZmNDY0NGU3YzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAwMTo1ODowOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBlOTRmYTU0NGZmMjA3Ny4uNzZlMzBiZjRjZTBmYTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbkBAIC04MDMsOCAmIzQzOzgwMyw5IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3NjtcbiBcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuIFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdztcbiYjNDM7XHRzaXplX3QgY2xjX2xlbiwgZndfZGF0YV9sZW4sIGxlbiwgb2Zmc2V0ID0gMDtcbiBcdHU4ICpjbGNfYmFzZSA9IE5VTEwsIGh3X2VuY2FwID0gMDtcbi1cdGludCByZXQsIGksIGxlbiwgb2Zmc2V0ID0gMDtcbiYjNDM7XHRpbnQgcmV0LCBpO1xuIFxuIFx0ZGV2LVx1MDAzZXBoeS5jbGNfY2hhbl9jb25mID0gMHhmZjtcbiBcdGRldi1cdTAwM2VyZWdkX3VzZXIgPSBmYWxzZTtcbkBAIC04MjksMTMgJiM0Mzs4MzAsMjEgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcdH1cbiBcbiBcdGhkciA9IChjb25zdCB2b2lkICopKGZ3LVx1MDAzZWRhdGEgJiM0MzsgZnctXHUwMDNlc2l6ZSAtIHNpemVvZigqaGRyKSk7XG4mIzQzO1x0aWYgKGhkci1cdTAwM2VuX3JlZ2lvbiBcdTAwM2UgKGZ3LVx1MDAzZXNpemUgLSBzaXplb2YoKmhkcikpIC8gc2l6ZW9mKCpyZWdpb24pKSB7XG4mIzQzO1x0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvbiB0YWJsZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcdGZ3X2RhdGFfbGVuID0gZnctXHUwMDNlc2l6ZSAtIHNpemVvZigqaGRyKSAtXG4mIzQzO1x0XHQgICAgICBoZHItXHUwMDNlbl9yZWdpb24gKiBzaXplb2YoKnJlZ2lvbik7XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaGRyLVx1MDAzZW5fcmVnaW9uOyBpJiM0MzsmIzQzOykge1xuIFx0XHRyZWdpb24gPSAoY29uc3Qgdm9pZCAqKSgoY29uc3QgdTggKiloZHIgLVxuIFx0XHRcdFx0XHQoaGRyLVx1MDAzZW5fcmVnaW9uIC0gaSkgKiBzaXplb2YoKnJlZ2lvbikpO1xuIFx0XHRsZW4gPSBsZTMyX3RvX2NwdShyZWdpb24tXHUwMDNlbGVuKTtcbiBcbiBcdFx0LyogY2hlY2sgaWYgd2UgaGF2ZSB2YWxpZCBidWZmZXIgc2l6ZSAqL1xuLVx0XHRpZiAob2Zmc2V0ICYjNDM7IGxlbiBcdTAwM2UgZnctXHUwMDNlc2l6ZSkge1xuJiM0MztcdFx0aWYgKGxlbiBcdTAwM2UgZndfZGF0YV9sZW4gLSBvZmZzZXQpIHtcbiBcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcblwmIzM0Oyk7XG4gXHRcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdFx0XHRnb3RvIG91dDtcbkBAIC04NTIsMTEgJiM0Mzs4NjEsMTkgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcdGlmICghY2xjX2Jhc2UpXG4gXHRcdGdvdG8gb3V0O1xuIFxuLVx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXHUwMDNjIGxlbjsgb2Zmc2V0ICYjNDM7PSBsZTMyX3RvX2NwdShjbGMtXHUwMDNlbGVuKSkge1xuLVx0XHRjbGMgPSAoY29uc3Qgc3RydWN0IG10NzkyNV9jbGMgKikoY2xjX2Jhc2UgJiM0Mzsgb2Zmc2V0KTtcbiYjNDM7XHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcdTAwM2MgbGVuOyBvZmZzZXQgJiM0Mzs9IGNsY19sZW4pIHtcbiYjNDM7XHRcdGlmIChsZW4gLSBvZmZzZXQgXHUwMDNjIHNpemVvZigqY2xjKSkge1xuJiM0MztcdFx0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiBcbi1cdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7XG4mIzQzO1x0XHRjbGNfbGVuID0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbik7XG4mIzQzO1x0XHRpZiAoY2xjX2xlbiBcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXHUwMDNlIGxlbiAtIG9mZnNldCB8fFxuJiM0MztcdFx0ICAgIGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKSB7XG4mIzQzO1x0XHRcdHJldCA9IC1FSU5WQUw7XG4mIzQzO1x0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0fVxuIFxuIFx0XHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cbiBcdFx0aWYgKHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pXG5AQCAtODY5LDggJiM0Mzs4ODYsNyBAQCBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRwaHktXHUwMDNlY2xjW2NsYy1cdTAwM2VpZHhdID0gZGV2bV9rbWVtZHVwKG1kZXYtXHUwMDNlZGV2LCBjbGMsXG4tXHRcdFx0XHRcdFx0ICBsZTMyX3RvX2NwdShjbGMtXHUwMDNlbGVuKSxcbi1cdFx0XHRcdFx0XHQgIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0XHRcdFx0XHQgIGNsY19sZW4sIEdGUF9LRVJORUwpO1xuIFxuIFx0XHRpZiAoIXBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pIHtcbiBcdFx0XHRyZXQgPSAtRU5PTUVNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01UNzkyNUUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfbG9hZF9jbGMmIzM0OywKICAgICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBmaXJtd2FyZSBsb2FkaW5nIGluIHRoZSBNZWRpYXRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBoYXMgYSBVU0IgaW50ZXJmYWNlIChtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgY2FuIGJlIGZ1enplZCBieSBwcm92aWRpbmcgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzIHZpYSB0aGUgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ1MjI0Mzc3NWJhNjllNTViOWRlMTFlMTQzYjUxM2ZmNDY0NGU3YzMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyMyAwMTo1ODowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMKaW5kZXggZTk0ZmE1NDRmZjIwNzcuLjc2ZTMwYmY0Y2UwZmE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwpAQCAtODAzLDggJiM0Mzs4MDMsOSBAQCBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKQogCXN0cnVjdCBtdDc2X2RldiAqbWRldiA9ICZhbXA7ZGV2LSZndDttdDc2OwogCXN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSAmYW1wO2Rldi0mZ3Q7cGh5OwogCWNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7CiYjNDM7CXNpemVfdCBjbGNfbGVuLCBmd19kYXRhX2xlbiwgbGVuLCBvZmZzZXQgPSAwOwogCXU4ICpjbGNfYmFzZSA9IE5VTEwsIGh3X2VuY2FwID0gMDsKLQlpbnQgcmV0LCBpLCBsZW4sIG9mZnNldCA9IDA7CiYjNDM7CWludCByZXQsIGk7CiAKIAlkZXYtJmd0O3BoeS5jbGNfY2hhbl9jb25mID0gMHhmZjsKIAlkZXYtJmd0O3JlZ2RfdXNlciA9IGZhbHNlOwpAQCAtODI5LDEzICYjNDM7ODMwLDIxIEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpCiAJfQogCiAJaGRyID0gKGNvbnN0IHZvaWQgKikoZnctJmd0O2RhdGEgJiM0MzsgZnctJmd0O3NpemUgLSBzaXplb2YoKmhkcikpOwomIzQzOwlpZiAoaGRyLSZndDtuX3JlZ2lvbiAmZ3Q7IChmdy0mZ3Q7c2l6ZSAtIHNpemVvZigqaGRyKSkgLyBzaXplb2YoKnJlZ2lvbikpIHsKJiM0MzsJCWRldl9lcnIobWRldi0mZ3Q7ZGV2LCAmIzM0O0ludmFsaWQgZmlybXdhcmUgcmVnaW9uIHRhYmxlXG4mIzM0Oyk7CiYjNDM7CQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsJZndfZGF0YV9sZW4gPSBmdy0mZ3Q7c2l6ZSAtIHNpemVvZigqaGRyKSAtCiYjNDM7CQkgICAgICBoZHItJmd0O25fcmVnaW9uICogc2l6ZW9mKCpyZWdpb24pOwomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBoZHItJmd0O25fcmVnaW9uOyBpJiM0MzsmIzQzOykgewogCQlyZWdpb24gPSAoY29uc3Qgdm9pZCAqKSgoY29uc3QgdTggKiloZHIgLQogCQkJCQkoaGRyLSZndDtuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTsKIAkJbGVuID0gbGUzMl90b19jcHUocmVnaW9uLSZndDtsZW4pOwogCiAJCS8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi8KLQkJaWYgKG9mZnNldCAmIzQzOyBsZW4gJmd0OyBmdy0mZ3Q7c2l6ZSkgewomIzQzOwkJaWYgKGxlbiAmZ3Q7IGZ3X2RhdGFfbGVuIC0gb2Zmc2V0KSB7CiAJCQlkZXZfZXJyKG1kZXYtJmd0O2RldiwgJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxuJiMzNDspOwogCQkJcmV0ID0gLUVJTlZBTDsKIAkJCWdvdG8gb3V0OwpAQCAtODUyLDExICYjNDM7ODYxLDE5IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpCiAJaWYgKCFjbGNfYmFzZSkKIAkJZ290byBvdXQ7CiAKLQlmb3IgKG9mZnNldCA9IDA7IG9mZnNldCAmbHQ7IGxlbjsgb2Zmc2V0ICYjNDM7PSBsZTMyX3RvX2NwdShjbGMtJmd0O2xlbikpIHsKLQkJY2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7CiYjNDM7CWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0ICZsdDsgbGVuOyBvZmZzZXQgJiM0Mzs9IGNsY19sZW4pIHsKJiM0MzsJCWlmIChsZW4gLSBvZmZzZXQgJmx0OyBzaXplb2YoKmNsYykpIHsKJiM0MzsJCQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQogCi0JCWlmIChjbGMtJmd0O2lkeCAmZ3Q7PSBBUlJBWV9TSVpFKHBoeS0mZ3Q7Y2xjKSkKLQkJCWJyZWFrOwomIzQzOwkJY2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7CiYjNDM7CQljbGNfbGVuID0gbGUzMl90b19jcHUoY2xjLSZndDtsZW4pOwomIzQzOwkJaWYgKGNsY19sZW4gJmx0OyBzaXplb2YoKmNsYykgfHwgY2xjX2xlbiAmZ3Q7IGxlbiAtIG9mZnNldCB8fAomIzQzOwkJICAgIGNsYy0mZ3Q7aWR4ICZndDs9IEFSUkFZX1NJWkUocGh5LSZndDtjbGMpKSB7CiYjNDM7CQkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KIAogCQkvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi8KIAkJaWYgKHBoeS0mZ3Q7Y2xjW2NsYy0mZ3Q7aWR4XSkKQEAgLTg2OSw4ICYjNDM7ODg2LDcgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKIAkJCWNvbnRpbnVlOwogCiAJCXBoeS0mZ3Q7Y2xjW2NsYy0mZ3Q7aWR4XSA9IGRldm1fa21lbWR1cChtZGV2LSZndDtkZXYsIGNsYywKLQkJCQkJCSAgbGUzMl90b19jcHUoY2xjLSZndDtsZW4pLAotCQkJCQkJICBHRlBfS0VSTkVMKTsKJiM0MzsJCQkJCQkgIGNsY19sZW4sIEdGUF9LRVJORUwpOwogCiAJCWlmICghcGh5LSZndDtjbGNbY2xjLSZndDtpZHhdKSB7CiAJCQlyZXQgPSAtRU5PTUVNOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODM3CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3OTI1IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHR3ZWFraW5nIGBtdDc5MjVfbG9hZF9jbGNgIGluIHRoZSBNZWRpYXRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY2AuIFNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIHRvIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MuIFRoYXQmIzM5O3MgZ29vZCBzZWN1cml0eSBwcmFjdGljZSwgZ2VuZXJhbGx5IHNwZWFraW5nLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHRoaXMgYmUgZnV6emVkPyYjMzQ7IFdpcmVsZXNzIGRyaXZlcnMgYXJlIGFsd2F5cyBhIGp1aWN5IHRhcmdldC4gVGhlIHN0YW5kYXJkIHJvdXRlIGZvciBmdXp6aW5nIHNpbXVsYXRlZCBoYXJkd2FyZSwgbGlrZSB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAsIGlzIHVzZWZ1bCwgYnV0IHRoaXMgaXMgYSAqcmVhbCogaGFyZHdhcmUgZHJpdmVyLiBJZiB0aGlzIHdlcmUgYSBVU0IgZGV2aWNlLCBhIGRyaXZlciBsaWtlIGBtdDc5MjV1YCwgd2UgbWlnaHQgYmUgYWJsZSB0byBmdXp6IGl0IGRpcmVjdGx5LgoKU28sIHRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSYjMzk7cyBhIFVTQiB2YXJpYW50IG9mIHRoaXMgZHJpdmVyLiBUaGF0IHdpbGwgZGlyZWN0bHkgZGljdGF0ZSBteSBmdXp6aW5nIHN0cmF0ZWd5LiBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhIFVTQiBkcml2ZXIgYXZhaWxhYmxlIGZvciB0aGlzIE1UNzkyNSBjaGlwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNS4qdXNiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlPTk9bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjEwOm10NzkyNXUteSA6PSB1c2Iub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE0MDA9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MDE6bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MDItXHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MTM6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxNC1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MzktXHRwa3RpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHdjaWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDQwOlx0bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1My19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDU0OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ1Njp2b2lkIG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1Ny1cdFx0XHRcdCAgICAgc3RydWN0IG10NzZfcXVldWVfZW50cnkgKmUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ3NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDc1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0Nzc6Ym9vbCBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ3OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ4Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDg3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDg4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM2MD1pbnQgbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNjI6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzYzLVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzY1LVx0XHRcdFx0ICAgc3RydWN0IG10NzZfdHhfaW5mbyAqdHhfaW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNjY6dm9pZCBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM2Ny1cdFx0XHRcdCAgICAgc3RydWN0IG10NzZfcXVldWVfZW50cnkgKmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzY4OmJvb2wgbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9ODA9c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE0MzpzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTQ0LVx0XHRcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTUyLVx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTM6XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1NDpcdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTU6XHRcdC50eF9zdGF0dXNfZGF0YSA9IG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1Ni1cdFx0LnJ4X3NrYiA9IG10NzkyNV9xdWV1ZV9yeF9za2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjYyLSNpZmRlZiBDT05GSUdfUE1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI2MzpzdGF0aWMgaW50IG10NzkyNXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoyOTU6c3RhdGljIGludCBtdDc5MjV1X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI5Ni17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUxMAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNVDc5MjUgVVNCIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgTVQ3OTI1IGhhcyBhIFVTQiBkcml2ZXIsIGBtdDc5MjV1YCwgbWVhbmluZyB3ZSBjYW4gcG90ZW50aWFsbHkgZXhwbG9pdCBpdCB0aHJvdWdoIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYCBzaG91bGQgd29yay4gVGhlIHBhdGNoIHRhcmdldHMgYG10NzkyNV9sb2FkX2NsY2AsIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gRXhjZWxsZW50LiBOb3csIGlmIHRoZSBkcml2ZXIgcmVxdWVzdHMgZmlybXdhcmUgYW5kIHN5emthbGxlciBpcyBzZXQgdXAgdG8gcHJvdmlkZSBpdCB0aHJvdWdoIGl0cyBmaXJtd2FyZSBsb2FkaW5nIG1lY2hhbmlzbSwgd2UmIzM5O3ZlIGdvdCBhIGZ1enppbmcgZW50cnkgcG9pbnQuIFdhaXQgYSBzZWNvbmQuLi5zeXprYWxsZXIgY2FuIHByb3ZpZGUgKmFyYml0cmFyeSogZmlybXdhcmUgZmlsZXMhIFRoaXMgaXMgcHJvbWlzaW5nLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9ucyB3aGVyZSBgbXQ3OTI1X2xvYWRfY2xjYCBpcyBpbnZva2VkLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NTA9c3RhdGljIGludCBtdDc5MjVfbWN1X3JlYWRfZWVwcm9tKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6Nzk4OnN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03OTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTExMzA9aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTE0MjpcdGVyciA9IG10NzkyNV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExNDMtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNDIKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkludmVzdGlnYXRpbmcgdGhlIEZpcm13YXJlIExvYWQgU2VxdWVuY2UqKgoKUmlnaHQsIHNvIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkga25vdyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGZpcm13YXJlIGV4ZWN1dGlvbiBmb3IgdGhpcyBNVDc5MjUgZHJpdmVyIGdldHMgZ29pbmcuIEFuZCwgYXMgdGhlIGxvZyBpbmRpY2F0ZXMsIGl0IGNhbGxzIGBtdDc5MjVfbG9hZF9jbGNgLCB3aGljaCBpcyBsaWtlbHkgYSBjcnVjaWFsIHN0ZXAgaW4gcHJlcGFyaW5nIHRoZSBoYXJkd2FyZSBmb3IgdGhlIGZpcm13YXJlJiMzOTtzIG9wZXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyB0byBmdWxseSBncmFzcCBob3cgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiB3b3Jrcy4KClRoZXJlZm9yZSwgbXkgbmV4dCBtb3ZlIGlzIGNsZWFyLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCB0byB1bmRlcnN0YW5kIGl0cyBjYWxsaW5nIGNvbnRleHQuIEtub3dpbmcgd2hhdCYjMzk7cyB0cmlnZ2VyaW5nIGl0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLCBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJIG5lZWQgdG8gc2VlICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIHRvIGZpZ3VyZSBvdXQgaXRzIHJvbGUgaW4gdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzZWUgaWYgSSBjYW4gZmluZCB0aGF0IGNhbGwgcGF0aCBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9ydW5fZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9MTEyOD1FWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3NldF90aGVybWFsX3Byb3RlY3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTEyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjExMzA6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExMzEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExNDgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTE0OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcnVuX2Zpcm13YXJlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExNTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MjcxPXZvaWQgbXQ3OTI1X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MjcyOmludCBtdDc5MjVfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMjczLWludCBtdDc5MjVfbWN1X3NldF9ic3NfcG0oc3RydWN0IG10NzkyeF9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmM9NzE9aW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jLTEzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYzoxMzY6XHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtMTM3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmM9Mjc9aW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmM6NDg6XHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtNDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9NTY9c3RhdGljIGludCBtdDc5MjV1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNjktXHRtdDc2X3NldChkZXYsIE1UX1VETUFfVFhfUVNFTCwgTVRfRldfRExfRU4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6NzA6XHRyZXQgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy03MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9ODA9c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTExMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjExNDpcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTExNS1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcwMAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldDogbXQ3OTI1X3J1bl9maXJtd2FyZSoqCgpPa2F5LCBzbyBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgY2FsbGVkIGZyb20gdHdvIGtleSBsb2NhdGlvbnMgaW4gdGhlIFVTQiBkcml2ZXIsIHNwZWNpZmljYWxseSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IChgbXQ3OTI1dV9tY3VfaW5pdGAgYW5kIGBtdDc5MjV1X21hY19yZXNldGApLiBJbnRlcmVzdGluZy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBVU0IgaW50ZXJmYWNlLiBBbmQgc2luY2Ugc3l6a2FsbGVyIGlzIHF1aXRlIGFkZXB0IGF0IGVtdWxhdGluZyBVU0IgZGV2aWNlcywgdGhhdCBtZWFucyB3ZSBoYXZlIGEgY2xlYXIgcGF0aCB0byBmdXp6IHRoaXMgY29kZS4gVGhlIGltcGxpY2F0aW9ucyBhcmUgY2xlYXIgdG8gbWUsIHZ1bG5lcmFiaWxpdGllcyBoZXJlIGNvdWxkIGJlIHF1aXRlIGRhbWFnaW5nLgoKVGhlIHBhdGNoIGl0c2VsZiBmb2N1c2VzIG9uIGJvdW5kcyBjaGVja2luZzogc3BlY2lmaWNhbGx5IG9uIGBoZHItJmd0O25fcmVnaW9uYCBhbmQgYGNsYy0mZ3Q7bGVuYCBkdXJpbmcgZmlybXdhcmUgbG9hZGluZy4gVGhhdCBzY3JlYW1zIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSB2dWxuZXJhYmlsaXRpZXMsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBwcmltZSBmdXp6aW5nIG1hdGVyaWFsLiBXZSBuZWVkIHRvIGZvY3VzIG91ciBlZmZvcnRzIGhlcmUuCgpNeSBuZXh0IGltbWVkaWF0ZSB0YXNrIGlzIHRvIGlkZW50aWZ5IHRoZSBuZWNlc3Nhcnkga2VybmVsIENPTkZJRyBvcHRpb25zLiBMZXQmIzM5O3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgZW5hYmxlZCBhbmQgY29uZmlndXJlZCB0byBtYXhpbWl6ZSB0aGUgY2hhbmNlcyBvZiBzdWNjZXNzZnVsbHkgcmVhY2hpbmcgYW5kIHRlc3RpbmcgdGhpcyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDIyCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBNVDc5MjUgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYE1UNzkyNV9DT01NT05gIGFuZCBgTVQ3OTI1VWAuIFRoZSBsb2dpYyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGhlcmUuIEJlY2F1c2UgYE1UNzkyNVVgIGRlcGVuZHMgb24gYE1UNzkyNV9DT01NT05gLCB3ZSBkZWZpbml0ZWx5IG5lZWQgdG8gZW5hYmxlIGBNVDc5MjVVYC4gVGhhdCYjMzk7cyB0aGUgY29yZSBmb2N1cywgcmVhbGx5LgoKSSBzdXBwb3NlIGVuYWJsaW5nIGBNVDc5MjVFYCB3b3VsZG4mIzM5O3QgaHVydCBlaXRoZXIsIGp1c3QgdG8gY292ZXIgYWxsIGJhc2VzLCBidXQgYE1UNzkyNVVgIGlzIHRoZSBjcml0aWNhbCBvbmUgZm9yIFVTQiBmdXp6aW5nLCB3aGljaCBpcyB0aGUgbWFpbiBjb25jZXJuIHJpZ2h0IG5vdy4KClRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnYCB0byB2ZXJpZnkgYW55IGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3J1Y2lhbC4gVGhpcyBjb25maWcgZmlsZSBzaG91bGQgc3BlbGwgZXZlcnl0aGluZyBvdXQgZm9yIG1lLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzkyeF9MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFxuICAgNzpcdGNvbmZpZyBNVDc5MjVFXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4gICA5Olx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAxMDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXG4gIDE0Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAxNTpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIE1UNzkyNVVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMjI6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDI0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxuICAyNzpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMjg6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjc3CgkJCQkJCQlvdXRwdXQ6IDE0MQoJCQkJCQkJdGhvdWdodHM6IDEwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiB0aGUgTVQ3OTI1VSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBgTVQ3OTI1VWAgY29uZmlndXJhdGlvbiBpcyB0aGUgY2VudHJhbCBwaWVjZSBoZXJlLCB0aGF0JiMzOTtzIHdoZXJlIHdlIG5lZWQgdG8gc3RhcnQuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGljaCBmdW5jdGlvbnMgd2l0aGluIHRoZSBwYXRjaCBhcmUgbW9zdCBjcml0aWNhbC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBtb2RpZmljYXRpb24gaXMgd2l0aGluIGBtdDc5MjVfbG9hZF9jbGNgLCBzbyB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSBwcmltYXJ5IGFyZWEgb2YgZm9jdXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCB0aGF0IGZ1bmN0aW9uIGRvZXMgbm93LCBhbmQgd2hhdCB0aGUgY2hhbmdlIGFjY29tcGxpc2hlcy4gQmVzaWRlcyBgbXQ3OTI1X2xvYWRfY2xjYCwgSSYjMzk7bGwgd2FudCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhcyB3ZWxsLCBzaW5jZSB0aGF0JiMzOTtzIGxpa2VseSByZWxhdGVkLiBNaWdodCBiZSBiZW5lZmljaWFsIHRvIGFsc28gaW5jbHVkZSBgbXQ3OTI1dV9tY3VfaW5pdGAgYW5kIGBtdDc5MjV1X21hY19yZXNldGAgaW4gdGhlIHJldmlldy4gSXQmIzM5O3MgcG9zc2libGUgdGhhdCB0aGlzIGNoYW5nZSBoYXMgaW1wbGljYXRpb25zIGZvciBpbml0aWFsaXphdGlvbiBvciByZXNldCBwcm9jZWR1cmVzLCBzbyBhIHF1aWNrIGxvb2sgd291bGRuJiMzOTt0IGh1cnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01UNzkyNUUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfbG9hZF9jbGMmIzM0OywKICAgICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBmaXJtd2FyZSBsb2FkaW5nIGluIHRoZSBNZWRpYXRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBoYXMgYSBVU0IgaW50ZXJmYWNlIChtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgY2FuIGJlIGZ1enplZCBieSBwcm92aWRpbmcgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzIHZpYSB0aGUgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIGxvYWRpbmcgaW4gdGhlIE1lZGlhdGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIGhhcyBhIFVTQiBpbnRlcmZhY2UgKG10NzkyNXUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gVGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBjYW4gYmUgZnV6emVkIGJ5IHByb3ZpZGluZyBtYWxmb3JtZWQgZmlybXdhcmUgZmlsZXMgdmlhIHRoZSBmaXJtd2FyZSBsb2FkaW5nIG1lY2hhbmlzbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjA5Ljg5MDY5OTg1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1OTE4NjE2MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbG9hZF9jbGNcIixcbiAgICBcIm10NzkyNV9ydW5fZmlybXdhcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBmaXJtd2FyZSBsb2FkaW5nIGluIHRoZSBNZWRpYXRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBoYXMgYSBVU0IgaW50ZXJmYWNlIChtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgY2FuIGJlIGZ1enplZCBieSBwcm92aWRpbmcgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzIHZpYSB0aGUgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjA5Ljg5MDcwNzEwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg2Njg5MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDUyMjQzNzc1YmE2OWU1NWI5ZGUxMWUxNDNiNTEzZmY0NjQ0ZTdjM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAwMTo1ODowOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuaW5kZXggZTk0ZmE1NDRmZjIwNzcuLjc2ZTMwYmY0Y2UwZmE1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG5AQCAtODAzLDggKzgwMyw5IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXFxuIFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzY7XFxuIFxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHk7XFxuIFxcdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7XFxuK1xcdHNpemVfdCBjbGNfbGVuLCBmd19kYXRhX2xlbiwgbGVuLCBvZmZzZXQgPSAwO1xcbiBcXHR1OCAqY2xjX2Jhc2UgPSBOVUxMLCBod19lbmNhcCA9IDA7XFxuLVxcdGludCByZXQsIGksIGxlbiwgb2Zmc2V0ID0gMDtcXG4rXFx0aW50IHJldCwgaTtcXG4gXFxuIFxcdGRldi1cXHUwMDNlcGh5LmNsY19jaGFuX2NvbmYgPSAweGZmO1xcbiBcXHRkZXYtXFx1MDAzZXJlZ2RfdXNlciA9IGZhbHNlO1xcbkBAIC04MjksMTMgKzgzMCwyMSBAQCBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbiBcXHR9XFxuIFxcbiBcXHRoZHIgPSAoY29uc3Qgdm9pZCAqKShmdy1cXHUwMDNlZGF0YSArIGZ3LVxcdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKTtcXG4rXFx0aWYgKGhkci1cXHUwMDNlbl9yZWdpb24gXFx1MDAzZSAoZnctXFx1MDAzZXNpemUgLSBzaXplb2YoKmhkcikpIC8gc2l6ZW9mKCpyZWdpb24pKSB7XFxuK1xcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBmaXJtd2FyZSByZWdpb24gdGFibGVcXFxcblxcXCIpO1xcbitcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXHRmd19kYXRhX2xlbiA9IGZ3LVxcdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpIC1cXG4rXFx0XFx0ICAgICAgaGRyLVxcdTAwM2VuX3JlZ2lvbiAqIHNpemVvZigqcmVnaW9uKTtcXG4rXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBoZHItXFx1MDAzZW5fcmVnaW9uOyBpKyspIHtcXG4gXFx0XFx0cmVnaW9uID0gKGNvbnN0IHZvaWQgKikoKGNvbnN0IHU4ICopaGRyIC1cXG4gXFx0XFx0XFx0XFx0XFx0KGhkci1cXHUwMDNlbl9yZWdpb24gLSBpKSAqIHNpemVvZigqcmVnaW9uKSk7XFxuIFxcdFxcdGxlbiA9IGxlMzJfdG9fY3B1KHJlZ2lvbi1cXHUwMDNlbGVuKTtcXG4gXFxuIFxcdFxcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cXG4tXFx0XFx0aWYgKG9mZnNldCArIGxlbiBcXHUwMDNlIGZ3LVxcdTAwM2VzaXplKSB7XFxuK1xcdFxcdGlmIChsZW4gXFx1MDAzZSBmd19kYXRhX2xlbiAtIG9mZnNldCkge1xcbiBcXHRcXHRcXHRkZXZfZXJyKG1kZXYtXFx1MDAzZWRldiwgXFxcIkludmFsaWQgZmlybXdhcmUgcmVnaW9uXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gXFx0XFx0XFx0Z290byBvdXQ7XFxuQEAgLTg1MiwxMSArODYxLDE5IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXFxuIFxcdGlmICghY2xjX2Jhc2UpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4tXFx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXFx1MDAzYyBsZW47IG9mZnNldCArPSBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbikpIHtcXG4tXFx0XFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICsgb2Zmc2V0KTtcXG4rXFx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXFx1MDAzYyBsZW47IG9mZnNldCArPSBjbGNfbGVuKSB7XFxuK1xcdFxcdGlmIChsZW4gLSBvZmZzZXQgXFx1MDAzYyBzaXplb2YoKmNsYykpIHtcXG4rXFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4gXFxuLVxcdFxcdGlmIChjbGMtXFx1MDAzZWlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cXHUwMDNlY2xjKSlcXG4tXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTI1X2NsYyAqKShjbGNfYmFzZSArIG9mZnNldCk7XFxuK1xcdFxcdGNsY19sZW4gPSBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbik7XFxuK1xcdFxcdGlmIChjbGNfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXFx1MDAzZSBsZW4gLSBvZmZzZXQgfHxcXG4rXFx0XFx0ICAgIGNsYy1cXHUwMDNlaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUocGh5LVxcdTAwM2VjbGMpKSB7XFxuK1xcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHR9XFxuIFxcbiBcXHRcXHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cXG4gXFx0XFx0aWYgKHBoeS1cXHUwMDNlY2xjW2NsYy1cXHUwMDNlaWR4XSlcXG5AQCAtODY5LDggKzg4Niw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0cGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdID0gZGV2bV9rbWVtZHVwKG1kZXYtXFx1MDAzZWRldiwgY2xjLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgIGxlMzJfdG9fY3B1KGNsYy1cXHUwMDNlbGVuKSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBjbGNfbGVuLCBHRlBfS0VSTkVMKTtcXG4gXFxuIFxcdFxcdGlmICghcGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdKSB7XFxuIFxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjEwLjY3ODAxOTIzOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI1MTMxMjgzNjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbG9hZF9jbGNcIixcbiAgICBcIm10NzkyNV9ydW5fZmlybXdhcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBmaXJtd2FyZSBsb2FkaW5nIGluIHRoZSBNZWRpYXRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBoYXMgYSBVU0IgaW50ZXJmYWNlIChtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgY2FuIGJlIGZ1enplZCBieSBwcm92aWRpbmcgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzIHZpYSB0aGUgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDUyMjQzNzc1YmE2OWU1NWI5ZGUxMWUxNDNiNTEzZmY0NjQ0ZTdjM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDAxOjU4OjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuaW5kZXggZTk0ZmE1NDRmZjIwNzcuLjc2ZTMwYmY0Y2UwZmE1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5AQCAtODAzLDggKzgwMyw5IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3NjtcbiBcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuIFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdztcbitcdHNpemVfdCBjbGNfbGVuLCBmd19kYXRhX2xlbiwgbGVuLCBvZmZzZXQgPSAwO1xuIFx0dTggKmNsY19iYXNlID0gTlVMTCwgaHdfZW5jYXAgPSAwO1xuLVx0aW50IHJldCwgaSwgbGVuLCBvZmZzZXQgPSAwO1xuK1x0aW50IHJldCwgaTtcbiBcbiBcdGRldi1cdTAwM2VwaHkuY2xjX2NoYW5fY29uZiA9IDB4ZmY7XG4gXHRkZXYtXHUwMDNlcmVnZF91c2VyID0gZmFsc2U7XG5AQCAtODI5LDEzICs4MzAsMjEgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcdH1cbiBcbiBcdGhkciA9IChjb25zdCB2b2lkICopKGZ3LVx1MDAzZWRhdGEgKyBmdy1cdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKTtcbitcdGlmIChoZHItXHUwMDNlbl9yZWdpb24gXHUwMDNlIChmdy1cdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKSAvIHNpemVvZigqcmVnaW9uKSkge1xuK1x0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcIkludmFsaWQgZmlybXdhcmUgcmVnaW9uIHRhYmxlXFxuXCIpO1xuK1x0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcdGZ3X2RhdGFfbGVuID0gZnctXHUwMDNlc2l6ZSAtIHNpemVvZigqaGRyKSAtXG4rXHRcdCAgICAgIGhkci1cdTAwM2VuX3JlZ2lvbiAqIHNpemVvZigqcmVnaW9uKTtcbitcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGhkci1cdTAwM2VuX3JlZ2lvbjsgaSsrKSB7XG4gXHRcdHJlZ2lvbiA9IChjb25zdCB2b2lkICopKChjb25zdCB1OCAqKWhkciAtXG4gXHRcdFx0XHRcdChoZHItXHUwMDNlbl9yZWdpb24gLSBpKSAqIHNpemVvZigqcmVnaW9uKSk7XG4gXHRcdGxlbiA9IGxlMzJfdG9fY3B1KHJlZ2lvbi1cdTAwM2VsZW4pO1xuIFxuIFx0XHQvKiBjaGVjayBpZiB3ZSBoYXZlIHZhbGlkIGJ1ZmZlciBzaXplICovXG4tXHRcdGlmIChvZmZzZXQgKyBsZW4gXHUwMDNlIGZ3LVx1MDAzZXNpemUpIHtcbitcdFx0aWYgKGxlbiBcdTAwM2UgZndfZGF0YV9sZW4gLSBvZmZzZXQpIHtcbiBcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcIkludmFsaWQgZmlybXdhcmUgcmVnaW9uXFxuXCIpO1xuIFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byBvdXQ7XG5AQCAtODUyLDExICs4NjEsMTkgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcdGlmICghY2xjX2Jhc2UpXG4gXHRcdGdvdG8gb3V0O1xuIFxuLVx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXHUwMDNjIGxlbjsgb2Zmc2V0ICs9IGxlMzJfdG9fY3B1KGNsYy1cdTAwM2VsZW4pKSB7XG4tXHRcdGNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTI1X2NsYyAqKShjbGNfYmFzZSArIG9mZnNldCk7XG4rXHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcdTAwM2MgbGVuOyBvZmZzZXQgKz0gY2xjX2xlbikge1xuK1x0XHRpZiAobGVuIC0gb2Zmc2V0IFx1MDAzYyBzaXplb2YoKmNsYykpIHtcbitcdFx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4gXG4tXHRcdGlmIChjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKSlcbi1cdFx0XHRicmVhaztcbitcdFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICsgb2Zmc2V0KTtcbitcdFx0Y2xjX2xlbiA9IGxlMzJfdG9fY3B1KGNsYy1cdTAwM2VsZW4pO1xuK1x0XHRpZiAoY2xjX2xlbiBcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXHUwMDNlIGxlbiAtIG9mZnNldCB8fFxuK1x0XHQgICAgY2xjLVx1MDAzZWlkeCBcdTAwM2U9IEFSUkFZX1NJWkUocGh5LVx1MDAzZWNsYykpIHtcbitcdFx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4gXG4gXHRcdC8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqL1xuIFx0XHRpZiAocGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSlcbkBAIC04NjksOCArODg2LDcgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0cGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSA9IGRldm1fa21lbWR1cChtZGV2LVx1MDAzZWRldiwgY2xjLFxuLVx0XHRcdFx0XHRcdCAgbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbiksXG4tXHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMKTtcbitcdFx0XHRcdFx0XHQgIGNsY19sZW4sIEdGUF9LRVJORUwpO1xuIFxuIFx0XHRpZiAoIXBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pIHtcbiBcdFx0XHRyZXQgPSAtRU5PTUVNO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDE6NTg6MTAuNjc4MDIwNzc5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc2ODUyNTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzkyNSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyB0d2Vha2luZyBgbXQ3OTI1X2xvYWRfY2xjYCBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNgLiBTZWVtcyBsaWtlIHRoZXkncmUgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIHRvIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MuIFRoYXQncyBnb29kIHNlY3VyaXR5IHByYWN0aWNlLCBnZW5lcmFsbHkgc3BlYWtpbmcuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiB0aGlzIGJlIGZ1enplZD9cIiBXaXJlbGVzcyBkcml2ZXJzIGFyZSBhbHdheXMgYSBqdWljeSB0YXJnZXQuIFRoZSBzdGFuZGFyZCByb3V0ZSBmb3IgZnV6emluZyBzaW11bGF0ZWQgaGFyZHdhcmUsIGxpa2UgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gLCBpcyB1c2VmdWwsIGJ1dCB0aGlzIGlzIGEgKnJlYWwqIGhhcmR3YXJlIGRyaXZlci4gSWYgdGhpcyB3ZXJlIGEgVVNCIGRldmljZSwgYSBkcml2ZXIgbGlrZSBgbXQ3OTI1dWAsIHdlIG1pZ2h0IGJlIGFibGUgdG8gZnV6eiBpdCBkaXJlY3RseS5cblxuU28sIHRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSdzIGEgVVNCIHZhcmlhbnQgb2YgdGhpcyBkcml2ZXIuIFRoYXQgd2lsbCBkaXJlY3RseSBkaWN0YXRlIG15IGZ1enppbmcgc3RyYXRlZ3kuIEkgbmVlZCB0byBrbm93IGlmIHRoZXJlJ3MgYSBVU0IgZHJpdmVyIGF2YWlsYWJsZSBmb3IgdGhpcyBNVDc5MjUgY2hpcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgzNywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjE1LjQ0NjU1MDAyOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjg0NjIxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1Lip1c2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlPTk9bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZToxMDptdDc5MjV1LXkgOj0gdXNiLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE0MDA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDAxOm10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQwMi1cXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQxMzppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxNC1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MzktXFx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHdjaWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ0MDpcXHRtdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShkZXYsIHdjaWQsIHFpZCwgc3RhLCBrZXksIHBrdGlkLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDUzLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDU0OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDU2OnZvaWQgbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1Ny1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ3NC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ3NTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0Nzc6Ym9vbCBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0Nzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ4Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ4NzpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0ODgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNjA9aW50IG10NzkyNV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNjI6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM2My1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM2NS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbXQ3Nl90eF9pbmZvICp0eF9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNjY6dm9pZCBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNjctXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzY4OmJvb2wgbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9ODA9c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE0MzpzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE0NC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTUyLVxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1MzpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTU0OlxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1NTpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU2LVxcdFxcdC5yeF9za2IgPSBtdDc5MjVfcXVldWVfcnhfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjYyLSNpZmRlZiBDT05GSUdfUE1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoyNjM6c3RhdGljIGludCBtdDc5MjV1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI5NTpzdGF0aWMgaW50IG10NzkyNXVfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI5Ni17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjE1LjU3NTAxNjY5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDAyMDk5MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTVQ3OTI1IFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgTVQ3OTI1IGhhcyBhIFVTQiBkcml2ZXIsIGBtdDc5MjV1YCwgbWVhbmluZyB3ZSBjYW4gcG90ZW50aWFsbHkgZXhwbG9pdCBpdCB0aHJvdWdoIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYCBzaG91bGQgd29yay4gVGhlIHBhdGNoIHRhcmdldHMgYG10NzkyNV9sb2FkX2NsY2AsIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gRXhjZWxsZW50LiBOb3csIGlmIHRoZSBkcml2ZXIgcmVxdWVzdHMgZmlybXdhcmUgYW5kIHN5emthbGxlciBpcyBzZXQgdXAgdG8gcHJvdmlkZSBpdCB0aHJvdWdoIGl0cyBmaXJtd2FyZSBsb2FkaW5nIG1lY2hhbmlzbSwgd2UndmUgZ290IGEgZnV6emluZyBlbnRyeSBwb2ludC4gV2FpdCBhIHNlY29uZC4uLnN5emthbGxlciBjYW4gcHJvdmlkZSAqYXJiaXRyYXJ5KiBmaXJtd2FyZSBmaWxlcyEgVGhpcyBpcyBwcm9taXNpbmcuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBwaW5wb2ludCB0aGUgZXhhY3QgbG9jYXRpb25zIHdoZXJlIGBtdDc5MjVfbG9hZF9jbGNgIGlzIGludm9rZWQuIExldCdzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUxMCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMTo1ODoxOS4zNzUyMjg5OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMwNDEwOTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X2xvYWRfY2xjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NTA9c3RhdGljIGludCBtdDc5MjVfbWN1X3JlYWRfZWVwcm9tKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6Nzk4OnN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTExMzA9aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTE0MjpcXHRlcnIgPSBtdDc5MjVfbG9hZF9jbGMoZGV2LCBtdDc5MnhfcmFtX25hbWUoZGV2KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTE0My1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMTo1ODoxOS40NzgyNzcyMTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzYyNzc4NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRmlybXdhcmUgTG9hZCBTZXF1ZW5jZSoqXG5cblJpZ2h0LCBzbyBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIGtub3cgdGhhdCdzIHdoZXJlIHRoZSBjb3JlIGZpcm13YXJlIGV4ZWN1dGlvbiBmb3IgdGhpcyBNVDc5MjUgZHJpdmVyIGdldHMgZ29pbmcuIEFuZCwgYXMgdGhlIGxvZyBpbmRpY2F0ZXMsIGl0IGNhbGxzIGBtdDc5MjVfbG9hZF9jbGNgLCB3aGljaCBpcyBsaWtlbHkgYSBjcnVjaWFsIHN0ZXAgaW4gcHJlcGFyaW5nIHRoZSBoYXJkd2FyZSBmb3IgdGhlIGZpcm13YXJlJ3Mgb3BlcmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zIHRvIGZ1bGx5IGdyYXNwIGhvdyB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIHdvcmtzLlxuXG5UaGVyZWZvcmUsIG15IG5leHQgbW92ZSBpcyBjbGVhci4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbGluZyBjb250ZXh0LiBLbm93aW5nIHdoYXQncyB0cmlnZ2VyaW5nIGl0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLCBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJIG5lZWQgdG8gc2VlICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIHRvIGZpZ3VyZSBvdXQgaXRzIHJvbGUgaW4gdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBkcml2ZXIuIExldCdzIHNlZSBpZiBJIGNhbiBmaW5kIHRoYXQgY2FsbCBwYXRoIHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNDIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMTo1ODoyMi44NDEwNTg0NzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3OTk0NTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV9ydW5fZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTExMjg9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9zZXRfdGhlcm1hbF9wcm90ZWN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjExMzA6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExNDgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjExNDk6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3J1bl9maXJtd2FyZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTE1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTI3MT12b2lkIG10NzkyNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDoyNzI6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMjczLWludCBtdDc5MjVfbWN1X3NldF9ic3NfcG0oc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz03MT1pbnQgbXQ3OTI1ZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy0xMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jOjEzNjpcXHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jLTEzNy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jPTI3PWludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jOjQ4OlxcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz01Nj1zdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTY5LVxcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6NzA6XFx0cmV0ID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTcxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz04MD1zdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTE0OlxcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xMTUtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDE6NTg6MjIuOTY5MDU4NDk2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1MjA2NDY4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldDogbXQ3OTI1X3J1bl9maXJtd2FyZSoqXG5cbk9rYXksIHNvIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBpcyBjYWxsZWQgZnJvbSB0d28ga2V5IGxvY2F0aW9ucyBpbiB0aGUgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgcmVzZXQgKGBtdDc5MjV1X21jdV9pbml0YCBhbmQgYG10NzkyNXVfbWFjX3Jlc2V0YCkuIEludGVyZXN0aW5nLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIFVTQiBpbnRlcmZhY2UuIEFuZCBzaW5jZSBzeXprYWxsZXIgaXMgcXVpdGUgYWRlcHQgYXQgZW11bGF0aW5nIFVTQiBkZXZpY2VzLCB0aGF0IG1lYW5zIHdlIGhhdmUgYSBjbGVhciBwYXRoIHRvIGZ1enogdGhpcyBjb2RlLiBUaGUgaW1wbGljYXRpb25zIGFyZSBjbGVhciB0byBtZSwgdnVsbmVyYWJpbGl0aWVzIGhlcmUgY291bGQgYmUgcXVpdGUgZGFtYWdpbmcuXG5cblRoZSBwYXRjaCBpdHNlbGYgZm9jdXNlcyBvbiBib3VuZHMgY2hlY2tpbmc6IHNwZWNpZmljYWxseSBvbiBgaGRyLVx1MDAzZW5fcmVnaW9uYCBhbmQgYGNsYy1cdTAwM2VsZW5gIGR1cmluZyBmaXJtd2FyZSBsb2FkaW5nLiBUaGF0IHNjcmVhbXMgb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIHZ1bG5lcmFiaWxpdGllcywgc28gdGhpcyBpcyBkZWZpbml0ZWx5IHByaW1lIGZ1enppbmcgbWF0ZXJpYWwuIFdlIG5lZWQgdG8gZm9jdXMgb3VyIGVmZm9ydHMgaGVyZS5cblxuTXkgbmV4dCBpbW1lZGlhdGUgdGFzayBpcyB0byBpZGVudGlmeSB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBDT05GSUcgb3B0aW9ucy4gTGV0J3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgZW5hYmxlZCBhbmQgY29uZmlndXJlZCB0byBtYXhpbWl6ZSB0aGUgY2hhbmNlcyBvZiBzdWNjZXNzZnVsbHkgcmVhY2hpbmcgYW5kIHRlc3RpbmcgdGhpcyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzAwLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjI3LjEyMTEyNzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNTExNDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5MjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjI3LjIwMzY0NTkxNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDYwMDk1NDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBNVDc5MjUgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBNVDc5MjVfQ09NTU9OYCBhbmQgYE1UNzkyNVVgLiBUaGUgbG9naWMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBoZXJlLiBCZWNhdXNlIGBNVDc5MjVVYCBkZXBlbmRzIG9uIGBNVDc5MjVfQ09NTU9OYCwgd2UgZGVmaW5pdGVseSBuZWVkIHRvIGVuYWJsZSBgTVQ3OTI1VWAuIFRoYXQncyB0aGUgY29yZSBmb2N1cywgcmVhbGx5LlxuXG5JIHN1cHBvc2UgZW5hYmxpbmcgYE1UNzkyNUVgIHdvdWxkbid0IGh1cnQgZWl0aGVyLCBqdXN0IHRvIGNvdmVyIGFsbCBiYXNlcywgYnV0IGBNVDc5MjVVYCBpcyB0aGUgY3JpdGljYWwgb25lIGZvciBVU0IgZnV6emluZywgd2hpY2ggaXMgdGhlIG1haW4gY29uY2VybiByaWdodCBub3cuXG5cblRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnYCB0byB2ZXJpZnkgYW55IGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsLiBUaGlzIGNvbmZpZyBmaWxlIHNob3VsZCBzcGVsbCBldmVyeXRoaW5nIG91dCBmb3IgbWUuIExldCdzIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQyMiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMTo1ODozMS4yNjM3NDQzMzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3OTI1X0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc5MnhfTElCXFxuICAgNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gICA2OlxcdFxcbiAgIDc6XFx0Y29uZmlnIE1UNzkyNUVcXG4gICA4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDE1OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBNVDc5MjVVXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxcbiAgMjc6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDI4OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjMxLjI2Mzg0NzY1NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzk0NjUyNzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIHRoZSBNVDc5MjVVIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYE1UNzkyNVVgIGNvbmZpZ3VyYXRpb24gaXMgdGhlIGNlbnRyYWwgcGllY2UgaGVyZSwgdGhhdCdzIHdoZXJlIHdlIG5lZWQgdG8gc3RhcnQuIExldCdzIGRpZyBpbiBhbmQgZmlndXJlIG91dCBleGFjdGx5IHdoaWNoIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIHBhdGNoIGFyZSBtb3N0IGNyaXRpY2FsLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG1vZGlmaWNhdGlvbiBpcyB3aXRoaW4gYG10NzkyNV9sb2FkX2NsY2AsIHNvIHRoYXQncyBkZWZpbml0ZWx5IGEgcHJpbWFyeSBhcmVhIG9mIGZvY3VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgdGhhdCBmdW5jdGlvbiBkb2VzIG5vdywgYW5kIHdoYXQgdGhlIGNoYW5nZSBhY2NvbXBsaXNoZXMuIEJlc2lkZXMgYG10NzkyNV9sb2FkX2NsY2AsIEknbGwgd2FudCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhcyB3ZWxsLCBzaW5jZSB0aGF0J3MgbGlrZWx5IHJlbGF0ZWQuIE1pZ2h0IGJlIGJlbmVmaWNpYWwgdG8gYWxzbyBpbmNsdWRlIGBtdDc5MjV1X21jdV9pbml0YCBhbmQgYG10NzkyNXVfbWFjX3Jlc2V0YCBpbiB0aGUgcmV2aWV3LiBJdCdzIHBvc3NpYmxlIHRoYXQgdGhpcyBjaGFuZ2UgaGFzIGltcGxpY2F0aW9ucyBmb3IgaW5pdGlhbGl6YXRpb24gb3IgcmVzZXQgcHJvY2VkdXJlcywgc28gYSBxdWljayBsb29rIHdvdWxkbid0IGh1cnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzcsIk91dHB1dFRva2VucyI6MTQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDE6NTg6MzUuNjU4NTA0MTIzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwNzkyODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNVDc5MjVFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X2xvYWRfY2xjXCIsXG4gICAgXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gZmlybXdhcmUgbG9hZGluZyBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgaGFzIGEgVVNCIGludGVyZmFjZSAobXQ3OTI1dSkgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrLiBUaGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIGNhbiBiZSBmdXp6ZWQgYnkgcHJvdmlkaW5nIG1hbGZvcm1lZCBmaXJtd2FyZSBmaWxlcyB2aWEgdGhlIGZpcm13YXJlIGxvYWRpbmcgbWVjaGFuaXNtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbG9hZF9jbGNcIixcbiAgICBcIm10NzkyNV9ydW5fZmlybXdhcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBmaXJtd2FyZSBsb2FkaW5nIGluIHRoZSBNZWRpYXRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBoYXMgYSBVU0IgaW50ZXJmYWNlIChtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgY2FuIGJlIGZ1enplZCBieSBwcm92aWRpbmcgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzIHZpYSB0aGUgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbcstk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 01:37:52 +0000 UTC FinishedAt: 2026-07-23 01:58:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925E" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MT7925E" ], "series_id": "bf76ede5-9575-4824-b283-989f4bdc00cf" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_load_clc", "mt7925_run_firmware" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIGxvYWRpbmcgaW4gdGhlIE1lZGlhdGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIGhhcyBhIFVTQiBpbnRlcmZhY2UgKG10NzkyNXUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gVGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBjYW4gYmUgZnV6emVkIGJ5IHByb3ZpZGluZyBtYWxmb3JtZWQgZmlybXdhcmUgZmlsZXMgdmlhIHRoZSBmaXJtd2FyZSBsb2FkaW5nIG1lY2hhbmlzbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMTo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ1MjI0Mzc3NWJhNjllNTViOWRlMTFlMTQzYjUxM2ZmNDY0NGU3YzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAwMTo1ODowOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBlOTRmYTU0NGZmMjA3Ny4uNzZlMzBiZjRjZTBmYTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbkBAIC04MDMsOCAmIzQzOzgwMyw5IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3NjtcbiBcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuIFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdztcbiYjNDM7XHRzaXplX3QgY2xjX2xlbiwgZndfZGF0YV9sZW4sIGxlbiwgb2Zmc2V0ID0gMDtcbiBcdHU4ICpjbGNfYmFzZSA9IE5VTEwsIGh3X2VuY2FwID0gMDtcbi1cdGludCByZXQsIGksIGxlbiwgb2Zmc2V0ID0gMDtcbiYjNDM7XHRpbnQgcmV0LCBpO1xuIFxuIFx0ZGV2LVx1MDAzZXBoeS5jbGNfY2hhbl9jb25mID0gMHhmZjtcbiBcdGRldi1cdTAwM2VyZWdkX3VzZXIgPSBmYWxzZTtcbkBAIC04MjksMTMgJiM0Mzs4MzAsMjEgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcdH1cbiBcbiBcdGhkciA9IChjb25zdCB2b2lkICopKGZ3LVx1MDAzZWRhdGEgJiM0MzsgZnctXHUwMDNlc2l6ZSAtIHNpemVvZigqaGRyKSk7XG4mIzQzO1x0aWYgKGhkci1cdTAwM2VuX3JlZ2lvbiBcdTAwM2UgKGZ3LVx1MDAzZXNpemUgLSBzaXplb2YoKmhkcikpIC8gc2l6ZW9mKCpyZWdpb24pKSB7XG4mIzQzO1x0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvbiB0YWJsZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcdGZ3X2RhdGFfbGVuID0gZnctXHUwMDNlc2l6ZSAtIHNpemVvZigqaGRyKSAtXG4mIzQzO1x0XHQgICAgICBoZHItXHUwMDNlbl9yZWdpb24gKiBzaXplb2YoKnJlZ2lvbik7XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaGRyLVx1MDAzZW5fcmVnaW9uOyBpJiM0MzsmIzQzOykge1xuIFx0XHRyZWdpb24gPSAoY29uc3Qgdm9pZCAqKSgoY29uc3QgdTggKiloZHIgLVxuIFx0XHRcdFx0XHQoaGRyLVx1MDAzZW5fcmVnaW9uIC0gaSkgKiBzaXplb2YoKnJlZ2lvbikpO1xuIFx0XHRsZW4gPSBsZTMyX3RvX2NwdShyZWdpb24tXHUwMDNlbGVuKTtcbiBcbiBcdFx0LyogY2hlY2sgaWYgd2UgaGF2ZSB2YWxpZCBidWZmZXIgc2l6ZSAqL1xuLVx0XHRpZiAob2Zmc2V0ICYjNDM7IGxlbiBcdTAwM2UgZnctXHUwMDNlc2l6ZSkge1xuJiM0MztcdFx0aWYgKGxlbiBcdTAwM2UgZndfZGF0YV9sZW4gLSBvZmZzZXQpIHtcbiBcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcblwmIzM0Oyk7XG4gXHRcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdFx0XHRnb3RvIG91dDtcbkBAIC04NTIsMTEgJiM0Mzs4NjEsMTkgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcdGlmICghY2xjX2Jhc2UpXG4gXHRcdGdvdG8gb3V0O1xuIFxuLVx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXHUwMDNjIGxlbjsgb2Zmc2V0ICYjNDM7PSBsZTMyX3RvX2NwdShjbGMtXHUwMDNlbGVuKSkge1xuLVx0XHRjbGMgPSAoY29uc3Qgc3RydWN0IG10NzkyNV9jbGMgKikoY2xjX2Jhc2UgJiM0Mzsgb2Zmc2V0KTtcbiYjNDM7XHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcdTAwM2MgbGVuOyBvZmZzZXQgJiM0Mzs9IGNsY19sZW4pIHtcbiYjNDM7XHRcdGlmIChsZW4gLSBvZmZzZXQgXHUwMDNjIHNpemVvZigqY2xjKSkge1xuJiM0MztcdFx0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiBcbi1cdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7XG4mIzQzO1x0XHRjbGNfbGVuID0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbik7XG4mIzQzO1x0XHRpZiAoY2xjX2xlbiBcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXHUwMDNlIGxlbiAtIG9mZnNldCB8fFxuJiM0MztcdFx0ICAgIGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKSB7XG4mIzQzO1x0XHRcdHJldCA9IC1FSU5WQUw7XG4mIzQzO1x0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0fVxuIFxuIFx0XHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cbiBcdFx0aWYgKHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pXG5AQCAtODY5LDggJiM0Mzs4ODYsNyBAQCBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRwaHktXHUwMDNlY2xjW2NsYy1cdTAwM2VpZHhdID0gZGV2bV9rbWVtZHVwKG1kZXYtXHUwMDNlZGV2LCBjbGMsXG4tXHRcdFx0XHRcdFx0ICBsZTMyX3RvX2NwdShjbGMtXHUwMDNlbGVuKSxcbi1cdFx0XHRcdFx0XHQgIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0XHRcdFx0XHQgIGNsY19sZW4sIEdGUF9LRVJORUwpO1xuIFxuIFx0XHRpZiAoIXBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pIHtcbiBcdFx0XHRyZXQgPSAtRU5PTUVNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01UNzkyNUUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfbG9hZF9jbGMmIzM0OywKICAgICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBmaXJtd2FyZSBsb2FkaW5nIGluIHRoZSBNZWRpYXRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBoYXMgYSBVU0IgaW50ZXJmYWNlIChtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgY2FuIGJlIGZ1enplZCBieSBwcm92aWRpbmcgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzIHZpYSB0aGUgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ1MjI0Mzc3NWJhNjllNTViOWRlMTFlMTQzYjUxM2ZmNDY0NGU3YzMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyMyAwMTo1ODowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMKaW5kZXggZTk0ZmE1NDRmZjIwNzcuLjc2ZTMwYmY0Y2UwZmE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwpAQCAtODAzLDggJiM0Mzs4MDMsOSBAQCBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKQogCXN0cnVjdCBtdDc2X2RldiAqbWRldiA9ICZhbXA7ZGV2LSZndDttdDc2OwogCXN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSAmYW1wO2Rldi0mZ3Q7cGh5OwogCWNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7CiYjNDM7CXNpemVfdCBjbGNfbGVuLCBmd19kYXRhX2xlbiwgbGVuLCBvZmZzZXQgPSAwOwogCXU4ICpjbGNfYmFzZSA9IE5VTEwsIGh3X2VuY2FwID0gMDsKLQlpbnQgcmV0LCBpLCBsZW4sIG9mZnNldCA9IDA7CiYjNDM7CWludCByZXQsIGk7CiAKIAlkZXYtJmd0O3BoeS5jbGNfY2hhbl9jb25mID0gMHhmZjsKIAlkZXYtJmd0O3JlZ2RfdXNlciA9IGZhbHNlOwpAQCAtODI5LDEzICYjNDM7ODMwLDIxIEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpCiAJfQogCiAJaGRyID0gKGNvbnN0IHZvaWQgKikoZnctJmd0O2RhdGEgJiM0MzsgZnctJmd0O3NpemUgLSBzaXplb2YoKmhkcikpOwomIzQzOwlpZiAoaGRyLSZndDtuX3JlZ2lvbiAmZ3Q7IChmdy0mZ3Q7c2l6ZSAtIHNpemVvZigqaGRyKSkgLyBzaXplb2YoKnJlZ2lvbikpIHsKJiM0MzsJCWRldl9lcnIobWRldi0mZ3Q7ZGV2LCAmIzM0O0ludmFsaWQgZmlybXdhcmUgcmVnaW9uIHRhYmxlXG4mIzM0Oyk7CiYjNDM7CQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsJZndfZGF0YV9sZW4gPSBmdy0mZ3Q7c2l6ZSAtIHNpemVvZigqaGRyKSAtCiYjNDM7CQkgICAgICBoZHItJmd0O25fcmVnaW9uICogc2l6ZW9mKCpyZWdpb24pOwomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBoZHItJmd0O25fcmVnaW9uOyBpJiM0MzsmIzQzOykgewogCQlyZWdpb24gPSAoY29uc3Qgdm9pZCAqKSgoY29uc3QgdTggKiloZHIgLQogCQkJCQkoaGRyLSZndDtuX3JlZ2lvbiAtIGkpICogc2l6ZW9mKCpyZWdpb24pKTsKIAkJbGVuID0gbGUzMl90b19jcHUocmVnaW9uLSZndDtsZW4pOwogCiAJCS8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi8KLQkJaWYgKG9mZnNldCAmIzQzOyBsZW4gJmd0OyBmdy0mZ3Q7c2l6ZSkgewomIzQzOwkJaWYgKGxlbiAmZ3Q7IGZ3X2RhdGFfbGVuIC0gb2Zmc2V0KSB7CiAJCQlkZXZfZXJyKG1kZXYtJmd0O2RldiwgJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxuJiMzNDspOwogCQkJcmV0ID0gLUVJTlZBTDsKIAkJCWdvdG8gb3V0OwpAQCAtODUyLDExICYjNDM7ODYxLDE5IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpCiAJaWYgKCFjbGNfYmFzZSkKIAkJZ290byBvdXQ7CiAKLQlmb3IgKG9mZnNldCA9IDA7IG9mZnNldCAmbHQ7IGxlbjsgb2Zmc2V0ICYjNDM7PSBsZTMyX3RvX2NwdShjbGMtJmd0O2xlbikpIHsKLQkJY2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7CiYjNDM7CWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0ICZsdDsgbGVuOyBvZmZzZXQgJiM0Mzs9IGNsY19sZW4pIHsKJiM0MzsJCWlmIChsZW4gLSBvZmZzZXQgJmx0OyBzaXplb2YoKmNsYykpIHsKJiM0MzsJCQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQogCi0JCWlmIChjbGMtJmd0O2lkeCAmZ3Q7PSBBUlJBWV9TSVpFKHBoeS0mZ3Q7Y2xjKSkKLQkJCWJyZWFrOwomIzQzOwkJY2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7CiYjNDM7CQljbGNfbGVuID0gbGUzMl90b19jcHUoY2xjLSZndDtsZW4pOwomIzQzOwkJaWYgKGNsY19sZW4gJmx0OyBzaXplb2YoKmNsYykgfHwgY2xjX2xlbiAmZ3Q7IGxlbiAtIG9mZnNldCB8fAomIzQzOwkJICAgIGNsYy0mZ3Q7aWR4ICZndDs9IEFSUkFZX1NJWkUocGh5LSZndDtjbGMpKSB7CiYjNDM7CQkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KIAogCQkvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi8KIAkJaWYgKHBoeS0mZ3Q7Y2xjW2NsYy0mZ3Q7aWR4XSkKQEAgLTg2OSw4ICYjNDM7ODg2LDcgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKIAkJCWNvbnRpbnVlOwogCiAJCXBoeS0mZ3Q7Y2xjW2NsYy0mZ3Q7aWR4XSA9IGRldm1fa21lbWR1cChtZGV2LSZndDtkZXYsIGNsYywKLQkJCQkJCSAgbGUzMl90b19jcHUoY2xjLSZndDtsZW4pLAotCQkJCQkJICBHRlBfS0VSTkVMKTsKJiM0MzsJCQkJCQkgIGNsY19sZW4sIEdGUF9LRVJORUwpOwogCiAJCWlmICghcGh5LSZndDtjbGNbY2xjLSZndDtpZHhdKSB7CiAJCQlyZXQgPSAtRU5PTUVNOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODM3CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3OTI1IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHR3ZWFraW5nIGBtdDc5MjVfbG9hZF9jbGNgIGluIHRoZSBNZWRpYXRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY2AuIFNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIHRvIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MuIFRoYXQmIzM5O3MgZ29vZCBzZWN1cml0eSBwcmFjdGljZSwgZ2VuZXJhbGx5IHNwZWFraW5nLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHRoaXMgYmUgZnV6emVkPyYjMzQ7IFdpcmVsZXNzIGRyaXZlcnMgYXJlIGFsd2F5cyBhIGp1aWN5IHRhcmdldC4gVGhlIHN0YW5kYXJkIHJvdXRlIGZvciBmdXp6aW5nIHNpbXVsYXRlZCBoYXJkd2FyZSwgbGlrZSB0aHJvdWdoIGBtYWM4MDIxMV9od3NpbWAsIGlzIHVzZWZ1bCwgYnV0IHRoaXMgaXMgYSAqcmVhbCogaGFyZHdhcmUgZHJpdmVyLiBJZiB0aGlzIHdlcmUgYSBVU0IgZGV2aWNlLCBhIGRyaXZlciBsaWtlIGBtdDc5MjV1YCwgd2UgbWlnaHQgYmUgYWJsZSB0byBmdXp6IGl0IGRpcmVjdGx5LgoKU28sIHRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSYjMzk7cyBhIFVTQiB2YXJpYW50IG9mIHRoaXMgZHJpdmVyLiBUaGF0IHdpbGwgZGlyZWN0bHkgZGljdGF0ZSBteSBmdXp6aW5nIHN0cmF0ZWd5LiBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhIFVTQiBkcml2ZXIgYXZhaWxhYmxlIGZvciB0aGlzIE1UNzkyNSBjaGlwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNS4qdXNiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlPTk9bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjEwOm10NzkyNXUteSA6PSB1c2Iub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE0MDA9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MDE6bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MDItXHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MTM6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxNC1cdFx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MzktXHRwa3RpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHdjaWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDQwOlx0bXQ3OTI1X3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1My19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDU0OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ1Njp2b2lkIG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1Ny1cdFx0XHRcdCAgICAgc3RydWN0IG10NzZfcXVldWVfZW50cnkgKmUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ3NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDc1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0Nzc6Ym9vbCBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ3OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ4Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDg3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDg4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM2MD1pbnQgbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNjI6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzYzLVx0XHRcdFx0ICAgZW51bSBtdDc2X3R4cV9pZCBxaWQsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzY1LVx0XHRcdFx0ICAgc3RydWN0IG10NzZfdHhfaW5mbyAqdHhfaW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNjY6dm9pZCBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM2Ny1cdFx0XHRcdCAgICAgc3RydWN0IG10NzZfcXVldWVfZW50cnkgKmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzY4OmJvb2wgbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9ODA9c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE0MzpzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTQ0LVx0XHRcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTUyLVx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTM6XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1NDpcdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTU6XHRcdC50eF9zdGF0dXNfZGF0YSA9IG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1Ni1cdFx0LnJ4X3NrYiA9IG10NzkyNV9xdWV1ZV9yeF9za2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjYyLSNpZmRlZiBDT05GSUdfUE1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI2MzpzdGF0aWMgaW50IG10NzkyNXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoyOTU6c3RhdGljIGludCBtdDc5MjV1X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI5Ni17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUxMAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNVDc5MjUgVVNCIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgTVQ3OTI1IGhhcyBhIFVTQiBkcml2ZXIsIGBtdDc5MjV1YCwgbWVhbmluZyB3ZSBjYW4gcG90ZW50aWFsbHkgZXhwbG9pdCBpdCB0aHJvdWdoIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYCBzaG91bGQgd29yay4gVGhlIHBhdGNoIHRhcmdldHMgYG10NzkyNV9sb2FkX2NsY2AsIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gRXhjZWxsZW50LiBOb3csIGlmIHRoZSBkcml2ZXIgcmVxdWVzdHMgZmlybXdhcmUgYW5kIHN5emthbGxlciBpcyBzZXQgdXAgdG8gcHJvdmlkZSBpdCB0aHJvdWdoIGl0cyBmaXJtd2FyZSBsb2FkaW5nIG1lY2hhbmlzbSwgd2UmIzM5O3ZlIGdvdCBhIGZ1enppbmcgZW50cnkgcG9pbnQuIFdhaXQgYSBzZWNvbmQuLi5zeXprYWxsZXIgY2FuIHByb3ZpZGUgKmFyYml0cmFyeSogZmlybXdhcmUgZmlsZXMhIFRoaXMgaXMgcHJvbWlzaW5nLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9ucyB3aGVyZSBgbXQ3OTI1X2xvYWRfY2xjYCBpcyBpbnZva2VkLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NTA9c3RhdGljIGludCBtdDc5MjVfbWN1X3JlYWRfZWVwcm9tKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4ICp2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6Nzk4OnN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03OTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTExMzA9aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTE0MjpcdGVyciA9IG10NzkyNV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExNDMtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNDIKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkludmVzdGlnYXRpbmcgdGhlIEZpcm13YXJlIExvYWQgU2VxdWVuY2UqKgoKUmlnaHQsIHNvIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkga25vdyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGZpcm13YXJlIGV4ZWN1dGlvbiBmb3IgdGhpcyBNVDc5MjUgZHJpdmVyIGdldHMgZ29pbmcuIEFuZCwgYXMgdGhlIGxvZyBpbmRpY2F0ZXMsIGl0IGNhbGxzIGBtdDc5MjVfbG9hZF9jbGNgLCB3aGljaCBpcyBsaWtlbHkgYSBjcnVjaWFsIHN0ZXAgaW4gcHJlcGFyaW5nIHRoZSBoYXJkd2FyZSBmb3IgdGhlIGZpcm13YXJlJiMzOTtzIG9wZXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyB0byBmdWxseSBncmFzcCBob3cgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiB3b3Jrcy4KClRoZXJlZm9yZSwgbXkgbmV4dCBtb3ZlIGlzIGNsZWFyLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCB0byB1bmRlcnN0YW5kIGl0cyBjYWxsaW5nIGNvbnRleHQuIEtub3dpbmcgd2hhdCYjMzk7cyB0cmlnZ2VyaW5nIGl0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLCBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJIG5lZWQgdG8gc2VlICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIHRvIGZpZ3VyZSBvdXQgaXRzIHJvbGUgaW4gdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzZWUgaWYgSSBjYW4gZmluZCB0aGF0IGNhbGwgcGF0aCBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9ydW5fZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9MTEyOD1FWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3NldF90aGVybWFsX3Byb3RlY3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTEyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjExMzA6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExMzEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExNDgtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTE0OTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcnVuX2Zpcm13YXJlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExNTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MjcxPXZvaWQgbXQ3OTI1X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MjcyOmludCBtdDc5MjVfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMjczLWludCBtdDc5MjVfbWN1X3NldF9ic3NfcG0oc3RydWN0IG10NzkyeF9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmM9NzE9aW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jLTEzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYzoxMzY6XHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMtMTM3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmM9Mjc9aW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmM6NDg6XHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtNDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9NTY9c3RhdGljIGludCBtdDc5MjV1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNjktXHRtdDc2X3NldChkZXYsIE1UX1VETUFfVFhfUVNFTCwgTVRfRldfRExfRU4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6NzA6XHRyZXQgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy03MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9ODA9c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTExMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjExNDpcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTExNS1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcwMAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldDogbXQ3OTI1X3J1bl9maXJtd2FyZSoqCgpPa2F5LCBzbyBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgY2FsbGVkIGZyb20gdHdvIGtleSBsb2NhdGlvbnMgaW4gdGhlIFVTQiBkcml2ZXIsIHNwZWNpZmljYWxseSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IChgbXQ3OTI1dV9tY3VfaW5pdGAgYW5kIGBtdDc5MjV1X21hY19yZXNldGApLiBJbnRlcmVzdGluZy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBVU0IgaW50ZXJmYWNlLiBBbmQgc2luY2Ugc3l6a2FsbGVyIGlzIHF1aXRlIGFkZXB0IGF0IGVtdWxhdGluZyBVU0IgZGV2aWNlcywgdGhhdCBtZWFucyB3ZSBoYXZlIGEgY2xlYXIgcGF0aCB0byBmdXp6IHRoaXMgY29kZS4gVGhlIGltcGxpY2F0aW9ucyBhcmUgY2xlYXIgdG8gbWUsIHZ1bG5lcmFiaWxpdGllcyBoZXJlIGNvdWxkIGJlIHF1aXRlIGRhbWFnaW5nLgoKVGhlIHBhdGNoIGl0c2VsZiBmb2N1c2VzIG9uIGJvdW5kcyBjaGVja2luZzogc3BlY2lmaWNhbGx5IG9uIGBoZHItJmd0O25fcmVnaW9uYCBhbmQgYGNsYy0mZ3Q7bGVuYCBkdXJpbmcgZmlybXdhcmUgbG9hZGluZy4gVGhhdCBzY3JlYW1zIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSB2dWxuZXJhYmlsaXRpZXMsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBwcmltZSBmdXp6aW5nIG1hdGVyaWFsLiBXZSBuZWVkIHRvIGZvY3VzIG91ciBlZmZvcnRzIGhlcmUuCgpNeSBuZXh0IGltbWVkaWF0ZSB0YXNrIGlzIHRvIGlkZW50aWZ5IHRoZSBuZWNlc3Nhcnkga2VybmVsIENPTkZJRyBvcHRpb25zLiBMZXQmIzM5O3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgZW5hYmxlZCBhbmQgY29uZmlndXJlZCB0byBtYXhpbWl6ZSB0aGUgY2hhbmNlcyBvZiBzdWNjZXNzZnVsbHkgcmVhY2hpbmcgYW5kIHRlc3RpbmcgdGhpcyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDIyCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBNVDc5MjUgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYE1UNzkyNV9DT01NT05gIGFuZCBgTVQ3OTI1VWAuIFRoZSBsb2dpYyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGhlcmUuIEJlY2F1c2UgYE1UNzkyNVVgIGRlcGVuZHMgb24gYE1UNzkyNV9DT01NT05gLCB3ZSBkZWZpbml0ZWx5IG5lZWQgdG8gZW5hYmxlIGBNVDc5MjVVYC4gVGhhdCYjMzk7cyB0aGUgY29yZSBmb2N1cywgcmVhbGx5LgoKSSBzdXBwb3NlIGVuYWJsaW5nIGBNVDc5MjVFYCB3b3VsZG4mIzM5O3QgaHVydCBlaXRoZXIsIGp1c3QgdG8gY292ZXIgYWxsIGJhc2VzLCBidXQgYE1UNzkyNVVgIGlzIHRoZSBjcml0aWNhbCBvbmUgZm9yIFVTQiBmdXp6aW5nLCB3aGljaCBpcyB0aGUgbWFpbiBjb25jZXJuIHJpZ2h0IG5vdy4KClRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnYCB0byB2ZXJpZnkgYW55IGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3J1Y2lhbC4gVGhpcyBjb25maWcgZmlsZSBzaG91bGQgc3BlbGwgZXZlcnl0aGluZyBvdXQgZm9yIG1lLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDE6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzkyeF9MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFxuICAgNzpcdGNvbmZpZyBNVDc5MjVFXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4gICA5Olx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAxMDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXG4gIDE0Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAxNTpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIE1UNzkyNVVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMjI6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDI0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxuICAyNzpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMjg6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjc3CgkJCQkJCQlvdXRwdXQ6IDE0MQoJCQkJCQkJdGhvdWdodHM6IDEwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiB0aGUgTVQ3OTI1VSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBgTVQ3OTI1VWAgY29uZmlndXJhdGlvbiBpcyB0aGUgY2VudHJhbCBwaWVjZSBoZXJlLCB0aGF0JiMzOTtzIHdoZXJlIHdlIG5lZWQgdG8gc3RhcnQuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGljaCBmdW5jdGlvbnMgd2l0aGluIHRoZSBwYXRjaCBhcmUgbW9zdCBjcml0aWNhbC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBtb2RpZmljYXRpb24gaXMgd2l0aGluIGBtdDc5MjVfbG9hZF9jbGNgLCBzbyB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSBwcmltYXJ5IGFyZWEgb2YgZm9jdXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCB0aGF0IGZ1bmN0aW9uIGRvZXMgbm93LCBhbmQgd2hhdCB0aGUgY2hhbmdlIGFjY29tcGxpc2hlcy4gQmVzaWRlcyBgbXQ3OTI1X2xvYWRfY2xjYCwgSSYjMzk7bGwgd2FudCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhcyB3ZWxsLCBzaW5jZSB0aGF0JiMzOTtzIGxpa2VseSByZWxhdGVkLiBNaWdodCBiZSBiZW5lZmljaWFsIHRvIGFsc28gaW5jbHVkZSBgbXQ3OTI1dV9tY3VfaW5pdGAgYW5kIGBtdDc5MjV1X21hY19yZXNldGAgaW4gdGhlIHJldmlldy4gSXQmIzM5O3MgcG9zc2libGUgdGhhdCB0aGlzIGNoYW5nZSBoYXMgaW1wbGljYXRpb25zIGZvciBpbml0aWFsaXphdGlvbiBvciByZXNldCBwcm9jZWR1cmVzLCBzbyBhIHF1aWNrIGxvb2sgd291bGRuJiMzOTt0IGh1cnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01UNzkyNUUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfbG9hZF9jbGMmIzM0OywKICAgICYjMzQ7bXQ3OTI1X3J1bl9maXJtd2FyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBmaXJtd2FyZSBsb2FkaW5nIGluIHRoZSBNZWRpYXRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBoYXMgYSBVU0IgaW50ZXJmYWNlIChtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgY2FuIGJlIGZ1enplZCBieSBwcm92aWRpbmcgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzIHZpYSB0aGUgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1RSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9sb2FkX2NsYyYjMzQ7LAogICAgJiMzNDttdDc5MjVfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGZpcm13YXJlIGxvYWRpbmcgaW4gdGhlIE1lZGlhdGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIGhhcyBhIFVTQiBpbnRlcmZhY2UgKG10NzkyNXUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gVGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2VzcyBjYW4gYmUgZnV6emVkIGJ5IHByb3ZpZGluZyBtYWxmb3JtZWQgZmlybXdhcmUgZmlsZXMgdmlhIHRoZSBmaXJtd2FyZSBsb2FkaW5nIG1lY2hhbmlzbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjA5Ljg5MDY5OTg1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1OTE4NjE2MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbG9hZF9jbGNcIixcbiAgICBcIm10NzkyNV9ydW5fZmlybXdhcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBmaXJtd2FyZSBsb2FkaW5nIGluIHRoZSBNZWRpYXRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBoYXMgYSBVU0IgaW50ZXJmYWNlIChtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgY2FuIGJlIGZ1enplZCBieSBwcm92aWRpbmcgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzIHZpYSB0aGUgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjA5Ljg5MDcwNzEwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg2Njg5MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDUyMjQzNzc1YmE2OWU1NWI5ZGUxMWUxNDNiNTEzZmY0NjQ0ZTdjM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAwMTo1ODowOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuaW5kZXggZTk0ZmE1NDRmZjIwNzcuLjc2ZTMwYmY0Y2UwZmE1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG5AQCAtODAzLDggKzgwMyw5IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXFxuIFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IFxcdTAwMjZkZXYtXFx1MDAzZW10NzY7XFxuIFxcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBcXHUwMDI2ZGV2LVxcdTAwM2VwaHk7XFxuIFxcdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7XFxuK1xcdHNpemVfdCBjbGNfbGVuLCBmd19kYXRhX2xlbiwgbGVuLCBvZmZzZXQgPSAwO1xcbiBcXHR1OCAqY2xjX2Jhc2UgPSBOVUxMLCBod19lbmNhcCA9IDA7XFxuLVxcdGludCByZXQsIGksIGxlbiwgb2Zmc2V0ID0gMDtcXG4rXFx0aW50IHJldCwgaTtcXG4gXFxuIFxcdGRldi1cXHUwMDNlcGh5LmNsY19jaGFuX2NvbmYgPSAweGZmO1xcbiBcXHRkZXYtXFx1MDAzZXJlZ2RfdXNlciA9IGZhbHNlO1xcbkBAIC04MjksMTMgKzgzMCwyMSBAQCBzdGF0aWMgaW50IG10NzkyNV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxcbiBcXHR9XFxuIFxcbiBcXHRoZHIgPSAoY29uc3Qgdm9pZCAqKShmdy1cXHUwMDNlZGF0YSArIGZ3LVxcdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKTtcXG4rXFx0aWYgKGhkci1cXHUwMDNlbl9yZWdpb24gXFx1MDAzZSAoZnctXFx1MDAzZXNpemUgLSBzaXplb2YoKmhkcikpIC8gc2l6ZW9mKCpyZWdpb24pKSB7XFxuK1xcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBmaXJtd2FyZSByZWdpb24gdGFibGVcXFxcblxcXCIpO1xcbitcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitcXHRmd19kYXRhX2xlbiA9IGZ3LVxcdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpIC1cXG4rXFx0XFx0ICAgICAgaGRyLVxcdTAwM2VuX3JlZ2lvbiAqIHNpemVvZigqcmVnaW9uKTtcXG4rXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBoZHItXFx1MDAzZW5fcmVnaW9uOyBpKyspIHtcXG4gXFx0XFx0cmVnaW9uID0gKGNvbnN0IHZvaWQgKikoKGNvbnN0IHU4ICopaGRyIC1cXG4gXFx0XFx0XFx0XFx0XFx0KGhkci1cXHUwMDNlbl9yZWdpb24gLSBpKSAqIHNpemVvZigqcmVnaW9uKSk7XFxuIFxcdFxcdGxlbiA9IGxlMzJfdG9fY3B1KHJlZ2lvbi1cXHUwMDNlbGVuKTtcXG4gXFxuIFxcdFxcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cXG4tXFx0XFx0aWYgKG9mZnNldCArIGxlbiBcXHUwMDNlIGZ3LVxcdTAwM2VzaXplKSB7XFxuK1xcdFxcdGlmIChsZW4gXFx1MDAzZSBmd19kYXRhX2xlbiAtIG9mZnNldCkge1xcbiBcXHRcXHRcXHRkZXZfZXJyKG1kZXYtXFx1MDAzZWRldiwgXFxcIkludmFsaWQgZmlybXdhcmUgcmVnaW9uXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gXFx0XFx0XFx0Z290byBvdXQ7XFxuQEAgLTg1MiwxMSArODYxLDE5IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXFxuIFxcdGlmICghY2xjX2Jhc2UpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4tXFx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXFx1MDAzYyBsZW47IG9mZnNldCArPSBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbikpIHtcXG4tXFx0XFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICsgb2Zmc2V0KTtcXG4rXFx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXFx1MDAzYyBsZW47IG9mZnNldCArPSBjbGNfbGVuKSB7XFxuK1xcdFxcdGlmIChsZW4gLSBvZmZzZXQgXFx1MDAzYyBzaXplb2YoKmNsYykpIHtcXG4rXFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4gXFxuLVxcdFxcdGlmIChjbGMtXFx1MDAzZWlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cXHUwMDNlY2xjKSlcXG4tXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTI1X2NsYyAqKShjbGNfYmFzZSArIG9mZnNldCk7XFxuK1xcdFxcdGNsY19sZW4gPSBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbik7XFxuK1xcdFxcdGlmIChjbGNfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXFx1MDAzZSBsZW4gLSBvZmZzZXQgfHxcXG4rXFx0XFx0ICAgIGNsYy1cXHUwMDNlaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUocGh5LVxcdTAwM2VjbGMpKSB7XFxuK1xcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHR9XFxuIFxcbiBcXHRcXHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cXG4gXFx0XFx0aWYgKHBoeS1cXHUwMDNlY2xjW2NsYy1cXHUwMDNlaWR4XSlcXG5AQCAtODY5LDggKzg4Niw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0cGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdID0gZGV2bV9rbWVtZHVwKG1kZXYtXFx1MDAzZWRldiwgY2xjLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgIGxlMzJfdG9fY3B1KGNsYy1cXHUwMDNlbGVuKSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBjbGNfbGVuLCBHRlBfS0VSTkVMKTtcXG4gXFxuIFxcdFxcdGlmICghcGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdKSB7XFxuIFxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjEwLjY3ODAxOTIzOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI1MTMxMjgzNjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbG9hZF9jbGNcIixcbiAgICBcIm10NzkyNV9ydW5fZmlybXdhcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBmaXJtd2FyZSBsb2FkaW5nIGluIHRoZSBNZWRpYXRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBoYXMgYSBVU0IgaW50ZXJmYWNlIChtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgY2FuIGJlIGZ1enplZCBieSBwcm92aWRpbmcgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzIHZpYSB0aGUgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDUyMjQzNzc1YmE2OWU1NWI5ZGUxMWUxNDNiNTEzZmY0NjQ0ZTdjM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDAxOjU4OjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuaW5kZXggZTk0ZmE1NDRmZjIwNzcuLjc2ZTMwYmY0Y2UwZmE1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5AQCAtODAzLDggKzgwMyw5IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXG4gXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBcdTAwMjZkZXYtXHUwMDNlbXQ3NjtcbiBcdHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkgPSBcdTAwMjZkZXYtXHUwMDNlcGh5O1xuIFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdztcbitcdHNpemVfdCBjbGNfbGVuLCBmd19kYXRhX2xlbiwgbGVuLCBvZmZzZXQgPSAwO1xuIFx0dTggKmNsY19iYXNlID0gTlVMTCwgaHdfZW5jYXAgPSAwO1xuLVx0aW50IHJldCwgaSwgbGVuLCBvZmZzZXQgPSAwO1xuK1x0aW50IHJldCwgaTtcbiBcbiBcdGRldi1cdTAwM2VwaHkuY2xjX2NoYW5fY29uZiA9IDB4ZmY7XG4gXHRkZXYtXHUwMDNlcmVnZF91c2VyID0gZmFsc2U7XG5AQCAtODI5LDEzICs4MzAsMjEgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcdH1cbiBcbiBcdGhkciA9IChjb25zdCB2b2lkICopKGZ3LVx1MDAzZWRhdGEgKyBmdy1cdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKTtcbitcdGlmIChoZHItXHUwMDNlbl9yZWdpb24gXHUwMDNlIChmdy1cdTAwM2VzaXplIC0gc2l6ZW9mKCpoZHIpKSAvIHNpemVvZigqcmVnaW9uKSkge1xuK1x0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcIkludmFsaWQgZmlybXdhcmUgcmVnaW9uIHRhYmxlXFxuXCIpO1xuK1x0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcdGZ3X2RhdGFfbGVuID0gZnctXHUwMDNlc2l6ZSAtIHNpemVvZigqaGRyKSAtXG4rXHRcdCAgICAgIGhkci1cdTAwM2VuX3JlZ2lvbiAqIHNpemVvZigqcmVnaW9uKTtcbitcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGhkci1cdTAwM2VuX3JlZ2lvbjsgaSsrKSB7XG4gXHRcdHJlZ2lvbiA9IChjb25zdCB2b2lkICopKChjb25zdCB1OCAqKWhkciAtXG4gXHRcdFx0XHRcdChoZHItXHUwMDNlbl9yZWdpb24gLSBpKSAqIHNpemVvZigqcmVnaW9uKSk7XG4gXHRcdGxlbiA9IGxlMzJfdG9fY3B1KHJlZ2lvbi1cdTAwM2VsZW4pO1xuIFxuIFx0XHQvKiBjaGVjayBpZiB3ZSBoYXZlIHZhbGlkIGJ1ZmZlciBzaXplICovXG4tXHRcdGlmIChvZmZzZXQgKyBsZW4gXHUwMDNlIGZ3LVx1MDAzZXNpemUpIHtcbitcdFx0aWYgKGxlbiBcdTAwM2UgZndfZGF0YV9sZW4gLSBvZmZzZXQpIHtcbiBcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcIkludmFsaWQgZmlybXdhcmUgcmVnaW9uXFxuXCIpO1xuIFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byBvdXQ7XG5AQCAtODUyLDExICs4NjEsMTkgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcdGlmICghY2xjX2Jhc2UpXG4gXHRcdGdvdG8gb3V0O1xuIFxuLVx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXHUwMDNjIGxlbjsgb2Zmc2V0ICs9IGxlMzJfdG9fY3B1KGNsYy1cdTAwM2VsZW4pKSB7XG4tXHRcdGNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTI1X2NsYyAqKShjbGNfYmFzZSArIG9mZnNldCk7XG4rXHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcdTAwM2MgbGVuOyBvZmZzZXQgKz0gY2xjX2xlbikge1xuK1x0XHRpZiAobGVuIC0gb2Zmc2V0IFx1MDAzYyBzaXplb2YoKmNsYykpIHtcbitcdFx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4gXG4tXHRcdGlmIChjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKSlcbi1cdFx0XHRicmVhaztcbitcdFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfY2xjICopKGNsY19iYXNlICsgb2Zmc2V0KTtcbitcdFx0Y2xjX2xlbiA9IGxlMzJfdG9fY3B1KGNsYy1cdTAwM2VsZW4pO1xuK1x0XHRpZiAoY2xjX2xlbiBcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXHUwMDNlIGxlbiAtIG9mZnNldCB8fFxuK1x0XHQgICAgY2xjLVx1MDAzZWlkeCBcdTAwM2U9IEFSUkFZX1NJWkUocGh5LVx1MDAzZWNsYykpIHtcbitcdFx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4gXG4gXHRcdC8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqL1xuIFx0XHRpZiAocGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSlcbkBAIC04NjksOCArODg2LDcgQEAgc3RhdGljIGludCBtdDc5MjVfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0cGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSA9IGRldm1fa21lbWR1cChtZGV2LVx1MDAzZWRldiwgY2xjLFxuLVx0XHRcdFx0XHRcdCAgbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbiksXG4tXHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMKTtcbitcdFx0XHRcdFx0XHQgIGNsY19sZW4sIEdGUF9LRVJORUwpO1xuIFxuIFx0XHRpZiAoIXBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pIHtcbiBcdFx0XHRyZXQgPSAtRU5PTUVNO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDE6NTg6MTAuNjc4MDIwNzc5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc2ODUyNTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzkyNSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyB0d2Vha2luZyBgbXQ3OTI1X2xvYWRfY2xjYCBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNgLiBTZWVtcyBsaWtlIHRoZXkncmUgYWRkaW5nIHNvbWUgYm91bmRzIGNoZWNraW5nIGFuZCB2YWxpZGF0aW9uIHRvIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MuIFRoYXQncyBnb29kIHNlY3VyaXR5IHByYWN0aWNlLCBnZW5lcmFsbHkgc3BlYWtpbmcuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiB0aGlzIGJlIGZ1enplZD9cIiBXaXJlbGVzcyBkcml2ZXJzIGFyZSBhbHdheXMgYSBqdWljeSB0YXJnZXQuIFRoZSBzdGFuZGFyZCByb3V0ZSBmb3IgZnV6emluZyBzaW11bGF0ZWQgaGFyZHdhcmUsIGxpa2UgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gLCBpcyB1c2VmdWwsIGJ1dCB0aGlzIGlzIGEgKnJlYWwqIGhhcmR3YXJlIGRyaXZlci4gSWYgdGhpcyB3ZXJlIGEgVVNCIGRldmljZSwgYSBkcml2ZXIgbGlrZSBgbXQ3OTI1dWAsIHdlIG1pZ2h0IGJlIGFibGUgdG8gZnV6eiBpdCBkaXJlY3RseS5cblxuU28sIHRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSdzIGEgVVNCIHZhcmlhbnQgb2YgdGhpcyBkcml2ZXIuIFRoYXQgd2lsbCBkaXJlY3RseSBkaWN0YXRlIG15IGZ1enppbmcgc3RyYXRlZ3kuIEkgbmVlZCB0byBrbm93IGlmIHRoZXJlJ3MgYSBVU0IgZHJpdmVyIGF2YWlsYWJsZSBmb3IgdGhpcyBNVDc5MjUgY2hpcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgzNywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjE1LjQ0NjU1MDAyOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjg0NjIxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1Lip1c2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlPTk9bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZToxMDptdDc5MjV1LXkgOj0gdXNiLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTE0MDA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDAxOm10NzkyNV91c2Jfc2Rpb193cml0ZV90eHdpKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQwMi1cXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQxMzppbnQgbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxNC1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MzktXFx0cGt0aWQgPSBtdDc2X3R4X3N0YXR1c19za2JfYWRkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIHdjaWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ0MDpcXHRtdDc5MjVfdXNiX3NkaW9fd3JpdGVfdHh3aShkZXYsIHdjaWQsIHFpZCwgc3RhLCBrZXksIHBrdGlkLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDUzLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDU0OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDU2OnZvaWQgbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1Ny1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtdDc2X3F1ZXVlX2VudHJ5ICplKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ3NC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ3NTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0Nzc6Ym9vbCBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0Nzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ4Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ4NzpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0ODgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNjA9aW50IG10NzkyNV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNjI6aW50IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM2My1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM2NS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbXQ3Nl90eF9pbmZvICp0eF9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNjY6dm9pZCBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNjctXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzY4OmJvb2wgbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzY5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9ODA9c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE0MzpzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE0NC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTUyLVxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1MzpcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTU0OlxcdFxcdC50eF9jb21wbGV0ZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1NTpcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU2LVxcdFxcdC5yeF9za2IgPSBtdDc5MjVfcXVldWVfcnhfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjYyLSNpZmRlZiBDT05GSUdfUE1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoyNjM6c3RhdGljIGludCBtdDc5MjV1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI5NTpzdGF0aWMgaW50IG10NzkyNXVfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI5Ni17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjE1LjU3NTAxNjY5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDAyMDk5MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTVQ3OTI1IFVTQiBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgTVQ3OTI1IGhhcyBhIFVTQiBkcml2ZXIsIGBtdDc5MjV1YCwgbWVhbmluZyB3ZSBjYW4gcG90ZW50aWFsbHkgZXhwbG9pdCBpdCB0aHJvdWdoIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYCBzaG91bGQgd29yay4gVGhlIHBhdGNoIHRhcmdldHMgYG10NzkyNV9sb2FkX2NsY2AsIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gRXhjZWxsZW50LiBOb3csIGlmIHRoZSBkcml2ZXIgcmVxdWVzdHMgZmlybXdhcmUgYW5kIHN5emthbGxlciBpcyBzZXQgdXAgdG8gcHJvdmlkZSBpdCB0aHJvdWdoIGl0cyBmaXJtd2FyZSBsb2FkaW5nIG1lY2hhbmlzbSwgd2UndmUgZ290IGEgZnV6emluZyBlbnRyeSBwb2ludC4gV2FpdCBhIHNlY29uZC4uLnN5emthbGxlciBjYW4gcHJvdmlkZSAqYXJiaXRyYXJ5KiBmaXJtd2FyZSBmaWxlcyEgVGhpcyBpcyBwcm9taXNpbmcuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBwaW5wb2ludCB0aGUgZXhhY3QgbG9jYXRpb25zIHdoZXJlIGBtdDc5MjVfbG9hZF9jbGNgIGlzIGludm9rZWQuIExldCdzIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUxMCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMTo1ODoxOS4zNzUyMjg5OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMwNDEwOTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X2xvYWRfY2xjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NTA9c3RhdGljIGludCBtdDc5MjVfbWN1X3JlYWRfZWVwcm9tKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6Nzk4OnN0YXRpYyBpbnQgbXQ3OTI1X2xvYWRfY2xjKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGNvbnN0IGNoYXIgKmZ3X25hbWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTExMzA9aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTE0MjpcXHRlcnIgPSBtdDc5MjVfbG9hZF9jbGMoZGV2LCBtdDc5MnhfcmFtX25hbWUoZGV2KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTE0My1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMTo1ODoxOS40NzgyNzcyMTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzYyNzc4NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRmlybXdhcmUgTG9hZCBTZXF1ZW5jZSoqXG5cblJpZ2h0LCBzbyBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIGtub3cgdGhhdCdzIHdoZXJlIHRoZSBjb3JlIGZpcm13YXJlIGV4ZWN1dGlvbiBmb3IgdGhpcyBNVDc5MjUgZHJpdmVyIGdldHMgZ29pbmcuIEFuZCwgYXMgdGhlIGxvZyBpbmRpY2F0ZXMsIGl0IGNhbGxzIGBtdDc5MjVfbG9hZF9jbGNgLCB3aGljaCBpcyBsaWtlbHkgYSBjcnVjaWFsIHN0ZXAgaW4gcHJlcGFyaW5nIHRoZSBoYXJkd2FyZSBmb3IgdGhlIGZpcm13YXJlJ3Mgb3BlcmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zIHRvIGZ1bGx5IGdyYXNwIGhvdyB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIHdvcmtzLlxuXG5UaGVyZWZvcmUsIG15IG5leHQgbW92ZSBpcyBjbGVhci4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgbXQ3OTI1X3J1bl9maXJtd2FyZWAgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbGluZyBjb250ZXh0LiBLbm93aW5nIHdoYXQncyB0cmlnZ2VyaW5nIGl0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLCBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJIG5lZWQgdG8gc2VlICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIHRvIGZpZ3VyZSBvdXQgaXRzIHJvbGUgaW4gdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBkcml2ZXIuIExldCdzIHNlZSBpZiBJIGNhbiBmaW5kIHRoYXQgY2FsbCBwYXRoIHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNDIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMTo1ODoyMi44NDEwNTg0NzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3OTk0NTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV9ydW5fZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTExMjg9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21jdV9zZXRfdGhlcm1hbF9wcm90ZWN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjExMzA6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExNDgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjExNDk6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3J1bl9maXJtd2FyZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTE1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTI3MT12b2lkIG10NzkyNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDoyNzI6aW50IG10NzkyNV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMjczLWludCBtdDc5MjVfbWN1X3NldF9ic3NfcG0oc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYz03MT1pbnQgbXQ3OTI1ZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYy0xMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jOjEzNjpcXHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jLTEzNy1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jPTI3PWludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jOjQ4OlxcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz01Nj1zdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTY5LVxcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6NzA6XFx0cmV0ID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTcxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz04MD1zdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTE0OlxcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xMTUtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDE6NTg6MjIuOTY5MDU4NDk2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1MjA2NDY4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldDogbXQ3OTI1X3J1bl9maXJtd2FyZSoqXG5cbk9rYXksIHNvIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBpcyBjYWxsZWQgZnJvbSB0d28ga2V5IGxvY2F0aW9ucyBpbiB0aGUgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgcmVzZXQgKGBtdDc5MjV1X21jdV9pbml0YCBhbmQgYG10NzkyNXVfbWFjX3Jlc2V0YCkuIEludGVyZXN0aW5nLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIFVTQiBpbnRlcmZhY2UuIEFuZCBzaW5jZSBzeXprYWxsZXIgaXMgcXVpdGUgYWRlcHQgYXQgZW11bGF0aW5nIFVTQiBkZXZpY2VzLCB0aGF0IG1lYW5zIHdlIGhhdmUgYSBjbGVhciBwYXRoIHRvIGZ1enogdGhpcyBjb2RlLiBUaGUgaW1wbGljYXRpb25zIGFyZSBjbGVhciB0byBtZSwgdnVsbmVyYWJpbGl0aWVzIGhlcmUgY291bGQgYmUgcXVpdGUgZGFtYWdpbmcuXG5cblRoZSBwYXRjaCBpdHNlbGYgZm9jdXNlcyBvbiBib3VuZHMgY2hlY2tpbmc6IHNwZWNpZmljYWxseSBvbiBgaGRyLVx1MDAzZW5fcmVnaW9uYCBhbmQgYGNsYy1cdTAwM2VsZW5gIGR1cmluZyBmaXJtd2FyZSBsb2FkaW5nLiBUaGF0IHNjcmVhbXMgb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIHZ1bG5lcmFiaWxpdGllcywgc28gdGhpcyBpcyBkZWZpbml0ZWx5IHByaW1lIGZ1enppbmcgbWF0ZXJpYWwuIFdlIG5lZWQgdG8gZm9jdXMgb3VyIGVmZm9ydHMgaGVyZS5cblxuTXkgbmV4dCBpbW1lZGlhdGUgdGFzayBpcyB0byBpZGVudGlmeSB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBDT05GSUcgb3B0aW9ucy4gTGV0J3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgZW5hYmxlZCBhbmQgY29uZmlndXJlZCB0byBtYXhpbWl6ZSB0aGUgY2hhbmNlcyBvZiBzdWNjZXNzZnVsbHkgcmVhY2hpbmcgYW5kIHRlc3RpbmcgdGhpcyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzAwLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjI3LjEyMTEyNzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNTExNDg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5MjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjI3LjIwMzY0NTkxNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDYwMDk1NDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBNVDc5MjUgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBNVDc5MjVfQ09NTU9OYCBhbmQgYE1UNzkyNVVgLiBUaGUgbG9naWMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBoZXJlLiBCZWNhdXNlIGBNVDc5MjVVYCBkZXBlbmRzIG9uIGBNVDc5MjVfQ09NTU9OYCwgd2UgZGVmaW5pdGVseSBuZWVkIHRvIGVuYWJsZSBgTVQ3OTI1VWAuIFRoYXQncyB0aGUgY29yZSBmb2N1cywgcmVhbGx5LlxuXG5JIHN1cHBvc2UgZW5hYmxpbmcgYE1UNzkyNUVgIHdvdWxkbid0IGh1cnQgZWl0aGVyLCBqdXN0IHRvIGNvdmVyIGFsbCBiYXNlcywgYnV0IGBNVDc5MjVVYCBpcyB0aGUgY3JpdGljYWwgb25lIGZvciBVU0IgZnV6emluZywgd2hpY2ggaXMgdGhlIG1haW4gY29uY2VybiByaWdodCBub3cuXG5cblRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnYCB0byB2ZXJpZnkgYW55IGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsLiBUaGlzIGNvbmZpZyBmaWxlIHNob3VsZCBzcGVsbCBldmVyeXRoaW5nIG91dCBmb3IgbWUuIExldCdzIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQyMiwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMTo1ODozMS4yNjM3NDQzMzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3OTI1X0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc5MnhfTElCXFxuICAgNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gICA2OlxcdFxcbiAgIDc6XFx0Y29uZmlnIE1UNzkyNUVcXG4gICA4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDE1OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBNVDc5MjVVXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxcbiAgMjc6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDI4OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAxOjU4OjMxLjI2Mzg0NzY1NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzk0NjUyNzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIHRoZSBNVDc5MjVVIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYE1UNzkyNVVgIGNvbmZpZ3VyYXRpb24gaXMgdGhlIGNlbnRyYWwgcGllY2UgaGVyZSwgdGhhdCdzIHdoZXJlIHdlIG5lZWQgdG8gc3RhcnQuIExldCdzIGRpZyBpbiBhbmQgZmlndXJlIG91dCBleGFjdGx5IHdoaWNoIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIHBhdGNoIGFyZSBtb3N0IGNyaXRpY2FsLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG1vZGlmaWNhdGlvbiBpcyB3aXRoaW4gYG10NzkyNV9sb2FkX2NsY2AsIHNvIHRoYXQncyBkZWZpbml0ZWx5IGEgcHJpbWFyeSBhcmVhIG9mIGZvY3VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgdGhhdCBmdW5jdGlvbiBkb2VzIG5vdywgYW5kIHdoYXQgdGhlIGNoYW5nZSBhY2NvbXBsaXNoZXMuIEJlc2lkZXMgYG10NzkyNV9sb2FkX2NsY2AsIEknbGwgd2FudCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGBtdDc5MjVfcnVuX2Zpcm13YXJlYCBhcyB3ZWxsLCBzaW5jZSB0aGF0J3MgbGlrZWx5IHJlbGF0ZWQuIE1pZ2h0IGJlIGJlbmVmaWNpYWwgdG8gYWxzbyBpbmNsdWRlIGBtdDc5MjV1X21jdV9pbml0YCBhbmQgYG10NzkyNXVfbWFjX3Jlc2V0YCBpbiB0aGUgcmV2aWV3LiBJdCdzIHBvc3NpYmxlIHRoYXQgdGhpcyBjaGFuZ2UgaGFzIGltcGxpY2F0aW9ucyBmb3IgaW5pdGlhbGl6YXRpb24gb3IgcmVzZXQgcHJvY2VkdXJlcywgc28gYSBxdWljayBsb29rIHdvdWxkbid0IGh1cnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzcsIk91dHB1dFRva2VucyI6MTQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDE6NTg6MzUuNjU4NTA0MTIzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwNzkyODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNVDc5MjVFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X2xvYWRfY2xjXCIsXG4gICAgXCJtdDc5MjVfcnVuX2Zpcm13YXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gZmlybXdhcmUgbG9hZGluZyBpbiB0aGUgTWVkaWF0ZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgaGFzIGEgVVNCIGludGVyZmFjZSAobXQ3OTI1dSkgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrLiBUaGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIGNhbiBiZSBmdXp6ZWQgYnkgcHJvdmlkaW5nIG1hbGZvcm1lZCBmaXJtd2FyZSBmaWxlcyB2aWEgdGhlIGZpcm13YXJlIGxvYWRpbmcgbWVjaGFuaXNtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1UNzkyNUVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfbG9hZF9jbGNcIixcbiAgICBcIm10NzkyNV9ydW5fZmlybXdhcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBmaXJtd2FyZSBsb2FkaW5nIGluIHRoZSBNZWRpYXRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBoYXMgYSBVU0IgaW50ZXJmYWNlIChtdDc5MjV1KSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIGdhZGdldCBmcmFtZXdvcmsuIFRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgY2FuIGJlIGZ1enplZCBieSBwcm92aWRpbmcgbWFsZm9ybWVkIGZpcm13YXJlIGZpbGVzIHZpYSB0aGUgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbcstk[1] Phase: Succeeded StartedAt: 2026-07-23 02:00:06 +0000 UTC FinishedAt: 2026-07-23 02:00:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-23 02:00:06 +0000 UTC FinishedAt: 2026-07-23 02:00:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2] Phase: Succeeded StartedAt: 2026-07-23 02:00:06 +0000 UTC FinishedAt: 2026-07-23 03:39:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-23 02:00:06 +0000 UTC FinishedAt: 2026-07-23 03:39:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-23 02:00:06 +0000 UTC FinishedAt: 2026-07-23 02:01:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-23 02:00:06 +0000 UTC FinishedAt: 2026-07-23 02:01:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbcstk/series-workflowbcstk-convert-artifact-2729627887/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-23 02:01:41 +0000 UTC FinishedAt: 2026-07-23 02:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-23 02:01:41 +0000 UTC FinishedAt: 2026-07-23 02:39:30 +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:*8d53eeaf-7720-4be9-8df8-0538d7369ca8,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-workflowbcstk/series-workflowbcstk-convert-artifact-2729627887/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": "52f210c2-b5d3-463c-8b3e-3e29a359a635", "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-workflowbcstk/series-workflowbcstk-build-action-447843765/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-23 02:01:41 +0000 UTC FinishedAt: 2026-07-23 02:37:52 +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:*8d53eeaf-7720-4be9-8df8-0538d7369ca8,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-workflowbcstk/series-workflowbcstk-convert-artifact-2729627887/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": "52f210c2-b5d3-463c-8b3e-3e29a359a635", "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-workflowbcstk/series-workflowbcstk-build-action-447843765/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-23 02:39:30 +0000 UTC FinishedAt: 2026-07-23 02:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-23 02:39:30 +0000 UTC FinishedAt: 2026-07-23 02:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-23 02:39:30 +0000 UTC FinishedAt: 2026-07-23 02:41:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-23 02:39:30 +0000 UTC FinishedAt: 2026-07-23 02:39:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbcstk/series-workflowbcstk-convert-artifact-4286219326/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-23 02:41:24 +0000 UTC FinishedAt: 2026-07-23 02:43:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-23 02:41:24 +0000 UTC FinishedAt: 2026-07-23 02:43:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52f210c2-b5d3-463c-8b3e-3e29a359a635,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-workflowbcstk/series-workflowbcstk-build-action-447843765/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-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-23 02:43:43 +0000 UTC FinishedAt: 2026-07-23 02:43:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-23 02:43:43 +0000 UTC FinishedAt: 2026-07-23 02:43:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-23 02:43:43 +0000 UTC FinishedAt: 2026-07-23 03:33:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-23 02:43:43 +0000 UTC FinishedAt: 2026-07-23 03:33:04 +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:*8d53eeaf-7720-4be9-8df8-0538d7369ca8,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-workflowbcstk/series-workflowbcstk-convert-artifact-4286219326/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": "a563f196-ef33-4cf0-93b4-ce58b7e0ae07", "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-workflowbcstk/series-workflowbcstk-build-action-2044018066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-23 02:43:43 +0000 UTC FinishedAt: 2026-07-23 03:32:52 +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:*8d53eeaf-7720-4be9-8df8-0538d7369ca8,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-workflowbcstk/series-workflowbcstk-convert-artifact-4286219326/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": "a563f196-ef33-4cf0-93b4-ce58b7e0ae07", "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-workflowbcstk/series-workflowbcstk-build-action-2044018066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-23 03:33:04 +0000 UTC FinishedAt: 2026-07-23 03:33:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-23 03:33:04 +0000 UTC FinishedAt: 2026-07-23 03:33:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-23 03:33:04 +0000 UTC FinishedAt: 2026-07-23 03:35:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-23 03:33:04 +0000 UTC FinishedAt: 2026-07-23 03:34:55 +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:*a563f196-ef33-4cf0-93b4-ce58b7e0ae07,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-workflowbcstk/series-workflowbcstk-build-action-2044018066/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-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-23 03:35:06 +0000 UTC FinishedAt: 2026-07-23 03:39:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-23 03:35:06 +0000 UTC FinishedAt: 2026-07-23 03:39:24 +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":["mt7925_load_clc","mt7925_run_firmware"],"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:*52f210c2-b5d3-463c-8b3e-3e29a359a635,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a563f196-ef33-4cf0-93b4-ce58b7e0ae07,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-workflowbcstk/series-workflowbcstk-build-action-447843765/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-workflowbcstk/series-workflowbcstk-build-action-2044018066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-23 03:35:06 +0000 UTC FinishedAt: 2026-07-23 03:36:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-23 03:35:06 +0000 UTC FinishedAt: 2026-07-23 03:36:41 +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":["mt7925_load_clc","mt7925_run_firmware"],"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-workflowbcstk/series-workflowbcstk-convert-artifact-3209757507/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-23 03:35:06 +0000 UTC FinishedAt: 2026-07-23 03:35:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-23 03:35:06 +0000 UTC FinishedAt: 2026-07-23 03:35:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-23 03:35:06 +0000 UTC FinishedAt: 2026-07-23 03:35:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-23 03:36:58 +0000 UTC FinishedAt: 2026-07-23 03:39:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbcstk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_load_clc","mt7925_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MT7925E"],"series_id":"bf76ede5-9575-4824-b283-989f4bdc00cf","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-23 03:36:58 +0000 UTC FinishedAt: 2026-07-23 03:39:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52f210c2-b5d3-463c-8b3e-3e29a359a635,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a563f196-ef33-4cf0-93b4-ce58b7e0ae07,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-workflowbcstk/series-workflowbcstk-build-action-447843765/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-workflowbcstk/series-workflowbcstk-build-action-2044018066/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-workflowbcstk/series-workflowbcstk-convert-artifact-3209757507/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,}