Name: series-workflow9cth6 Phase: Succeeded StartedAt: 2026-06-27 04:31:57 +0000 UTC FinishedAt: 2026-06-27 06:32:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[0] Phase: Succeeded StartedAt: 2026-06-27 04:31:57 +0000 UTC FinishedAt: 2026-06-27 04:42:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[0].run-triage Phase: Succeeded StartedAt: 2026-06-27 04:31:57 +0000 UTC FinishedAt: 2026-06-27 04:42:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5422e496b313b9b0b2f6df068902d6c79925d5e9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5422e496b313b9b0b2f6df068902d6c79925d5e9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_attr_fallocate", "ntfs_fallocate" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2F0dHJfZmFsbG9jYXRlJiMzNDssCiAgICAmIzM0O250ZnNfZmFsbG9jYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGJ5IGNhY2hpbmcgcnVubGlzdCBlbGVtZW50IGZpZWxkcyBiZWZvcmUgZHJvcHBpbmcgdGhlIHJ1bmxpc3QgbG9jay4gSXQgYWxzbyBmaXhlcyBhIGJ1ZyB3aGVyZSBgbnRmc19kaW9femVyb19yYW5nZWAgd2FzIGNhbGxlZCBpbmNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0mIzM5O3MgZmFsbG9jYXRlIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2M3Mzg5ZjMxYzllOTdhODBlMzVkMTg0YTRhMWM0NGYxZWIxZmU2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDA0OjQxOjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvYXR0cmliLmMgYi9mcy9udGZzL2F0dHJpYi5jXG5pbmRleCBkZDg4MjgwOTg1MTE4My4uYTk5Yjg0NzUxZWIxMjIgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL2F0dHJpYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9udGZzL2F0dHJpYi5jXG5AQCAtNTUzNiw2ICYjNDM7NTUzNiw3IEBAIGludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvXG4gXHRzNjQgb2xkX2RhdGFfc2l6ZTtcbiBcdHM2NCB2Y25fc3RhcnQsIHZjbl9lbmQsIHZjbl91bmluaXQsIHZjbiwgdHJ5X2FsbG9jX2NudDtcbiBcdHM2NCBsY24sIGFsbG9jX2NudDtcbiYjNDM7XHRzNjQgcmxfbGNuLCBybF9sZW5ndGgsIHJsX3ZjbjtcbiBcdGludCBlcnIgPSAwO1xuIFx0c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmw7XG4gXHRib29sIGJhbGxvYztcbkBAIC01NjE1LDE5ICYjNDM7NTYxNiwyMyBAQCBpbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib1xuIFx0d2hpbGUgKHZjbiBcdTAwM2MgdmNuX3VuaW5pdCkge1xuIFx0XHRkb3duX3JlYWQoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiBcdFx0cmwgPSBudGZzX2F0dHJfZmluZF92Y25fbm9sb2NrKG5pLCB2Y24sIE5VTEwpO1xuLVx0XHR1cF9yZWFkKFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QubG9jayk7XG4gXHRcdGlmIChJU19FUlIocmwpKSB7XG4mIzQzO1x0XHRcdHVwX3JlYWQoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiBcdFx0XHRlcnIgPSBQVFJfRVJSKHJsKTtcbiBcdFx0XHRnb3RvIG91dDtcbiBcdFx0fVxuJiM0MztcdFx0cmxfbGNuID0gcmwtXHUwMDNlbGNuO1xuJiM0MztcdFx0cmxfbGVuZ3RoID0gcmwtXHUwMDNlbGVuZ3RoO1xuJiM0MztcdFx0cmxfdmNuID0gcmwtXHUwMDNldmNuO1xuJiM0MztcdFx0dXBfcmVhZChcdTAwMjZuaS1cdTAwM2VydW5saXN0LmxvY2spO1xuIFxuLVx0XHRpZiAocmwtXHUwMDNlbGNuIFx1MDAzZSAwKSB7XG4tXHRcdFx0dmNuICYjNDM7PSBybC1cdTAwM2VsZW5ndGggLSAodmNuIC0gcmwtXHUwMDNldmNuKTtcbi1cdFx0fSBlbHNlIGlmIChybC1cdTAwM2VsY24gPT0gTENOX0RFTEFMTE9DIHx8IHJsLVx1MDAzZWxjbiA9PSBMQ05fSE9MRSkge1xuLVx0XHRcdHRyeV9hbGxvY19jbnQgPSBtaW4ocmwtXHUwMDNlbGVuZ3RoIC0gKHZjbiAtIHJsLVx1MDAzZXZjbiksXG4mIzQzO1x0XHRpZiAocmxfbGNuIFx1MDAzZSAwKSB7XG4mIzQzO1x0XHRcdHZjbiAmIzQzOz0gcmxfbGVuZ3RoIC0gKHZjbiAtIHJsX3Zjbik7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHJsX2xjbiA9PSBMQ05fREVMQUxMT0MgfHwgcmxfbGNuID09IExDTl9IT0xFKSB7XG4mIzQzO1x0XHRcdHRyeV9hbGxvY19jbnQgPSBtaW4ocmxfbGVuZ3RoIC0gKHZjbiAtIHJsX3ZjbiksXG4gXHRcdFx0XHRcdCAgICB2Y25fdW5pbml0IC0gdmNuKTtcbiBcbi1cdFx0XHRpZiAocmwtXHUwMDNlbGNuID09IExDTl9ERUxBTExPQykge1xuJiM0MztcdFx0XHRpZiAocmxfbGNuID09IExDTl9ERUxBTExPQykge1xuIFx0XHRcdFx0dmNuICYjNDM7PSB0cnlfYWxsb2NfY250O1xuIFx0XHRcdFx0Y29udGludWU7XG4gXHRcdFx0fVxuQEAgLTU2NDIsMTEgJiM0Mzs1NjQ3LDE0IEBAIGludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvXG4gXHRcdFx0XHRpZiAoZXJyKVxuIFx0XHRcdFx0XHRnb3RvIG91dDtcbiBcbi1cdFx0XHRcdGVyciA9IG50ZnNfZGlvX3plcm9fcmFuZ2UoVkZTX0kobmkpLFxuLVx0XHRcdFx0XHRcdFx0ICBsY24gXHUwMDNjXHUwMDNjIHZvbC1cdTAwM2VjbHVzdGVyX3NpemVfYml0cyxcbi1cdFx0XHRcdFx0XHRcdCAgYWxsb2NfY250IFx1MDAzY1x1MDAzYyB2b2wtXHUwMDNlY2x1c3Rlcl9zaXplX2JpdHMpO1xuLVx0XHRcdFx0aWYgKGVyciBcdTAwM2UgMClcbi1cdFx0XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdFx0aWYgKGJhbGxvYykge1xuJiM0MztcdFx0XHRcdFx0ZXJyID0gbnRmc19kaW9femVyb19yYW5nZShWRlNfSShuaSksXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHQgIGxjbiBcdTAwM2NcdTAwM2Mgdm9sLVx1MDAzZWNsdXN0ZXJfc2l6ZV9iaXRzLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0ICBhbGxvY19jbnQgXHUwMDNjXHUwMDNjXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHQgIHZvbC1cdTAwM2VjbHVzdGVyX3NpemVfYml0cyk7XG4mIzQzO1x0XHRcdFx0XHRpZiAoZXJyIFx1MDAzZSAwKVxuJiM0MztcdFx0XHRcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdFx0XHR9XG4gXG4gXHRcdFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpXG4gXHRcdFx0XHRcdGdvdG8gb3V0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2F0dHJfZmFsbG9jYXRlJiMzNDssCiAgICAmIzM0O250ZnNfZmFsbG9jYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGJ5IGNhY2hpbmcgcnVubGlzdCBlbGVtZW50IGZpZWxkcyBiZWZvcmUgZHJvcHBpbmcgdGhlIHJ1bmxpc3QgbG9jay4gSXQgYWxzbyBmaXhlcyBhIGJ1ZyB3aGVyZSBgbnRmc19kaW9femVyb19yYW5nZWAgd2FzIGNhbGxlZCBpbmNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0mIzM5O3MgZmFsbG9jYXRlIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3YzczODlmMzFjOWU5N2E4MGUzNWQxODRhNGExYzQ0ZjFlYjFmZTY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjcgMDQ6NDE6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9udGZzL2F0dHJpYi5jIGIvZnMvbnRmcy9hdHRyaWIuYwppbmRleCBkZDg4MjgwOTg1MTE4My4uYTk5Yjg0NzUxZWIxMjIgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvYXR0cmliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9hdHRyaWIuYwpAQCAtNTUzNiw2ICYjNDM7NTUzNiw3IEBAIGludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvCiAJczY0IG9sZF9kYXRhX3NpemU7CiAJczY0IHZjbl9zdGFydCwgdmNuX2VuZCwgdmNuX3VuaW5pdCwgdmNuLCB0cnlfYWxsb2NfY250OwogCXM2NCBsY24sIGFsbG9jX2NudDsKJiM0MzsJczY0IHJsX2xjbiwgcmxfbGVuZ3RoLCBybF92Y247CiAJaW50IGVyciA9IDA7CiAJc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmw7CiAJYm9vbCBiYWxsb2M7CkBAIC01NjE1LDE5ICYjNDM7NTYxNiwyMyBAQCBpbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBibwogCXdoaWxlICh2Y24gJmx0OyB2Y25fdW5pbml0KSB7CiAJCWRvd25fcmVhZCgmYW1wO25pLSZndDtydW5saXN0LmxvY2spOwogCQlybCA9IG50ZnNfYXR0cl9maW5kX3Zjbl9ub2xvY2sobmksIHZjbiwgTlVMTCk7Ci0JCXVwX3JlYWQoJmFtcDtuaS0mZ3Q7cnVubGlzdC5sb2NrKTsKIAkJaWYgKElTX0VSUihybCkpIHsKJiM0MzsJCQl1cF9yZWFkKCZhbXA7bmktJmd0O3J1bmxpc3QubG9jayk7CiAJCQllcnIgPSBQVFJfRVJSKHJsKTsKIAkJCWdvdG8gb3V0OwogCQl9CiYjNDM7CQlybF9sY24gPSBybC0mZ3Q7bGNuOwomIzQzOwkJcmxfbGVuZ3RoID0gcmwtJmd0O2xlbmd0aDsKJiM0MzsJCXJsX3ZjbiA9IHJsLSZndDt2Y247CiYjNDM7CQl1cF9yZWFkKCZhbXA7bmktJmd0O3J1bmxpc3QubG9jayk7CiAKLQkJaWYgKHJsLSZndDtsY24gJmd0OyAwKSB7Ci0JCQl2Y24gJiM0Mzs9IHJsLSZndDtsZW5ndGggLSAodmNuIC0gcmwtJmd0O3Zjbik7Ci0JCX0gZWxzZSBpZiAocmwtJmd0O2xjbiA9PSBMQ05fREVMQUxMT0MgfHwgcmwtJmd0O2xjbiA9PSBMQ05fSE9MRSkgewotCQkJdHJ5X2FsbG9jX2NudCA9IG1pbihybC0mZ3Q7bGVuZ3RoIC0gKHZjbiAtIHJsLSZndDt2Y24pLAomIzQzOwkJaWYgKHJsX2xjbiAmZ3Q7IDApIHsKJiM0MzsJCQl2Y24gJiM0Mzs9IHJsX2xlbmd0aCAtICh2Y24gLSBybF92Y24pOwomIzQzOwkJfSBlbHNlIGlmIChybF9sY24gPT0gTENOX0RFTEFMTE9DIHx8IHJsX2xjbiA9PSBMQ05fSE9MRSkgewomIzQzOwkJCXRyeV9hbGxvY19jbnQgPSBtaW4ocmxfbGVuZ3RoIC0gKHZjbiAtIHJsX3ZjbiksCiAJCQkJCSAgICB2Y25fdW5pbml0IC0gdmNuKTsKIAotCQkJaWYgKHJsLSZndDtsY24gPT0gTENOX0RFTEFMTE9DKSB7CiYjNDM7CQkJaWYgKHJsX2xjbiA9PSBMQ05fREVMQUxMT0MpIHsKIAkJCQl2Y24gJiM0Mzs9IHRyeV9hbGxvY19jbnQ7CiAJCQkJY29udGludWU7CiAJCQl9CkBAIC01NjQyLDExICYjNDM7NTY0NywxNCBAQCBpbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBibwogCQkJCWlmIChlcnIpCiAJCQkJCWdvdG8gb3V0OwogCi0JCQkJZXJyID0gbnRmc19kaW9femVyb19yYW5nZShWRlNfSShuaSksCi0JCQkJCQkJICBsY24gJmx0OyZsdDsgdm9sLSZndDtjbHVzdGVyX3NpemVfYml0cywKLQkJCQkJCQkgIGFsbG9jX2NudCAmbHQ7Jmx0OyB2b2wtJmd0O2NsdXN0ZXJfc2l6ZV9iaXRzKTsKLQkJCQlpZiAoZXJyICZndDsgMCkKLQkJCQkJZ290byBvdXQ7CiYjNDM7CQkJCWlmIChiYWxsb2MpIHsKJiM0MzsJCQkJCWVyciA9IG50ZnNfZGlvX3plcm9fcmFuZ2UoVkZTX0kobmkpLAomIzQzOwkJCQkJCQkJICBsY24gJmx0OyZsdDsgdm9sLSZndDtjbHVzdGVyX3NpemVfYml0cywKJiM0MzsJCQkJCQkJCSAgYWxsb2NfY250ICZsdDsmbHQ7CiYjNDM7CQkJCQkJCQkgIHZvbC0mZ3Q7Y2x1c3Rlcl9zaXplX2JpdHMpOwomIzQzOwkJCQkJaWYgKGVyciAmZ3Q7IDApCiYjNDM7CQkJCQkJZ290byBvdXQ7CiYjNDM7CQkJCX0KIAogCQkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKIAkJCQkJZ290byBvdXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDYKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gYG50ZnNfYXR0cl9mYWxsb2NhdGVgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBpbiBgZnMvbnRmcy9hdHRyaWIuY2AuIFRoZSBjaGFuZ2VzIHNlZW0gc3RyYWlnaHRmb3J3YXJkIGVub3VnaDogcmVhZGluZyBgcmxgIGZpZWxkcyB1bmRlciB0aGUgYHJ1bmxpc3QubG9ja2AgYW5kIGNvbmRpdGlvbmFsbHkgY2FsbGluZyBgbnRmc19kaW9femVyb19yYW5nZWAgYmFzZWQgb24gdGhlIGBiYWxsb2NgIGZsYWcuIFNlZW1zIHByZXR0eSBzdGFuZGFyZCBmb3Igb3B0aW1pemluZyBOVEZTLiBCdXQuLi53YWl0IGEgc2Vjb25kLiBgZnMvbnRmcy9hdHRyaWIuY2A/IFRoYXQmIzM5O3MgdGhyb3dpbmcgYSBmbGFnLiBJcyB0aGlzIGZvciB0aGUgb2xkIE5URlMgZHJpdmVyIG9yIHRoZSBuZXdlciBgbnRmczNgPyBJIG5lZWQgdG8gY2xhcmlmeSB3aGljaCBkcml2ZXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLCBiZWNhdXNlIHRoZXkgaGF2ZSBkaWZmZXJlbnQgc3RydWN0dXJlcy4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gd2hldGhlciBgZnMvbnRmc2AgZXZlbiBleGlzdHMsIG9yIGlmIGl0JiMzOTtzIGJlZW4gc3VwZXJzZWRlZCBieSBgZnMvbnRmczNgLiBNZW1vcnkgam9nIC0gbm93ICp0aGF0KiBmdW5jdGlvbiBuYW1lLCBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAuLi4gZG9lc24mIzM5O3QgcmluZyBhIGJlbGwgZnJvbSB0aGUgb2xkIGRyaXZlci4gSG1tLCBJIGJldHRlciBkaWcgaW50byB0aGlzIGFuZCBjb25maXJtLiBMb29rcyBsaWtlIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBmaWxlIHBhdGggYWdhaW5zdCBib3RoIGRpcmVjdG9yaWVzLiBUaGlzIHNlZW1zIGxpa2UgYSBwb3RlbnRpYWwgc291cmNlIG9mIGNvbmZ1c2lvbiBvciBldmVuIGEgYnVnIGlmIHdlJiMzOTtyZSBub3QgY2FyZWZ1bC4gTGV0JiMzOTtzIGdldCB0aGUgcmlnaHQgY29udGV4dCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX2F0dHJfZmFsbG9jYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvYXR0cmliLmM9NTQ3ND1pbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9wdW5jaF9ob2xlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcbi0tXG5mcy9udGZzL2F0dHJpYi5jLTU1MzAtXG5mcy9udGZzL2F0dHJpYi5jOjU1MzE6aW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9vbCBrZWVwX3NpemUpXG5mcy9udGZzL2F0dHJpYi5jLTU1MzIte1xuLS1cbmZzL250ZnMvYXR0cmliLmg9MTA3PXZvaWQgbnRmc19hdHRyX2Nsb3NlKHN0cnVjdCBudGZzX2lub2RlICpuKTtcbmZzL250ZnMvYXR0cmliLmg6MTA4OmludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvb2wga2VlcF9zaXplKTtcbmZzL250ZnMvYXR0cmliLmgtMTA5LWludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xuLS1cbmZzL250ZnMvZmlsZS5jPTgzMz1zdGF0aWMgaW50IG50ZnNfYWxsb2NhdGVfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCxcbi0tXG5mcy9udGZzL2ZpbGUuYy04NjMtXG5mcy9udGZzL2ZpbGUuYzo4NjQ6XHRlcnIgPSBudGZzX2F0dHJfZmFsbG9jYXRlKG5pLCBvZmZzZXQsIGxlbixcbmZzL250ZnMvZmlsZS5jLTg2NS1cdFx0XHRtb2RlIFx1MDAyNiBGQUxMT0NfRkxfS0VFUF9TSVpFID8gdHJ1ZSA6IGZhbHNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDg1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKk5hdmlnYXRpbmcgdGhlIE5URlMgRmlsZSBTeXN0ZW0gRHJpdmVycyoqCgpSaWdodCwgc28gSSBzZWUgYGZzL250ZnMvYXR0cmliLmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O1dhaXQgYSBtaW51dGUsIGlzbiYjMzk7dCBgZnMvbnRmc2AgdGhlIGxlZ2FjeSBkcml2ZXI/JiMzNDsgQnV0IHRoZW4gSSBoYXZlIHRvIG1lbnRhbGx5IGRvdWJsZS1jaGVjayBiZWNhdXNlIEkga25vdyB0aGUgbGFuZHNjYXBlIGhhcyBldm9sdmVkLiBJdOKAmXMgZW50aXJlbHkgcG9zc2libGUgdGhhdCBpbiAqdGhpcyogcGFydGljdWxhciBidWlsZCBvciBrZXJuZWwgdHJlZSwgc29tZW9uZSYjMzk7cyByZW5hbWVkIHRoZSBkaXJlY3RvcnkgdG8gYGZzL250ZnMzYCwgb3IgcGVyaGFwcyBpdOKAmXMgc3RpbGwgdXNpbmcgdGhlIG9sZGVyIHBhdGhzLgoKR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgdGhhdCBjb25mdXNpb24sIEkgc2hvdWxkIGNvbmZpcm0gdGhlIGRyaXZlciB0aGF0IHRoaXMgaXMgbGlua2VkIHRvLiBNeSBuZXh0IHN0ZXAgaGFzIHRvIGJlIGNoZWNraW5nIHRoZSBgZnMvbnRmcy9LY29uZmlnYCBmaWxlLiBUaGF0IHdpbGwgZGVmaW5pdGl2ZWx5IHRlbGwgbWUgd2hpY2ggZHJpdmVyIGFuZCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCBhbmQgd2hhdCB0aGlzIG1vZHVsZSBpcyBhY3R1YWxseSBpbnRlbmRlZCBmb3IuIEl04oCZcyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCB3YXN0aW5nIHRpbWUgb24gdGhlIHdyb25nIGNvZGUgYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU19GUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL250ZnMvS2NvbmZpZzoyOmNvbmZpZyBOVEZTX0ZTXG5mcy9udGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O05URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xuLS1cbmZzL250ZnMvS2NvbmZpZy0zNC1cbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbmZzL250ZnMvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgTlRGUyBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBwb2tpbmcgYXJvdW5kLCBhbmQgaXQgbG9va3MgbGlrZSBgZnMvbnRmc2AgaXMgc3RpbGwgdGhlIGRpcmVjdG9yeS4gR29vZC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQuIEFoLCByaWdodCwgYE5URlNfRlNgIGlzIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uLCBub3QgdGhlIGZpbGUgc3lzdGVtIGl0c2VsZi4gSG1tLCB3aGVyZSYjMzk7cyB0aGF0IGBudGZzX2F0dHJfZmFsbG9jYXRlYCBmdW5jdGlvbj8gUmlnaHQsIGBmcy9udGZzL2F0dHJpYi5jYC4gSnVzdCBjb25maXJtaW5nIHRoYXQgYE5URlNfRlNgIGlzIHRoZSBtYWluIGNvbmZpZyBvcHRpb24uIFllcCwgdGhlcmUgaXQgaXMuIEhvbGQgb24sIGNvdWxkIGBOVEZTX1JXYCBiZSBpbnZvbHZlZCB0b28/IExldCYjMzk7cyBxdWlja2x5IHNjYW4gYGZzL250ZnMvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfUlcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhhdCBgZnMvbnRmcy9LY29uZmlnYCBmaWxlLCBhcyBJIHVuZGVyc3RhbmQgaXQ6CgoqKk5URlMgQ29uZmlndXJhdGlvbiAtIERlY29kaW5nIHRoZSBLY29uZmlnKioKCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBmcy9udGZzL0tjb25maWdgIGZpbGUuIEkmIzM5O20gYWxyZWFkeSBleHBlY3RpbmcgaXQgdG8gb3V0bGluZSB0aGUgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgTlRGUyBmaWxlc3lzdGVtIGRyaXZlciB3aXRoaW4gdGhlIGtlcm5lbC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGZvY3VzaW5nIG9uIGhvdyBpdCBwcmVzZW50cyB0aGUgb3B0aW9ucywgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHN1YnRsZSBpbXBsaWNhdGlvbnMgZm9yIHBlcmZvcm1hbmNlIG9yIHNlY3VyaXR5LiBJJiMzOTttIGFudGljaXBhdGluZyBmaW5kaW5nIHRoZSB1c3VhbCBzdXNwZWN0czogc3VwcG9ydCBmb3IgcmVhZC93cml0ZSBhY2Nlc3MsIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIHBlcmhhcHMgZXZlbiBqb3VybmFsIHJlY292ZXJ5IG9wdGlvbnMuIE15IGdvYWwgaXMgdG8gc2VlIGhvdyB0aGUgZGV2ZWxvcGVycyBoYXZlIGJhbGFuY2VkIGZ1bmN0aW9uYWxpdHkgd2l0aCBwb3RlbnRpYWwgcmVzb3VyY2UgY29uc3RyYWludHMuIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgb3IgZmVhdHVyZXMuIEZpbmFsbHksIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIHJlZ2FyZGluZyBhbnkgY2hhbmdlcyBvciBpbXByb3ZlbWVudHMgbWFkZSB0byB0aGUgZHJpdmVyIG92ZXIgdGhlIGhpc3Rvcnkgb2YgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUuIEkgd2FudCB0byBzZWUgaWYgdGhleSYjMzk7cmUgYWRkcmVzc2luZyBhbnkgcHJldmlvdXMgd2Vha25lc3NlcyBvciBwcm9ibGVtcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5URlNfRlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O05URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0c2VsZWN0IE5MU1xuICAgNTpcdFx0c2VsZWN0IEZTX0lPTUFQXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIE5URlMgaXMgdGhlIGZpbGUgc3lzdGVtIG9mIE1pY3Jvc29mdCBXaW5kb3dzIE5ULCAyMDAwLCBYUCBhbmQgMjAwMy5cbiAgIDg6XHRcdCAgVGhpcyBhbGxvd3MgeW91IHRvIG1vdW50IGRldmljZXMgZm9ybWF0dGVkIHdpdGggdGhlIG50ZnMgZmlsZSBzeXN0ZW0uXG4gICA5Olx0XG4gIDEwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxuICAxMTpcdFx0ICBudGZzLlxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBOVEZTX0RFQlVHXG4gIDE0Olx0XHRib29sIFwmIzM0O05URlMgZGVidWdnaW5nIHN1cHBvcnRcJiMzNDtcbiAgMTU6XHRcdGRlcGVuZHMgb24gTlRGU19GU1xuICAxNjpcdFx0aGVscFxuICAxNzpcdFx0ICBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgTlRGUyBmaWxlIHN5c3RlbSwgc2F5XG4gIDE4Olx0XHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYWRkaXRpb25hbCBjb25zaXN0ZW5jeSBjaGVja3MgdG8gYmVcbiAgMTk6XHRcdCAgcGVyZm9ybWVkIGJ5IHRoZSBkcml2ZXIgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIGRlYnVnZ2luZyBtZXNzYWdlcyB0b1xuICAyMDpcdFx0ICBiZSB3cml0dGVuIHRvIHRoZSBzeXN0ZW0gbG9nLiAgTm90ZSB0aGF0IGRlYnVnZ2luZyBtZXNzYWdlcyBhcmVcbiAgMjE6XHRcdCAgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIFRvIGVuYWJsZSB0aGVtLCBzdXBwbHkgdGhlIG9wdGlvbiBkZWJ1Z19tc2dzPTFcbiAgMjI6XHRcdCAgYXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgd2hlbiBib290aW5nIHRoZSBrZXJuZWwgb3IgYXMgYW4gb3B0aW9uXG4gIDIzOlx0XHQgIHRvIGluc21vZCB3aGVuIGxvYWRpbmcgdGhlIG50ZnMgbW9kdWxlLiAgT25jZSB0aGUgZHJpdmVyIGlzIGFjdGl2ZSxcbiAgMjQ6XHRcdCAgeW91IGNhbiBlbmFibGUgZGVidWdnaW5nIG1lc3NhZ2VzIGJ5IGRvaW5nIChhcyByb290KTpcbiAgMjU6XHRcdCAgZWNobyAxIFx1MDAzZSAvcHJvYy9zeXMvZnMvbnRmcy1kZWJ1Z1xuICAyNjpcdFx0ICBSZXBsYWNpbmcgdGhlIFwmIzM0OzFcJiMzNDsgd2l0aCBcJiMzNDswXCYjMzQ7IHdvdWxkIGRpc2FibGUgZGVidWcgbWVzc2FnZXMuXG4gIDI3Olx0XG4gIDI4Olx0XHQgIElmIHlvdSBsZWF2ZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgZGlzYWJsZWQsIHRoaXMgcmVzdWx0cyBpbiBsaXR0bGVcbiAgMjk6XHRcdCAgb3ZlcmhlYWQsIGJ1dCBlbmFibGluZyBkZWJ1ZyBtZXNzYWdlcyByZXN1bHRzIGluIHZlcnkgc2lnbmlmaWNhbnRcbiAgMzA6XHRcdCAgc2xvd2Rvd24gb2YgdGhlIHN5c3RlbS5cbiAgMzE6XHRcbiAgMzI6XHRcdCAgV2hlbiByZXBvcnRpbmcgYnVncywgcGxlYXNlIHRyeSB0byBoYXZlIGF2YWlsYWJsZSBhIGZ1bGwgZHVtcCBvZlxuICAzMzpcdFx0ICBkZWJ1Z2dpbmcgbWVzc2FnZXMgd2hpbGUgdGhlIG1pc2JlaGF2aW91ciB3YXMgb2NjdXJyaW5nLlxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxuICAzNjpcdFx0Ym9vbCBcJiMzNDtOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4gIDM3Olx0XHRkZXBlbmRzIG9uIE5URlNfRlNcbiAgMzg6XHRcdHNlbGVjdCBGU19QT1NJWF9BQ0xcbiAgMzk6XHRcdGhlbHBcbiAgNDA6XHRcdCAgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpIHN1cHBvcnQgYWRkaXRpb25hbCBhY2Nlc3MgcmlnaHRzXG4gIDQxOlx0XHQgIGZvciB1c2VycyBhbmQgZ3JvdXBzIGJleW9uZCB0aGUgc3RhbmRhcmQgb3duZXIvZ3JvdXAvd29ybGQgc2NoZW1lLlxuICA0MjpcdFxuICA0MzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEFDTCBzdXBwb3J0IGZvciBudGZzLCBwcm92aWRpbmcgZnVuY3Rpb25hbCBwYXJpdHlcbiAgNDQ6XHRcdCAgd2l0aCBudGZzMyBkcml2aWVyLlxuICA0NTpcdFxuICA0NjpcdFx0ICBOT1RFOiB0aGlzIGlzIGxpbnV4IG9ubHkgZmVhdHVyZS4gV2luZG93cyB3aWxsIGlnbm9yZSB0aGVzZSBBQ0xzLlxuICA0NzpcdFxuICA0ODpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTkwCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTlRGUyBGYWxsb2NhdGUgSW1wbGVtZW50YXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBkaWRuJiMzOTt0IEkgdGhpbmsgSSByZW1lbWJlcmVkIGFuIGBOVEZTX1JXYCBtb2R1bGUgYXQgc29tZSBwb2ludD8gT3Igd2FzIHRoYXQgZGVwcmVjYXRlZCBvciBtZXJnZWQgaW50byBzb21ldGhpbmcgZWxzZT8gSSBzaG91bGQgcHJvYmFibHkganVzdCBmb2N1cyBvbiBgTlRGU19GU2AgZm9yIG5vdy4gU2VlIGlmIHRoYXQmIzM5O3Mgc3VmZmljaWVudCBmb3IgbXkgbmVlZHMuCgpSaWdodCwgdGhlIHBhdGNoIG1lbnRpb25zIGEgYnVnIGluIGBudGZzX2F0dHJfZmFsbG9jYXRlYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBMZXQmIzM5O3MgdHJhY2UgdGhpcyBiYWNrLiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgaXMgY2FsbGVkIGJ5IGBudGZzX2FsbG9jYXRlX3JhbmdlYCwgd2hpY2guLi4gYWhhISBUaGF0JiMzOTtzIGNhbGxlZCBieSBgbnRmc19mYWxsb2NhdGVgLiBPa2F5LCBub3cgSSBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgYG50ZnNfZmFsbG9jYXRlYC4KClRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGBmcy9udGZzL2ZpbGUuY2AgdG8gY29uZmlybSB3aGVyZSBgbnRmc19mYWxsb2NhdGVgIGlzIGltcGxlbWVudGVkIGFuZCBob3cgaXQgaXMgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRmc19mYWxsb2NhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9maWxlLmM9OTk0PXN0YXRpYyBpbnQgbnRmc19pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuLS1cbmZzL250ZnMvZmlsZS5jLTEwNTQtXG5mcy9udGZzL2ZpbGUuYzoxMDU1OnN0YXRpYyBsb25nIG50ZnNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcbmZzL250ZnMvZmlsZS5jLTEwNTYte1xuLS1cbmZzL250ZnMvZmlsZS5jPTExNDY9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBudGZzX2ZpbGVfb3BzID0ge1xuLS1cbmZzL250ZnMvZmlsZS5jLTExNTktI2VuZGlmXG5mcy9udGZzL2ZpbGUuYzoxMTYwOlx0LmZhbGxvY2F0ZVx0PSBudGZzX2ZhbGxvY2F0ZSxcbmZzL250ZnMvZmlsZS5jLTExNjEtXHQuc2V0bGVhc2VcdD0gZ2VuZXJpY19zZXRsZWFzZSxcbi0tXG5mcy9udGZzMy9maWxlLmM9MzgxPXN0YXRpYyBpbnQgbnRmc19maWxlX21tYXBfcHJlcGFyZShzdHJ1Y3Qgdm1fYXJlYV9kZXNjICpkZXNjKVxuLS1cbmZzL250ZnMzL2ZpbGUuYy00NTctLypcbmZzL250ZnMzL2ZpbGUuYzo0NTg6ICogbnRmc19mYWxsb2NhdGUgLSBmaWxlX29wZXJhdGlvbnM6Om50ZnNfZmFsbG9jYXRlXG5mcy9udGZzMy9maWxlLmMtNDU5LSAqXG4tLVxuZnMvbnRmczMvZmlsZS5jLTQ2NS0gKi9cbmZzL250ZnMzL2ZpbGUuYzo0NjY6c3RhdGljIGxvbmcgbnRmc19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3QgdmJvLCBsb2ZmX3QgbGVuKVxuZnMvbnRmczMvZmlsZS5jLTQ2Ny17XG4tLVxuZnMvbnRmczMvZmlsZS5jPTE1NjY9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBudGZzX2ZpbGVfb3BlcmF0aW9ucyA9IHtcbi0tXG5mcy9udGZzMy9maWxlLmMtMTU3OC1cdC5mc3luY1x0XHQ9IG50ZnNfZmlsZV9mc3luYyxcbmZzL250ZnMzL2ZpbGUuYzoxNTc5Olx0LmZhbGxvY2F0ZVx0PSBudGZzX2ZhbGxvY2F0ZSxcbmZzL250ZnMzL2ZpbGUuYy0xNTgwLVx0LnJlbGVhc2VcdD0gbnRmc19maWxlX3JlbGVhc2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNTEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRmlsZSBTeXN0ZW0gUGF0Y2ggZm9yIE5URlMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtXaGVyZSBkb2VzIHRoaXMgdG91Y2g/JiMzNDsgQWgsIGBmcy9udGZzL2ZpbGUuY2AgaGFzIGBudGZzX2ZhbGxvY2F0ZWAsIGFuZCBgZnMvbnRmcy9hdHRyaWIuY2AgaG9sZHMgYG50ZnNfYXR0cl9mYWxsb2NhdGVgLiBMZXQgbWUgY29uZmlybSwgaXQgc2VlbXMgYE5URlNfRlNgIGlzIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uLCBhbmQgb25seSB0aGF0LCBnb29kLiBObyBvdGhlciBkZXBlbmRlbmNpZXMuCgpSaWdodCwgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgd2l0aGluIGBhdHRyaWIuY2AuIFRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIGEgYHJsYCB1c2UtYWZ0ZXItZnJlZSBvciBkYXRhIHJhY2UgY29uZGl0aW9uOyB0aGUgY29kZSB3YXMgYWNjZXNzaW5nIGZpZWxkcyBsaWtlIGBybC0mZ3Q7bGNuYCwgYHJsLSZndDtsZW5ndGhgLCBhbmQgYHJsLSZndDt2Y25gICphZnRlciogdGhlIGBuaS0mZ3Q7cnVubGlzdC5sb2NrYCBoYWQgYmVlbiByZWxlYXNlZC4gVGhleSByZWFkIHRob3NlIHZhbHVlcyB3aGlsZSB0aGUgbG9jayB3YXMgaGVsZCwgYnV0IHRoZW4gdXNlIHRoZW0gYWZ0ZXIgcmVsZWFzaW5nIHRoZSBsb2NrLCB3aGljaCBpcyBhIHRleHRib29rIGRhdGEgcmFjZS4gQWxzbywgdGhlIHBhdGNoIHdyYXBzIGBudGZzX2Rpb196ZXJvX3JhbmdlYCBpbiBhbiBgaWYgKGJhbGxvYylgIGNoZWNrLCBwcmVzdW1hYmx5IHRvIHByZXZlbnQgaXQgZnJvbSBiZWluZyBjYWxsZWQgaW4gaW5hcHByb3ByaWF0ZSBzaXR1YXRpb25zLgoKU28sIHRoaXMgaXMgYSBwcmV0dHkgZnVuY3Rpb25hbCBmaXgsIGFkZHJlc3NpbmcgYm90aCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZS9kYXRhIHJhY2Ugb24gdGhlIGBybGAgc3RydWN0dXJlIGFuZCBhIGJ1ZyBpbiB0aGUgY29uZGl0aW9uYWwgY2FsbCB0byBgbnRmc19kaW9femVyb19yYW5nZWAuCgpJcyB0aGlzIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmc/IEFic29sdXRlbHkuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldCB3b3VsZCBiZSBlaXRoZXIgYG50ZnNfYXR0cl9mYWxsb2NhdGVgIG9yIGBudGZzX2ZhbGxvY2F0ZWAuIE9rYXksIGxldCYjMzk7cyBjb25maXJtIHRoZSB2aXNpYmlsaXR5IG9mIGBudGZzX2F0dHJfZmFsbG9jYXRlYC4uLiBJdCYjMzk7cyBub3Qgc3RhdGljOyBpdCYjMzk7cyBkZWNsYXJlZCBpbiBgYXR0cmliLmhgIGFuZCBkZWZpbmVkIGluIGBhdHRyaWIuY2AuIFRoZXJlZm9yZSwgaXQmIzM5O3MgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4gYG50ZnNfZmFsbG9jYXRlYCBpcyBhbHNvIGEgdmFsaWQgZm9jdXMuCgpMZXQgbWUgZG91YmxlIGNoZWNrIHRoaXMgTlRGUyB2ZXJzaW9uLiBgTlRGU19GU2AuLi4gaXMgdGhhdCB0aGUgb2xkIGRyaXZlcj8gQWggeWVzLCBJIHNlZSBub3csIGBOVEZTM19GU2AgaXMgdGhlIG5ldyBvbmUuIFRoZSBwYXRjaCBtb2RpZmllcyBgZnMvbnRmcy9hdHRyaWIuY2AsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIG9sZCBkcml2ZXIsIGFuZCB5ZXMsIGBOVEZTX0ZTYCBpcyB0aGUgY29uZmlnIG9wdGlvbiBmb3IgdGhhdCBvbGQgZHJpdmVyLiBXYWl0LCBhbSBJIG1pc3Rha2VuLCB3YXNuJiMzOTt0IGBmcy9udGZzYCByZW1vdmVkIGluIDYuMTM/IE5vLCBJIHNlZSBpdCYjMzk7cyBzdGlsbCBwcmVzZW50IGluIHRoZSBjdXJyZW50IHRyZWUuCgpJIHNob3VsZCBjaGVjayBpZiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgaXMgcmVhY2hhYmxlLCBhbmQgeWVzLCBpdCBzZWVtcyB0byBiZSB0aHJvdWdoIHRoZSBgZmFsbG9jYXRlYCBzeXNjYWxsIHdoZW4gZGVhbGluZyB3aXRoIGFuIE5URlMgZmlsZS4gVGhhdCYjMzk7cyBnb29kLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYGZzL250ZnMvYXR0cmliLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGludGVyZXN0aW5nIGZ1bmN0aW9ucyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRmc19hdHRyX2ZhbGxvY2F0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jPTU0NzQ9aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfcHVuY2hfaG9sZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXG4tLVxuZnMvbnRmcy9hdHRyaWIuYy01NTMwLVxuZnMvbnRmcy9hdHRyaWIuYzo1NTMxOmludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvb2wga2VlcF9zaXplKVxuZnMvbnRmcy9hdHRyaWIuYy01NTMyLXtcbi0tXG5mcy9udGZzL2F0dHJpYi5oPTEwNz12b2lkIG50ZnNfYXR0cl9jbG9zZShzdHJ1Y3QgbnRmc19pbm9kZSAqbik7XG5mcy9udGZzL2F0dHJpYi5oOjEwODppbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib29sIGtlZXBfc2l6ZSk7XG5mcy9udGZzL2F0dHJpYi5oLTEwOS1pbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKTtcbi0tXG5mcy9udGZzL2ZpbGUuYz04MzM9c3RhdGljIGludCBudGZzX2FsbG9jYXRlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsXG4tLVxuZnMvbnRmcy9maWxlLmMtODYzLVxuZnMvbnRmcy9maWxlLmM6ODY0Olx0ZXJyID0gbnRmc19hdHRyX2ZhbGxvY2F0ZShuaSwgb2Zmc2V0LCBsZW4sXG5mcy9udGZzL2ZpbGUuYy04NjUtXHRcdFx0bW9kZSBcdTAwMjYgRkFMTE9DX0ZMX0tFRVBfU0laRSA/IHRydWUgOiBmYWxzZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NzYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5URlMgRmlsZXN5c3RlbSBBbGxvY2F0aW9uIENhbGxzKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgaGVyZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBmaWxlIGFsbG9jYXRpb24gd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0uIEkgc2VlIHRoYXQgYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGlzIGJlaW5nIGNhbGxlZCBieSBgbnRmc19hbGxvY2F0ZV9yYW5nZWAsIHdoaWNoIGluIHR1cm4sIGlzIGJlaW5nIGNhbGxlZCBieSBgbnRmc19mYWxsb2NhdGVgLiBUaGVyZWZvcmUsIGBudGZzX2ZhbGxvY2F0ZWAgYW5kIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBhcmUgY2xlYXJseSB0aGUga2V5IHN5bWJvbHMgdG8ga2VlcCBhbiBleWUgb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYW5kIGludGVyYWN0aW9uIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zLgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcyBhbGxvY2F0aW9uIHBhdGguIEkga25vdyBgTlRGU19GU2AgaXMgdGhlIG1haW4gb25lLCBidXQgSSBoYXZlIGEgZmVlbGluZyB0aGVyZSBtaWdodCBiZSBhIHdyaXRlLXJlbGF0ZWQgY29uZmlndXJhdGlvbiB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSG1tLCBkaWRuJiMzOTt0IEkganVzdCBsb29rIGF0IGBOVEZTX1JXYD8gTGV0IG1lIGRvdWJsZS1jaGVjayBgZnMvbnRmcy9LY29uZmlnYC4gWWVzLCBJJiMzOTttIGNlcnRhaW4gdGhhdCBgY29uZmlnIE5URlNfUldgIGRpZG4mIzM5O3QgdHVybiB1cCBhbnkgdXNlZnVsIGluZm9ybWF0aW9uLiBBaCwgYnV0IHdhaXQgYSBzZWNvbmQsIGxldCBtZSB0YWtlIGEgYnJvYWRlciBhcHByb2FjaC4gSSYjMzk7bGwgc2VhcmNoIGBmcy9udGZzL0tjb25maWdgIGZvciBgUldgIG9yIGBXUklURWAgbW9yZSBnZW5lcmFsbHk7IHNvbWV0aGluZyBtb3JlIHNwZWNpZmljIG1pZ2h0IGhhdmUgYmVlbiBvdmVybG9va2VkLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtSVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwNDIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgTlRGUyBXcml0ZSBJbXBsZW1lbnRhdGlvbiBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCBzdGVwIGluIHRhY2tsaW5nIHRoaXMgd3JpdGUgZnVuY3Rpb25hbGl0eSBxdWVzdGlvbiBpbiB0aGUgTlRGUyBtb2R1bGUgaXMgcHJldHR5IGNsZWFyIHRvIG1lOiBJIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGF0IHRoZSByZWxldmFudCBzZXR0aW5ncyB3aWxsIGxpa2VseSBiZSBmb3VuZCBpbiB0aGUgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHplcm9pbmcgaW4gb24gYW55dGhpbmcgcmVsYXRlZCB0byAmIzM0O3dyaXRlJiMzNDsgY2FwYWJpbGl0eS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB0aGVyZSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBjb25maWd1cmF0aW9uIGZsYWdzLCBkZXBlbmRlbmNpZXMsIG9yIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBzaGVkIGxpZ2h0IG9uIGhvdyB3cml0ZSBzdXBwb3J0IGlzIGNvbnRyb2xsZWQgYW5kIGVuYWJsZWQgd2l0aGluIHRoZSBkcml2ZXIuIFRoaXMgaXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgZm9yIGV4YW1pbmluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiwgd2hpY2ggc2hvdWxkIHJldmVhbCB0aGUgY29uZGl0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRoYXQgZ292ZXJuIGhvdyB3cml0ZSBzdXBwb3J0IGlzIGNvbXBpbGVkIGludG8gdGhlIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNzgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipOVEZTIGFuZCBLZXJuZWwgQ29uZmlndXJhdGlvbjogQSBRdWljayBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIGBmcy9udGZzL0tjb25maWdgIHBvcCB1cCBpbiBhbiBvbGRlciBrZXJuZWwgY29udGV4dCwgYW5kIHRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgcGlxdWluZyBteSBpbnRlcmVzdC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHNwb3R0aW5nIGBjb25maWcgTlRGU19SV2AsIHdoaWNoIG1lYW5zIHRoZXJlIHdhcyBvbmNlIGEgd3JpdGFibGUgTlRGUyBpbXBsZW1lbnRhdGlvbi4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFuZCBJIGtub3cgdGhhdCBJIHNob3VsZCBiZSBhYmxlIHRvIGRpZyBkZWVwZXIuIFRvIGdldCB0aGUgd2hvbGUgcGljdHVyZSwgSSBuZWVkIHRvIHJlYWQgdGhyb3VnaCB0aGUgZW50aXJlIGBmcy9udGZzL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZmVhdHVyZSB3YXMgZW5hYmxlZCwgYW5kIGhvdyBpdCBldm9sdmVkLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgd2VudCBpbnRvIGl0LCB3aGVyZSBpdCBjYW1lIGZyb20gYW5kIGxpa2VseSB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgd2VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5URlNfRlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O05URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0c2VsZWN0IE5MU1xuICAgNTpcdFx0c2VsZWN0IEZTX0lPTUFQXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIE5URlMgaXMgdGhlIGZpbGUgc3lzdGVtIG9mIE1pY3Jvc29mdCBXaW5kb3dzIE5ULCAyMDAwLCBYUCBhbmQgMjAwMy5cbiAgIDg6XHRcdCAgVGhpcyBhbGxvd3MgeW91IHRvIG1vdW50IGRldmljZXMgZm9ybWF0dGVkIHdpdGggdGhlIG50ZnMgZmlsZSBzeXN0ZW0uXG4gICA5Olx0XG4gIDEwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxuICAxMTpcdFx0ICBudGZzLlxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBOVEZTX0RFQlVHXG4gIDE0Olx0XHRib29sIFwmIzM0O05URlMgZGVidWdnaW5nIHN1cHBvcnRcJiMzNDtcbiAgMTU6XHRcdGRlcGVuZHMgb24gTlRGU19GU1xuICAxNjpcdFx0aGVscFxuICAxNzpcdFx0ICBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgTlRGUyBmaWxlIHN5c3RlbSwgc2F5XG4gIDE4Olx0XHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYWRkaXRpb25hbCBjb25zaXN0ZW5jeSBjaGVja3MgdG8gYmVcbiAgMTk6XHRcdCAgcGVyZm9ybWVkIGJ5IHRoZSBkcml2ZXIgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIGRlYnVnZ2luZyBtZXNzYWdlcyB0b1xuICAyMDpcdFx0ICBiZSB3cml0dGVuIHRvIHRoZSBzeXN0ZW0gbG9nLiAgTm90ZSB0aGF0IGRlYnVnZ2luZyBtZXNzYWdlcyBhcmVcbiAgMjE6XHRcdCAgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIFRvIGVuYWJsZSB0aGVtLCBzdXBwbHkgdGhlIG9wdGlvbiBkZWJ1Z19tc2dzPTFcbiAgMjI6XHRcdCAgYXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgd2hlbiBib290aW5nIHRoZSBrZXJuZWwgb3IgYXMgYW4gb3B0aW9uXG4gIDIzOlx0XHQgIHRvIGluc21vZCB3aGVuIGxvYWRpbmcgdGhlIG50ZnMgbW9kdWxlLiAgT25jZSB0aGUgZHJpdmVyIGlzIGFjdGl2ZSxcbiAgMjQ6XHRcdCAgeW91IGNhbiBlbmFibGUgZGVidWdnaW5nIG1lc3NhZ2VzIGJ5IGRvaW5nIChhcyByb290KTpcbiAgMjU6XHRcdCAgZWNobyAxIFx1MDAzZSAvcHJvYy9zeXMvZnMvbnRmcy1kZWJ1Z1xuICAyNjpcdFx0ICBSZXBsYWNpbmcgdGhlIFwmIzM0OzFcJiMzNDsgd2l0aCBcJiMzNDswXCYjMzQ7IHdvdWxkIGRpc2FibGUgZGVidWcgbWVzc2FnZXMuXG4gIDI3Olx0XG4gIDI4Olx0XHQgIElmIHlvdSBsZWF2ZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgZGlzYWJsZWQsIHRoaXMgcmVzdWx0cyBpbiBsaXR0bGVcbiAgMjk6XHRcdCAgb3ZlcmhlYWQsIGJ1dCBlbmFibGluZyBkZWJ1ZyBtZXNzYWdlcyByZXN1bHRzIGluIHZlcnkgc2lnbmlmaWNhbnRcbiAgMzA6XHRcdCAgc2xvd2Rvd24gb2YgdGhlIHN5c3RlbS5cbiAgMzE6XHRcbiAgMzI6XHRcdCAgV2hlbiByZXBvcnRpbmcgYnVncywgcGxlYXNlIHRyeSB0byBoYXZlIGF2YWlsYWJsZSBhIGZ1bGwgZHVtcCBvZlxuICAzMzpcdFx0ICBkZWJ1Z2dpbmcgbWVzc2FnZXMgd2hpbGUgdGhlIG1pc2JlaGF2aW91ciB3YXMgb2NjdXJyaW5nLlxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxuICAzNjpcdFx0Ym9vbCBcJiMzNDtOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4gIDM3Olx0XHRkZXBlbmRzIG9uIE5URlNfRlNcbiAgMzg6XHRcdHNlbGVjdCBGU19QT1NJWF9BQ0xcbiAgMzk6XHRcdGhlbHBcbiAgNDA6XHRcdCAgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpIHN1cHBvcnQgYWRkaXRpb25hbCBhY2Nlc3MgcmlnaHRzXG4gIDQxOlx0XHQgIGZvciB1c2VycyBhbmQgZ3JvdXBzIGJleW9uZCB0aGUgc3RhbmRhcmQgb3duZXIvZ3JvdXAvd29ybGQgc2NoZW1lLlxuICA0MjpcdFxuICA0MzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEFDTCBzdXBwb3J0IGZvciBudGZzLCBwcm92aWRpbmcgZnVuY3Rpb25hbCBwYXJpdHlcbiAgNDQ6XHRcdCAgd2l0aCBudGZzMyBkcml2aWVyLlxuICA0NTpcdFxuICA0NjpcdFx0ICBOT1RFOiB0aGlzIGlzIGxpbnV4IG9ubHkgZmVhdHVyZS4gV2luZG93cyB3aWxsIGlnbm9yZSB0aGVzZSBBQ0xzLlxuICA0NzpcdFxuICA0ODpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjMyCgkJCQkJCQlvdXRwdXQ6IDEzMAoJCQkJCQkJdGhvdWdodHM6IDMyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOVEZTIEZpbGVzeXN0ZW0gRnV6emluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgdGhlIG9sZCBgTlRGU19SV2Agb3B0aW9uIGlzIGdvbmUsIG9yIG1heWJlIHdyaXRlIHN1cHBvcnQgaXMganVzdCBhbHdheXMgZW5hYmxlZCBub3cgaW4gdGhlIG5ldyBgZnMvbnRmc2AgZHJpdmVyLiBPciBwZXJoYXBzIGBmcy9udGZzYCBpcyB0aGUgdXBkYXRlZCB2ZXJzaW9uIGFuZCBgTlRGU19SV2Agd2FzIGRlcHJlY2F0ZWQuIEVpdGhlciB3YXksIGBOVEZTX0ZTYCBpcyB0aGUgb25seSBjb25maWcgdG8gd29ycnkgYWJvdXQgbm93LgoKTGV0IG1lIGNvbmZpcm0gdGhhdCBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlLi4uIFllcCwgYG50ZnNfZmFsbG9jYXRlYCBjYWxscyBgbnRmc19hbGxvY2F0ZV9yYW5nZWAsIHdoaWNoICpkb2VzKiBjYWxsIGBudGZzX2F0dHJfZmFsbG9jYXRlYC4gR29vZCwgZ29vZC4KClRoaXMgaXMgYSByZWFsIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGlzIHBhdGNoIGlzIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgdXNlLWFmdGVyLWZyZWUgaXNzdWUsIGFuZCBpdCYjMzk7cyBkb2luZyBpdCBieSBjYWNoaW5nIHRob3NlIGBybGAgZmllbGRzIGJlZm9yZSBkcm9wcGluZyB0aGUgbG9jay4gSXQgYWxzbyBzdG9wcyBhbiBpbmNvcnJlY3QgY2FsbCB0byBgbnRmc19kaW9femVyb19yYW5nZWAgd2hlbiBgYmFsbG9jYCBpcyBmYWxzZS4gRGVmaW5pdGVseSB3b3J0aCBjaGVja2luZyB3aXRoIGZ1enppbmcuCgpJJiMzOTttIHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYC4KCkZvY3VzIFN5bWJvbHMgYXJlIGdvaW5nIHRvIGJlIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBhbmQgYG50ZnNfZmFsbG9jYXRlYC4KCkFuZCwgYXMgZXhwZWN0ZWQsIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQgZW5hYmxlZCBpcyBgTlRGU19GU2AuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3MgSSBuZWVkIHRvIGNvbnNpZGVyLi4uIE5vcGUsIGBOVEZTX0ZTYCBpcyBzdWZmaWNpZW50LgoKVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkOiBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBpcyBiZWluZyBhZGRyZXNzZWQsIGFsb25nIHdpdGggYSBidWcgZml4IGluIHRoZSBgZmFsbG9jYXRlYCBwYXRoLiBUaGlzIGlzIGEgY3J1Y2lhbCBhcmVhIG9mIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIGFuZCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2YWxpZGF0ZSB0aGUgcGF0Y2gmIzM5O3MgZWZmaWNhY3kgYW5kIHVuY292ZXIgYW55IHBvdGVudGlhbCByZWdyZXNzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2F0dHJfZmFsbG9jYXRlJiMzNDssCiAgICAmIzM0O250ZnNfZmFsbG9jYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGJ5IGNhY2hpbmcgcnVubGlzdCBlbGVtZW50IGZpZWxkcyBiZWZvcmUgZHJvcHBpbmcgdGhlIHJ1bmxpc3QgbG9jay4gSXQgYWxzbyBmaXhlcyBhIGJ1ZyB3aGVyZSBgbnRmc19kaW9femVyb19yYW5nZWAgd2FzIGNhbGxlZCBpbmNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0mIzM5O3MgZmFsbG9jYXRlIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOVEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnRmc19hdHRyX2ZhbGxvY2F0ZSYjMzQ7LAogICAgJiMzNDtudGZzX2ZhbGxvY2F0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBieSBjYWNoaW5nIHJ1bmxpc3QgZWxlbWVudCBmaWVsZHMgYmVmb3JlIGRyb3BwaW5nIHRoZSBydW5saXN0IGxvY2suIEl0IGFsc28gZml4ZXMgYSBidWcgd2hlcmUgYG50ZnNfZGlvX3plcm9fcmFuZ2VgIHdhcyBjYWxsZWQgaW5jb3JyZWN0bHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtJiMzOTtzIGZhbGxvY2F0ZSBwYXRoIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjMyLjQ2ODUyNzk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzMDAyNDY4MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfYXR0cl9mYWxsb2NhdGVcIixcbiAgICBcIm50ZnNfZmFsbG9jYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbi91c2UtYWZ0ZXItZnJlZSBpbiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgYnkgY2FjaGluZyBydW5saXN0IGVsZW1lbnQgZmllbGRzIGJlZm9yZSBkcm9wcGluZyB0aGUgcnVubGlzdCBsb2NrLiBJdCBhbHNvIGZpeGVzIGEgYnVnIHdoZXJlIGBudGZzX2Rpb196ZXJvX3JhbmdlYCB3YXMgY2FsbGVkIGluY29ycmVjdGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSdzIGZhbGxvY2F0ZSBwYXRoIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDQ6NDE6MzIuNDY4NTMyMzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMDY2Njc0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDdjNzM4OWYzMWM5ZTk3YTgwZTM1ZDE4NGE0YTFjNDRmMWViMWZlNjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdW4gMjcgMDQ6NDE6MzEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9hdHRyaWIuYyBiL2ZzL250ZnMvYXR0cmliLmNcXG5pbmRleCBkZDg4MjgwOTg1MTE4My4uYTk5Yjg0NzUxZWIxMjIgMTAwNjQ0XFxuLS0tIGEvZnMvbnRmcy9hdHRyaWIuY1xcbisrKyBiL2ZzL250ZnMvYXR0cmliLmNcXG5AQCAtNTUzNiw2ICs1NTM2LDcgQEAgaW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9cXG4gXFx0czY0IG9sZF9kYXRhX3NpemU7XFxuIFxcdHM2NCB2Y25fc3RhcnQsIHZjbl9lbmQsIHZjbl91bmluaXQsIHZjbiwgdHJ5X2FsbG9jX2NudDtcXG4gXFx0czY0IGxjbiwgYWxsb2NfY250O1xcbitcXHRzNjQgcmxfbGNuLCBybF9sZW5ndGgsIHJsX3ZjbjtcXG4gXFx0aW50IGVyciA9IDA7XFxuIFxcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsO1xcbiBcXHRib29sIGJhbGxvYztcXG5AQCAtNTYxNSwxOSArNTYxNiwyMyBAQCBpbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib1xcbiBcXHR3aGlsZSAodmNuIFxcdTAwM2MgdmNuX3VuaW5pdCkge1xcbiBcXHRcXHRkb3duX3JlYWQoXFx1MDAyNm5pLVxcdTAwM2VydW5saXN0LmxvY2spO1xcbiBcXHRcXHRybCA9IG50ZnNfYXR0cl9maW5kX3Zjbl9ub2xvY2sobmksIHZjbiwgTlVMTCk7XFxuLVxcdFxcdHVwX3JlYWQoXFx1MDAyNm5pLVxcdTAwM2VydW5saXN0LmxvY2spO1xcbiBcXHRcXHRpZiAoSVNfRVJSKHJsKSkge1xcbitcXHRcXHRcXHR1cF9yZWFkKFxcdTAwMjZuaS1cXHUwMDNlcnVubGlzdC5sb2NrKTtcXG4gXFx0XFx0XFx0ZXJyID0gUFRSX0VSUihybCk7XFxuIFxcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRcXHR9XFxuK1xcdFxcdHJsX2xjbiA9IHJsLVxcdTAwM2VsY247XFxuK1xcdFxcdHJsX2xlbmd0aCA9IHJsLVxcdTAwM2VsZW5ndGg7XFxuK1xcdFxcdHJsX3ZjbiA9IHJsLVxcdTAwM2V2Y247XFxuK1xcdFxcdHVwX3JlYWQoXFx1MDAyNm5pLVxcdTAwM2VydW5saXN0LmxvY2spO1xcbiBcXG4tXFx0XFx0aWYgKHJsLVxcdTAwM2VsY24gXFx1MDAzZSAwKSB7XFxuLVxcdFxcdFxcdHZjbiArPSBybC1cXHUwMDNlbGVuZ3RoIC0gKHZjbiAtIHJsLVxcdTAwM2V2Y24pO1xcbi1cXHRcXHR9IGVsc2UgaWYgKHJsLVxcdTAwM2VsY24gPT0gTENOX0RFTEFMTE9DIHx8IHJsLVxcdTAwM2VsY24gPT0gTENOX0hPTEUpIHtcXG4tXFx0XFx0XFx0dHJ5X2FsbG9jX2NudCA9IG1pbihybC1cXHUwMDNlbGVuZ3RoIC0gKHZjbiAtIHJsLVxcdTAwM2V2Y24pLFxcbitcXHRcXHRpZiAocmxfbGNuIFxcdTAwM2UgMCkge1xcbitcXHRcXHRcXHR2Y24gKz0gcmxfbGVuZ3RoIC0gKHZjbiAtIHJsX3Zjbik7XFxuK1xcdFxcdH0gZWxzZSBpZiAocmxfbGNuID09IExDTl9ERUxBTExPQyB8fCBybF9sY24gPT0gTENOX0hPTEUpIHtcXG4rXFx0XFx0XFx0dHJ5X2FsbG9jX2NudCA9IG1pbihybF9sZW5ndGggLSAodmNuIC0gcmxfdmNuKSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIHZjbl91bmluaXQgLSB2Y24pO1xcbiBcXG4tXFx0XFx0XFx0aWYgKHJsLVxcdTAwM2VsY24gPT0gTENOX0RFTEFMTE9DKSB7XFxuK1xcdFxcdFxcdGlmIChybF9sY24gPT0gTENOX0RFTEFMTE9DKSB7XFxuIFxcdFxcdFxcdFxcdHZjbiArPSB0cnlfYWxsb2NfY250O1xcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0XFx0fVxcbkBAIC01NjQyLDExICs1NjQ3LDE0IEBAIGludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvXFxuIFxcdFxcdFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4tXFx0XFx0XFx0XFx0ZXJyID0gbnRmc19kaW9femVyb19yYW5nZShWRlNfSShuaSksXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgbGNuIFxcdTAwM2NcXHUwMDNjIHZvbC1cXHUwMDNlY2x1c3Rlcl9zaXplX2JpdHMsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgYWxsb2NfY250IFxcdTAwM2NcXHUwMDNjIHZvbC1cXHUwMDNlY2x1c3Rlcl9zaXplX2JpdHMpO1xcbi1cXHRcXHRcXHRcXHRpZiAoZXJyIFxcdTAwM2UgMClcXG4tXFx0XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdFxcdGlmIChiYWxsb2MpIHtcXG4rXFx0XFx0XFx0XFx0XFx0ZXJyID0gbnRmc19kaW9femVyb19yYW5nZShWRlNfSShuaSksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgbGNuIFxcdTAwM2NcXHUwMDNjIHZvbC1cXHUwMDNlY2x1c3Rlcl9zaXplX2JpdHMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgYWxsb2NfY250IFxcdTAwM2NcXHUwMDNjXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgdm9sLVxcdTAwM2VjbHVzdGVyX3NpemVfYml0cyk7XFxuK1xcdFxcdFxcdFxcdFxcdGlmIChlcnIgXFx1MDAzZSAwKVxcbitcXHRcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0XFx0fVxcbiBcXG4gXFx0XFx0XFx0XFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxcbiBcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDQ6NDE6MzIuODc5OTQwMDk3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDg4ODgyNjAzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19hdHRyX2ZhbGxvY2F0ZVwiLFxuICAgIFwibnRmc19mYWxsb2NhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBieSBjYWNoaW5nIHJ1bmxpc3QgZWxlbWVudCBmaWVsZHMgYmVmb3JlIGRyb3BwaW5nIHRoZSBydW5saXN0IGxvY2suIEl0IGFsc28gZml4ZXMgYSBidWcgd2hlcmUgYG50ZnNfZGlvX3plcm9fcmFuZ2VgIHdhcyBjYWxsZWQgaW5jb3JyZWN0bHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtJ3MgZmFsbG9jYXRlIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDdjNzM4OWYzMWM5ZTk3YTgwZTM1ZDE4NGE0YTFjNDRmMWViMWZlNjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwNDo0MTozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvYXR0cmliLmMgYi9mcy9udGZzL2F0dHJpYi5jXG5pbmRleCBkZDg4MjgwOTg1MTE4My4uYTk5Yjg0NzUxZWIxMjIgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL2F0dHJpYi5jXG4rKysgYi9mcy9udGZzL2F0dHJpYi5jXG5AQCAtNTUzNiw2ICs1NTM2LDcgQEAgaW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9cbiBcdHM2NCBvbGRfZGF0YV9zaXplO1xuIFx0czY0IHZjbl9zdGFydCwgdmNuX2VuZCwgdmNuX3VuaW5pdCwgdmNuLCB0cnlfYWxsb2NfY250O1xuIFx0czY0IGxjbiwgYWxsb2NfY250O1xuK1x0czY0IHJsX2xjbiwgcmxfbGVuZ3RoLCBybF92Y247XG4gXHRpbnQgZXJyID0gMDtcbiBcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsO1xuIFx0Ym9vbCBiYWxsb2M7XG5AQCAtNTYxNSwxOSArNTYxNiwyMyBAQCBpbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib1xuIFx0d2hpbGUgKHZjbiBcdTAwM2MgdmNuX3VuaW5pdCkge1xuIFx0XHRkb3duX3JlYWQoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiBcdFx0cmwgPSBudGZzX2F0dHJfZmluZF92Y25fbm9sb2NrKG5pLCB2Y24sIE5VTEwpO1xuLVx0XHR1cF9yZWFkKFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QubG9jayk7XG4gXHRcdGlmIChJU19FUlIocmwpKSB7XG4rXHRcdFx0dXBfcmVhZChcdTAwMjZuaS1cdTAwM2VydW5saXN0LmxvY2spO1xuIFx0XHRcdGVyciA9IFBUUl9FUlIocmwpO1xuIFx0XHRcdGdvdG8gb3V0O1xuIFx0XHR9XG4rXHRcdHJsX2xjbiA9IHJsLVx1MDAzZWxjbjtcbitcdFx0cmxfbGVuZ3RoID0gcmwtXHUwMDNlbGVuZ3RoO1xuK1x0XHRybF92Y24gPSBybC1cdTAwM2V2Y247XG4rXHRcdHVwX3JlYWQoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiBcbi1cdFx0aWYgKHJsLVx1MDAzZWxjbiBcdTAwM2UgMCkge1xuLVx0XHRcdHZjbiArPSBybC1cdTAwM2VsZW5ndGggLSAodmNuIC0gcmwtXHUwMDNldmNuKTtcbi1cdFx0fSBlbHNlIGlmIChybC1cdTAwM2VsY24gPT0gTENOX0RFTEFMTE9DIHx8IHJsLVx1MDAzZWxjbiA9PSBMQ05fSE9MRSkge1xuLVx0XHRcdHRyeV9hbGxvY19jbnQgPSBtaW4ocmwtXHUwMDNlbGVuZ3RoIC0gKHZjbiAtIHJsLVx1MDAzZXZjbiksXG4rXHRcdGlmIChybF9sY24gXHUwMDNlIDApIHtcbitcdFx0XHR2Y24gKz0gcmxfbGVuZ3RoIC0gKHZjbiAtIHJsX3Zjbik7XG4rXHRcdH0gZWxzZSBpZiAocmxfbGNuID09IExDTl9ERUxBTExPQyB8fCBybF9sY24gPT0gTENOX0hPTEUpIHtcbitcdFx0XHR0cnlfYWxsb2NfY250ID0gbWluKHJsX2xlbmd0aCAtICh2Y24gLSBybF92Y24pLFxuIFx0XHRcdFx0XHQgICAgdmNuX3VuaW5pdCAtIHZjbik7XG4gXG4tXHRcdFx0aWYgKHJsLVx1MDAzZWxjbiA9PSBMQ05fREVMQUxMT0MpIHtcbitcdFx0XHRpZiAocmxfbGNuID09IExDTl9ERUxBTExPQykge1xuIFx0XHRcdFx0dmNuICs9IHRyeV9hbGxvY19jbnQ7XG4gXHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHR9XG5AQCAtNTY0MiwxMSArNTY0NywxNCBAQCBpbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib1xuIFx0XHRcdFx0aWYgKGVycilcbiBcdFx0XHRcdFx0Z290byBvdXQ7XG4gXG4tXHRcdFx0XHRlcnIgPSBudGZzX2Rpb196ZXJvX3JhbmdlKFZGU19JKG5pKSxcbi1cdFx0XHRcdFx0XHRcdCAgbGNuIFx1MDAzY1x1MDAzYyB2b2wtXHUwMDNlY2x1c3Rlcl9zaXplX2JpdHMsXG4tXHRcdFx0XHRcdFx0XHQgIGFsbG9jX2NudCBcdTAwM2NcdTAwM2Mgdm9sLVx1MDAzZWNsdXN0ZXJfc2l6ZV9iaXRzKTtcbi1cdFx0XHRcdGlmIChlcnIgXHUwMDNlIDApXG4tXHRcdFx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdFx0aWYgKGJhbGxvYykge1xuK1x0XHRcdFx0XHRlcnIgPSBudGZzX2Rpb196ZXJvX3JhbmdlKFZGU19JKG5pKSxcbitcdFx0XHRcdFx0XHRcdFx0ICBsY24gXHUwMDNjXHUwMDNjIHZvbC1cdTAwM2VjbHVzdGVyX3NpemVfYml0cyxcbitcdFx0XHRcdFx0XHRcdFx0ICBhbGxvY19jbnQgXHUwMDNjXHUwMDNjXG4rXHRcdFx0XHRcdFx0XHRcdCAgdm9sLVx1MDAzZWNsdXN0ZXJfc2l6ZV9iaXRzKTtcbitcdFx0XHRcdFx0aWYgKGVyciBcdTAwM2UgMClcbitcdFx0XHRcdFx0XHRnb3RvIG91dDtcbitcdFx0XHRcdH1cbiBcbiBcdFx0XHRcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcbiBcdFx0XHRcdFx0Z290byBvdXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MTozMi44Nzk5NDEzOTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDE5OTE2NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoIHRvIGBudGZzX2F0dHJfZmFsbG9jYXRlYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGluIGBmcy9udGZzL2F0dHJpYi5jYC4gVGhlIGNoYW5nZXMgc2VlbSBzdHJhaWdodGZvcndhcmQgZW5vdWdoOiByZWFkaW5nIGBybGAgZmllbGRzIHVuZGVyIHRoZSBgcnVubGlzdC5sb2NrYCBhbmQgY29uZGl0aW9uYWxseSBjYWxsaW5nIGBudGZzX2Rpb196ZXJvX3JhbmdlYCBiYXNlZCBvbiB0aGUgYGJhbGxvY2AgZmxhZy4gU2VlbXMgcHJldHR5IHN0YW5kYXJkIGZvciBvcHRpbWl6aW5nIE5URlMuIEJ1dC4uLndhaXQgYSBzZWNvbmQuIGBmcy9udGZzL2F0dHJpYi5jYD8gVGhhdCdzIHRocm93aW5nIGEgZmxhZy4gSXMgdGhpcyBmb3IgdGhlIG9sZCBOVEZTIGRyaXZlciBvciB0aGUgbmV3ZXIgYG50ZnMzYD8gSSBuZWVkIHRvIGNsYXJpZnkgd2hpY2ggZHJpdmVyIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLCBiZWNhdXNlIHRoZXkgaGF2ZSBkaWZmZXJlbnQgc3RydWN0dXJlcy5cblxuTGV0J3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYGZzL250ZnNgIGV2ZW4gZXhpc3RzLCBvciBpZiBpdCdzIGJlZW4gc3VwZXJzZWRlZCBieSBgZnMvbnRmczNgLiBNZW1vcnkgam9nIC0gbm93ICp0aGF0KiBmdW5jdGlvbiBuYW1lLCBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAuLi4gZG9lc24ndCByaW5nIGEgYmVsbCBmcm9tIHRoZSBvbGQgZHJpdmVyLiBIbW0sIEkgYmV0dGVyIGRpZyBpbnRvIHRoaXMgYW5kIGNvbmZpcm0uIExvb2tzIGxpa2UgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGZpbGUgcGF0aCBhZ2FpbnN0IGJvdGggZGlyZWN0b3JpZXMuIFRoaXMgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCBzb3VyY2Ugb2YgY29uZnVzaW9uIG9yIGV2ZW4gYSBidWcgaWYgd2UncmUgbm90IGNhcmVmdWwuIExldCdzIGdldCB0aGUgcmlnaHQgY29udGV4dCFcblxuXG4iLCJJbnB1dFRva2VucyI6MjU0NiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjM3Ljg5OTg1OTY3OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc3MTQ4NjExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50ZnNfYXR0cl9mYWxsb2NhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9hdHRyaWIuYz01NDc0PWludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX3B1bmNoX2hvbGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKVxcbi0tXFxuZnMvbnRmcy9hdHRyaWIuYy01NTMwLVxcbmZzL250ZnMvYXR0cmliLmM6NTUzMTppbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib29sIGtlZXBfc2l6ZSlcXG5mcy9udGZzL2F0dHJpYi5jLTU1MzIte1xcbi0tXFxuZnMvbnRmcy9hdHRyaWIuaD0xMDc9dm9pZCBudGZzX2F0dHJfY2xvc2Uoc3RydWN0IG50ZnNfaW5vZGUgKm4pO1xcbmZzL250ZnMvYXR0cmliLmg6MTA4OmludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvb2wga2VlcF9zaXplKTtcXG5mcy9udGZzL2F0dHJpYi5oLTEwOS1pbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKTtcXG4tLVxcbmZzL250ZnMvZmlsZS5jPTgzMz1zdGF0aWMgaW50IG50ZnNfYWxsb2NhdGVfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCxcXG4tLVxcbmZzL250ZnMvZmlsZS5jLTg2My1cXG5mcy9udGZzL2ZpbGUuYzo4NjQ6XFx0ZXJyID0gbnRmc19hdHRyX2ZhbGxvY2F0ZShuaSwgb2Zmc2V0LCBsZW4sXFxuZnMvbnRmcy9maWxlLmMtODY1LVxcdFxcdFxcdG1vZGUgXFx1MDAyNiBGQUxMT0NfRkxfS0VFUF9TSVpFID8gdHJ1ZSA6IGZhbHNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDQ6NDE6MzkuOTc3MDEzNTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjA4NDc5MjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTmF2aWdhdGluZyB0aGUgTlRGUyBGaWxlIFN5c3RlbSBEcml2ZXJzKipcblxuUmlnaHQsIHNvIEkgc2VlIGBmcy9udGZzL2F0dHJpYi5jYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgXCJXYWl0IGEgbWludXRlLCBpc24ndCBgZnMvbnRmc2AgdGhlIGxlZ2FjeSBkcml2ZXI/XCIgQnV0IHRoZW4gSSBoYXZlIHRvIG1lbnRhbGx5IGRvdWJsZS1jaGVjayBiZWNhdXNlIEkga25vdyB0aGUgbGFuZHNjYXBlIGhhcyBldm9sdmVkLiBJdOKAmXMgZW50aXJlbHkgcG9zc2libGUgdGhhdCBpbiAqdGhpcyogcGFydGljdWxhciBidWlsZCBvciBrZXJuZWwgdHJlZSwgc29tZW9uZSdzIHJlbmFtZWQgdGhlIGRpcmVjdG9yeSB0byBgZnMvbnRmczNgLCBvciBwZXJoYXBzIGl04oCZcyBzdGlsbCB1c2luZyB0aGUgb2xkZXIgcGF0aHMuXG5cbkdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHRoYXQgY29uZnVzaW9uLCBJIHNob3VsZCBjb25maXJtIHRoZSBkcml2ZXIgdGhhdCB0aGlzIGlzIGxpbmtlZCB0by4gTXkgbmV4dCBzdGVwIGhhcyB0byBiZSBjaGVja2luZyB0aGUgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZS4gVGhhdCB3aWxsIGRlZmluaXRpdmVseSB0ZWxsIG1lIHdoaWNoIGRyaXZlciBhbmQgZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYW5kIHdoYXQgdGhpcyBtb2R1bGUgaXMgYWN0dWFsbHkgaW50ZW5kZWQgZm9yLiBJdOKAmXMgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gYXZvaWQgd2FzdGluZyB0aW1lIG9uIHRoZSB3cm9uZyBjb2RlIGJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0ODUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MTo0My4xODU0OTQ3NDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2NTY5MzQxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlRGU19GU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xcbmZzL250ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcXG4tLVxcbmZzL250ZnMvS2NvbmZpZy0zNC1cXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuZnMvbnRmcy9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjQ1LjE1MTE5MjA1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTM2MzIzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgTlRGUyBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJJ20gcG9raW5nIGFyb3VuZCwgYW5kIGl0IGxvb2tzIGxpa2UgYGZzL250ZnNgIGlzIHN0aWxsIHRoZSBkaXJlY3RvcnkuIEdvb2QuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0LiBBaCwgcmlnaHQsIGBOVEZTX0ZTYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiwgbm90IHRoZSBmaWxlIHN5c3RlbSBpdHNlbGYuIEhtbSwgd2hlcmUncyB0aGF0IGBudGZzX2F0dHJfZmFsbG9jYXRlYCBmdW5jdGlvbj8gUmlnaHQsIGBmcy9udGZzL2F0dHJpYi5jYC4gSnVzdCBjb25maXJtaW5nIHRoYXQgYE5URlNfRlNgIGlzIHRoZSBtYWluIGNvbmZpZyBvcHRpb24uIFllcCwgdGhlcmUgaXQgaXMuIEhvbGQgb24sIGNvdWxkIGBOVEZTX1JXYCBiZSBpbnZvbHZlZCB0b28/IExldCdzIHF1aWNrbHkgc2NhbiBgZnMvbnRmcy9LY29uZmlnYCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTksIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDQ6NDE6NDguMjA0ODI2Mjc4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzMxNDAyNzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX1JXXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MTo0OS45Nzc5NzI2OTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzkxODkyMDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhhdCBgZnMvbnRmcy9LY29uZmlnYCBmaWxlLCBhcyBJIHVuZGVyc3RhbmQgaXQ6XG5cbioqTlRGUyBDb25maWd1cmF0aW9uIC0gRGVjb2RpbmcgdGhlIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBmcy9udGZzL0tjb25maWdgIGZpbGUuIEknbSBhbHJlYWR5IGV4cGVjdGluZyBpdCB0byBvdXRsaW5lIHRoZSB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyIHdpdGhpbiB0aGUga2VybmVsLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBmb2N1c2luZyBvbiBob3cgaXQgcHJlc2VudHMgdGhlIG9wdGlvbnMsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBzdWJ0bGUgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBzZWN1cml0eS4gSSdtIGFudGljaXBhdGluZyBmaW5kaW5nIHRoZSB1c3VhbCBzdXNwZWN0czogc3VwcG9ydCBmb3IgcmVhZC93cml0ZSBhY2Nlc3MsIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIHBlcmhhcHMgZXZlbiBqb3VybmFsIHJlY292ZXJ5IG9wdGlvbnMuIE15IGdvYWwgaXMgdG8gc2VlIGhvdyB0aGUgZGV2ZWxvcGVycyBoYXZlIGJhbGFuY2VkIGZ1bmN0aW9uYWxpdHkgd2l0aCBwb3RlbnRpYWwgcmVzb3VyY2UgY29uc3RyYWludHMuIEknbGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBmZWF0dXJlcy4gRmluYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyByZWdhcmRpbmcgYW55IGNoYW5nZXMgb3IgaW1wcm92ZW1lbnRzIG1hZGUgdG8gdGhlIGRyaXZlciBvdmVyIHRoZSBoaXN0b3J5IG9mIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXkncmUgYWRkcmVzc2luZyBhbnkgcHJldmlvdXMgd2Vha25lc3NlcyBvciBwcm9ibGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIwMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjUyLjc2OTg2Njc5N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODc0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9udGZzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTlRGU19GU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk5URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdHNlbGVjdCBOTFNcXG4gICA1OlxcdFxcdHNlbGVjdCBGU19JT01BUFxcbiAgIDY6XFx0XFx0aGVscFxcbiAgIDc6XFx0XFx0ICBOVEZTIGlzIHRoZSBmaWxlIHN5c3RlbSBvZiBNaWNyb3NvZnQgV2luZG93cyBOVCwgMjAwMCwgWFAgYW5kIDIwMDMuXFxuICAgODpcXHRcXHQgIFRoaXMgYWxsb3dzIHlvdSB0byBtb3VudCBkZXZpY2VzIGZvcm1hdHRlZCB3aXRoIHRoZSBudGZzIGZpbGUgc3lzdGVtLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxcbiAgMTE6XFx0XFx0ICBudGZzLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRjb25maWcgTlRGU19ERUJVR1xcbiAgMTQ6XFx0XFx0Ym9vbCBcXFwiTlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFxcXCJcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gTlRGU19GU1xcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgTlRGUyBmaWxlIHN5c3RlbSwgc2F5XFxuICAxODpcXHRcXHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYWRkaXRpb25hbCBjb25zaXN0ZW5jeSBjaGVja3MgdG8gYmVcXG4gIDE5OlxcdFxcdCAgcGVyZm9ybWVkIGJ5IHRoZSBkcml2ZXIgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIGRlYnVnZ2luZyBtZXNzYWdlcyB0b1xcbiAgMjA6XFx0XFx0ICBiZSB3cml0dGVuIHRvIHRoZSBzeXN0ZW0gbG9nLiAgTm90ZSB0aGF0IGRlYnVnZ2luZyBtZXNzYWdlcyBhcmVcXG4gIDIxOlxcdFxcdCAgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIFRvIGVuYWJsZSB0aGVtLCBzdXBwbHkgdGhlIG9wdGlvbiBkZWJ1Z19tc2dzPTFcXG4gIDIyOlxcdFxcdCAgYXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgd2hlbiBib290aW5nIHRoZSBrZXJuZWwgb3IgYXMgYW4gb3B0aW9uXFxuICAyMzpcXHRcXHQgIHRvIGluc21vZCB3aGVuIGxvYWRpbmcgdGhlIG50ZnMgbW9kdWxlLiAgT25jZSB0aGUgZHJpdmVyIGlzIGFjdGl2ZSxcXG4gIDI0OlxcdFxcdCAgeW91IGNhbiBlbmFibGUgZGVidWdnaW5nIG1lc3NhZ2VzIGJ5IGRvaW5nIChhcyByb290KTpcXG4gIDI1OlxcdFxcdCAgZWNobyAxIFxcdTAwM2UgL3Byb2Mvc3lzL2ZzL250ZnMtZGVidWdcXG4gIDI2OlxcdFxcdCAgUmVwbGFjaW5nIHRoZSBcXFwiMVxcXCIgd2l0aCBcXFwiMFxcXCIgd291bGQgZGlzYWJsZSBkZWJ1ZyBtZXNzYWdlcy5cXG4gIDI3OlxcdFxcbiAgMjg6XFx0XFx0ICBJZiB5b3UgbGVhdmUgZGVidWdnaW5nIG1lc3NhZ2VzIGRpc2FibGVkLCB0aGlzIHJlc3VsdHMgaW4gbGl0dGxlXFxuICAyOTpcXHRcXHQgIG92ZXJoZWFkLCBidXQgZW5hYmxpbmcgZGVidWcgbWVzc2FnZXMgcmVzdWx0cyBpbiB2ZXJ5IHNpZ25pZmljYW50XFxuICAzMDpcXHRcXHQgIHNsb3dkb3duIG9mIHRoZSBzeXN0ZW0uXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgV2hlbiByZXBvcnRpbmcgYnVncywgcGxlYXNlIHRyeSB0byBoYXZlIGF2YWlsYWJsZSBhIGZ1bGwgZHVtcCBvZlxcbiAgMzM6XFx0XFx0ICBkZWJ1Z2dpbmcgbWVzc2FnZXMgd2hpbGUgdGhlIG1pc2JlaGF2aW91ciB3YXMgb2NjdXJyaW5nLlxcbiAgMzQ6XFx0XFxuICAzNTpcXHRjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG4gIDM2OlxcdFxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuICAzNzpcXHRcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG4gIDM4OlxcdFxcdHNlbGVjdCBGU19QT1NJWF9BQ0xcXG4gIDM5OlxcdFxcdGhlbHBcXG4gIDQwOlxcdFxcdCAgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpIHN1cHBvcnQgYWRkaXRpb25hbCBhY2Nlc3MgcmlnaHRzXFxuICA0MTpcXHRcXHQgIGZvciB1c2VycyBhbmQgZ3JvdXBzIGJleW9uZCB0aGUgc3RhbmRhcmQgb3duZXIvZ3JvdXAvd29ybGQgc2NoZW1lLlxcbiAgNDI6XFx0XFxuICA0MzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgQUNMIHN1cHBvcnQgZm9yIG50ZnMsIHByb3ZpZGluZyBmdW5jdGlvbmFsIHBhcml0eVxcbiAgNDQ6XFx0XFx0ICB3aXRoIG50ZnMzIGRyaXZpZXIuXFxuICA0NTpcXHRcXG4gIDQ2OlxcdFxcdCAgTk9URTogdGhpcyBpcyBsaW51eCBvbmx5IGZlYXR1cmUuIFdpbmRvd3Mgd2lsbCBpZ25vcmUgdGhlc2UgQUNMcy5cXG4gIDQ3OlxcdFxcbiAgNDg6XFx0XFx0ICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IEFjY2VzcyBDb250cm9sIExpc3RzIGFyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjUyLjc2OTkyNzE0N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk3MDc0MTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgTlRGUyBGYWxsb2NhdGUgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIGRpZG4ndCBJIHRoaW5rIEkgcmVtZW1iZXJlZCBhbiBgTlRGU19SV2AgbW9kdWxlIGF0IHNvbWUgcG9pbnQ/IE9yIHdhcyB0aGF0IGRlcHJlY2F0ZWQgb3IgbWVyZ2VkIGludG8gc29tZXRoaW5nIGVsc2U/IEkgc2hvdWxkIHByb2JhYmx5IGp1c3QgZm9jdXMgb24gYE5URlNfRlNgIGZvciBub3cuIFNlZSBpZiB0aGF0J3Mgc3VmZmljaWVudCBmb3IgbXkgbmVlZHMuXG5cblJpZ2h0LCB0aGUgcGF0Y2ggbWVudGlvbnMgYSBidWcgaW4gYG50ZnNfYXR0cl9mYWxsb2NhdGVgLiBUaGF0J3MgdGhlIGtleS4gTGV0J3MgdHJhY2UgdGhpcyBiYWNrLiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgaXMgY2FsbGVkIGJ5IGBudGZzX2FsbG9jYXRlX3JhbmdlYCwgd2hpY2guLi4gYWhhISBUaGF0J3MgY2FsbGVkIGJ5IGBudGZzX2ZhbGxvY2F0ZWAuIE9rYXksIG5vdyBJIG5lZWQgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvZiBgbnRmc19mYWxsb2NhdGVgLlxuXG5UaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4gSSdsbCBuZWVkIHRvIGNoZWNrIGBmcy9udGZzL2ZpbGUuY2AgdG8gY29uZmlybSB3aGVyZSBgbnRmc19mYWxsb2NhdGVgIGlzIGltcGxlbWVudGVkIGFuZCBob3cgaXQgaXMgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE5MCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjU2LjY2NzAwMzI1M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5ODQ2OTUwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX2ZhbGxvY2F0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2ZpbGUuYz05OTQ9c3RhdGljIGludCBudGZzX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuLS1cXG5mcy9udGZzL2ZpbGUuYy0xMDU0LVxcbmZzL250ZnMvZmlsZS5jOjEwNTU6c3RhdGljIGxvbmcgbnRmc19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxcbmZzL250ZnMvZmlsZS5jLTEwNTYte1xcbi0tXFxuZnMvbnRmcy9maWxlLmM9MTE0Nj1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG50ZnNfZmlsZV9vcHMgPSB7XFxuLS1cXG5mcy9udGZzL2ZpbGUuYy0xMTU5LSNlbmRpZlxcbmZzL250ZnMvZmlsZS5jOjExNjA6XFx0LmZhbGxvY2F0ZVxcdD0gbnRmc19mYWxsb2NhdGUsXFxuZnMvbnRmcy9maWxlLmMtMTE2MS1cXHQuc2V0bGVhc2VcXHQ9IGdlbmVyaWNfc2V0bGVhc2UsXFxuLS1cXG5mcy9udGZzMy9maWxlLmM9MzgxPXN0YXRpYyBpbnQgbnRmc19maWxlX21tYXBfcHJlcGFyZShzdHJ1Y3Qgdm1fYXJlYV9kZXNjICpkZXNjKVxcbi0tXFxuZnMvbnRmczMvZmlsZS5jLTQ1Ny0vKlxcbmZzL250ZnMzL2ZpbGUuYzo0NTg6ICogbnRmc19mYWxsb2NhdGUgLSBmaWxlX29wZXJhdGlvbnM6Om50ZnNfZmFsbG9jYXRlXFxuZnMvbnRmczMvZmlsZS5jLTQ1OS0gKlxcbi0tXFxuZnMvbnRmczMvZmlsZS5jLTQ2NS0gKi9cXG5mcy9udGZzMy9maWxlLmM6NDY2OnN0YXRpYyBsb25nIG50ZnNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IHZibywgbG9mZl90IGxlbilcXG5mcy9udGZzMy9maWxlLmMtNDY3LXtcXG4tLVxcbmZzL250ZnMzL2ZpbGUuYz0xNTY2PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbnRmc19maWxlX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9udGZzMy9maWxlLmMtMTU3OC1cXHQuZnN5bmNcXHRcXHQ9IG50ZnNfZmlsZV9mc3luYyxcXG5mcy9udGZzMy9maWxlLmM6MTU3OTpcXHQuZmFsbG9jYXRlXFx0PSBudGZzX2ZhbGxvY2F0ZSxcXG5mcy9udGZzMy9maWxlLmMtMTU4MC1cXHQucmVsZWFzZVxcdD0gbnRmc19maWxlX3JlbGVhc2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjU4LjQ2NTQ3OTY3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMzIzOTI3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRmlsZSBTeXN0ZW0gUGF0Y2ggZm9yIE5URlMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiV2hlcmUgZG9lcyB0aGlzIHRvdWNoP1wiIEFoLCBgZnMvbnRmcy9maWxlLmNgIGhhcyBgbnRmc19mYWxsb2NhdGVgLCBhbmQgYGZzL250ZnMvYXR0cmliLmNgIGhvbGRzIGBudGZzX2F0dHJfZmFsbG9jYXRlYC4gTGV0IG1lIGNvbmZpcm0sIGl0IHNlZW1zIGBOVEZTX0ZTYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiwgYW5kIG9ubHkgdGhhdCwgZ29vZC4gTm8gb3RoZXIgZGVwZW5kZW5jaWVzLlxuXG5SaWdodCwgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgd2l0aGluIGBhdHRyaWIuY2AuIFRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIGEgYHJsYCB1c2UtYWZ0ZXItZnJlZSBvciBkYXRhIHJhY2UgY29uZGl0aW9uOyB0aGUgY29kZSB3YXMgYWNjZXNzaW5nIGZpZWxkcyBsaWtlIGBybC1cdTAwM2VsY25gLCBgcmwtXHUwMDNlbGVuZ3RoYCwgYW5kIGBybC1cdTAwM2V2Y25gICphZnRlciogdGhlIGBuaS1cdTAwM2VydW5saXN0LmxvY2tgIGhhZCBiZWVuIHJlbGVhc2VkLiBUaGV5IHJlYWQgdGhvc2UgdmFsdWVzIHdoaWxlIHRoZSBsb2NrIHdhcyBoZWxkLCBidXQgdGhlbiB1c2UgdGhlbSBhZnRlciByZWxlYXNpbmcgdGhlIGxvY2ssIHdoaWNoIGlzIGEgdGV4dGJvb2sgZGF0YSByYWNlLiBBbHNvLCB0aGUgcGF0Y2ggd3JhcHMgYG50ZnNfZGlvX3plcm9fcmFuZ2VgIGluIGFuIGBpZiAoYmFsbG9jKWAgY2hlY2ssIHByZXN1bWFibHkgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nIGNhbGxlZCBpbiBpbmFwcHJvcHJpYXRlIHNpdHVhdGlvbnMuXG5cblNvLCB0aGlzIGlzIGEgcHJldHR5IGZ1bmN0aW9uYWwgZml4LCBhZGRyZXNzaW5nIGJvdGggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUvZGF0YSByYWNlIG9uIHRoZSBgcmxgIHN0cnVjdHVyZSBhbmQgYSBidWcgaW4gdGhlIGNvbmRpdGlvbmFsIGNhbGwgdG8gYG50ZnNfZGlvX3plcm9fcmFuZ2VgLlxuXG5JcyB0aGlzIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmc/IEFic29sdXRlbHkuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldCB3b3VsZCBiZSBlaXRoZXIgYG50ZnNfYXR0cl9mYWxsb2NhdGVgIG9yIGBudGZzX2ZhbGxvY2F0ZWAuIE9rYXksIGxldCdzIGNvbmZpcm0gdGhlIHZpc2liaWxpdHkgb2YgYG50ZnNfYXR0cl9mYWxsb2NhdGVgLi4uIEl0J3Mgbm90IHN0YXRpYzsgaXQncyBkZWNsYXJlZCBpbiBgYXR0cmliLmhgIGFuZCBkZWZpbmVkIGluIGBhdHRyaWIuY2AuIFRoZXJlZm9yZSwgaXQncyBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBgbnRmc19mYWxsb2NhdGVgIGlzIGFsc28gYSB2YWxpZCBmb2N1cy5cblxuTGV0IG1lIGRvdWJsZSBjaGVjayB0aGlzIE5URlMgdmVyc2lvbi4gYE5URlNfRlNgLi4uIGlzIHRoYXQgdGhlIG9sZCBkcml2ZXI/IEFoIHllcywgSSBzZWUgbm93LCBgTlRGUzNfRlNgIGlzIHRoZSBuZXcgb25lLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGZzL250ZnMvYXR0cmliLmNgLCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIG9sZCBkcml2ZXIsIGFuZCB5ZXMsIGBOVEZTX0ZTYCBpcyB0aGUgY29uZmlnIG9wdGlvbiBmb3IgdGhhdCBvbGQgZHJpdmVyLiBXYWl0LCBhbSBJIG1pc3Rha2VuLCB3YXNuJ3QgYGZzL250ZnNgIHJlbW92ZWQgaW4gNi4xMz8gTm8sIEkgc2VlIGl0J3Mgc3RpbGwgcHJlc2VudCBpbiB0aGUgY3VycmVudCB0cmVlLlxuXG5JIHNob3VsZCBjaGVjayBpZiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgaXMgcmVhY2hhYmxlLCBhbmQgeWVzLCBpdCBzZWVtcyB0byBiZSB0aHJvdWdoIHRoZSBgZmFsbG9jYXRlYCBzeXNjYWxsIHdoZW4gZGVhbGluZyB3aXRoIGFuIE5URlMgZmlsZS4gVGhhdCdzIGdvb2QuXG5cbk5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgYGZzL250ZnMvYXR0cmliLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGludGVyZXN0aW5nIGZ1bmN0aW9ucyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA1MSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MjowNS41OTc4NzQ1NTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjY0NTc0NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19hdHRyX2ZhbGxvY2F0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2F0dHJpYi5jPTU0NzQ9aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfcHVuY2hfaG9sZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jLTU1MzAtXFxuZnMvbnRmcy9hdHRyaWIuYzo1NTMxOmludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvb2wga2VlcF9zaXplKVxcbmZzL250ZnMvYXR0cmliLmMtNTUzMi17XFxuLS1cXG5mcy9udGZzL2F0dHJpYi5oPTEwNz12b2lkIG50ZnNfYXR0cl9jbG9zZShzdHJ1Y3QgbnRmc19pbm9kZSAqbik7XFxuZnMvbnRmcy9hdHRyaWIuaDoxMDg6aW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9vbCBrZWVwX3NpemUpO1xcbmZzL250ZnMvYXR0cmliLmgtMTA5LWludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xcbi0tXFxuZnMvbnRmcy9maWxlLmM9ODMzPXN0YXRpYyBpbnQgbnRmc19hbGxvY2F0ZV9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxcbi0tXFxuZnMvbnRmcy9maWxlLmMtODYzLVxcbmZzL250ZnMvZmlsZS5jOjg2NDpcXHRlcnIgPSBudGZzX2F0dHJfZmFsbG9jYXRlKG5pLCBvZmZzZXQsIGxlbixcXG5mcy9udGZzL2ZpbGUuYy04NjUtXFx0XFx0XFx0bW9kZSBcXHUwMDI2IEZBTExPQ19GTF9LRUVQX1NJWkUgPyB0cnVlIDogZmFsc2UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MjowNy41NjQzMzU4MDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA2OTI5NjE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTlRGUyBGaWxlc3lzdGVtIEFsbG9jYXRpb24gQ2FsbHMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgaGVyZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBmaWxlIGFsbG9jYXRpb24gd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0uIEkgc2VlIHRoYXQgYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGlzIGJlaW5nIGNhbGxlZCBieSBgbnRmc19hbGxvY2F0ZV9yYW5nZWAsIHdoaWNoIGluIHR1cm4sIGlzIGJlaW5nIGNhbGxlZCBieSBgbnRmc19mYWxsb2NhdGVgLiBUaGVyZWZvcmUsIGBudGZzX2ZhbGxvY2F0ZWAgYW5kIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBhcmUgY2xlYXJseSB0aGUga2V5IHN5bWJvbHMgdG8ga2VlcCBhbiBleWUgb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYW5kIGludGVyYWN0aW9uIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zLlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIGFsbG9jYXRpb24gcGF0aC4gSSBrbm93IGBOVEZTX0ZTYCBpcyB0aGUgbWFpbiBvbmUsIGJ1dCBJIGhhdmUgYSBmZWVsaW5nIHRoZXJlIG1pZ2h0IGJlIGEgd3JpdGUtcmVsYXRlZCBjb25maWd1cmF0aW9uIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBIbW0sIGRpZG4ndCBJIGp1c3QgbG9vayBhdCBgTlRGU19SV2A/IExldCBtZSBkb3VibGUtY2hlY2sgYGZzL250ZnMvS2NvbmZpZ2AuIFllcywgSSdtIGNlcnRhaW4gdGhhdCBgY29uZmlnIE5URlNfUldgIGRpZG4ndCB0dXJuIHVwIGFueSB1c2VmdWwgaW5mb3JtYXRpb24uIEFoLCBidXQgd2FpdCBhIHNlY29uZCwgbGV0IG1lIHRha2UgYSBicm9hZGVyIGFwcHJvYWNoLiBJJ2xsIHNlYXJjaCBgZnMvbnRmcy9LY29uZmlnYCBmb3IgYFJXYCBvciBgV1JJVEVgIG1vcmUgZ2VuZXJhbGx5OyBzb21ldGhpbmcgbW9yZSBzcGVjaWZpYyBtaWdodCBoYXZlIGJlZW4gb3Zlcmxvb2tlZC4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NzYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDQ6NDI6MTEuNjMzNjMzNTM2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDM0OTE3NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUldcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MjoxMS42ODc5ODk0MjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYzNDU4NTc5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIE5URlMgV3JpdGUgSW1wbGVtZW50YXRpb24gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBmaXJzdCBzdGVwIGluIHRhY2tsaW5nIHRoaXMgd3JpdGUgZnVuY3Rpb25hbGl0eSBxdWVzdGlvbiBpbiB0aGUgTlRGUyBtb2R1bGUgaXMgcHJldHR5IGNsZWFyIHRvIG1lOiBJIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGF0IHRoZSByZWxldmFudCBzZXR0aW5ncyB3aWxsIGxpa2VseSBiZSBmb3VuZCBpbiB0aGUgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJ20gemVyb2luZyBpbiBvbiBhbnl0aGluZyByZWxhdGVkIHRvIFwid3JpdGVcIiBjYXBhYmlsaXR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgdGhlcmUgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY29uZmlndXJhdGlvbiBmbGFncywgZGVwZW5kZW5jaWVzLCBvciBkZWZhdWx0IHNldHRpbmdzIHRoYXQgc2hlZCBsaWdodCBvbiBob3cgd3JpdGUgc3VwcG9ydCBpcyBjb250cm9sbGVkIGFuZCBlbmFibGVkIHdpdGhpbiB0aGUgZHJpdmVyLiBUaGlzIGlzIGEgY29tbW9uIHN0YXJ0aW5nIHBvaW50IGZvciBleGFtaW5pbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHdoaWNoIHNob3VsZCByZXZlYWwgdGhlIGNvbmRpdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB0aGF0IGdvdmVybiBob3cgd3JpdGUgc3VwcG9ydCBpcyBjb21waWxlZCBpbnRvIHRoZSBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNDIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MjoxNC4zMjI1NzY3MDJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NDA4OTE3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQyOjE0LjM3ODk5MjAwOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ5MjM2MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipOVEZTIGFuZCBLZXJuZWwgQ29uZmlndXJhdGlvbjogQSBRdWljayBEaXZlKipcblxuT2theSwgc28gSSdtIHNlZWluZyBgZnMvbnRmcy9LY29uZmlnYCBwb3AgdXAgaW4gYW4gb2xkZXIga2VybmVsIGNvbnRleHQsIGFuZCB0aGF0J3MgaW1tZWRpYXRlbHkgcGlxdWluZyBteSBpbnRlcmVzdC4gU3BlY2lmaWNhbGx5LCBJJ20gc3BvdHRpbmcgYGNvbmZpZyBOVEZTX1JXYCwgd2hpY2ggbWVhbnMgdGhlcmUgd2FzIG9uY2UgYSB3cml0YWJsZSBOVEZTIGltcGxlbWVudGF0aW9uLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhbmQgSSBrbm93IHRoYXQgSSBzaG91bGQgYmUgYWJsZSB0byBkaWcgZGVlcGVyLiBUbyBnZXQgdGhlIHdob2xlIHBpY3R1cmUsIEkgbmVlZCB0byByZWFkIHRocm91Z2ggdGhlIGVudGlyZSBgZnMvbnRmcy9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZlYXR1cmUgd2FzIGVuYWJsZWQsIGFuZCBob3cgaXQgZXZvbHZlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHdlbnQgaW50byBpdCwgd2hlcmUgaXQgY2FtZSBmcm9tIGFuZCBsaWtlbHkgd2hhdCB0aGUgaW1wbGljYXRpb25zIHdlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNzgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MjoxNy41MjgyMjk5MjhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbnRmcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5URlNfRlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgTkxTXFxuICAgNTpcXHRcXHRzZWxlY3QgRlNfSU9NQVBcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgTlRGUyBpcyB0aGUgZmlsZSBzeXN0ZW0gb2YgTWljcm9zb2Z0IFdpbmRvd3MgTlQsIDIwMDAsIFhQIGFuZCAyMDAzLlxcbiAgIDg6XFx0XFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gbW91bnQgZGV2aWNlcyBmb3JtYXR0ZWQgd2l0aCB0aGUgbnRmcyBmaWxlIHN5c3RlbS5cXG4gICA5OlxcdFxcbiAgMTA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcXG4gIDExOlxcdFxcdCAgbnRmcy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIE5URlNfREVCVUdcXG4gIDE0OlxcdFxcdGJvb2wgXFxcIk5URlMgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IHByb2JsZW1zIHdpdGggdGhlIE5URlMgZmlsZSBzeXN0ZW0sIHNheVxcbiAgMTg6XFx0XFx0ICBZIGhlcmUuICBUaGlzIHdpbGwgcmVzdWx0IGluIGFkZGl0aW9uYWwgY29uc2lzdGVuY3kgY2hlY2tzIHRvIGJlXFxuICAxOTpcXHRcXHQgIHBlcmZvcm1lZCBieSB0aGUgZHJpdmVyIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG9cXG4gIDIwOlxcdFxcdCAgYmUgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGxvZy4gIE5vdGUgdGhhdCBkZWJ1Z2dpbmcgbWVzc2FnZXMgYXJlXFxuICAyMTpcXHRcXHQgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUbyBlbmFibGUgdGhlbSwgc3VwcGx5IHRoZSBvcHRpb24gZGVidWdfbXNncz0xXFxuICAyMjpcXHRcXHQgIGF0IHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdoZW4gYm9vdGluZyB0aGUga2VybmVsIG9yIGFzIGFuIG9wdGlvblxcbiAgMjM6XFx0XFx0ICB0byBpbnNtb2Qgd2hlbiBsb2FkaW5nIHRoZSBudGZzIG1vZHVsZS4gIE9uY2UgdGhlIGRyaXZlciBpcyBhY3RpdmUsXFxuICAyNDpcXHRcXHQgIHlvdSBjYW4gZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyBieSBkb2luZyAoYXMgcm9vdCk6XFxuICAyNTpcXHRcXHQgIGVjaG8gMSBcXHUwMDNlIC9wcm9jL3N5cy9mcy9udGZzLWRlYnVnXFxuICAyNjpcXHRcXHQgIFJlcGxhY2luZyB0aGUgXFxcIjFcXFwiIHdpdGggXFxcIjBcXFwiIHdvdWxkIGRpc2FibGUgZGVidWcgbWVzc2FnZXMuXFxuICAyNzpcXHRcXG4gIDI4OlxcdFxcdCAgSWYgeW91IGxlYXZlIGRlYnVnZ2luZyBtZXNzYWdlcyBkaXNhYmxlZCwgdGhpcyByZXN1bHRzIGluIGxpdHRsZVxcbiAgMjk6XFx0XFx0ICBvdmVyaGVhZCwgYnV0IGVuYWJsaW5nIGRlYnVnIG1lc3NhZ2VzIHJlc3VsdHMgaW4gdmVyeSBzaWduaWZpY2FudFxcbiAgMzA6XFx0XFx0ICBzbG93ZG93biBvZiB0aGUgc3lzdGVtLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MsIHBsZWFzZSB0cnkgdG8gaGF2ZSBhdmFpbGFibGUgYSBmdWxsIGR1bXAgb2ZcXG4gIDMzOlxcdFxcdCAgZGVidWdnaW5nIG1lc3NhZ2VzIHdoaWxlIHRoZSBtaXNiZWhhdmlvdXIgd2FzIG9jY3VycmluZy5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuICAzNjpcXHRcXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXFxuICAzODpcXHRcXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuICAzOTpcXHRcXHRoZWxwXFxuICA0MDpcXHRcXHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xcbiAgNDE6XFx0XFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEFDTCBzdXBwb3J0IGZvciBudGZzLCBwcm92aWRpbmcgZnVuY3Rpb25hbCBwYXJpdHlcXG4gIDQ0OlxcdFxcdCAgd2l0aCBudGZzMyBkcml2aWVyLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MjoxNy41MjgyOTU1MDhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE2MTU0MTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOVEZTIEZpbGVzeXN0ZW0gRnV6emluZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSB0aGUgb2xkIGBOVEZTX1JXYCBvcHRpb24gaXMgZ29uZSwgb3IgbWF5YmUgd3JpdGUgc3VwcG9ydCBpcyBqdXN0IGFsd2F5cyBlbmFibGVkIG5vdyBpbiB0aGUgbmV3IGBmcy9udGZzYCBkcml2ZXIuIE9yIHBlcmhhcHMgYGZzL250ZnNgIGlzIHRoZSB1cGRhdGVkIHZlcnNpb24gYW5kIGBOVEZTX1JXYCB3YXMgZGVwcmVjYXRlZC4gRWl0aGVyIHdheSwgYE5URlNfRlNgIGlzIHRoZSBvbmx5IGNvbmZpZyB0byB3b3JyeSBhYm91dCBub3cuXG5cbkxldCBtZSBjb25maXJtIHRoYXQgYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGlzIGFjdHVhbGx5IHJlYWNoYWJsZS4uLiBZZXAsIGBudGZzX2ZhbGxvY2F0ZWAgY2FsbHMgYG50ZnNfYWxsb2NhdGVfcmFuZ2VgLCB3aGljaCAqZG9lcyogY2FsbCBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAuIEdvb2QsIGdvb2QuXG5cblRoaXMgaXMgYSByZWFsIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGlzIHBhdGNoIGlzIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgdXNlLWFmdGVyLWZyZWUgaXNzdWUsIGFuZCBpdCdzIGRvaW5nIGl0IGJ5IGNhY2hpbmcgdGhvc2UgYHJsYCBmaWVsZHMgYmVmb3JlIGRyb3BwaW5nIHRoZSBsb2NrLiBJdCBhbHNvIHN0b3BzIGFuIGluY29ycmVjdCBjYWxsIHRvIGBudGZzX2Rpb196ZXJvX3JhbmdlYCB3aGVuIGBiYWxsb2NgIGlzIGZhbHNlLiBEZWZpbml0ZWx5IHdvcnRoIGNoZWNraW5nIHdpdGggZnV6emluZy5cblxuSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYC5cblxuRm9jdXMgU3ltYm9scyBhcmUgZ29pbmcgdG8gYmUgYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGFuZCBgbnRmc19mYWxsb2NhdGVgLlxuXG5BbmQsIGFzIGV4cGVjdGVkLCB0aGUgb25seSBjb25maWcgSSBuZWVkIGVuYWJsZWQgaXMgYE5URlNfRlNgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MgZG91YmxlLWNoZWNrIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzIEkgbmVlZCB0byBjb25zaWRlci4uLiBOb3BlLCBgTlRGU19GU2AgaXMgc3VmZmljaWVudC5cblxuVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkOiBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBpcyBiZWluZyBhZGRyZXNzZWQsIGFsb25nIHdpdGggYSBidWcgZml4IGluIHRoZSBgZmFsbG9jYXRlYCBwYXRoLiBUaGlzIGlzIGEgY3J1Y2lhbCBhcmVhIG9mIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIGFuZCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2YWxpZGF0ZSB0aGUgcGF0Y2gncyBlZmZpY2FjeSBhbmQgdW5jb3ZlciBhbnkgcG90ZW50aWFsIHJlZ3Jlc3Npb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjMyLCJPdXRwdXRUb2tlbnMiOjEzMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQyOjIzLjY4OTgzODgyNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4OTIzNjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19hdHRyX2ZhbGxvY2F0ZVwiLFxuICAgIFwibnRmc19mYWxsb2NhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBieSBjYWNoaW5nIHJ1bmxpc3QgZWxlbWVudCBmaWVsZHMgYmVmb3JlIGRyb3BwaW5nIHRoZSBydW5saXN0IGxvY2suIEl0IGFsc28gZml4ZXMgYSBidWcgd2hlcmUgYG50ZnNfZGlvX3plcm9fcmFuZ2VgIHdhcyBjYWxsZWQgaW5jb3JyZWN0bHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtJ3MgZmFsbG9jYXRlIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX2F0dHJfZmFsbG9jYXRlXCIsXG4gICAgXCJudGZzX2ZhbGxvY2F0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGJ5IGNhY2hpbmcgcnVubGlzdCBlbGVtZW50IGZpZWxkcyBiZWZvcmUgZHJvcHBpbmcgdGhlIHJ1bmxpc3QgbG9jay4gSXQgYWxzbyBmaXhlcyBhIGJ1ZyB3aGVyZSBgbnRmc19kaW9femVyb19yYW5nZWAgd2FzIGNhbGxlZCBpbmNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0ncyBmYWxsb2NhdGUgcGF0aCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow9cth6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-27 04:31:57 +0000 UTC FinishedAt: 2026-06-27 04:42:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5422e496b313b9b0b2f6df068902d6c79925d5e9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5422e496b313b9b0b2f6df068902d6c79925d5e9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_attr_fallocate", "ntfs_fallocate" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2F0dHJfZmFsbG9jYXRlJiMzNDssCiAgICAmIzM0O250ZnNfZmFsbG9jYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGJ5IGNhY2hpbmcgcnVubGlzdCBlbGVtZW50IGZpZWxkcyBiZWZvcmUgZHJvcHBpbmcgdGhlIHJ1bmxpc3QgbG9jay4gSXQgYWxzbyBmaXhlcyBhIGJ1ZyB3aGVyZSBgbnRmc19kaW9femVyb19yYW5nZWAgd2FzIGNhbGxlZCBpbmNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0mIzM5O3MgZmFsbG9jYXRlIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2M3Mzg5ZjMxYzllOTdhODBlMzVkMTg0YTRhMWM0NGYxZWIxZmU2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDA0OjQxOjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvYXR0cmliLmMgYi9mcy9udGZzL2F0dHJpYi5jXG5pbmRleCBkZDg4MjgwOTg1MTE4My4uYTk5Yjg0NzUxZWIxMjIgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL2F0dHJpYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9udGZzL2F0dHJpYi5jXG5AQCAtNTUzNiw2ICYjNDM7NTUzNiw3IEBAIGludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvXG4gXHRzNjQgb2xkX2RhdGFfc2l6ZTtcbiBcdHM2NCB2Y25fc3RhcnQsIHZjbl9lbmQsIHZjbl91bmluaXQsIHZjbiwgdHJ5X2FsbG9jX2NudDtcbiBcdHM2NCBsY24sIGFsbG9jX2NudDtcbiYjNDM7XHRzNjQgcmxfbGNuLCBybF9sZW5ndGgsIHJsX3ZjbjtcbiBcdGludCBlcnIgPSAwO1xuIFx0c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmw7XG4gXHRib29sIGJhbGxvYztcbkBAIC01NjE1LDE5ICYjNDM7NTYxNiwyMyBAQCBpbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib1xuIFx0d2hpbGUgKHZjbiBcdTAwM2MgdmNuX3VuaW5pdCkge1xuIFx0XHRkb3duX3JlYWQoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiBcdFx0cmwgPSBudGZzX2F0dHJfZmluZF92Y25fbm9sb2NrKG5pLCB2Y24sIE5VTEwpO1xuLVx0XHR1cF9yZWFkKFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QubG9jayk7XG4gXHRcdGlmIChJU19FUlIocmwpKSB7XG4mIzQzO1x0XHRcdHVwX3JlYWQoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiBcdFx0XHRlcnIgPSBQVFJfRVJSKHJsKTtcbiBcdFx0XHRnb3RvIG91dDtcbiBcdFx0fVxuJiM0MztcdFx0cmxfbGNuID0gcmwtXHUwMDNlbGNuO1xuJiM0MztcdFx0cmxfbGVuZ3RoID0gcmwtXHUwMDNlbGVuZ3RoO1xuJiM0MztcdFx0cmxfdmNuID0gcmwtXHUwMDNldmNuO1xuJiM0MztcdFx0dXBfcmVhZChcdTAwMjZuaS1cdTAwM2VydW5saXN0LmxvY2spO1xuIFxuLVx0XHRpZiAocmwtXHUwMDNlbGNuIFx1MDAzZSAwKSB7XG4tXHRcdFx0dmNuICYjNDM7PSBybC1cdTAwM2VsZW5ndGggLSAodmNuIC0gcmwtXHUwMDNldmNuKTtcbi1cdFx0fSBlbHNlIGlmIChybC1cdTAwM2VsY24gPT0gTENOX0RFTEFMTE9DIHx8IHJsLVx1MDAzZWxjbiA9PSBMQ05fSE9MRSkge1xuLVx0XHRcdHRyeV9hbGxvY19jbnQgPSBtaW4ocmwtXHUwMDNlbGVuZ3RoIC0gKHZjbiAtIHJsLVx1MDAzZXZjbiksXG4mIzQzO1x0XHRpZiAocmxfbGNuIFx1MDAzZSAwKSB7XG4mIzQzO1x0XHRcdHZjbiAmIzQzOz0gcmxfbGVuZ3RoIC0gKHZjbiAtIHJsX3Zjbik7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHJsX2xjbiA9PSBMQ05fREVMQUxMT0MgfHwgcmxfbGNuID09IExDTl9IT0xFKSB7XG4mIzQzO1x0XHRcdHRyeV9hbGxvY19jbnQgPSBtaW4ocmxfbGVuZ3RoIC0gKHZjbiAtIHJsX3ZjbiksXG4gXHRcdFx0XHRcdCAgICB2Y25fdW5pbml0IC0gdmNuKTtcbiBcbi1cdFx0XHRpZiAocmwtXHUwMDNlbGNuID09IExDTl9ERUxBTExPQykge1xuJiM0MztcdFx0XHRpZiAocmxfbGNuID09IExDTl9ERUxBTExPQykge1xuIFx0XHRcdFx0dmNuICYjNDM7PSB0cnlfYWxsb2NfY250O1xuIFx0XHRcdFx0Y29udGludWU7XG4gXHRcdFx0fVxuQEAgLTU2NDIsMTEgJiM0Mzs1NjQ3LDE0IEBAIGludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvXG4gXHRcdFx0XHRpZiAoZXJyKVxuIFx0XHRcdFx0XHRnb3RvIG91dDtcbiBcbi1cdFx0XHRcdGVyciA9IG50ZnNfZGlvX3plcm9fcmFuZ2UoVkZTX0kobmkpLFxuLVx0XHRcdFx0XHRcdFx0ICBsY24gXHUwMDNjXHUwMDNjIHZvbC1cdTAwM2VjbHVzdGVyX3NpemVfYml0cyxcbi1cdFx0XHRcdFx0XHRcdCAgYWxsb2NfY250IFx1MDAzY1x1MDAzYyB2b2wtXHUwMDNlY2x1c3Rlcl9zaXplX2JpdHMpO1xuLVx0XHRcdFx0aWYgKGVyciBcdTAwM2UgMClcbi1cdFx0XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRcdFx0aWYgKGJhbGxvYykge1xuJiM0MztcdFx0XHRcdFx0ZXJyID0gbnRmc19kaW9femVyb19yYW5nZShWRlNfSShuaSksXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHQgIGxjbiBcdTAwM2NcdTAwM2Mgdm9sLVx1MDAzZWNsdXN0ZXJfc2l6ZV9iaXRzLFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0ICBhbGxvY19jbnQgXHUwMDNjXHUwMDNjXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHQgIHZvbC1cdTAwM2VjbHVzdGVyX3NpemVfYml0cyk7XG4mIzQzO1x0XHRcdFx0XHRpZiAoZXJyIFx1MDAzZSAwKVxuJiM0MztcdFx0XHRcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdFx0XHR9XG4gXG4gXHRcdFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpXG4gXHRcdFx0XHRcdGdvdG8gb3V0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2F0dHJfZmFsbG9jYXRlJiMzNDssCiAgICAmIzM0O250ZnNfZmFsbG9jYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGJ5IGNhY2hpbmcgcnVubGlzdCBlbGVtZW50IGZpZWxkcyBiZWZvcmUgZHJvcHBpbmcgdGhlIHJ1bmxpc3QgbG9jay4gSXQgYWxzbyBmaXhlcyBhIGJ1ZyB3aGVyZSBgbnRmc19kaW9femVyb19yYW5nZWAgd2FzIGNhbGxlZCBpbmNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0mIzM5O3MgZmFsbG9jYXRlIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3YzczODlmMzFjOWU5N2E4MGUzNWQxODRhNGExYzQ0ZjFlYjFmZTY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjcgMDQ6NDE6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9udGZzL2F0dHJpYi5jIGIvZnMvbnRmcy9hdHRyaWIuYwppbmRleCBkZDg4MjgwOTg1MTE4My4uYTk5Yjg0NzUxZWIxMjIgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvYXR0cmliLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9hdHRyaWIuYwpAQCAtNTUzNiw2ICYjNDM7NTUzNiw3IEBAIGludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvCiAJczY0IG9sZF9kYXRhX3NpemU7CiAJczY0IHZjbl9zdGFydCwgdmNuX2VuZCwgdmNuX3VuaW5pdCwgdmNuLCB0cnlfYWxsb2NfY250OwogCXM2NCBsY24sIGFsbG9jX2NudDsKJiM0MzsJczY0IHJsX2xjbiwgcmxfbGVuZ3RoLCBybF92Y247CiAJaW50IGVyciA9IDA7CiAJc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmw7CiAJYm9vbCBiYWxsb2M7CkBAIC01NjE1LDE5ICYjNDM7NTYxNiwyMyBAQCBpbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBibwogCXdoaWxlICh2Y24gJmx0OyB2Y25fdW5pbml0KSB7CiAJCWRvd25fcmVhZCgmYW1wO25pLSZndDtydW5saXN0LmxvY2spOwogCQlybCA9IG50ZnNfYXR0cl9maW5kX3Zjbl9ub2xvY2sobmksIHZjbiwgTlVMTCk7Ci0JCXVwX3JlYWQoJmFtcDtuaS0mZ3Q7cnVubGlzdC5sb2NrKTsKIAkJaWYgKElTX0VSUihybCkpIHsKJiM0MzsJCQl1cF9yZWFkKCZhbXA7bmktJmd0O3J1bmxpc3QubG9jayk7CiAJCQllcnIgPSBQVFJfRVJSKHJsKTsKIAkJCWdvdG8gb3V0OwogCQl9CiYjNDM7CQlybF9sY24gPSBybC0mZ3Q7bGNuOwomIzQzOwkJcmxfbGVuZ3RoID0gcmwtJmd0O2xlbmd0aDsKJiM0MzsJCXJsX3ZjbiA9IHJsLSZndDt2Y247CiYjNDM7CQl1cF9yZWFkKCZhbXA7bmktJmd0O3J1bmxpc3QubG9jayk7CiAKLQkJaWYgKHJsLSZndDtsY24gJmd0OyAwKSB7Ci0JCQl2Y24gJiM0Mzs9IHJsLSZndDtsZW5ndGggLSAodmNuIC0gcmwtJmd0O3Zjbik7Ci0JCX0gZWxzZSBpZiAocmwtJmd0O2xjbiA9PSBMQ05fREVMQUxMT0MgfHwgcmwtJmd0O2xjbiA9PSBMQ05fSE9MRSkgewotCQkJdHJ5X2FsbG9jX2NudCA9IG1pbihybC0mZ3Q7bGVuZ3RoIC0gKHZjbiAtIHJsLSZndDt2Y24pLAomIzQzOwkJaWYgKHJsX2xjbiAmZ3Q7IDApIHsKJiM0MzsJCQl2Y24gJiM0Mzs9IHJsX2xlbmd0aCAtICh2Y24gLSBybF92Y24pOwomIzQzOwkJfSBlbHNlIGlmIChybF9sY24gPT0gTENOX0RFTEFMTE9DIHx8IHJsX2xjbiA9PSBMQ05fSE9MRSkgewomIzQzOwkJCXRyeV9hbGxvY19jbnQgPSBtaW4ocmxfbGVuZ3RoIC0gKHZjbiAtIHJsX3ZjbiksCiAJCQkJCSAgICB2Y25fdW5pbml0IC0gdmNuKTsKIAotCQkJaWYgKHJsLSZndDtsY24gPT0gTENOX0RFTEFMTE9DKSB7CiYjNDM7CQkJaWYgKHJsX2xjbiA9PSBMQ05fREVMQUxMT0MpIHsKIAkJCQl2Y24gJiM0Mzs9IHRyeV9hbGxvY19jbnQ7CiAJCQkJY29udGludWU7CiAJCQl9CkBAIC01NjQyLDExICYjNDM7NTY0NywxNCBAQCBpbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBibwogCQkJCWlmIChlcnIpCiAJCQkJCWdvdG8gb3V0OwogCi0JCQkJZXJyID0gbnRmc19kaW9femVyb19yYW5nZShWRlNfSShuaSksCi0JCQkJCQkJICBsY24gJmx0OyZsdDsgdm9sLSZndDtjbHVzdGVyX3NpemVfYml0cywKLQkJCQkJCQkgIGFsbG9jX2NudCAmbHQ7Jmx0OyB2b2wtJmd0O2NsdXN0ZXJfc2l6ZV9iaXRzKTsKLQkJCQlpZiAoZXJyICZndDsgMCkKLQkJCQkJZ290byBvdXQ7CiYjNDM7CQkJCWlmIChiYWxsb2MpIHsKJiM0MzsJCQkJCWVyciA9IG50ZnNfZGlvX3plcm9fcmFuZ2UoVkZTX0kobmkpLAomIzQzOwkJCQkJCQkJICBsY24gJmx0OyZsdDsgdm9sLSZndDtjbHVzdGVyX3NpemVfYml0cywKJiM0MzsJCQkJCQkJCSAgYWxsb2NfY250ICZsdDsmbHQ7CiYjNDM7CQkJCQkJCQkgIHZvbC0mZ3Q7Y2x1c3Rlcl9zaXplX2JpdHMpOwomIzQzOwkJCQkJaWYgKGVyciAmZ3Q7IDApCiYjNDM7CQkJCQkJZ290byBvdXQ7CiYjNDM7CQkJCX0KIAogCQkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKIAkJCQkJZ290byBvdXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDYKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gYG50ZnNfYXR0cl9mYWxsb2NhdGVgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBpbiBgZnMvbnRmcy9hdHRyaWIuY2AuIFRoZSBjaGFuZ2VzIHNlZW0gc3RyYWlnaHRmb3J3YXJkIGVub3VnaDogcmVhZGluZyBgcmxgIGZpZWxkcyB1bmRlciB0aGUgYHJ1bmxpc3QubG9ja2AgYW5kIGNvbmRpdGlvbmFsbHkgY2FsbGluZyBgbnRmc19kaW9femVyb19yYW5nZWAgYmFzZWQgb24gdGhlIGBiYWxsb2NgIGZsYWcuIFNlZW1zIHByZXR0eSBzdGFuZGFyZCBmb3Igb3B0aW1pemluZyBOVEZTLiBCdXQuLi53YWl0IGEgc2Vjb25kLiBgZnMvbnRmcy9hdHRyaWIuY2A/IFRoYXQmIzM5O3MgdGhyb3dpbmcgYSBmbGFnLiBJcyB0aGlzIGZvciB0aGUgb2xkIE5URlMgZHJpdmVyIG9yIHRoZSBuZXdlciBgbnRmczNgPyBJIG5lZWQgdG8gY2xhcmlmeSB3aGljaCBkcml2ZXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLCBiZWNhdXNlIHRoZXkgaGF2ZSBkaWZmZXJlbnQgc3RydWN0dXJlcy4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gd2hldGhlciBgZnMvbnRmc2AgZXZlbiBleGlzdHMsIG9yIGlmIGl0JiMzOTtzIGJlZW4gc3VwZXJzZWRlZCBieSBgZnMvbnRmczNgLiBNZW1vcnkgam9nIC0gbm93ICp0aGF0KiBmdW5jdGlvbiBuYW1lLCBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAuLi4gZG9lc24mIzM5O3QgcmluZyBhIGJlbGwgZnJvbSB0aGUgb2xkIGRyaXZlci4gSG1tLCBJIGJldHRlciBkaWcgaW50byB0aGlzIGFuZCBjb25maXJtLiBMb29rcyBsaWtlIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBmaWxlIHBhdGggYWdhaW5zdCBib3RoIGRpcmVjdG9yaWVzLiBUaGlzIHNlZW1zIGxpa2UgYSBwb3RlbnRpYWwgc291cmNlIG9mIGNvbmZ1c2lvbiBvciBldmVuIGEgYnVnIGlmIHdlJiMzOTtyZSBub3QgY2FyZWZ1bC4gTGV0JiMzOTtzIGdldCB0aGUgcmlnaHQgY29udGV4dCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX2F0dHJfZmFsbG9jYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvYXR0cmliLmM9NTQ3ND1pbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9wdW5jaF9ob2xlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHN0YXJ0X3ZjbiwgczY0IGxlbilcbi0tXG5mcy9udGZzL2F0dHJpYi5jLTU1MzAtXG5mcy9udGZzL2F0dHJpYi5jOjU1MzE6aW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9vbCBrZWVwX3NpemUpXG5mcy9udGZzL2F0dHJpYi5jLTU1MzIte1xuLS1cbmZzL250ZnMvYXR0cmliLmg9MTA3PXZvaWQgbnRmc19hdHRyX2Nsb3NlKHN0cnVjdCBudGZzX2lub2RlICpuKTtcbmZzL250ZnMvYXR0cmliLmg6MTA4OmludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvb2wga2VlcF9zaXplKTtcbmZzL250ZnMvYXR0cmliLmgtMTA5LWludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xuLS1cbmZzL250ZnMvZmlsZS5jPTgzMz1zdGF0aWMgaW50IG50ZnNfYWxsb2NhdGVfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCxcbi0tXG5mcy9udGZzL2ZpbGUuYy04NjMtXG5mcy9udGZzL2ZpbGUuYzo4NjQ6XHRlcnIgPSBudGZzX2F0dHJfZmFsbG9jYXRlKG5pLCBvZmZzZXQsIGxlbixcbmZzL250ZnMvZmlsZS5jLTg2NS1cdFx0XHRtb2RlIFx1MDAyNiBGQUxMT0NfRkxfS0VFUF9TSVpFID8gdHJ1ZSA6IGZhbHNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDg1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKk5hdmlnYXRpbmcgdGhlIE5URlMgRmlsZSBTeXN0ZW0gRHJpdmVycyoqCgpSaWdodCwgc28gSSBzZWUgYGZzL250ZnMvYXR0cmliLmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O1dhaXQgYSBtaW51dGUsIGlzbiYjMzk7dCBgZnMvbnRmc2AgdGhlIGxlZ2FjeSBkcml2ZXI/JiMzNDsgQnV0IHRoZW4gSSBoYXZlIHRvIG1lbnRhbGx5IGRvdWJsZS1jaGVjayBiZWNhdXNlIEkga25vdyB0aGUgbGFuZHNjYXBlIGhhcyBldm9sdmVkLiBJdOKAmXMgZW50aXJlbHkgcG9zc2libGUgdGhhdCBpbiAqdGhpcyogcGFydGljdWxhciBidWlsZCBvciBrZXJuZWwgdHJlZSwgc29tZW9uZSYjMzk7cyByZW5hbWVkIHRoZSBkaXJlY3RvcnkgdG8gYGZzL250ZnMzYCwgb3IgcGVyaGFwcyBpdOKAmXMgc3RpbGwgdXNpbmcgdGhlIG9sZGVyIHBhdGhzLgoKR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgdGhhdCBjb25mdXNpb24sIEkgc2hvdWxkIGNvbmZpcm0gdGhlIGRyaXZlciB0aGF0IHRoaXMgaXMgbGlua2VkIHRvLiBNeSBuZXh0IHN0ZXAgaGFzIHRvIGJlIGNoZWNraW5nIHRoZSBgZnMvbnRmcy9LY29uZmlnYCBmaWxlLiBUaGF0IHdpbGwgZGVmaW5pdGl2ZWx5IHRlbGwgbWUgd2hpY2ggZHJpdmVyIGFuZCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCBhbmQgd2hhdCB0aGlzIG1vZHVsZSBpcyBhY3R1YWxseSBpbnRlbmRlZCBmb3IuIEl04oCZcyBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBhdm9pZCB3YXN0aW5nIHRpbWUgb24gdGhlIHdyb25nIGNvZGUgYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU19GUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL250ZnMvS2NvbmZpZzoyOmNvbmZpZyBOVEZTX0ZTXG5mcy9udGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O05URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xuLS1cbmZzL250ZnMvS2NvbmZpZy0zNC1cbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbmZzL250ZnMvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MTkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgTlRGUyBMYW5kc2NhcGUqKgoKT2theSwgc28gSSYjMzk7bSBwb2tpbmcgYXJvdW5kLCBhbmQgaXQgbG9va3MgbGlrZSBgZnMvbnRmc2AgaXMgc3RpbGwgdGhlIGRpcmVjdG9yeS4gR29vZC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQuIEFoLCByaWdodCwgYE5URlNfRlNgIGlzIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uLCBub3QgdGhlIGZpbGUgc3lzdGVtIGl0c2VsZi4gSG1tLCB3aGVyZSYjMzk7cyB0aGF0IGBudGZzX2F0dHJfZmFsbG9jYXRlYCBmdW5jdGlvbj8gUmlnaHQsIGBmcy9udGZzL2F0dHJpYi5jYC4gSnVzdCBjb25maXJtaW5nIHRoYXQgYE5URlNfRlNgIGlzIHRoZSBtYWluIGNvbmZpZyBvcHRpb24uIFllcCwgdGhlcmUgaXQgaXMuIEhvbGQgb24sIGNvdWxkIGBOVEZTX1JXYCBiZSBpbnZvbHZlZCB0b28/IExldCYjMzk7cyBxdWlja2x5IHNjYW4gYGZzL250ZnMvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfUlcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhhdCBgZnMvbnRmcy9LY29uZmlnYCBmaWxlLCBhcyBJIHVuZGVyc3RhbmQgaXQ6CgoqKk5URlMgQ29uZmlndXJhdGlvbiAtIERlY29kaW5nIHRoZSBLY29uZmlnKioKCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBmcy9udGZzL0tjb25maWdgIGZpbGUuIEkmIzM5O20gYWxyZWFkeSBleHBlY3RpbmcgaXQgdG8gb3V0bGluZSB0aGUgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgTlRGUyBmaWxlc3lzdGVtIGRyaXZlciB3aXRoaW4gdGhlIGtlcm5lbC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGZvY3VzaW5nIG9uIGhvdyBpdCBwcmVzZW50cyB0aGUgb3B0aW9ucywgdGhlaXIgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHN1YnRsZSBpbXBsaWNhdGlvbnMgZm9yIHBlcmZvcm1hbmNlIG9yIHNlY3VyaXR5LiBJJiMzOTttIGFudGljaXBhdGluZyBmaW5kaW5nIHRoZSB1c3VhbCBzdXNwZWN0czogc3VwcG9ydCBmb3IgcmVhZC93cml0ZSBhY2Nlc3MsIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIHBlcmhhcHMgZXZlbiBqb3VybmFsIHJlY292ZXJ5IG9wdGlvbnMuIE15IGdvYWwgaXMgdG8gc2VlIGhvdyB0aGUgZGV2ZWxvcGVycyBoYXZlIGJhbGFuY2VkIGZ1bmN0aW9uYWxpdHkgd2l0aCBwb3RlbnRpYWwgcmVzb3VyY2UgY29uc3RyYWludHMuIEkmIzM5O2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgb3IgZmVhdHVyZXMuIEZpbmFsbHksIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIHJlZ2FyZGluZyBhbnkgY2hhbmdlcyBvciBpbXByb3ZlbWVudHMgbWFkZSB0byB0aGUgZHJpdmVyIG92ZXIgdGhlIGhpc3Rvcnkgb2YgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUuIEkgd2FudCB0byBzZWUgaWYgdGhleSYjMzk7cmUgYWRkcmVzc2luZyBhbnkgcHJldmlvdXMgd2Vha25lc3NlcyBvciBwcm9ibGVtcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5URlNfRlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O05URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0c2VsZWN0IE5MU1xuICAgNTpcdFx0c2VsZWN0IEZTX0lPTUFQXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIE5URlMgaXMgdGhlIGZpbGUgc3lzdGVtIG9mIE1pY3Jvc29mdCBXaW5kb3dzIE5ULCAyMDAwLCBYUCBhbmQgMjAwMy5cbiAgIDg6XHRcdCAgVGhpcyBhbGxvd3MgeW91IHRvIG1vdW50IGRldmljZXMgZm9ybWF0dGVkIHdpdGggdGhlIG50ZnMgZmlsZSBzeXN0ZW0uXG4gICA5Olx0XG4gIDEwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxuICAxMTpcdFx0ICBudGZzLlxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBOVEZTX0RFQlVHXG4gIDE0Olx0XHRib29sIFwmIzM0O05URlMgZGVidWdnaW5nIHN1cHBvcnRcJiMzNDtcbiAgMTU6XHRcdGRlcGVuZHMgb24gTlRGU19GU1xuICAxNjpcdFx0aGVscFxuICAxNzpcdFx0ICBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgTlRGUyBmaWxlIHN5c3RlbSwgc2F5XG4gIDE4Olx0XHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYWRkaXRpb25hbCBjb25zaXN0ZW5jeSBjaGVja3MgdG8gYmVcbiAgMTk6XHRcdCAgcGVyZm9ybWVkIGJ5IHRoZSBkcml2ZXIgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIGRlYnVnZ2luZyBtZXNzYWdlcyB0b1xuICAyMDpcdFx0ICBiZSB3cml0dGVuIHRvIHRoZSBzeXN0ZW0gbG9nLiAgTm90ZSB0aGF0IGRlYnVnZ2luZyBtZXNzYWdlcyBhcmVcbiAgMjE6XHRcdCAgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIFRvIGVuYWJsZSB0aGVtLCBzdXBwbHkgdGhlIG9wdGlvbiBkZWJ1Z19tc2dzPTFcbiAgMjI6XHRcdCAgYXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgd2hlbiBib290aW5nIHRoZSBrZXJuZWwgb3IgYXMgYW4gb3B0aW9uXG4gIDIzOlx0XHQgIHRvIGluc21vZCB3aGVuIGxvYWRpbmcgdGhlIG50ZnMgbW9kdWxlLiAgT25jZSB0aGUgZHJpdmVyIGlzIGFjdGl2ZSxcbiAgMjQ6XHRcdCAgeW91IGNhbiBlbmFibGUgZGVidWdnaW5nIG1lc3NhZ2VzIGJ5IGRvaW5nIChhcyByb290KTpcbiAgMjU6XHRcdCAgZWNobyAxIFx1MDAzZSAvcHJvYy9zeXMvZnMvbnRmcy1kZWJ1Z1xuICAyNjpcdFx0ICBSZXBsYWNpbmcgdGhlIFwmIzM0OzFcJiMzNDsgd2l0aCBcJiMzNDswXCYjMzQ7IHdvdWxkIGRpc2FibGUgZGVidWcgbWVzc2FnZXMuXG4gIDI3Olx0XG4gIDI4Olx0XHQgIElmIHlvdSBsZWF2ZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgZGlzYWJsZWQsIHRoaXMgcmVzdWx0cyBpbiBsaXR0bGVcbiAgMjk6XHRcdCAgb3ZlcmhlYWQsIGJ1dCBlbmFibGluZyBkZWJ1ZyBtZXNzYWdlcyByZXN1bHRzIGluIHZlcnkgc2lnbmlmaWNhbnRcbiAgMzA6XHRcdCAgc2xvd2Rvd24gb2YgdGhlIHN5c3RlbS5cbiAgMzE6XHRcbiAgMzI6XHRcdCAgV2hlbiByZXBvcnRpbmcgYnVncywgcGxlYXNlIHRyeSB0byBoYXZlIGF2YWlsYWJsZSBhIGZ1bGwgZHVtcCBvZlxuICAzMzpcdFx0ICBkZWJ1Z2dpbmcgbWVzc2FnZXMgd2hpbGUgdGhlIG1pc2JlaGF2aW91ciB3YXMgb2NjdXJyaW5nLlxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxuICAzNjpcdFx0Ym9vbCBcJiMzNDtOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4gIDM3Olx0XHRkZXBlbmRzIG9uIE5URlNfRlNcbiAgMzg6XHRcdHNlbGVjdCBGU19QT1NJWF9BQ0xcbiAgMzk6XHRcdGhlbHBcbiAgNDA6XHRcdCAgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpIHN1cHBvcnQgYWRkaXRpb25hbCBhY2Nlc3MgcmlnaHRzXG4gIDQxOlx0XHQgIGZvciB1c2VycyBhbmQgZ3JvdXBzIGJleW9uZCB0aGUgc3RhbmRhcmQgb3duZXIvZ3JvdXAvd29ybGQgc2NoZW1lLlxuICA0MjpcdFxuICA0MzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEFDTCBzdXBwb3J0IGZvciBudGZzLCBwcm92aWRpbmcgZnVuY3Rpb25hbCBwYXJpdHlcbiAgNDQ6XHRcdCAgd2l0aCBudGZzMyBkcml2aWVyLlxuICA0NTpcdFxuICA0NjpcdFx0ICBOT1RFOiB0aGlzIGlzIGxpbnV4IG9ubHkgZmVhdHVyZS4gV2luZG93cyB3aWxsIGlnbm9yZSB0aGVzZSBBQ0xzLlxuICA0NzpcdFxuICA0ODpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTkwCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTlRGUyBGYWxsb2NhdGUgSW1wbGVtZW50YXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBkaWRuJiMzOTt0IEkgdGhpbmsgSSByZW1lbWJlcmVkIGFuIGBOVEZTX1JXYCBtb2R1bGUgYXQgc29tZSBwb2ludD8gT3Igd2FzIHRoYXQgZGVwcmVjYXRlZCBvciBtZXJnZWQgaW50byBzb21ldGhpbmcgZWxzZT8gSSBzaG91bGQgcHJvYmFibHkganVzdCBmb2N1cyBvbiBgTlRGU19GU2AgZm9yIG5vdy4gU2VlIGlmIHRoYXQmIzM5O3Mgc3VmZmljaWVudCBmb3IgbXkgbmVlZHMuCgpSaWdodCwgdGhlIHBhdGNoIG1lbnRpb25zIGEgYnVnIGluIGBudGZzX2F0dHJfZmFsbG9jYXRlYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBMZXQmIzM5O3MgdHJhY2UgdGhpcyBiYWNrLiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgaXMgY2FsbGVkIGJ5IGBudGZzX2FsbG9jYXRlX3JhbmdlYCwgd2hpY2guLi4gYWhhISBUaGF0JiMzOTtzIGNhbGxlZCBieSBgbnRmc19mYWxsb2NhdGVgLiBPa2F5LCBub3cgSSBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgYG50ZnNfZmFsbG9jYXRlYC4KClRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGBmcy9udGZzL2ZpbGUuY2AgdG8gY29uZmlybSB3aGVyZSBgbnRmc19mYWxsb2NhdGVgIGlzIGltcGxlbWVudGVkIGFuZCBob3cgaXQgaXMgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRmc19mYWxsb2NhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9maWxlLmM9OTk0PXN0YXRpYyBpbnQgbnRmc19pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuLS1cbmZzL250ZnMvZmlsZS5jLTEwNTQtXG5mcy9udGZzL2ZpbGUuYzoxMDU1OnN0YXRpYyBsb25nIG50ZnNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbilcbmZzL250ZnMvZmlsZS5jLTEwNTYte1xuLS1cbmZzL250ZnMvZmlsZS5jPTExNDY9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBudGZzX2ZpbGVfb3BzID0ge1xuLS1cbmZzL250ZnMvZmlsZS5jLTExNTktI2VuZGlmXG5mcy9udGZzL2ZpbGUuYzoxMTYwOlx0LmZhbGxvY2F0ZVx0PSBudGZzX2ZhbGxvY2F0ZSxcbmZzL250ZnMvZmlsZS5jLTExNjEtXHQuc2V0bGVhc2VcdD0gZ2VuZXJpY19zZXRsZWFzZSxcbi0tXG5mcy9udGZzMy9maWxlLmM9MzgxPXN0YXRpYyBpbnQgbnRmc19maWxlX21tYXBfcHJlcGFyZShzdHJ1Y3Qgdm1fYXJlYV9kZXNjICpkZXNjKVxuLS1cbmZzL250ZnMzL2ZpbGUuYy00NTctLypcbmZzL250ZnMzL2ZpbGUuYzo0NTg6ICogbnRmc19mYWxsb2NhdGUgLSBmaWxlX29wZXJhdGlvbnM6Om50ZnNfZmFsbG9jYXRlXG5mcy9udGZzMy9maWxlLmMtNDU5LSAqXG4tLVxuZnMvbnRmczMvZmlsZS5jLTQ2NS0gKi9cbmZzL250ZnMzL2ZpbGUuYzo0NjY6c3RhdGljIGxvbmcgbnRmc19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3QgdmJvLCBsb2ZmX3QgbGVuKVxuZnMvbnRmczMvZmlsZS5jLTQ2Ny17XG4tLVxuZnMvbnRmczMvZmlsZS5jPTE1NjY9Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBudGZzX2ZpbGVfb3BlcmF0aW9ucyA9IHtcbi0tXG5mcy9udGZzMy9maWxlLmMtMTU3OC1cdC5mc3luY1x0XHQ9IG50ZnNfZmlsZV9mc3luYyxcbmZzL250ZnMzL2ZpbGUuYzoxNTc5Olx0LmZhbGxvY2F0ZVx0PSBudGZzX2ZhbGxvY2F0ZSxcbmZzL250ZnMzL2ZpbGUuYy0xNTgwLVx0LnJlbGVhc2VcdD0gbnRmc19maWxlX3JlbGVhc2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNTEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRmlsZSBTeXN0ZW0gUGF0Y2ggZm9yIE5URlMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtXaGVyZSBkb2VzIHRoaXMgdG91Y2g/JiMzNDsgQWgsIGBmcy9udGZzL2ZpbGUuY2AgaGFzIGBudGZzX2ZhbGxvY2F0ZWAsIGFuZCBgZnMvbnRmcy9hdHRyaWIuY2AgaG9sZHMgYG50ZnNfYXR0cl9mYWxsb2NhdGVgLiBMZXQgbWUgY29uZmlybSwgaXQgc2VlbXMgYE5URlNfRlNgIGlzIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uLCBhbmQgb25seSB0aGF0LCBnb29kLiBObyBvdGhlciBkZXBlbmRlbmNpZXMuCgpSaWdodCwgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgd2l0aGluIGBhdHRyaWIuY2AuIFRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIGEgYHJsYCB1c2UtYWZ0ZXItZnJlZSBvciBkYXRhIHJhY2UgY29uZGl0aW9uOyB0aGUgY29kZSB3YXMgYWNjZXNzaW5nIGZpZWxkcyBsaWtlIGBybC0mZ3Q7bGNuYCwgYHJsLSZndDtsZW5ndGhgLCBhbmQgYHJsLSZndDt2Y25gICphZnRlciogdGhlIGBuaS0mZ3Q7cnVubGlzdC5sb2NrYCBoYWQgYmVlbiByZWxlYXNlZC4gVGhleSByZWFkIHRob3NlIHZhbHVlcyB3aGlsZSB0aGUgbG9jayB3YXMgaGVsZCwgYnV0IHRoZW4gdXNlIHRoZW0gYWZ0ZXIgcmVsZWFzaW5nIHRoZSBsb2NrLCB3aGljaCBpcyBhIHRleHRib29rIGRhdGEgcmFjZS4gQWxzbywgdGhlIHBhdGNoIHdyYXBzIGBudGZzX2Rpb196ZXJvX3JhbmdlYCBpbiBhbiBgaWYgKGJhbGxvYylgIGNoZWNrLCBwcmVzdW1hYmx5IHRvIHByZXZlbnQgaXQgZnJvbSBiZWluZyBjYWxsZWQgaW4gaW5hcHByb3ByaWF0ZSBzaXR1YXRpb25zLgoKU28sIHRoaXMgaXMgYSBwcmV0dHkgZnVuY3Rpb25hbCBmaXgsIGFkZHJlc3NpbmcgYm90aCBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZS9kYXRhIHJhY2Ugb24gdGhlIGBybGAgc3RydWN0dXJlIGFuZCBhIGJ1ZyBpbiB0aGUgY29uZGl0aW9uYWwgY2FsbCB0byBgbnRmc19kaW9femVyb19yYW5nZWAuCgpJcyB0aGlzIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmc/IEFic29sdXRlbHkuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldCB3b3VsZCBiZSBlaXRoZXIgYG50ZnNfYXR0cl9mYWxsb2NhdGVgIG9yIGBudGZzX2ZhbGxvY2F0ZWAuIE9rYXksIGxldCYjMzk7cyBjb25maXJtIHRoZSB2aXNpYmlsaXR5IG9mIGBudGZzX2F0dHJfZmFsbG9jYXRlYC4uLiBJdCYjMzk7cyBub3Qgc3RhdGljOyBpdCYjMzk7cyBkZWNsYXJlZCBpbiBgYXR0cmliLmhgIGFuZCBkZWZpbmVkIGluIGBhdHRyaWIuY2AuIFRoZXJlZm9yZSwgaXQmIzM5O3MgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4gYG50ZnNfZmFsbG9jYXRlYCBpcyBhbHNvIGEgdmFsaWQgZm9jdXMuCgpMZXQgbWUgZG91YmxlIGNoZWNrIHRoaXMgTlRGUyB2ZXJzaW9uLiBgTlRGU19GU2AuLi4gaXMgdGhhdCB0aGUgb2xkIGRyaXZlcj8gQWggeWVzLCBJIHNlZSBub3csIGBOVEZTM19GU2AgaXMgdGhlIG5ldyBvbmUuIFRoZSBwYXRjaCBtb2RpZmllcyBgZnMvbnRmcy9hdHRyaWIuY2AsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIG9sZCBkcml2ZXIsIGFuZCB5ZXMsIGBOVEZTX0ZTYCBpcyB0aGUgY29uZmlnIG9wdGlvbiBmb3IgdGhhdCBvbGQgZHJpdmVyLiBXYWl0LCBhbSBJIG1pc3Rha2VuLCB3YXNuJiMzOTt0IGBmcy9udGZzYCByZW1vdmVkIGluIDYuMTM/IE5vLCBJIHNlZSBpdCYjMzk7cyBzdGlsbCBwcmVzZW50IGluIHRoZSBjdXJyZW50IHRyZWUuCgpJIHNob3VsZCBjaGVjayBpZiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgaXMgcmVhY2hhYmxlLCBhbmQgeWVzLCBpdCBzZWVtcyB0byBiZSB0aHJvdWdoIHRoZSBgZmFsbG9jYXRlYCBzeXNjYWxsIHdoZW4gZGVhbGluZyB3aXRoIGFuIE5URlMgZmlsZS4gVGhhdCYjMzk7cyBnb29kLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYGZzL250ZnMvYXR0cmliLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGludGVyZXN0aW5nIGZ1bmN0aW9ucyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRmc19hdHRyX2ZhbGxvY2F0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jPTU0NzQ9aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfcHVuY2hfaG9sZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXG4tLVxuZnMvbnRmcy9hdHRyaWIuYy01NTMwLVxuZnMvbnRmcy9hdHRyaWIuYzo1NTMxOmludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvb2wga2VlcF9zaXplKVxuZnMvbnRmcy9hdHRyaWIuYy01NTMyLXtcbi0tXG5mcy9udGZzL2F0dHJpYi5oPTEwNz12b2lkIG50ZnNfYXR0cl9jbG9zZShzdHJ1Y3QgbnRmc19pbm9kZSAqbik7XG5mcy9udGZzL2F0dHJpYi5oOjEwODppbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib29sIGtlZXBfc2l6ZSk7XG5mcy9udGZzL2F0dHJpYi5oLTEwOS1pbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKTtcbi0tXG5mcy9udGZzL2ZpbGUuYz04MzM9c3RhdGljIGludCBudGZzX2FsbG9jYXRlX3JhbmdlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsXG4tLVxuZnMvbnRmcy9maWxlLmMtODYzLVxuZnMvbnRmcy9maWxlLmM6ODY0Olx0ZXJyID0gbnRmc19hdHRyX2ZhbGxvY2F0ZShuaSwgb2Zmc2V0LCBsZW4sXG5mcy9udGZzL2ZpbGUuYy04NjUtXHRcdFx0bW9kZSBcdTAwMjYgRkFMTE9DX0ZMX0tFRVBfU0laRSA/IHRydWUgOiBmYWxzZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NzYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5URlMgRmlsZXN5c3RlbSBBbGxvY2F0aW9uIENhbGxzKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgaGVyZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBmaWxlIGFsbG9jYXRpb24gd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0uIEkgc2VlIHRoYXQgYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGlzIGJlaW5nIGNhbGxlZCBieSBgbnRmc19hbGxvY2F0ZV9yYW5nZWAsIHdoaWNoIGluIHR1cm4sIGlzIGJlaW5nIGNhbGxlZCBieSBgbnRmc19mYWxsb2NhdGVgLiBUaGVyZWZvcmUsIGBudGZzX2ZhbGxvY2F0ZWAgYW5kIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBhcmUgY2xlYXJseSB0aGUga2V5IHN5bWJvbHMgdG8ga2VlcCBhbiBleWUgb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYW5kIGludGVyYWN0aW9uIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zLgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcyBhbGxvY2F0aW9uIHBhdGguIEkga25vdyBgTlRGU19GU2AgaXMgdGhlIG1haW4gb25lLCBidXQgSSBoYXZlIGEgZmVlbGluZyB0aGVyZSBtaWdodCBiZSBhIHdyaXRlLXJlbGF0ZWQgY29uZmlndXJhdGlvbiB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSG1tLCBkaWRuJiMzOTt0IEkganVzdCBsb29rIGF0IGBOVEZTX1JXYD8gTGV0IG1lIGRvdWJsZS1jaGVjayBgZnMvbnRmcy9LY29uZmlnYC4gWWVzLCBJJiMzOTttIGNlcnRhaW4gdGhhdCBgY29uZmlnIE5URlNfUldgIGRpZG4mIzM5O3QgdHVybiB1cCBhbnkgdXNlZnVsIGluZm9ybWF0aW9uLiBBaCwgYnV0IHdhaXQgYSBzZWNvbmQsIGxldCBtZSB0YWtlIGEgYnJvYWRlciBhcHByb2FjaC4gSSYjMzk7bGwgc2VhcmNoIGBmcy9udGZzL0tjb25maWdgIGZvciBgUldgIG9yIGBXUklURWAgbW9yZSBnZW5lcmFsbHk7IHNvbWV0aGluZyBtb3JlIHNwZWNpZmljIG1pZ2h0IGhhdmUgYmVlbiBvdmVybG9va2VkLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtSVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwNDIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgTlRGUyBXcml0ZSBJbXBsZW1lbnRhdGlvbiBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCBzdGVwIGluIHRhY2tsaW5nIHRoaXMgd3JpdGUgZnVuY3Rpb25hbGl0eSBxdWVzdGlvbiBpbiB0aGUgTlRGUyBtb2R1bGUgaXMgcHJldHR5IGNsZWFyIHRvIG1lOiBJIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGF0IHRoZSByZWxldmFudCBzZXR0aW5ncyB3aWxsIGxpa2VseSBiZSBmb3VuZCBpbiB0aGUgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHplcm9pbmcgaW4gb24gYW55dGhpbmcgcmVsYXRlZCB0byAmIzM0O3dyaXRlJiMzNDsgY2FwYWJpbGl0eS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB0aGVyZSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb2J2aW91cyBjb25maWd1cmF0aW9uIGZsYWdzLCBkZXBlbmRlbmNpZXMsIG9yIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBzaGVkIGxpZ2h0IG9uIGhvdyB3cml0ZSBzdXBwb3J0IGlzIGNvbnRyb2xsZWQgYW5kIGVuYWJsZWQgd2l0aGluIHRoZSBkcml2ZXIuIFRoaXMgaXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgZm9yIGV4YW1pbmluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiwgd2hpY2ggc2hvdWxkIHJldmVhbCB0aGUgY29uZGl0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRoYXQgZ292ZXJuIGhvdyB3cml0ZSBzdXBwb3J0IGlzIGNvbXBpbGVkIGludG8gdGhlIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNzgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipOVEZTIGFuZCBLZXJuZWwgQ29uZmlndXJhdGlvbjogQSBRdWljayBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIGBmcy9udGZzL0tjb25maWdgIHBvcCB1cCBpbiBhbiBvbGRlciBrZXJuZWwgY29udGV4dCwgYW5kIHRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgcGlxdWluZyBteSBpbnRlcmVzdC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHNwb3R0aW5nIGBjb25maWcgTlRGU19SV2AsIHdoaWNoIG1lYW5zIHRoZXJlIHdhcyBvbmNlIGEgd3JpdGFibGUgTlRGUyBpbXBsZW1lbnRhdGlvbi4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFuZCBJIGtub3cgdGhhdCBJIHNob3VsZCBiZSBhYmxlIHRvIGRpZyBkZWVwZXIuIFRvIGdldCB0aGUgd2hvbGUgcGljdHVyZSwgSSBuZWVkIHRvIHJlYWQgdGhyb3VnaCB0aGUgZW50aXJlIGBmcy9udGZzL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZmVhdHVyZSB3YXMgZW5hYmxlZCwgYW5kIGhvdyBpdCBldm9sdmVkLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgd2VudCBpbnRvIGl0LCB3aGVyZSBpdCBjYW1lIGZyb20gYW5kIGxpa2VseSB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgd2VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5URlNfRlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O05URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0c2VsZWN0IE5MU1xuICAgNTpcdFx0c2VsZWN0IEZTX0lPTUFQXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIE5URlMgaXMgdGhlIGZpbGUgc3lzdGVtIG9mIE1pY3Jvc29mdCBXaW5kb3dzIE5ULCAyMDAwLCBYUCBhbmQgMjAwMy5cbiAgIDg6XHRcdCAgVGhpcyBhbGxvd3MgeW91IHRvIG1vdW50IGRldmljZXMgZm9ybWF0dGVkIHdpdGggdGhlIG50ZnMgZmlsZSBzeXN0ZW0uXG4gICA5Olx0XG4gIDEwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxuICAxMTpcdFx0ICBudGZzLlxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBOVEZTX0RFQlVHXG4gIDE0Olx0XHRib29sIFwmIzM0O05URlMgZGVidWdnaW5nIHN1cHBvcnRcJiMzNDtcbiAgMTU6XHRcdGRlcGVuZHMgb24gTlRGU19GU1xuICAxNjpcdFx0aGVscFxuICAxNzpcdFx0ICBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgTlRGUyBmaWxlIHN5c3RlbSwgc2F5XG4gIDE4Olx0XHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYWRkaXRpb25hbCBjb25zaXN0ZW5jeSBjaGVja3MgdG8gYmVcbiAgMTk6XHRcdCAgcGVyZm9ybWVkIGJ5IHRoZSBkcml2ZXIgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIGRlYnVnZ2luZyBtZXNzYWdlcyB0b1xuICAyMDpcdFx0ICBiZSB3cml0dGVuIHRvIHRoZSBzeXN0ZW0gbG9nLiAgTm90ZSB0aGF0IGRlYnVnZ2luZyBtZXNzYWdlcyBhcmVcbiAgMjE6XHRcdCAgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIFRvIGVuYWJsZSB0aGVtLCBzdXBwbHkgdGhlIG9wdGlvbiBkZWJ1Z19tc2dzPTFcbiAgMjI6XHRcdCAgYXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgd2hlbiBib290aW5nIHRoZSBrZXJuZWwgb3IgYXMgYW4gb3B0aW9uXG4gIDIzOlx0XHQgIHRvIGluc21vZCB3aGVuIGxvYWRpbmcgdGhlIG50ZnMgbW9kdWxlLiAgT25jZSB0aGUgZHJpdmVyIGlzIGFjdGl2ZSxcbiAgMjQ6XHRcdCAgeW91IGNhbiBlbmFibGUgZGVidWdnaW5nIG1lc3NhZ2VzIGJ5IGRvaW5nIChhcyByb290KTpcbiAgMjU6XHRcdCAgZWNobyAxIFx1MDAzZSAvcHJvYy9zeXMvZnMvbnRmcy1kZWJ1Z1xuICAyNjpcdFx0ICBSZXBsYWNpbmcgdGhlIFwmIzM0OzFcJiMzNDsgd2l0aCBcJiMzNDswXCYjMzQ7IHdvdWxkIGRpc2FibGUgZGVidWcgbWVzc2FnZXMuXG4gIDI3Olx0XG4gIDI4Olx0XHQgIElmIHlvdSBsZWF2ZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgZGlzYWJsZWQsIHRoaXMgcmVzdWx0cyBpbiBsaXR0bGVcbiAgMjk6XHRcdCAgb3ZlcmhlYWQsIGJ1dCBlbmFibGluZyBkZWJ1ZyBtZXNzYWdlcyByZXN1bHRzIGluIHZlcnkgc2lnbmlmaWNhbnRcbiAgMzA6XHRcdCAgc2xvd2Rvd24gb2YgdGhlIHN5c3RlbS5cbiAgMzE6XHRcbiAgMzI6XHRcdCAgV2hlbiByZXBvcnRpbmcgYnVncywgcGxlYXNlIHRyeSB0byBoYXZlIGF2YWlsYWJsZSBhIGZ1bGwgZHVtcCBvZlxuICAzMzpcdFx0ICBkZWJ1Z2dpbmcgbWVzc2FnZXMgd2hpbGUgdGhlIG1pc2JlaGF2aW91ciB3YXMgb2NjdXJyaW5nLlxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxuICAzNjpcdFx0Ym9vbCBcJiMzNDtOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4gIDM3Olx0XHRkZXBlbmRzIG9uIE5URlNfRlNcbiAgMzg6XHRcdHNlbGVjdCBGU19QT1NJWF9BQ0xcbiAgMzk6XHRcdGhlbHBcbiAgNDA6XHRcdCAgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpIHN1cHBvcnQgYWRkaXRpb25hbCBhY2Nlc3MgcmlnaHRzXG4gIDQxOlx0XHQgIGZvciB1c2VycyBhbmQgZ3JvdXBzIGJleW9uZCB0aGUgc3RhbmRhcmQgb3duZXIvZ3JvdXAvd29ybGQgc2NoZW1lLlxuICA0MjpcdFxuICA0MzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEFDTCBzdXBwb3J0IGZvciBudGZzLCBwcm92aWRpbmcgZnVuY3Rpb25hbCBwYXJpdHlcbiAgNDQ6XHRcdCAgd2l0aCBudGZzMyBkcml2aWVyLlxuICA0NTpcdFxuICA0NjpcdFx0ICBOT1RFOiB0aGlzIGlzIGxpbnV4IG9ubHkgZmVhdHVyZS4gV2luZG93cyB3aWxsIGlnbm9yZSB0aGVzZSBBQ0xzLlxuICA0NzpcdFxuICA0ODpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjMyCgkJCQkJCQlvdXRwdXQ6IDEzMAoJCQkJCQkJdGhvdWdodHM6IDMyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOVEZTIEZpbGVzeXN0ZW0gRnV6emluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgdGhlIG9sZCBgTlRGU19SV2Agb3B0aW9uIGlzIGdvbmUsIG9yIG1heWJlIHdyaXRlIHN1cHBvcnQgaXMganVzdCBhbHdheXMgZW5hYmxlZCBub3cgaW4gdGhlIG5ldyBgZnMvbnRmc2AgZHJpdmVyLiBPciBwZXJoYXBzIGBmcy9udGZzYCBpcyB0aGUgdXBkYXRlZCB2ZXJzaW9uIGFuZCBgTlRGU19SV2Agd2FzIGRlcHJlY2F0ZWQuIEVpdGhlciB3YXksIGBOVEZTX0ZTYCBpcyB0aGUgb25seSBjb25maWcgdG8gd29ycnkgYWJvdXQgbm93LgoKTGV0IG1lIGNvbmZpcm0gdGhhdCBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlLi4uIFllcCwgYG50ZnNfZmFsbG9jYXRlYCBjYWxscyBgbnRmc19hbGxvY2F0ZV9yYW5nZWAsIHdoaWNoICpkb2VzKiBjYWxsIGBudGZzX2F0dHJfZmFsbG9jYXRlYC4gR29vZCwgZ29vZC4KClRoaXMgaXMgYSByZWFsIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGlzIHBhdGNoIGlzIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgdXNlLWFmdGVyLWZyZWUgaXNzdWUsIGFuZCBpdCYjMzk7cyBkb2luZyBpdCBieSBjYWNoaW5nIHRob3NlIGBybGAgZmllbGRzIGJlZm9yZSBkcm9wcGluZyB0aGUgbG9jay4gSXQgYWxzbyBzdG9wcyBhbiBpbmNvcnJlY3QgY2FsbCB0byBgbnRmc19kaW9femVyb19yYW5nZWAgd2hlbiBgYmFsbG9jYCBpcyBmYWxzZS4gRGVmaW5pdGVseSB3b3J0aCBjaGVja2luZyB3aXRoIGZ1enppbmcuCgpJJiMzOTttIHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYC4KCkZvY3VzIFN5bWJvbHMgYXJlIGdvaW5nIHRvIGJlIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBhbmQgYG50ZnNfZmFsbG9jYXRlYC4KCkFuZCwgYXMgZXhwZWN0ZWQsIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQgZW5hYmxlZCBpcyBgTlRGU19GU2AuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3MgSSBuZWVkIHRvIGNvbnNpZGVyLi4uIE5vcGUsIGBOVEZTX0ZTYCBpcyBzdWZmaWNpZW50LgoKVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkOiBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBpcyBiZWluZyBhZGRyZXNzZWQsIGFsb25nIHdpdGggYSBidWcgZml4IGluIHRoZSBgZmFsbG9jYXRlYCBwYXRoLiBUaGlzIGlzIGEgY3J1Y2lhbCBhcmVhIG9mIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIGFuZCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2YWxpZGF0ZSB0aGUgcGF0Y2gmIzM5O3MgZWZmaWNhY3kgYW5kIHVuY292ZXIgYW55IHBvdGVudGlhbCByZWdyZXNzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2F0dHJfZmFsbG9jYXRlJiMzNDssCiAgICAmIzM0O250ZnNfZmFsbG9jYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGJ5IGNhY2hpbmcgcnVubGlzdCBlbGVtZW50IGZpZWxkcyBiZWZvcmUgZHJvcHBpbmcgdGhlIHJ1bmxpc3QgbG9jay4gSXQgYWxzbyBmaXhlcyBhIGJ1ZyB3aGVyZSBgbnRmc19kaW9femVyb19yYW5nZWAgd2FzIGNhbGxlZCBpbmNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0mIzM5O3MgZmFsbG9jYXRlIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOVEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnRmc19hdHRyX2ZhbGxvY2F0ZSYjMzQ7LAogICAgJiMzNDtudGZzX2ZhbGxvY2F0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBieSBjYWNoaW5nIHJ1bmxpc3QgZWxlbWVudCBmaWVsZHMgYmVmb3JlIGRyb3BwaW5nIHRoZSBydW5saXN0IGxvY2suIEl0IGFsc28gZml4ZXMgYSBidWcgd2hlcmUgYG50ZnNfZGlvX3plcm9fcmFuZ2VgIHdhcyBjYWxsZWQgaW5jb3JyZWN0bHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtJiMzOTtzIGZhbGxvY2F0ZSBwYXRoIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjMyLjQ2ODUyNzk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzMDAyNDY4MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfYXR0cl9mYWxsb2NhdGVcIixcbiAgICBcIm50ZnNfZmFsbG9jYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbi91c2UtYWZ0ZXItZnJlZSBpbiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgYnkgY2FjaGluZyBydW5saXN0IGVsZW1lbnQgZmllbGRzIGJlZm9yZSBkcm9wcGluZyB0aGUgcnVubGlzdCBsb2NrLiBJdCBhbHNvIGZpeGVzIGEgYnVnIHdoZXJlIGBudGZzX2Rpb196ZXJvX3JhbmdlYCB3YXMgY2FsbGVkIGluY29ycmVjdGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSdzIGZhbGxvY2F0ZSBwYXRoIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDQ6NDE6MzIuNDY4NTMyMzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMDY2Njc0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDdjNzM4OWYzMWM5ZTk3YTgwZTM1ZDE4NGE0YTFjNDRmMWViMWZlNjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdW4gMjcgMDQ6NDE6MzEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9hdHRyaWIuYyBiL2ZzL250ZnMvYXR0cmliLmNcXG5pbmRleCBkZDg4MjgwOTg1MTE4My4uYTk5Yjg0NzUxZWIxMjIgMTAwNjQ0XFxuLS0tIGEvZnMvbnRmcy9hdHRyaWIuY1xcbisrKyBiL2ZzL250ZnMvYXR0cmliLmNcXG5AQCAtNTUzNiw2ICs1NTM2LDcgQEAgaW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9cXG4gXFx0czY0IG9sZF9kYXRhX3NpemU7XFxuIFxcdHM2NCB2Y25fc3RhcnQsIHZjbl9lbmQsIHZjbl91bmluaXQsIHZjbiwgdHJ5X2FsbG9jX2NudDtcXG4gXFx0czY0IGxjbiwgYWxsb2NfY250O1xcbitcXHRzNjQgcmxfbGNuLCBybF9sZW5ndGgsIHJsX3ZjbjtcXG4gXFx0aW50IGVyciA9IDA7XFxuIFxcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsO1xcbiBcXHRib29sIGJhbGxvYztcXG5AQCAtNTYxNSwxOSArNTYxNiwyMyBAQCBpbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib1xcbiBcXHR3aGlsZSAodmNuIFxcdTAwM2MgdmNuX3VuaW5pdCkge1xcbiBcXHRcXHRkb3duX3JlYWQoXFx1MDAyNm5pLVxcdTAwM2VydW5saXN0LmxvY2spO1xcbiBcXHRcXHRybCA9IG50ZnNfYXR0cl9maW5kX3Zjbl9ub2xvY2sobmksIHZjbiwgTlVMTCk7XFxuLVxcdFxcdHVwX3JlYWQoXFx1MDAyNm5pLVxcdTAwM2VydW5saXN0LmxvY2spO1xcbiBcXHRcXHRpZiAoSVNfRVJSKHJsKSkge1xcbitcXHRcXHRcXHR1cF9yZWFkKFxcdTAwMjZuaS1cXHUwMDNlcnVubGlzdC5sb2NrKTtcXG4gXFx0XFx0XFx0ZXJyID0gUFRSX0VSUihybCk7XFxuIFxcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRcXHR9XFxuK1xcdFxcdHJsX2xjbiA9IHJsLVxcdTAwM2VsY247XFxuK1xcdFxcdHJsX2xlbmd0aCA9IHJsLVxcdTAwM2VsZW5ndGg7XFxuK1xcdFxcdHJsX3ZjbiA9IHJsLVxcdTAwM2V2Y247XFxuK1xcdFxcdHVwX3JlYWQoXFx1MDAyNm5pLVxcdTAwM2VydW5saXN0LmxvY2spO1xcbiBcXG4tXFx0XFx0aWYgKHJsLVxcdTAwM2VsY24gXFx1MDAzZSAwKSB7XFxuLVxcdFxcdFxcdHZjbiArPSBybC1cXHUwMDNlbGVuZ3RoIC0gKHZjbiAtIHJsLVxcdTAwM2V2Y24pO1xcbi1cXHRcXHR9IGVsc2UgaWYgKHJsLVxcdTAwM2VsY24gPT0gTENOX0RFTEFMTE9DIHx8IHJsLVxcdTAwM2VsY24gPT0gTENOX0hPTEUpIHtcXG4tXFx0XFx0XFx0dHJ5X2FsbG9jX2NudCA9IG1pbihybC1cXHUwMDNlbGVuZ3RoIC0gKHZjbiAtIHJsLVxcdTAwM2V2Y24pLFxcbitcXHRcXHRpZiAocmxfbGNuIFxcdTAwM2UgMCkge1xcbitcXHRcXHRcXHR2Y24gKz0gcmxfbGVuZ3RoIC0gKHZjbiAtIHJsX3Zjbik7XFxuK1xcdFxcdH0gZWxzZSBpZiAocmxfbGNuID09IExDTl9ERUxBTExPQyB8fCBybF9sY24gPT0gTENOX0hPTEUpIHtcXG4rXFx0XFx0XFx0dHJ5X2FsbG9jX2NudCA9IG1pbihybF9sZW5ndGggLSAodmNuIC0gcmxfdmNuKSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIHZjbl91bmluaXQgLSB2Y24pO1xcbiBcXG4tXFx0XFx0XFx0aWYgKHJsLVxcdTAwM2VsY24gPT0gTENOX0RFTEFMTE9DKSB7XFxuK1xcdFxcdFxcdGlmIChybF9sY24gPT0gTENOX0RFTEFMTE9DKSB7XFxuIFxcdFxcdFxcdFxcdHZjbiArPSB0cnlfYWxsb2NfY250O1xcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0XFx0fVxcbkBAIC01NjQyLDExICs1NjQ3LDE0IEBAIGludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvXFxuIFxcdFxcdFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4tXFx0XFx0XFx0XFx0ZXJyID0gbnRmc19kaW9femVyb19yYW5nZShWRlNfSShuaSksXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgbGNuIFxcdTAwM2NcXHUwMDNjIHZvbC1cXHUwMDNlY2x1c3Rlcl9zaXplX2JpdHMsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgYWxsb2NfY250IFxcdTAwM2NcXHUwMDNjIHZvbC1cXHUwMDNlY2x1c3Rlcl9zaXplX2JpdHMpO1xcbi1cXHRcXHRcXHRcXHRpZiAoZXJyIFxcdTAwM2UgMClcXG4tXFx0XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdFxcdFxcdGlmIChiYWxsb2MpIHtcXG4rXFx0XFx0XFx0XFx0XFx0ZXJyID0gbnRmc19kaW9femVyb19yYW5nZShWRlNfSShuaSksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgbGNuIFxcdTAwM2NcXHUwMDNjIHZvbC1cXHUwMDNlY2x1c3Rlcl9zaXplX2JpdHMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgYWxsb2NfY250IFxcdTAwM2NcXHUwMDNjXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgdm9sLVxcdTAwM2VjbHVzdGVyX3NpemVfYml0cyk7XFxuK1xcdFxcdFxcdFxcdFxcdGlmIChlcnIgXFx1MDAzZSAwKVxcbitcXHRcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0XFx0XFx0fVxcbiBcXG4gXFx0XFx0XFx0XFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxcbiBcXHRcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDQ6NDE6MzIuODc5OTQwMDk3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDg4ODgyNjAzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19hdHRyX2ZhbGxvY2F0ZVwiLFxuICAgIFwibnRmc19mYWxsb2NhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBieSBjYWNoaW5nIHJ1bmxpc3QgZWxlbWVudCBmaWVsZHMgYmVmb3JlIGRyb3BwaW5nIHRoZSBydW5saXN0IGxvY2suIEl0IGFsc28gZml4ZXMgYSBidWcgd2hlcmUgYG50ZnNfZGlvX3plcm9fcmFuZ2VgIHdhcyBjYWxsZWQgaW5jb3JyZWN0bHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtJ3MgZmFsbG9jYXRlIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDdjNzM4OWYzMWM5ZTk3YTgwZTM1ZDE4NGE0YTFjNDRmMWViMWZlNjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwNDo0MTozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvYXR0cmliLmMgYi9mcy9udGZzL2F0dHJpYi5jXG5pbmRleCBkZDg4MjgwOTg1MTE4My4uYTk5Yjg0NzUxZWIxMjIgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL2F0dHJpYi5jXG4rKysgYi9mcy9udGZzL2F0dHJpYi5jXG5AQCAtNTUzNiw2ICs1NTM2LDcgQEAgaW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9cbiBcdHM2NCBvbGRfZGF0YV9zaXplO1xuIFx0czY0IHZjbl9zdGFydCwgdmNuX2VuZCwgdmNuX3VuaW5pdCwgdmNuLCB0cnlfYWxsb2NfY250O1xuIFx0czY0IGxjbiwgYWxsb2NfY250O1xuK1x0czY0IHJsX2xjbiwgcmxfbGVuZ3RoLCBybF92Y247XG4gXHRpbnQgZXJyID0gMDtcbiBcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsO1xuIFx0Ym9vbCBiYWxsb2M7XG5AQCAtNTYxNSwxOSArNTYxNiwyMyBAQCBpbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib1xuIFx0d2hpbGUgKHZjbiBcdTAwM2MgdmNuX3VuaW5pdCkge1xuIFx0XHRkb3duX3JlYWQoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiBcdFx0cmwgPSBudGZzX2F0dHJfZmluZF92Y25fbm9sb2NrKG5pLCB2Y24sIE5VTEwpO1xuLVx0XHR1cF9yZWFkKFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QubG9jayk7XG4gXHRcdGlmIChJU19FUlIocmwpKSB7XG4rXHRcdFx0dXBfcmVhZChcdTAwMjZuaS1cdTAwM2VydW5saXN0LmxvY2spO1xuIFx0XHRcdGVyciA9IFBUUl9FUlIocmwpO1xuIFx0XHRcdGdvdG8gb3V0O1xuIFx0XHR9XG4rXHRcdHJsX2xjbiA9IHJsLVx1MDAzZWxjbjtcbitcdFx0cmxfbGVuZ3RoID0gcmwtXHUwMDNlbGVuZ3RoO1xuK1x0XHRybF92Y24gPSBybC1cdTAwM2V2Y247XG4rXHRcdHVwX3JlYWQoXHUwMDI2bmktXHUwMDNlcnVubGlzdC5sb2NrKTtcbiBcbi1cdFx0aWYgKHJsLVx1MDAzZWxjbiBcdTAwM2UgMCkge1xuLVx0XHRcdHZjbiArPSBybC1cdTAwM2VsZW5ndGggLSAodmNuIC0gcmwtXHUwMDNldmNuKTtcbi1cdFx0fSBlbHNlIGlmIChybC1cdTAwM2VsY24gPT0gTENOX0RFTEFMTE9DIHx8IHJsLVx1MDAzZWxjbiA9PSBMQ05fSE9MRSkge1xuLVx0XHRcdHRyeV9hbGxvY19jbnQgPSBtaW4ocmwtXHUwMDNlbGVuZ3RoIC0gKHZjbiAtIHJsLVx1MDAzZXZjbiksXG4rXHRcdGlmIChybF9sY24gXHUwMDNlIDApIHtcbitcdFx0XHR2Y24gKz0gcmxfbGVuZ3RoIC0gKHZjbiAtIHJsX3Zjbik7XG4rXHRcdH0gZWxzZSBpZiAocmxfbGNuID09IExDTl9ERUxBTExPQyB8fCBybF9sY24gPT0gTENOX0hPTEUpIHtcbitcdFx0XHR0cnlfYWxsb2NfY250ID0gbWluKHJsX2xlbmd0aCAtICh2Y24gLSBybF92Y24pLFxuIFx0XHRcdFx0XHQgICAgdmNuX3VuaW5pdCAtIHZjbik7XG4gXG4tXHRcdFx0aWYgKHJsLVx1MDAzZWxjbiA9PSBMQ05fREVMQUxMT0MpIHtcbitcdFx0XHRpZiAocmxfbGNuID09IExDTl9ERUxBTExPQykge1xuIFx0XHRcdFx0dmNuICs9IHRyeV9hbGxvY19jbnQ7XG4gXHRcdFx0XHRjb250aW51ZTtcbiBcdFx0XHR9XG5AQCAtNTY0MiwxMSArNTY0NywxNCBAQCBpbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib1xuIFx0XHRcdFx0aWYgKGVycilcbiBcdFx0XHRcdFx0Z290byBvdXQ7XG4gXG4tXHRcdFx0XHRlcnIgPSBudGZzX2Rpb196ZXJvX3JhbmdlKFZGU19JKG5pKSxcbi1cdFx0XHRcdFx0XHRcdCAgbGNuIFx1MDAzY1x1MDAzYyB2b2wtXHUwMDNlY2x1c3Rlcl9zaXplX2JpdHMsXG4tXHRcdFx0XHRcdFx0XHQgIGFsbG9jX2NudCBcdTAwM2NcdTAwM2Mgdm9sLVx1MDAzZWNsdXN0ZXJfc2l6ZV9iaXRzKTtcbi1cdFx0XHRcdGlmIChlcnIgXHUwMDNlIDApXG4tXHRcdFx0XHRcdGdvdG8gb3V0O1xuK1x0XHRcdFx0aWYgKGJhbGxvYykge1xuK1x0XHRcdFx0XHRlcnIgPSBudGZzX2Rpb196ZXJvX3JhbmdlKFZGU19JKG5pKSxcbitcdFx0XHRcdFx0XHRcdFx0ICBsY24gXHUwMDNjXHUwMDNjIHZvbC1cdTAwM2VjbHVzdGVyX3NpemVfYml0cyxcbitcdFx0XHRcdFx0XHRcdFx0ICBhbGxvY19jbnQgXHUwMDNjXHUwMDNjXG4rXHRcdFx0XHRcdFx0XHRcdCAgdm9sLVx1MDAzZWNsdXN0ZXJfc2l6ZV9iaXRzKTtcbitcdFx0XHRcdFx0aWYgKGVyciBcdTAwM2UgMClcbitcdFx0XHRcdFx0XHRnb3RvIG91dDtcbitcdFx0XHRcdH1cbiBcbiBcdFx0XHRcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcbiBcdFx0XHRcdFx0Z290byBvdXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MTozMi44Nzk5NDEzOTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDE5OTE2NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoIHRvIGBudGZzX2F0dHJfZmFsbG9jYXRlYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGluIGBmcy9udGZzL2F0dHJpYi5jYC4gVGhlIGNoYW5nZXMgc2VlbSBzdHJhaWdodGZvcndhcmQgZW5vdWdoOiByZWFkaW5nIGBybGAgZmllbGRzIHVuZGVyIHRoZSBgcnVubGlzdC5sb2NrYCBhbmQgY29uZGl0aW9uYWxseSBjYWxsaW5nIGBudGZzX2Rpb196ZXJvX3JhbmdlYCBiYXNlZCBvbiB0aGUgYGJhbGxvY2AgZmxhZy4gU2VlbXMgcHJldHR5IHN0YW5kYXJkIGZvciBvcHRpbWl6aW5nIE5URlMuIEJ1dC4uLndhaXQgYSBzZWNvbmQuIGBmcy9udGZzL2F0dHJpYi5jYD8gVGhhdCdzIHRocm93aW5nIGEgZmxhZy4gSXMgdGhpcyBmb3IgdGhlIG9sZCBOVEZTIGRyaXZlciBvciB0aGUgbmV3ZXIgYG50ZnMzYD8gSSBuZWVkIHRvIGNsYXJpZnkgd2hpY2ggZHJpdmVyIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLCBiZWNhdXNlIHRoZXkgaGF2ZSBkaWZmZXJlbnQgc3RydWN0dXJlcy5cblxuTGV0J3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYGZzL250ZnNgIGV2ZW4gZXhpc3RzLCBvciBpZiBpdCdzIGJlZW4gc3VwZXJzZWRlZCBieSBgZnMvbnRmczNgLiBNZW1vcnkgam9nIC0gbm93ICp0aGF0KiBmdW5jdGlvbiBuYW1lLCBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAuLi4gZG9lc24ndCByaW5nIGEgYmVsbCBmcm9tIHRoZSBvbGQgZHJpdmVyLiBIbW0sIEkgYmV0dGVyIGRpZyBpbnRvIHRoaXMgYW5kIGNvbmZpcm0uIExvb2tzIGxpa2UgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGZpbGUgcGF0aCBhZ2FpbnN0IGJvdGggZGlyZWN0b3JpZXMuIFRoaXMgc2VlbXMgbGlrZSBhIHBvdGVudGlhbCBzb3VyY2Ugb2YgY29uZnVzaW9uIG9yIGV2ZW4gYSBidWcgaWYgd2UncmUgbm90IGNhcmVmdWwuIExldCdzIGdldCB0aGUgcmlnaHQgY29udGV4dCFcblxuXG4iLCJJbnB1dFRva2VucyI6MjU0NiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjM3Ljg5OTg1OTY3OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc3MTQ4NjExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50ZnNfYXR0cl9mYWxsb2NhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9hdHRyaWIuYz01NDc0PWludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX3B1bmNoX2hvbGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKVxcbi0tXFxuZnMvbnRmcy9hdHRyaWIuYy01NTMwLVxcbmZzL250ZnMvYXR0cmliLmM6NTUzMTppbnQgbnRmc19hdHRyX2ZhbGxvY2F0ZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBzdGFydCwgbG9mZl90IGJ5dGVfbGVuLCBib29sIGtlZXBfc2l6ZSlcXG5mcy9udGZzL2F0dHJpYi5jLTU1MzIte1xcbi0tXFxuZnMvbnRmcy9hdHRyaWIuaD0xMDc9dm9pZCBudGZzX2F0dHJfY2xvc2Uoc3RydWN0IG50ZnNfaW5vZGUgKm4pO1xcbmZzL250ZnMvYXR0cmliLmg6MTA4OmludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvb2wga2VlcF9zaXplKTtcXG5mcy9udGZzL2F0dHJpYi5oLTEwOS1pbnQgbnRmc19ub25fcmVzaWRlbnRfYXR0cl9pbnNlcnRfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBzNjQgc3RhcnRfdmNuLCBzNjQgbGVuKTtcXG4tLVxcbmZzL250ZnMvZmlsZS5jPTgzMz1zdGF0aWMgaW50IG50ZnNfYWxsb2NhdGVfcmFuZ2Uoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCxcXG4tLVxcbmZzL250ZnMvZmlsZS5jLTg2My1cXG5mcy9udGZzL2ZpbGUuYzo4NjQ6XFx0ZXJyID0gbnRmc19hdHRyX2ZhbGxvY2F0ZShuaSwgb2Zmc2V0LCBsZW4sXFxuZnMvbnRmcy9maWxlLmMtODY1LVxcdFxcdFxcdG1vZGUgXFx1MDAyNiBGQUxMT0NfRkxfS0VFUF9TSVpFID8gdHJ1ZSA6IGZhbHNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDQ6NDE6MzkuOTc3MDEzNTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjA4NDc5MjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTmF2aWdhdGluZyB0aGUgTlRGUyBGaWxlIFN5c3RlbSBEcml2ZXJzKipcblxuUmlnaHQsIHNvIEkgc2VlIGBmcy9udGZzL2F0dHJpYi5jYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgXCJXYWl0IGEgbWludXRlLCBpc24ndCBgZnMvbnRmc2AgdGhlIGxlZ2FjeSBkcml2ZXI/XCIgQnV0IHRoZW4gSSBoYXZlIHRvIG1lbnRhbGx5IGRvdWJsZS1jaGVjayBiZWNhdXNlIEkga25vdyB0aGUgbGFuZHNjYXBlIGhhcyBldm9sdmVkLiBJdOKAmXMgZW50aXJlbHkgcG9zc2libGUgdGhhdCBpbiAqdGhpcyogcGFydGljdWxhciBidWlsZCBvciBrZXJuZWwgdHJlZSwgc29tZW9uZSdzIHJlbmFtZWQgdGhlIGRpcmVjdG9yeSB0byBgZnMvbnRmczNgLCBvciBwZXJoYXBzIGl04oCZcyBzdGlsbCB1c2luZyB0aGUgb2xkZXIgcGF0aHMuXG5cbkdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHRoYXQgY29uZnVzaW9uLCBJIHNob3VsZCBjb25maXJtIHRoZSBkcml2ZXIgdGhhdCB0aGlzIGlzIGxpbmtlZCB0by4gTXkgbmV4dCBzdGVwIGhhcyB0byBiZSBjaGVja2luZyB0aGUgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZS4gVGhhdCB3aWxsIGRlZmluaXRpdmVseSB0ZWxsIG1lIHdoaWNoIGRyaXZlciBhbmQgZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYW5kIHdoYXQgdGhpcyBtb2R1bGUgaXMgYWN0dWFsbHkgaW50ZW5kZWQgZm9yLiBJdOKAmXMgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gYXZvaWQgd2FzdGluZyB0aW1lIG9uIHRoZSB3cm9uZyBjb2RlIGJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0ODUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MTo0My4xODU0OTQ3NDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2NTY5MzQxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlRGU19GU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xcbmZzL250ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcXG4tLVxcbmZzL250ZnMvS2NvbmZpZy0zNC1cXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuZnMvbnRmcy9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjQ1LjE1MTE5MjA1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTM2MzIzMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgTlRGUyBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJJ20gcG9raW5nIGFyb3VuZCwgYW5kIGl0IGxvb2tzIGxpa2UgYGZzL250ZnNgIGlzIHN0aWxsIHRoZSBkaXJlY3RvcnkuIEdvb2QuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0LiBBaCwgcmlnaHQsIGBOVEZTX0ZTYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiwgbm90IHRoZSBmaWxlIHN5c3RlbSBpdHNlbGYuIEhtbSwgd2hlcmUncyB0aGF0IGBudGZzX2F0dHJfZmFsbG9jYXRlYCBmdW5jdGlvbj8gUmlnaHQsIGBmcy9udGZzL2F0dHJpYi5jYC4gSnVzdCBjb25maXJtaW5nIHRoYXQgYE5URlNfRlNgIGlzIHRoZSBtYWluIGNvbmZpZyBvcHRpb24uIFllcCwgdGhlcmUgaXQgaXMuIEhvbGQgb24sIGNvdWxkIGBOVEZTX1JXYCBiZSBpbnZvbHZlZCB0b28/IExldCdzIHF1aWNrbHkgc2NhbiBgZnMvbnRmcy9LY29uZmlnYCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTksIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDQ6NDE6NDguMjA0ODI2Mjc4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzMxNDAyNzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX1JXXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MTo0OS45Nzc5NzI2OTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzkxODkyMDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhhdCBgZnMvbnRmcy9LY29uZmlnYCBmaWxlLCBhcyBJIHVuZGVyc3RhbmQgaXQ6XG5cbioqTlRGUyBDb25maWd1cmF0aW9uIC0gRGVjb2RpbmcgdGhlIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBmcy9udGZzL0tjb25maWdgIGZpbGUuIEknbSBhbHJlYWR5IGV4cGVjdGluZyBpdCB0byBvdXRsaW5lIHRoZSB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyIHdpdGhpbiB0aGUga2VybmVsLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBmb2N1c2luZyBvbiBob3cgaXQgcHJlc2VudHMgdGhlIG9wdGlvbnMsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBzdWJ0bGUgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBzZWN1cml0eS4gSSdtIGFudGljaXBhdGluZyBmaW5kaW5nIHRoZSB1c3VhbCBzdXNwZWN0czogc3VwcG9ydCBmb3IgcmVhZC93cml0ZSBhY2Nlc3MsIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIHBlcmhhcHMgZXZlbiBqb3VybmFsIHJlY292ZXJ5IG9wdGlvbnMuIE15IGdvYWwgaXMgdG8gc2VlIGhvdyB0aGUgZGV2ZWxvcGVycyBoYXZlIGJhbGFuY2VkIGZ1bmN0aW9uYWxpdHkgd2l0aCBwb3RlbnRpYWwgcmVzb3VyY2UgY29uc3RyYWludHMuIEknbGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBmZWF0dXJlcy4gRmluYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyByZWdhcmRpbmcgYW55IGNoYW5nZXMgb3IgaW1wcm92ZW1lbnRzIG1hZGUgdG8gdGhlIGRyaXZlciBvdmVyIHRoZSBoaXN0b3J5IG9mIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXkncmUgYWRkcmVzc2luZyBhbnkgcHJldmlvdXMgd2Vha25lc3NlcyBvciBwcm9ibGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIwMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjUyLjc2OTg2Njc5N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODc0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9udGZzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTlRGU19GU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk5URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdHNlbGVjdCBOTFNcXG4gICA1OlxcdFxcdHNlbGVjdCBGU19JT01BUFxcbiAgIDY6XFx0XFx0aGVscFxcbiAgIDc6XFx0XFx0ICBOVEZTIGlzIHRoZSBmaWxlIHN5c3RlbSBvZiBNaWNyb3NvZnQgV2luZG93cyBOVCwgMjAwMCwgWFAgYW5kIDIwMDMuXFxuICAgODpcXHRcXHQgIFRoaXMgYWxsb3dzIHlvdSB0byBtb3VudCBkZXZpY2VzIGZvcm1hdHRlZCB3aXRoIHRoZSBudGZzIGZpbGUgc3lzdGVtLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxcbiAgMTE6XFx0XFx0ICBudGZzLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRjb25maWcgTlRGU19ERUJVR1xcbiAgMTQ6XFx0XFx0Ym9vbCBcXFwiTlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFxcXCJcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gTlRGU19GU1xcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgTlRGUyBmaWxlIHN5c3RlbSwgc2F5XFxuICAxODpcXHRcXHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYWRkaXRpb25hbCBjb25zaXN0ZW5jeSBjaGVja3MgdG8gYmVcXG4gIDE5OlxcdFxcdCAgcGVyZm9ybWVkIGJ5IHRoZSBkcml2ZXIgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIGRlYnVnZ2luZyBtZXNzYWdlcyB0b1xcbiAgMjA6XFx0XFx0ICBiZSB3cml0dGVuIHRvIHRoZSBzeXN0ZW0gbG9nLiAgTm90ZSB0aGF0IGRlYnVnZ2luZyBtZXNzYWdlcyBhcmVcXG4gIDIxOlxcdFxcdCAgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIFRvIGVuYWJsZSB0aGVtLCBzdXBwbHkgdGhlIG9wdGlvbiBkZWJ1Z19tc2dzPTFcXG4gIDIyOlxcdFxcdCAgYXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgd2hlbiBib290aW5nIHRoZSBrZXJuZWwgb3IgYXMgYW4gb3B0aW9uXFxuICAyMzpcXHRcXHQgIHRvIGluc21vZCB3aGVuIGxvYWRpbmcgdGhlIG50ZnMgbW9kdWxlLiAgT25jZSB0aGUgZHJpdmVyIGlzIGFjdGl2ZSxcXG4gIDI0OlxcdFxcdCAgeW91IGNhbiBlbmFibGUgZGVidWdnaW5nIG1lc3NhZ2VzIGJ5IGRvaW5nIChhcyByb290KTpcXG4gIDI1OlxcdFxcdCAgZWNobyAxIFxcdTAwM2UgL3Byb2Mvc3lzL2ZzL250ZnMtZGVidWdcXG4gIDI2OlxcdFxcdCAgUmVwbGFjaW5nIHRoZSBcXFwiMVxcXCIgd2l0aCBcXFwiMFxcXCIgd291bGQgZGlzYWJsZSBkZWJ1ZyBtZXNzYWdlcy5cXG4gIDI3OlxcdFxcbiAgMjg6XFx0XFx0ICBJZiB5b3UgbGVhdmUgZGVidWdnaW5nIG1lc3NhZ2VzIGRpc2FibGVkLCB0aGlzIHJlc3VsdHMgaW4gbGl0dGxlXFxuICAyOTpcXHRcXHQgIG92ZXJoZWFkLCBidXQgZW5hYmxpbmcgZGVidWcgbWVzc2FnZXMgcmVzdWx0cyBpbiB2ZXJ5IHNpZ25pZmljYW50XFxuICAzMDpcXHRcXHQgIHNsb3dkb3duIG9mIHRoZSBzeXN0ZW0uXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgV2hlbiByZXBvcnRpbmcgYnVncywgcGxlYXNlIHRyeSB0byBoYXZlIGF2YWlsYWJsZSBhIGZ1bGwgZHVtcCBvZlxcbiAgMzM6XFx0XFx0ICBkZWJ1Z2dpbmcgbWVzc2FnZXMgd2hpbGUgdGhlIG1pc2JlaGF2aW91ciB3YXMgb2NjdXJyaW5nLlxcbiAgMzQ6XFx0XFxuICAzNTpcXHRjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG4gIDM2OlxcdFxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuICAzNzpcXHRcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG4gIDM4OlxcdFxcdHNlbGVjdCBGU19QT1NJWF9BQ0xcXG4gIDM5OlxcdFxcdGhlbHBcXG4gIDQwOlxcdFxcdCAgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpIHN1cHBvcnQgYWRkaXRpb25hbCBhY2Nlc3MgcmlnaHRzXFxuICA0MTpcXHRcXHQgIGZvciB1c2VycyBhbmQgZ3JvdXBzIGJleW9uZCB0aGUgc3RhbmRhcmQgb3duZXIvZ3JvdXAvd29ybGQgc2NoZW1lLlxcbiAgNDI6XFx0XFxuICA0MzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgQUNMIHN1cHBvcnQgZm9yIG50ZnMsIHByb3ZpZGluZyBmdW5jdGlvbmFsIHBhcml0eVxcbiAgNDQ6XFx0XFx0ICB3aXRoIG50ZnMzIGRyaXZpZXIuXFxuICA0NTpcXHRcXG4gIDQ2OlxcdFxcdCAgTk9URTogdGhpcyBpcyBsaW51eCBvbmx5IGZlYXR1cmUuIFdpbmRvd3Mgd2lsbCBpZ25vcmUgdGhlc2UgQUNMcy5cXG4gIDQ3OlxcdFxcbiAgNDg6XFx0XFx0ICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IEFjY2VzcyBDb250cm9sIExpc3RzIGFyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjUyLjc2OTkyNzE0N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk3MDc0MTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgTlRGUyBGYWxsb2NhdGUgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIGRpZG4ndCBJIHRoaW5rIEkgcmVtZW1iZXJlZCBhbiBgTlRGU19SV2AgbW9kdWxlIGF0IHNvbWUgcG9pbnQ/IE9yIHdhcyB0aGF0IGRlcHJlY2F0ZWQgb3IgbWVyZ2VkIGludG8gc29tZXRoaW5nIGVsc2U/IEkgc2hvdWxkIHByb2JhYmx5IGp1c3QgZm9jdXMgb24gYE5URlNfRlNgIGZvciBub3cuIFNlZSBpZiB0aGF0J3Mgc3VmZmljaWVudCBmb3IgbXkgbmVlZHMuXG5cblJpZ2h0LCB0aGUgcGF0Y2ggbWVudGlvbnMgYSBidWcgaW4gYG50ZnNfYXR0cl9mYWxsb2NhdGVgLiBUaGF0J3MgdGhlIGtleS4gTGV0J3MgdHJhY2UgdGhpcyBiYWNrLiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgaXMgY2FsbGVkIGJ5IGBudGZzX2FsbG9jYXRlX3JhbmdlYCwgd2hpY2guLi4gYWhhISBUaGF0J3MgY2FsbGVkIGJ5IGBudGZzX2ZhbGxvY2F0ZWAuIE9rYXksIG5vdyBJIG5lZWQgdG8gZmluZCB0aGUgZGVmaW5pdGlvbiBvZiBgbnRmc19mYWxsb2NhdGVgLlxuXG5UaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4gSSdsbCBuZWVkIHRvIGNoZWNrIGBmcy9udGZzL2ZpbGUuY2AgdG8gY29uZmlybSB3aGVyZSBgbnRmc19mYWxsb2NhdGVgIGlzIGltcGxlbWVudGVkIGFuZCBob3cgaXQgaXMgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE5MCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjU2LjY2NzAwMzI1M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5ODQ2OTUwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX2ZhbGxvY2F0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2ZpbGUuYz05OTQ9c3RhdGljIGludCBudGZzX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pXFxuLS1cXG5mcy9udGZzL2ZpbGUuYy0xMDU0LVxcbmZzL250ZnMvZmlsZS5jOjEwNTU6c3RhdGljIGxvbmcgbnRmc19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxcbmZzL250ZnMvZmlsZS5jLTEwNTYte1xcbi0tXFxuZnMvbnRmcy9maWxlLmM9MTE0Nj1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG50ZnNfZmlsZV9vcHMgPSB7XFxuLS1cXG5mcy9udGZzL2ZpbGUuYy0xMTU5LSNlbmRpZlxcbmZzL250ZnMvZmlsZS5jOjExNjA6XFx0LmZhbGxvY2F0ZVxcdD0gbnRmc19mYWxsb2NhdGUsXFxuZnMvbnRmcy9maWxlLmMtMTE2MS1cXHQuc2V0bGVhc2VcXHQ9IGdlbmVyaWNfc2V0bGVhc2UsXFxuLS1cXG5mcy9udGZzMy9maWxlLmM9MzgxPXN0YXRpYyBpbnQgbnRmc19maWxlX21tYXBfcHJlcGFyZShzdHJ1Y3Qgdm1fYXJlYV9kZXNjICpkZXNjKVxcbi0tXFxuZnMvbnRmczMvZmlsZS5jLTQ1Ny0vKlxcbmZzL250ZnMzL2ZpbGUuYzo0NTg6ICogbnRmc19mYWxsb2NhdGUgLSBmaWxlX29wZXJhdGlvbnM6Om50ZnNfZmFsbG9jYXRlXFxuZnMvbnRmczMvZmlsZS5jLTQ1OS0gKlxcbi0tXFxuZnMvbnRmczMvZmlsZS5jLTQ2NS0gKi9cXG5mcy9udGZzMy9maWxlLmM6NDY2OnN0YXRpYyBsb25nIG50ZnNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IHZibywgbG9mZl90IGxlbilcXG5mcy9udGZzMy9maWxlLmMtNDY3LXtcXG4tLVxcbmZzL250ZnMzL2ZpbGUuYz0xNTY2PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbnRmc19maWxlX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9udGZzMy9maWxlLmMtMTU3OC1cXHQuZnN5bmNcXHRcXHQ9IG50ZnNfZmlsZV9mc3luYyxcXG5mcy9udGZzMy9maWxlLmM6MTU3OTpcXHQuZmFsbG9jYXRlXFx0PSBudGZzX2ZhbGxvY2F0ZSxcXG5mcy9udGZzMy9maWxlLmMtMTU4MC1cXHQucmVsZWFzZVxcdD0gbnRmc19maWxlX3JlbGVhc2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQxOjU4LjQ2NTQ3OTY3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMzIzOTI3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRmlsZSBTeXN0ZW0gUGF0Y2ggZm9yIE5URlMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiV2hlcmUgZG9lcyB0aGlzIHRvdWNoP1wiIEFoLCBgZnMvbnRmcy9maWxlLmNgIGhhcyBgbnRmc19mYWxsb2NhdGVgLCBhbmQgYGZzL250ZnMvYXR0cmliLmNgIGhvbGRzIGBudGZzX2F0dHJfZmFsbG9jYXRlYC4gTGV0IG1lIGNvbmZpcm0sIGl0IHNlZW1zIGBOVEZTX0ZTYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiwgYW5kIG9ubHkgdGhhdCwgZ29vZC4gTm8gb3RoZXIgZGVwZW5kZW5jaWVzLlxuXG5SaWdodCwgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgd2l0aGluIGBhdHRyaWIuY2AuIFRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIGEgYHJsYCB1c2UtYWZ0ZXItZnJlZSBvciBkYXRhIHJhY2UgY29uZGl0aW9uOyB0aGUgY29kZSB3YXMgYWNjZXNzaW5nIGZpZWxkcyBsaWtlIGBybC1cdTAwM2VsY25gLCBgcmwtXHUwMDNlbGVuZ3RoYCwgYW5kIGBybC1cdTAwM2V2Y25gICphZnRlciogdGhlIGBuaS1cdTAwM2VydW5saXN0LmxvY2tgIGhhZCBiZWVuIHJlbGVhc2VkLiBUaGV5IHJlYWQgdGhvc2UgdmFsdWVzIHdoaWxlIHRoZSBsb2NrIHdhcyBoZWxkLCBidXQgdGhlbiB1c2UgdGhlbSBhZnRlciByZWxlYXNpbmcgdGhlIGxvY2ssIHdoaWNoIGlzIGEgdGV4dGJvb2sgZGF0YSByYWNlLiBBbHNvLCB0aGUgcGF0Y2ggd3JhcHMgYG50ZnNfZGlvX3plcm9fcmFuZ2VgIGluIGFuIGBpZiAoYmFsbG9jKWAgY2hlY2ssIHByZXN1bWFibHkgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nIGNhbGxlZCBpbiBpbmFwcHJvcHJpYXRlIHNpdHVhdGlvbnMuXG5cblNvLCB0aGlzIGlzIGEgcHJldHR5IGZ1bmN0aW9uYWwgZml4LCBhZGRyZXNzaW5nIGJvdGggYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUvZGF0YSByYWNlIG9uIHRoZSBgcmxgIHN0cnVjdHVyZSBhbmQgYSBidWcgaW4gdGhlIGNvbmRpdGlvbmFsIGNhbGwgdG8gYG50ZnNfZGlvX3plcm9fcmFuZ2VgLlxuXG5JcyB0aGlzIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmc/IEFic29sdXRlbHkuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldCB3b3VsZCBiZSBlaXRoZXIgYG50ZnNfYXR0cl9mYWxsb2NhdGVgIG9yIGBudGZzX2ZhbGxvY2F0ZWAuIE9rYXksIGxldCdzIGNvbmZpcm0gdGhlIHZpc2liaWxpdHkgb2YgYG50ZnNfYXR0cl9mYWxsb2NhdGVgLi4uIEl0J3Mgbm90IHN0YXRpYzsgaXQncyBkZWNsYXJlZCBpbiBgYXR0cmliLmhgIGFuZCBkZWZpbmVkIGluIGBhdHRyaWIuY2AuIFRoZXJlZm9yZSwgaXQncyBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBgbnRmc19mYWxsb2NhdGVgIGlzIGFsc28gYSB2YWxpZCBmb2N1cy5cblxuTGV0IG1lIGRvdWJsZSBjaGVjayB0aGlzIE5URlMgdmVyc2lvbi4gYE5URlNfRlNgLi4uIGlzIHRoYXQgdGhlIG9sZCBkcml2ZXI/IEFoIHllcywgSSBzZWUgbm93LCBgTlRGUzNfRlNgIGlzIHRoZSBuZXcgb25lLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGZzL250ZnMvYXR0cmliLmNgLCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIG9sZCBkcml2ZXIsIGFuZCB5ZXMsIGBOVEZTX0ZTYCBpcyB0aGUgY29uZmlnIG9wdGlvbiBmb3IgdGhhdCBvbGQgZHJpdmVyLiBXYWl0LCBhbSBJIG1pc3Rha2VuLCB3YXNuJ3QgYGZzL250ZnNgIHJlbW92ZWQgaW4gNi4xMz8gTm8sIEkgc2VlIGl0J3Mgc3RpbGwgcHJlc2VudCBpbiB0aGUgY3VycmVudCB0cmVlLlxuXG5JIHNob3VsZCBjaGVjayBpZiBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAgaXMgcmVhY2hhYmxlLCBhbmQgeWVzLCBpdCBzZWVtcyB0byBiZSB0aHJvdWdoIHRoZSBgZmFsbG9jYXRlYCBzeXNjYWxsIHdoZW4gZGVhbGluZyB3aXRoIGFuIE5URlMgZmlsZS4gVGhhdCdzIGdvb2QuXG5cbk5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgYGZzL250ZnMvYXR0cmliLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGludGVyZXN0aW5nIGZ1bmN0aW9ucyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA1MSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MjowNS41OTc4NzQ1NTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjY0NTc0NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19hdHRyX2ZhbGxvY2F0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL2F0dHJpYi5jPTU0NzQ9aW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfcHVuY2hfaG9sZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jLTU1MzAtXFxuZnMvbnRmcy9hdHRyaWIuYzo1NTMxOmludCBudGZzX2F0dHJfZmFsbG9jYXRlKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgYnl0ZV9sZW4sIGJvb2wga2VlcF9zaXplKVxcbmZzL250ZnMvYXR0cmliLmMtNTUzMi17XFxuLS1cXG5mcy9udGZzL2F0dHJpYi5oPTEwNz12b2lkIG50ZnNfYXR0cl9jbG9zZShzdHJ1Y3QgbnRmc19pbm9kZSAqbik7XFxuZnMvbnRmcy9hdHRyaWIuaDoxMDg6aW50IG50ZnNfYXR0cl9mYWxsb2NhdGUoc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBieXRlX2xlbiwgYm9vbCBrZWVwX3NpemUpO1xcbmZzL250ZnMvYXR0cmliLmgtMTA5LWludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2luc2VydF9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCBzdGFydF92Y24sIHM2NCBsZW4pO1xcbi0tXFxuZnMvbnRmcy9maWxlLmM9ODMzPXN0YXRpYyBpbnQgbnRmc19hbGxvY2F0ZV9yYW5nZShzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LFxcbi0tXFxuZnMvbnRmcy9maWxlLmMtODYzLVxcbmZzL250ZnMvZmlsZS5jOjg2NDpcXHRlcnIgPSBudGZzX2F0dHJfZmFsbG9jYXRlKG5pLCBvZmZzZXQsIGxlbixcXG5mcy9udGZzL2ZpbGUuYy04NjUtXFx0XFx0XFx0bW9kZSBcXHUwMDI2IEZBTExPQ19GTF9LRUVQX1NJWkUgPyB0cnVlIDogZmFsc2UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MjowNy41NjQzMzU4MDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA2OTI5NjE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTlRGUyBGaWxlc3lzdGVtIEFsbG9jYXRpb24gQ2FsbHMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgaGVyZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBmaWxlIGFsbG9jYXRpb24gd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0uIEkgc2VlIHRoYXQgYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGlzIGJlaW5nIGNhbGxlZCBieSBgbnRmc19hbGxvY2F0ZV9yYW5nZWAsIHdoaWNoIGluIHR1cm4sIGlzIGJlaW5nIGNhbGxlZCBieSBgbnRmc19mYWxsb2NhdGVgLiBUaGVyZWZvcmUsIGBudGZzX2ZhbGxvY2F0ZWAgYW5kIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBhcmUgY2xlYXJseSB0aGUga2V5IHN5bWJvbHMgdG8ga2VlcCBhbiBleWUgb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYW5kIGludGVyYWN0aW9uIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zLlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIGFsbG9jYXRpb24gcGF0aC4gSSBrbm93IGBOVEZTX0ZTYCBpcyB0aGUgbWFpbiBvbmUsIGJ1dCBJIGhhdmUgYSBmZWVsaW5nIHRoZXJlIG1pZ2h0IGJlIGEgd3JpdGUtcmVsYXRlZCBjb25maWd1cmF0aW9uIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBIbW0sIGRpZG4ndCBJIGp1c3QgbG9vayBhdCBgTlRGU19SV2A/IExldCBtZSBkb3VibGUtY2hlY2sgYGZzL250ZnMvS2NvbmZpZ2AuIFllcywgSSdtIGNlcnRhaW4gdGhhdCBgY29uZmlnIE5URlNfUldgIGRpZG4ndCB0dXJuIHVwIGFueSB1c2VmdWwgaW5mb3JtYXRpb24uIEFoLCBidXQgd2FpdCBhIHNlY29uZCwgbGV0IG1lIHRha2UgYSBicm9hZGVyIGFwcHJvYWNoLiBJJ2xsIHNlYXJjaCBgZnMvbnRmcy9LY29uZmlnYCBmb3IgYFJXYCBvciBgV1JJVEVgIG1vcmUgZ2VuZXJhbGx5OyBzb21ldGhpbmcgbW9yZSBzcGVjaWZpYyBtaWdodCBoYXZlIGJlZW4gb3Zlcmxvb2tlZC4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NzYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDQ6NDI6MTEuNjMzNjMzNTM2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDM0OTE3NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUldcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MjoxMS42ODc5ODk0MjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYzNDU4NTc5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIE5URlMgV3JpdGUgSW1wbGVtZW50YXRpb24gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBmaXJzdCBzdGVwIGluIHRhY2tsaW5nIHRoaXMgd3JpdGUgZnVuY3Rpb25hbGl0eSBxdWVzdGlvbiBpbiB0aGUgTlRGUyBtb2R1bGUgaXMgcHJldHR5IGNsZWFyIHRvIG1lOiBJIG5lZWQgdG8gZGVsdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGF0IHRoZSByZWxldmFudCBzZXR0aW5ncyB3aWxsIGxpa2VseSBiZSBmb3VuZCBpbiB0aGUgYGZzL250ZnMvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJ20gemVyb2luZyBpbiBvbiBhbnl0aGluZyByZWxhdGVkIHRvIFwid3JpdGVcIiBjYXBhYmlsaXR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgdGhlcmUgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY29uZmlndXJhdGlvbiBmbGFncywgZGVwZW5kZW5jaWVzLCBvciBkZWZhdWx0IHNldHRpbmdzIHRoYXQgc2hlZCBsaWdodCBvbiBob3cgd3JpdGUgc3VwcG9ydCBpcyBjb250cm9sbGVkIGFuZCBlbmFibGVkIHdpdGhpbiB0aGUgZHJpdmVyLiBUaGlzIGlzIGEgY29tbW9uIHN0YXJ0aW5nIHBvaW50IGZvciBleGFtaW5pbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHdoaWNoIHNob3VsZCByZXZlYWwgdGhlIGNvbmRpdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB0aGF0IGdvdmVybiBob3cgd3JpdGUgc3VwcG9ydCBpcyBjb21waWxlZCBpbnRvIHRoZSBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNDIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MjoxNC4zMjI1NzY3MDJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NDA4OTE3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQyOjE0LjM3ODk5MjAwOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ5MjM2MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipOVEZTIGFuZCBLZXJuZWwgQ29uZmlndXJhdGlvbjogQSBRdWljayBEaXZlKipcblxuT2theSwgc28gSSdtIHNlZWluZyBgZnMvbnRmcy9LY29uZmlnYCBwb3AgdXAgaW4gYW4gb2xkZXIga2VybmVsIGNvbnRleHQsIGFuZCB0aGF0J3MgaW1tZWRpYXRlbHkgcGlxdWluZyBteSBpbnRlcmVzdC4gU3BlY2lmaWNhbGx5LCBJJ20gc3BvdHRpbmcgYGNvbmZpZyBOVEZTX1JXYCwgd2hpY2ggbWVhbnMgdGhlcmUgd2FzIG9uY2UgYSB3cml0YWJsZSBOVEZTIGltcGxlbWVudGF0aW9uLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhbmQgSSBrbm93IHRoYXQgSSBzaG91bGQgYmUgYWJsZSB0byBkaWcgZGVlcGVyLiBUbyBnZXQgdGhlIHdob2xlIHBpY3R1cmUsIEkgbmVlZCB0byByZWFkIHRocm91Z2ggdGhlIGVudGlyZSBgZnMvbnRmcy9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZlYXR1cmUgd2FzIGVuYWJsZWQsIGFuZCBob3cgaXQgZXZvbHZlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHdlbnQgaW50byBpdCwgd2hlcmUgaXQgY2FtZSBmcm9tIGFuZCBsaWtlbHkgd2hhdCB0aGUgaW1wbGljYXRpb25zIHdlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNzgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MjoxNy41MjgyMjk5MjhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbnRmcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5URlNfRlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgTkxTXFxuICAgNTpcXHRcXHRzZWxlY3QgRlNfSU9NQVBcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgTlRGUyBpcyB0aGUgZmlsZSBzeXN0ZW0gb2YgTWljcm9zb2Z0IFdpbmRvd3MgTlQsIDIwMDAsIFhQIGFuZCAyMDAzLlxcbiAgIDg6XFx0XFx0ICBUaGlzIGFsbG93cyB5b3UgdG8gbW91bnQgZGV2aWNlcyBmb3JtYXR0ZWQgd2l0aCB0aGUgbnRmcyBmaWxlIHN5c3RlbS5cXG4gICA5OlxcdFxcbiAgMTA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcXG4gIDExOlxcdFxcdCAgbnRmcy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIE5URlNfREVCVUdcXG4gIDE0OlxcdFxcdGJvb2wgXFxcIk5URlMgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgSWYgeW91IGFyZSBleHBlcmllbmNpbmcgYW55IHByb2JsZW1zIHdpdGggdGhlIE5URlMgZmlsZSBzeXN0ZW0sIHNheVxcbiAgMTg6XFx0XFx0ICBZIGhlcmUuICBUaGlzIHdpbGwgcmVzdWx0IGluIGFkZGl0aW9uYWwgY29uc2lzdGVuY3kgY2hlY2tzIHRvIGJlXFxuICAxOTpcXHRcXHQgIHBlcmZvcm1lZCBieSB0aGUgZHJpdmVyIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG9cXG4gIDIwOlxcdFxcdCAgYmUgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGxvZy4gIE5vdGUgdGhhdCBkZWJ1Z2dpbmcgbWVzc2FnZXMgYXJlXFxuICAyMTpcXHRcXHQgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUbyBlbmFibGUgdGhlbSwgc3VwcGx5IHRoZSBvcHRpb24gZGVidWdfbXNncz0xXFxuICAyMjpcXHRcXHQgIGF0IHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdoZW4gYm9vdGluZyB0aGUga2VybmVsIG9yIGFzIGFuIG9wdGlvblxcbiAgMjM6XFx0XFx0ICB0byBpbnNtb2Qgd2hlbiBsb2FkaW5nIHRoZSBudGZzIG1vZHVsZS4gIE9uY2UgdGhlIGRyaXZlciBpcyBhY3RpdmUsXFxuICAyNDpcXHRcXHQgIHlvdSBjYW4gZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyBieSBkb2luZyAoYXMgcm9vdCk6XFxuICAyNTpcXHRcXHQgIGVjaG8gMSBcXHUwMDNlIC9wcm9jL3N5cy9mcy9udGZzLWRlYnVnXFxuICAyNjpcXHRcXHQgIFJlcGxhY2luZyB0aGUgXFxcIjFcXFwiIHdpdGggXFxcIjBcXFwiIHdvdWxkIGRpc2FibGUgZGVidWcgbWVzc2FnZXMuXFxuICAyNzpcXHRcXG4gIDI4OlxcdFxcdCAgSWYgeW91IGxlYXZlIGRlYnVnZ2luZyBtZXNzYWdlcyBkaXNhYmxlZCwgdGhpcyByZXN1bHRzIGluIGxpdHRsZVxcbiAgMjk6XFx0XFx0ICBvdmVyaGVhZCwgYnV0IGVuYWJsaW5nIGRlYnVnIG1lc3NhZ2VzIHJlc3VsdHMgaW4gdmVyeSBzaWduaWZpY2FudFxcbiAgMzA6XFx0XFx0ICBzbG93ZG93biBvZiB0aGUgc3lzdGVtLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MsIHBsZWFzZSB0cnkgdG8gaGF2ZSBhdmFpbGFibGUgYSBmdWxsIGR1bXAgb2ZcXG4gIDMzOlxcdFxcdCAgZGVidWdnaW5nIG1lc3NhZ2VzIHdoaWxlIHRoZSBtaXNiZWhhdmlvdXIgd2FzIG9jY3VycmluZy5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuICAzNjpcXHRcXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXFxuICAzODpcXHRcXHRzZWxlY3QgRlNfUE9TSVhfQUNMXFxuICAzOTpcXHRcXHRoZWxwXFxuICA0MDpcXHRcXHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xcbiAgNDE6XFx0XFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEFDTCBzdXBwb3J0IGZvciBudGZzLCBwcm92aWRpbmcgZnVuY3Rpb25hbCBwYXJpdHlcXG4gIDQ0OlxcdFxcdCAgd2l0aCBudGZzMyBkcml2aWVyLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNDo0MjoxNy41MjgyOTU1MDhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE2MTU0MTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOVEZTIEZpbGVzeXN0ZW0gRnV6emluZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSB0aGUgb2xkIGBOVEZTX1JXYCBvcHRpb24gaXMgZ29uZSwgb3IgbWF5YmUgd3JpdGUgc3VwcG9ydCBpcyBqdXN0IGFsd2F5cyBlbmFibGVkIG5vdyBpbiB0aGUgbmV3IGBmcy9udGZzYCBkcml2ZXIuIE9yIHBlcmhhcHMgYGZzL250ZnNgIGlzIHRoZSB1cGRhdGVkIHZlcnNpb24gYW5kIGBOVEZTX1JXYCB3YXMgZGVwcmVjYXRlZC4gRWl0aGVyIHdheSwgYE5URlNfRlNgIGlzIHRoZSBvbmx5IGNvbmZpZyB0byB3b3JyeSBhYm91dCBub3cuXG5cbkxldCBtZSBjb25maXJtIHRoYXQgYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGlzIGFjdHVhbGx5IHJlYWNoYWJsZS4uLiBZZXAsIGBudGZzX2ZhbGxvY2F0ZWAgY2FsbHMgYG50ZnNfYWxsb2NhdGVfcmFuZ2VgLCB3aGljaCAqZG9lcyogY2FsbCBgbnRmc19hdHRyX2ZhbGxvY2F0ZWAuIEdvb2QsIGdvb2QuXG5cblRoaXMgaXMgYSByZWFsIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGlzIHBhdGNoIGlzIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgdXNlLWFmdGVyLWZyZWUgaXNzdWUsIGFuZCBpdCdzIGRvaW5nIGl0IGJ5IGNhY2hpbmcgdGhvc2UgYHJsYCBmaWVsZHMgYmVmb3JlIGRyb3BwaW5nIHRoZSBsb2NrLiBJdCBhbHNvIHN0b3BzIGFuIGluY29ycmVjdCBjYWxsIHRvIGBudGZzX2Rpb196ZXJvX3JhbmdlYCB3aGVuIGBiYWxsb2NgIGlzIGZhbHNlLiBEZWZpbml0ZWx5IHdvcnRoIGNoZWNraW5nIHdpdGggZnV6emluZy5cblxuSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYC5cblxuRm9jdXMgU3ltYm9scyBhcmUgZ29pbmcgdG8gYmUgYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGFuZCBgbnRmc19mYWxsb2NhdGVgLlxuXG5BbmQsIGFzIGV4cGVjdGVkLCB0aGUgb25seSBjb25maWcgSSBuZWVkIGVuYWJsZWQgaXMgYE5URlNfRlNgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0J3MgZG91YmxlLWNoZWNrIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzIEkgbmVlZCB0byBjb25zaWRlci4uLiBOb3BlLCBgTlRGU19GU2AgaXMgc3VmZmljaWVudC5cblxuVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkOiBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBpcyBiZWluZyBhZGRyZXNzZWQsIGFsb25nIHdpdGggYSBidWcgZml4IGluIHRoZSBgZmFsbG9jYXRlYCBwYXRoLiBUaGlzIGlzIGEgY3J1Y2lhbCBhcmVhIG9mIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIGFuZCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2YWxpZGF0ZSB0aGUgcGF0Y2gncyBlZmZpY2FjeSBhbmQgdW5jb3ZlciBhbnkgcG90ZW50aWFsIHJlZ3Jlc3Npb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjMyLCJPdXRwdXRUb2tlbnMiOjEzMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA0OjQyOjIzLjY4OTgzODgyNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4OTIzNjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19hdHRyX2ZhbGxvY2F0ZVwiLFxuICAgIFwibnRmc19mYWxsb2NhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIGBudGZzX2F0dHJfZmFsbG9jYXRlYCBieSBjYWNoaW5nIHJ1bmxpc3QgZWxlbWVudCBmaWVsZHMgYmVmb3JlIGRyb3BwaW5nIHRoZSBydW5saXN0IGxvY2suIEl0IGFsc28gZml4ZXMgYSBidWcgd2hlcmUgYG50ZnNfZGlvX3plcm9fcmFuZ2VgIHdhcyBjYWxsZWQgaW5jb3JyZWN0bHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtJ3MgZmFsbG9jYXRlIHBhdGggdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX2F0dHJfZmFsbG9jYXRlXCIsXG4gICAgXCJudGZzX2ZhbGxvY2F0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gYG50ZnNfYXR0cl9mYWxsb2NhdGVgIGJ5IGNhY2hpbmcgcnVubGlzdCBlbGVtZW50IGZpZWxkcyBiZWZvcmUgZHJvcHBpbmcgdGhlIHJ1bmxpc3QgbG9jay4gSXQgYWxzbyBmaXhlcyBhIGJ1ZyB3aGVyZSBgbnRmc19kaW9femVyb19yYW5nZWAgd2FzIGNhbGxlZCBpbmNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0ncyBmYWxsb2NhdGUgcGF0aCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow9cth6[1] Phase: Succeeded StartedAt: 2026-06-27 04:42:35 +0000 UTC FinishedAt: 2026-06-27 04:42:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-27 04:42:35 +0000 UTC FinishedAt: 2026-06-27 04:42:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2] Phase: Succeeded StartedAt: 2026-06-27 04:42:35 +0000 UTC FinishedAt: 2026-06-27 06:32:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-27 04:42:35 +0000 UTC FinishedAt: 2026-06-27 06:32:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-27 04:42:35 +0000 UTC FinishedAt: 2026-06-27 04:42:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-27 04:42:35 +0000 UTC FinishedAt: 2026-06-27 04:42:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9cth6/series-workflow9cth6-convert-artifact-2880669687/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-27 04:42:55 +0000 UTC FinishedAt: 2026-06-27 05:15:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-27 04:42:55 +0000 UTC FinishedAt: 2026-06-27 05:15:31 +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:*fe09aec6-74fc-4681-b5e2-a56edb184d4c,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-workflow9cth6/series-workflow9cth6-convert-artifact-2880669687/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": "c6e8eed4-7573-4520-9634-f91fb956dc6e", "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-workflow9cth6/series-workflow9cth6-build-action-3881376333/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-27 04:42:55 +0000 UTC FinishedAt: 2026-06-27 05:15:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*fe09aec6-74fc-4681-b5e2-a56edb184d4c,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-workflow9cth6/series-workflow9cth6-convert-artifact-2880669687/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": "c6e8eed4-7573-4520-9634-f91fb956dc6e", "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-workflow9cth6/series-workflow9cth6-build-action-3881376333/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-27 05:15:31 +0000 UTC FinishedAt: 2026-06-27 05:15:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-27 05:15:31 +0000 UTC FinishedAt: 2026-06-27 05:15:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-27 05:15:31 +0000 UTC FinishedAt: 2026-06-27 05:15:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-27 05:15:31 +0000 UTC FinishedAt: 2026-06-27 05:15:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9cth6/series-workflow9cth6-convert-artifact-174389030/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-27 05:15:52 +0000 UTC FinishedAt: 2026-06-27 05:18:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-27 05:15:52 +0000 UTC FinishedAt: 2026-06-27 05:17:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c6e8eed4-7573-4520-9634-f91fb956dc6e,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-workflow9cth6/series-workflow9cth6-build-action-3881376333/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-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-27 05:18:05 +0000 UTC FinishedAt: 2026-06-27 05:18:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-27 05:18:05 +0000 UTC FinishedAt: 2026-06-27 05:18:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-27 05:18:05 +0000 UTC FinishedAt: 2026-06-27 05:40:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-27 05:18:05 +0000 UTC FinishedAt: 2026-06-27 05:40:02 +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:*fe09aec6-74fc-4681-b5e2-a56edb184d4c,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-workflow9cth6/series-workflow9cth6-convert-artifact-174389030/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": "004bc373-3dd3-44a8-8ff8-8cea72ce8e57", "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-workflow9cth6/series-workflow9cth6-build-action-993268970/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-27 05:18:05 +0000 UTC FinishedAt: 2026-06-27 05:39: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:*fe09aec6-74fc-4681-b5e2-a56edb184d4c,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-workflow9cth6/series-workflow9cth6-convert-artifact-174389030/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": "004bc373-3dd3-44a8-8ff8-8cea72ce8e57", "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-workflow9cth6/series-workflow9cth6-build-action-993268970/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-27 05:40:02 +0000 UTC FinishedAt: 2026-06-27 05:40:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-27 05:40:02 +0000 UTC FinishedAt: 2026-06-27 05:40:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-27 05:40:02 +0000 UTC FinishedAt: 2026-06-27 05:42:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-27 05:40:02 +0000 UTC FinishedAt: 2026-06-27 05:42:07 +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:*004bc373-3dd3-44a8-8ff8-8cea72ce8e57,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-workflow9cth6/series-workflow9cth6-build-action-993268970/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-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-27 05:42:17 +0000 UTC FinishedAt: 2026-06-27 06:32:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-27 05:42:17 +0000 UTC FinishedAt: 2026-06-27 06:32:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"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:*c6e8eed4-7573-4520-9634-f91fb956dc6e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*004bc373-3dd3-44a8-8ff8-8cea72ce8e57,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-workflow9cth6/series-workflow9cth6-build-action-3881376333/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-workflow9cth6/series-workflow9cth6-build-action-993268970/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-27 05:42:17 +0000 UTC FinishedAt: 2026-06-27 05:42:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-27 05:42:17 +0000 UTC FinishedAt: 2026-06-27 05:42:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"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-workflow9cth6/series-workflow9cth6-convert-artifact-1430200939/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-27 05:42:17 +0000 UTC FinishedAt: 2026-06-27 05:42:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-27 05:42:17 +0000 UTC FinishedAt: 2026-06-27 05:42:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-27 05:42:17 +0000 UTC FinishedAt: 2026-06-27 05:42:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-27 05:42:27 +0000 UTC FinishedAt: 2026-06-27 06:32:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cth6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_attr_fallocate","ntfs_fallocate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"fcc9bc7d-6765-45ce-ba2e-ea08316f3bf0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-27 05:42:27 +0000 UTC FinishedAt: 2026-06-27 06:32:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c6e8eed4-7573-4520-9634-f91fb956dc6e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*004bc373-3dd3-44a8-8ff8-8cea72ce8e57,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-workflow9cth6/series-workflow9cth6-build-action-3881376333/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-workflow9cth6/series-workflow9cth6-build-action-993268970/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-workflow9cth6/series-workflow9cth6-convert-artifact-1430200939/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,}