Name: series-workflowbzxdr Phase: Succeeded StartedAt: 2026-07-24 02:53:00 +0000 UTC FinishedAt: 2026-07-24 07:48:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[0] Phase: Succeeded StartedAt: 2026-07-24 02:53:00 +0000 UTC FinishedAt: 2026-07-24 03:20:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 02:53:00 +0000 UTC FinishedAt: 2026-07-24 03:20:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN" ], "series_id": "f8da41d0-bd0b-47e1-9457-180e305ed408" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtm_new_nexthop", "rtm_to_nh_config", "nexthop_create", "nh_fill_node", "vxlan_xmit_nh", "vxlan_xmit_nhid" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRtX25ld19uZXh0aG9wJiMzNDssCiAgICAmIzM0O3J0bV90b19uaF9jb25maWcmIzM0OywKICAgICYjMzQ7bmV4dGhvcF9jcmVhdGUmIzM0OywKICAgICYjMzQ7bmhfZmlsbF9ub2RlJiMzNDssCiAgICAmIzM0O3Z4bGFuX3htaXRfbmgmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaGlkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhIGRlc3RpbmF0aW9uIHBvcnQgKG5oX2RzdF9wb3J0KSBvbiBmZGIgbmV4dGhvcHMgKGUuZy4sIFZYTEFOKS4gSXQgbW9kaWZpZXMgdGhlIG5ldGxpbmsgQVBJIHRvIHBhcnNlIE5IQV9EU1RfUE9SVCwgc3RvcmVzIGl0IGluIHRoZSBuZXh0aG9wIGNvbmZpZ3VyYXRpb24sIGFuZCB1c2VzIGl0IGR1cmluZyBWWExBTiB0cmFuc21pdCBwYXRoIHNlbGVjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIFZYTEFOIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTQyYmIyMjBiYzg3NWY0ZTYyYTFkOGUzOWE2MGM1ZDQxMDgyYjQ0YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDAzOjE3OjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25leHRob3AuaCBiL2luY2x1ZGUvbmV0L25leHRob3AuaFxuaW5kZXggNTcyZTY5Y2RhNDc2NmQuLmY4NmMxMTUwNzRkN2FiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXh0aG9wLmhcbkBAIC0yOCw2ICYjNDM7MjgsNyBAQCBzdHJ1Y3QgbmhfY29uZmlnIHtcbiBcdHU4XHRcdG5oX3Byb3RvY29sO1xuIFx0dThcdFx0bmhfYmxhY2tob2xlO1xuIFx0dThcdFx0bmhfZmRiO1xuJiM0MztcdF9fYmUxNlx0XHRuaF9kc3RfcG9ydDtcbiBcdHUzMlx0XHRuaF9mbGFncztcbiBcbiBcdGludFx0XHRuaF9pZmluZGV4O1xuQEAgLTYzLDYgJiM0Mzs2NCw3IEBAIHN0cnVjdCBuaF9pbmZvIHtcbiBcdHU4XHRcdFx0ZmFtaWx5O1xuIFx0Ym9vbFx0XHRcdHJlamVjdF9uaDtcbiBcdGJvb2xcdFx0XHRmZGJfbmg7XG4mIzQzO1x0X19iZTE2XHRcdFx0ZHN0X3BvcnQ7XG4gXG4gXHR1bmlvbiB7XG4gXHRcdHN0cnVjdCBmaWJfbmhfY29tbW9uXHRmaWJfbmhjO1xuQEAgLTU3NCw3ICYjNDM7NTc2LDggQEAgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfZmRiX25oYyhzdHJ1Y3QgbmV4dGhvcCAqbmgpXG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfcGF0aF9mZGJfcmVzdWx0KHN0cnVjdCBuZXh0aG9wICpuaCxcbi1cdFx0XHRcdFx0XHRcdCAgICBpbnQgaGFzaClcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgaW50IGhhc2gsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIF9fYmUxNiAqZHN0X3BvcnQpXG4ge1xuIFx0c3RydWN0IG5oX2luZm8gKm5oaTtcbiBcdHN0cnVjdCBuZXh0aG9wICpuaHA7XG5AQCAtNTgzLDYgJiM0Mzs1ODYsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHRpZiAodW5saWtlbHkoIW5ocCkpXG4gXHRcdHJldHVybiBOVUxMO1xuIFx0bmhpID0gcmN1X2RlcmVmZXJlbmNlKG5ocC1cdTAwM2VuaF9pbmZvKTtcbiYjNDM7XHQqZHN0X3BvcnQgPSBuaGktXHUwMDNlZHN0X3BvcnQ7XG4gXHRyZXR1cm4gXHUwMDI2bmhpLVx1MDAzZWZpYl9uaGM7XG4gfVxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3Z4bGFuLmggYi9pbmNsdWRlL25ldC92eGxhbi5oXG5pbmRleCBkZmJhODk2OTVlZmNmYS4uNmU2NDc1NzE1MWI4OGUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC92eGxhbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC92eGxhbi5oXG5AQCAtNTY3LDggJiM0Mzs1NjcsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KHN0cnVjdCBuZXh0aG9wICpuaCxcbiBcdFx0XHRcdFx0ICAgIHN0cnVjdCB2eGxhbl9yZHN0ICpyZHN0KVxuIHtcbiBcdHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGM7XG4mIzQzO1x0X19iZTE2IGRzdF9wb3J0ID0gMDtcbiBcbi1cdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFx1MDAzZVx1MDAzZSAxKTtcbiYjNDM7XHRuaGMgPSBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChuaCwgaGFzaCBcdTAwM2VcdTAwM2UgMSwgXHUwMDI2ZHN0X3BvcnQpO1xuIFx0aWYgKHVubGlrZWx5KCFuaGMpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG5AQCAtNTgzLDYgJiM0Mzs1ODQsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KHN0cnVjdCBuZXh0aG9wICpuaCxcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4mIzQzO1x0cmRzdC1cdTAwM2VyZW1vdGVfcG9ydCA9IGRzdF9wb3J0O1xuJiM0MztcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaFxuaW5kZXggYmM0OWJhZjRhMjY3ZjAuLjU5Y2YxY2VlOTNiZDcwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaFxuQEAgLTgzLDYgJiM0Mzs4Myw5IEBAIGVudW0ge1xuIFx0LyogdTMyOyByZWFkLW9ubHk7IHdoZXRoZXIgYW55IGRyaXZlciBjb2xsZWN0cyBIVyBzdGF0cyAqL1xuIFx0TkhBX0hXX1NUQVRTX1VTRUQsXG4gXG4mIzQzO1x0LyogYmUxNjsgVURQIGRlc3RpbmF0aW9uIHBvcnQgZm9yIGFuIGZkYiBuZXh0aG9wIChlLmcuIFZYTEFOKSAqL1xuJiM0MztcdE5IQV9EU1RfUE9SVCxcbiYjNDM7XG4gXHRfX05IQV9NQVgsXG4gfTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXh0aG9wLmMgYi9uZXQvaXB2NC9uZXh0aG9wLmNcbmluZGV4IDYyMDViZDU3YWE4NTIwLi4wMDIxMzgwYjhjMWRlZiAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L25leHRob3AuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvbmV4dGhvcC5jXG5AQCAtMzksNiAmIzQzOzM5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHJ0bV9uaF9wb2xpY3lfbmV3W10gPSB7XG4gXHRbTkhBX0VOQ0FQX1RZUEVdXHQ9IHsgLnR5cGUgPSBOTEFfVTE2IH0sXG4gXHRbTkhBX0VOQ0FQXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbTkhBX0ZEQl1cdFx0PSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcbiYjNDM7XHRbTkhBX0RTVF9QT1JUXVx0XHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9CRTE2LCAxKSxcbiBcdFtOSEFfUkVTX0dST1VQXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbTkhBX0hXX1NUQVRTX0VOQUJMRV1cdD0gTkxBX1BPTElDWV9NQVgoTkxBX1UzMiwgdHJ1ZSksXG4gfTtcbkBAIC05NTYsNiAmIzQzOzk1Nyw5IEBAIHN0YXRpYyBpbnQgbmhfZmlsbF9ub2RlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcbiBcdH0gZWxzZSBpZiAobmhpLVx1MDAzZWZkYl9uaCkge1xuIFx0XHRpZiAobmxhX3B1dF9mbGFnKHNrYiwgTkhBX0ZEQikpXG4gXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzQzO1x0XHRpZiAobmhpLVx1MDAzZWRzdF9wb3J0IFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIG5sYV9wdXRfYmUxNihza2IsIE5IQV9EU1RfUE9SVCwgbmhpLVx1MDAzZWRzdF9wb3J0KSlcbiYjNDM7XHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXHR9IGVsc2Uge1xuIFx0XHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuIFxuQEAgLTEwNTUsNiAmIzQzOzEwNTksOSBAQCBzdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaClcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKG5oaS1cdTAwM2Vkc3RfcG9ydClcbiYjNDM7XHRcdHN6ICYjNDM7PSBubGFfdG90YWxfc2l6ZSgyKTtcdC8qIE5IQV9EU1RfUE9SVCAqL1xuJiM0MztcbiBcdGlmIChuaGktXHUwMDNlZmliX25oYy5uaGNfbHd0c3RhdGUpIHtcbiBcdFx0c3ogJiM0Mzs9IGx3dHVubmVsX2dldF9lbmNhcF9zaXplKG5oaS1cdTAwM2VmaWJfbmhjLm5oY19sd3RzdGF0ZSk7XG4gXHRcdHN6ICYjNDM7PSBubGFfdG90YWxfc2l6ZSgyKTsgIC8qIE5IQV9FTkNBUF9UWVBFICovXG5AQCAtMjk1Niw4ICYjNDM7Mjk2MywxMCBAQCBzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5oX2NvbmZpZyAqY2ZnLFxuIFx0bmhpLVx1MDAzZWZhbWlseSA9IGNmZy1cdTAwM2VuaF9mYW1pbHk7XG4gXHRuaGktXHUwMDNlZmliX25oYy5uaGNfc2NvcGUgPSBSVF9TQ09QRV9MSU5LO1xuIFxuLVx0aWYgKGNmZy1cdTAwM2VuaF9mZGIpXG4mIzQzO1x0aWYgKGNmZy1cdTAwM2VuaF9mZGIpIHtcbiBcdFx0bmhpLVx1MDAzZWZkYl9uaCA9IDE7XG4mIzQzO1x0XHRuaGktXHUwMDNlZHN0X3BvcnQgPSBjZmctXHUwMDNlbmhfZHN0X3BvcnQ7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKGNmZy1cdTAwM2VuaF9ibGFja2hvbGUpIHtcbiBcdFx0bmhpLVx1MDAzZXJlamVjdF9uaCA9IDE7XG5AQCAtMzE0Nyw2ICYjNDM7MzE1NiwxNSBAQCBzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRjZmctXHUwMDNlbmhfZmRiID0gbmxhX2dldF9mbGFnKHRiW05IQV9GREJdKTtcbiBcdH1cbiBcbiYjNDM7XHRpZiAodGJbTkhBX0RTVF9QT1JUXSkge1xuJiM0MztcdFx0aWYgKCF0YltOSEFfRkRCXSB8fCAhdGJbTkhBX0dBVEVXQVldKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbiYjNDM7XHRcdFx0XHQgICAgICAgXCYjMzQ7RGVzdGluYXRpb24gcG9ydCBjYW4gb25seSBiZSBzZXQgb24gZmRiIG5leHRob3BzIHRoYXQgaGF2ZSBhIGdhdGV3YXlcJiMzNDspO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGNmZy1cdTAwM2VuaF9kc3RfcG9ydCA9IG5sYV9nZXRfYmUxNih0YltOSEFfRFNUX1BPUlRdKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKHRiW05IQV9HUk9VUF0pIHtcbiBcdFx0aWYgKG5obS1cdTAwM2VuaF9mYW1pbHkgIT0gQUZfVU5TUEVDKSB7XG4gXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtJbnZhbGlkIGZhbWlseSBmb3IgZ3JvdXBcJiMzNDspO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHMuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoXG5pbmRleCBhYzg2OGE3MzE2OTQ2YS4uODM0YmExYzA2NzZjODAgMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoXG5AQCAtMzAsNiAmIzQzOzMwLDcgQEAgSVBWNF9URVNUUz1cJiMzNDtcbiBcdGlwdjRfbGFyZ2VfcmVzX2dycFxuIFx0aXB2NF9jb21wYXRfbW9kZVxuIFx0aXB2NF9mZGJfZ3JwX2ZjbmFsXG4mIzQzO1x0aXB2NF9mZGJfcG9ydF9mY25hbFxuIFx0aXB2NF9tcGF0aF9zZWxlY3RcbiBcdGlwdjRfdG9ydHVyZVxuIFx0aXB2NF9yZXNfdG9ydHVyZVxuQEAgLTQ0LDYgJiM0Mzs0NSw3IEBAIElQVjZfVEVTVFM9XCYjMzQ7XG4gXHRpcHY2X2xhcmdlX3Jlc19ncnBcbiBcdGlwdjZfY29tcGF0X21vZGVcbiBcdGlwdjZfZmRiX2dycF9mY25hbFxuJiM0MztcdGlwdjZfZmRiX3BvcnRfZmNuYWxcbiBcdGlwdjZfbXBhdGhfc2VsZWN0XG4gXHRpcHY2X3RvcnR1cmVcbiBcdGlwdjZfcmVzX3RvcnR1cmVcbkBAIC00MzIsNiAmIzQzOzQzNCwxNSBAQCBjaGVja19uZXh0aG9wX2ZkYl9zdXBwb3J0KClcbiBcdGZpXG4gfVxuIFxuJiM0MztjaGVja19uZXh0aG9wX2ZkYl9wb3J0X3N1cHBvcnQoKVxuJiM0Mzt7XG4mIzQzO1x0JElQIG5leHRob3AgaGVscCAyXHUwMDNlXHUwMDI2MSB8IGdyZXAgLXEgXCYjMzQ7ZHN0X3BvcnRcJiMzNDtcbiYjNDM7XHRpZiBbICQ/IC1uZSAwIF07IHRoZW5cbiYjNDM7XHRcdGVjaG8gXCYjMzQ7U0tJUDogaXByb3V0ZTIgdG9vIG9sZCwgbWlzc2luZyBuZXh0aG9wIGRzdF9wb3J0IHN1cHBvcnRcJiMzNDtcbiYjNDM7XHRcdHJldHVybiAka3NmdF9za2lwXG4mIzQzO1x0ZmlcbiYjNDM7fVxuJiM0MztcbiBjaGVja19uZXh0aG9wX3Jlc19zdXBwb3J0KClcbiB7XG4gXHQkSVAgbmV4dGhvcCBoZWxwIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAtcSByZXNpbGllbnRcbkBAIC01NDEsNiAmIzQzOzU1Miw0MSBAQCBpcHY2X2ZkYl9ncnBfZmNuYWwoKVxuIFx0JElQIGxpbmsgZGVsIGRldiB2eDEwXG4gfVxuIFxuJiM0MztpcHY2X2ZkYl9wb3J0X2ZjbmFsKClcbiYjNDM7e1xuJiM0MztcdGVjaG9cbiYjNDM7XHRlY2hvIFwmIzM0O0lQdjYgZmRiIG5leHRob3AgZHN0X3BvcnQgZnVuY3Rpb25hbFwmIzM0O1xuJiM0MztcdGVjaG8gXCYjMzQ7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX25leHRob3BfZmRiX3BvcnRfc3VwcG9ydFxuJiM0MztcdGlmIFsgJD8gLWVxICRrc2Z0X3NraXAgXTsgdGhlblxuJiM0MztcdFx0cmV0dXJuICRrc2Z0X3NraXBcbiYjNDM7XHRmaVxuJiM0MztcbiYjNDM7XHQjIE5IQV9EU1RfUE9SVDogb3B0aW9uYWwgcGVyLW5leHRob3AgVlhMQU4gZGVzdGluYXRpb24gVURQIHBvcnQsXG4mIzQzO1x0IyBsZXR0aW5nIGFuIGZkYiBuZXh0aG9wIGdyb3VwIGJhbGFuY2UgYSBmbG93IGFjcm9zcyBsZWdzIHRoYXQgc2hhcmVcbiYjNDM7XHQjIGFuIHVuZGVybGF5IElQIGJ1dCBsaXN0ZW4gb24gZGlmZmVyZW50IFVEUCBwb3J0cy5cbiYjNDM7XHRydW5fY21kIFwmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCA4MCB2aWEgMjAwMTpkYjg6OTE6OjIgZmRiIGRzdF9wb3J0IDQ3OTBcJiMzNDtcbiYjNDM7XHRjaGVja19uZXh0aG9wIFwmIzM0O2lkIDgwXCYjMzQ7IFwmIzM0O2lkIDgwIHZpYSAyMDAxOmRiODo5MTo6MiBzY29wZSBsaW5rIGZkYiBkc3RfcG9ydCA0NzkwXCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtGZGIgbmV4dGhvcCB3aXRoIGRzdF9wb3J0XCYjMzQ7XG4mIzQzO1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDgxIGZkYiBkc3RfcG9ydCA0NzkwXCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMiBcJiMzNDtGZGIgbmV4dGhvcCB3aXRoIGRzdF9wb3J0IGJ1dCBubyBnYXRld2F5XCYjMzQ7XG4mIzQzO1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDgxIHZpYSAyMDAxOmRiODo5MTo6MiBmZGIgZHN0X3BvcnQgMFwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDIgXCYjMzQ7RmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCAwXCYjMzQ7XG4mIzQzO1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDgyIHZpYSAyMDAxOmRiODo5MTo6MiBmZGIgZHN0X3BvcnQgNDc4OVwmIzM0O1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDgzIHZpYSAyMDAxOmRiODo5MTo6MyBmZGIgZHN0X3BvcnQgNTc4OVwmIzM0O1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDEwNiBncm91cCA4Mi84MyBmZGJcJiMzNDtcbiYjNDM7XHRjaGVja19uZXh0aG9wIFwmIzM0O2lkIDEwNlwmIzM0OyBcJiMzNDtpZCAxMDYgZ3JvdXAgODIvODMgZmRiXCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtGZGIgbmV4dGhvcCBncm91cCB3aXRoIGxlZ3MgZGlmZmVyaW5nIGluIGRzdF9wb3J0XCYjMzQ7XG4mIzQzO1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDg0IHZpYSAyMDAxOmRiODo5MTo6MiBmZGJcJiMzNDtcbiYjNDM7XHRjaGVja19uZXh0aG9wIFwmIzM0O2lkIDg0XCYjMzQ7IFwmIzM0O2lkIDg0IHZpYSAyMDAxOmRiODo5MTo6MiBzY29wZSBsaW5rIGZkYlwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDAgXCYjMzQ7RmRiIG5leHRob3Agd2l0aG91dCBkc3RfcG9ydCBvbWl0cyBkc3RfcG9ydFwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuIGlwdjRfZmRiX2dycF9mY25hbCgpXG4ge1xuIFx0bG9jYWwgcmNcbkBAIC02NDEsNiAmIzQzOzY4Nyw0MSBAQCBpcHY0X2ZkYl9ncnBfZmNuYWwoKVxuIFx0JElQIGxpbmsgZGVsIGRldiB2eDEwXG4gfVxuIFxuJiM0MztpcHY0X2ZkYl9wb3J0X2ZjbmFsKClcbiYjNDM7e1xuJiM0MztcdGVjaG9cbiYjNDM7XHRlY2hvIFwmIzM0O0lQdjQgZmRiIG5leHRob3AgZHN0X3BvcnQgZnVuY3Rpb25hbFwmIzM0O1xuJiM0MztcdGVjaG8gXCYjMzQ7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX25leHRob3BfZmRiX3BvcnRfc3VwcG9ydFxuJiM0MztcdGlmIFsgJD8gLWVxICRrc2Z0X3NraXAgXTsgdGhlblxuJiM0MztcdFx0cmV0dXJuICRrc2Z0X3NraXBcbiYjNDM7XHRmaVxuJiM0MztcbiYjNDM7XHQjIE5IQV9EU1RfUE9SVDogb3B0aW9uYWwgcGVyLW5leHRob3AgVlhMQU4gZGVzdGluYXRpb24gVURQIHBvcnQsXG4mIzQzO1x0IyBsZXR0aW5nIGFuIGZkYiBuZXh0aG9wIGdyb3VwIGJhbGFuY2UgYSBmbG93IGFjcm9zcyBsZWdzIHRoYXQgc2hhcmVcbiYjNDM7XHQjIGFuIHVuZGVybGF5IElQIGJ1dCBsaXN0ZW4gb24gZGlmZmVyZW50IFVEUCBwb3J0cy5cbiYjNDM7XHRydW5fY21kIFwmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMCB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgNDc5MFwmIzM0O1xuJiM0MztcdGNoZWNrX25leHRob3AgXCYjMzQ7aWQgMzBcJiMzNDsgXCYjMzQ7aWQgMzAgdmlhIDE3Mi4xNi4xLjIgc2NvcGUgbGluayBmZGIgZHN0X3BvcnQgNDc5MFwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDAgXCYjMzQ7RmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydFwmIzM0O1xuJiM0MztcbiYjNDM7XHRydW5fY21kIFwmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMSBmZGIgZHN0X3BvcnQgNDc5MFwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDIgXCYjMzQ7RmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCBidXQgbm8gZ2F0ZXdheVwmIzM0O1xuJiM0MztcbiYjNDM7XHRydW5fY21kIFwmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMSB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgMFwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDIgXCYjMzQ7RmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCAwXCYjMzQ7XG4mIzQzO1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDMyIHZpYSAxNzIuMTYuMS4yIGZkYiBkc3RfcG9ydCA0Nzg5XCYjMzQ7XG4mIzQzO1x0cnVuX2NtZCBcJiMzNDskSVAgbmV4dGhvcCBhZGQgaWQgMzMgdmlhIDE3Mi4xNi4xLjMgZmRiIGRzdF9wb3J0IDU3ODlcJiMzNDtcbiYjNDM7XHRydW5fY21kIFwmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAxMDUgZ3JvdXAgMzIvMzMgZmRiXCYjMzQ7XG4mIzQzO1x0Y2hlY2tfbmV4dGhvcCBcJiMzNDtpZCAxMDVcJiMzNDsgXCYjMzQ7aWQgMTA1IGdyb3VwIDMyLzMzIGZkYlwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDAgXCYjMzQ7RmRiIG5leHRob3AgZ3JvdXAgd2l0aCBsZWdzIGRpZmZlcmluZyBpbiBkc3RfcG9ydFwmIzM0O1xuJiM0MztcbiYjNDM7XHRydW5fY21kIFwmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzNCB2aWEgMTcyLjE2LjEuMiBmZGJcJiMzNDtcbiYjNDM7XHRjaGVja19uZXh0aG9wIFwmIzM0O2lkIDM0XCYjMzQ7IFwmIzM0O2lkIDM0IHZpYSAxNzIuMTYuMS4yIHNjb3BlIGxpbmsgZmRiXCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtGZGIgbmV4dGhvcCB3aXRob3V0IGRzdF9wb3J0IG9taXRzIGRzdF9wb3J0XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4gaXB2NF9tcGF0aF9zZWxlY3QoKVxuIHtcbiBcdGxvY2FsIHJjIGRldiBtYXRjaCBoIGFkZHJcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF92eGxhbl9uaC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X3Z4bGFuX25oLnNoXG5pbmRleCAyMGYzMzY5Zjc3NmIxNS4uN2I1ZGMxZDM3ZmEwMjEgMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF92eGxhbl9uaC5zaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Rlc3RfdnhsYW5fbmguc2hcbkBAIC01Niw2ICYjNDM7NTYsMTYgQEAgdGNfc3RhdHNfZ2V0KClcbiBcdHRjX3J1bGVfaGFuZGxlX3N0YXRzX2dldCBcJiMzNDtkZXYgZHVtbXkxIGVncmVzc1wmIzM0OyAxMDEgXCYjMzQ7LnBhY2tldHNcJiMzNDsgXCYjMzQ7LW4gJG5zMVwmIzM0O1xuIH1cbiBcbiYjNDM7bmhfc3RhdHNfZ2V0X3BvcnQoKVxuJiM0Mzt7XG4mIzQzO1x0aXAgLW4gXCYjMzQ7JG5zMVwmIzM0OyAtcyAtaiBuZXh0aG9wIHNob3cgaWQgMjAgfCBqcSBcJiMzNDsuW11bXFxcJiMzNDtncm91cF9zdGF0c1xcXCYjMzQ7XVtdW1xcXCYjMzQ7cGFja2V0c1xcXCYjMzQ7XVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt0Y19zdGF0c19nZXRfcG9ydCgpXG4mIzQzO3tcbiYjNDM7XHR0Y19ydWxlX2hhbmRsZV9zdGF0c19nZXQgXCYjMzQ7ZGV2IGR1bW15MSBlZ3Jlc3NcJiMzNDsgMTAyIFwmIzM0Oy5wYWNrZXRzXCYjMzQ7IFwmIzM0Oy1uICRuczFcJiMzNDtcbiYjNDM7fVxuJiM0MztcbiBiYXNpY190eF9jb21tb24oKVxuIHtcbiBcdGxvY2FsIGFmX3N0cj0kMTsgc2hpZnRcbkBAIC05MCw2ICYjNDM7MTAwLDI2IEBAIGJhc2ljX3R4X2NvbW1vbigpXG4gXHRidXN5d2FpdCBcJiMzNDskQlVTWVdBSVRfVElNRU9VVFwmIzM0OyB1bnRpbF9jb3VudGVyX2lzIFwmIzM0Oz09IDFcJiMzNDsgdGNfc3RhdHNfZ2V0IFx1MDAzZSAvZGV2L251bGxcbiBcdGNoZWNrX2VyciAkPyBcJiMzNDt0YyBmaWx0ZXIgc3RhdHMgZGlkIG5vdCBpbmNyZWFzZVwmIzM0O1xuIFxuJiM0MztcdCMgQWRkIGEgc2Vjb25kIEZEQiBuZXh0aG9wIGdyb3VwIHdob3NlIG5leHRob3AgY2FycmllcyBhIHBlci1uZXh0aG9wXG4mIzQzO1x0IyBkZXN0aW5hdGlvbiBwb3J0IChOSEFfRFNUX1BPUlQpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBWWExBTiBkZXZpY2VcbiYjNDM7XHQjIGRlZmF1bHQuIE1hdGNoaW5nIG91dGVyIHRyYWZmaWMgbXVzdCBlZ3Jlc3Mgd2l0aCB0aGF0IHBvcnQsIHNvIGFcbiYjNDM7XHQjIHNlcGFyYXRlIGZsb3dlciBmaWx0ZXIga2V5ZWQgb24gdGhlIG5ldyBwb3J0IGNhdGNoZXMgaXQuXG4mIzQzO1x0cnVuX2NtZCBcJiMzNDt0YyAtbiAkbnMxIGZpbHRlciBhZGQgZGV2IGR1bW15MSBlZ3Jlc3MgcHJvdG8gJHByb3RvIHByZWYgMSBoYW5kbGUgMTAyIFxcXG4mIzQzO1x0XHRmbG93ZXIgaXBfcHJvdG8gdWRwIGRzdF9pcCAkcmVtb3RlX2FkZHIgZHN0X3BvcnQgNDc5MCBhY3Rpb24gcGFzc1wmIzM0O1xuJiM0MztcbiYjNDM7XHRydW5fY21kIFwmIzM0O2lwIC1uICRuczEgbmV4dGhvcCBhZGQgaWQgMiB2aWEgJHJlbW90ZV9hZGRyIGZkYiBkc3RfcG9ydCA0NzkwXCYjMzQ7XG4mIzQzO1x0cnVuX2NtZCBcJiMzNDtpcCAtbiAkbnMxIG5leHRob3AgYWRkIGlkIDIwIGdyb3VwIDIgZmRiXCYjMzQ7XG4mIzQzO1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7YnJpZGdlIC1uICRuczEgZmRiIGFkZCAwMDoxMToyMjozMzo0NDo2NiBkZXYgdngwIHNlbGYgc3RhdGljIG5oaWQgMjBcJiMzNDtcbiYjNDM7XG4mIzQzO1x0cnVuX2NtZCBcJiMzNDtpcCBuZXRucyBleGVjICRuczEgbWF1c2V6YWhuIHZ4MCAtYSBvd24gLWIgMDA6MTE6MjI6MzM6NDQ6NjYgLWMgMSAtcVwmIzM0O1xuJiM0MztcbiYjNDM7XHRidXN5d2FpdCBcJiMzNDskQlVTWVdBSVRfVElNRU9VVFwmIzM0OyB1bnRpbF9jb3VudGVyX2lzIFwmIzM0Oz09IDFcJiMzNDsgbmhfc3RhdHNfZ2V0X3BvcnQgXHUwMDNlIC9kZXYvbnVsbFxuJiM0MztcdGNoZWNrX2VyciAkPyBcJiMzNDtGREIgbmV4dGhvcCBncm91cCBzdGF0cyBkaWQgbm90IGluY3JlYXNlICh3aXRoIHBvcnQpXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGJ1c3l3YWl0IFwmIzM0OyRCVVNZV0FJVF9USU1FT1VUXCYjMzQ7IHVudGlsX2NvdW50ZXJfaXMgXCYjMzQ7PT0gMVwmIzM0OyB0Y19zdGF0c19nZXRfcG9ydCBcdTAwM2UgL2Rldi9udWxsXG4mIzQzO1x0Y2hlY2tfZXJyICQ/IFwmIzM0O3RjIGZpbHRlciBzdGF0cyBkaWQgbm90IGluY3JlYXNlICh3aXRoIHBvcnQpXCYjMzQ7XG4mIzQzO1xuIFx0bG9nX3Rlc3QgXCYjMzQ7VlhMQU4gRkRCIG5leHRob3A6ICRhZl9zdHIgYmFzaWMgVHhcJiMzNDtcbiB9XG4gXG5AQCAtMjEwLDggJiM0MzsyNDAsOCBAQCByZXF1aXJlX2NvbW1hbmQgYXJwaW5nXG4gcmVxdWlyZV9jb21tYW5kIG5kaXNjNlxuIHJlcXVpcmVfY29tbWFuZCBqcVxuIFxuLWlmICEgaXAgbmV4dGhvcCBoZWxwIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAtcSBcJiMzNDtzdGF0c1wmIzM0OzsgdGhlblxuLVx0ZWNobyBcJiMzNDtTS0lQOiBpcHJvdXRlMiBpcCB0b28gb2xkLCBtaXNzaW5nIG5leHRob3Agc3RhdHMgc3VwcG9ydFwmIzM0O1xuJiM0MztpZiAhIGlwIG5leHRob3AgaGVscCAyXHUwMDNlXHUwMDI2MSB8IGdyZXAgLXEgXCYjMzQ7ZHN0X3BvcnRcJiMzNDs7IHRoZW5cbiYjNDM7XHRlY2hvIFwmIzM0O1NLSVA6IGlwcm91dGUyIGlwIHRvbyBvbGQsIG1pc3NpbmcgbmV4dGhvcCBkc3RfcG9ydCBzdXBwb3J0XCYjMzQ7XG4gXHRleGl0IFwmIzM0OyRrc2Z0X3NraXBcJiMzNDtcbiBmaVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWWExBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bV9uZXdfbmV4dGhvcCYjMzQ7LAogICAgJiMzNDtydG1fdG9fbmhfY29uZmlnJiMzNDssCiAgICAmIzM0O25leHRob3BfY3JlYXRlJiMzNDssCiAgICAmIzM0O25oX2ZpbGxfbm9kZSYjMzQ7LAogICAgJiMzNDt2eGxhbl94bWl0X25oJiMzNDssCiAgICAmIzM0O3Z4bGFuX3htaXRfbmhpZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYSBkZXN0aW5hdGlvbiBwb3J0IChuaF9kc3RfcG9ydCkgb24gZmRiIG5leHRob3BzIChlLmcuLCBWWExBTikuIEl0IG1vZGlmaWVzIHRoZSBuZXRsaW5rIEFQSSB0byBwYXJzZSBOSEFfRFNUX1BPUlQsIHN0b3JlcyBpdCBpbiB0aGUgbmV4dGhvcCBjb25maWd1cmF0aW9uLCBhbmQgdXNlcyBpdCBkdXJpbmcgVlhMQU4gdHJhbnNtaXQgcGF0aCBzZWxlY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIGFuZCBWWExBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTQyYmIyMjBiYzg3NWY0ZTYyYTFkOGUzOWE2MGM1ZDQxMDgyYjQ0YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDI0IDAzOjE3OjQyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oIGIvaW5jbHVkZS9uZXQvbmV4dGhvcC5oCmluZGV4IDU3MmU2OWNkYTQ3NjZkLi5mODZjMTE1MDc0ZDdhYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L25leHRob3AuaApAQCAtMjgsNiAmIzQzOzI4LDcgQEAgc3RydWN0IG5oX2NvbmZpZyB7CiAJdTgJCW5oX3Byb3RvY29sOwogCXU4CQluaF9ibGFja2hvbGU7CiAJdTgJCW5oX2ZkYjsKJiM0MzsJX19iZTE2CQluaF9kc3RfcG9ydDsKIAl1MzIJCW5oX2ZsYWdzOwogCiAJaW50CQluaF9pZmluZGV4OwpAQCAtNjMsNiAmIzQzOzY0LDcgQEAgc3RydWN0IG5oX2luZm8gewogCXU4CQkJZmFtaWx5OwogCWJvb2wJCQlyZWplY3Rfbmg7CiAJYm9vbAkJCWZkYl9uaDsKJiM0MzsJX19iZTE2CQkJZHN0X3BvcnQ7CiAKIAl1bmlvbiB7CiAJCXN0cnVjdCBmaWJfbmhfY29tbW9uCWZpYl9uaGM7CkBAIC01NzQsNyAmIzQzOzU3Niw4IEBAIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX2ZkYl9uaGMoc3RydWN0IG5leHRob3AgKm5oKQogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChzdHJ1Y3QgbmV4dGhvcCAqbmgsCi0JCQkJCQkJICAgIGludCBoYXNoKQomIzQzOwkJCQkJCQkgICAgaW50IGhhc2gsCiYjNDM7CQkJCQkJCSAgICBfX2JlMTYgKmRzdF9wb3J0KQogewogCXN0cnVjdCBuaF9pbmZvICpuaGk7CiAJc3RydWN0IG5leHRob3AgKm5ocDsKQEAgLTU4Myw2ICYjNDM7NTg2LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQoc3RydWN0IG5leHRob3AgKm5oLAogCWlmICh1bmxpa2VseSghbmhwKSkKIAkJcmV0dXJuIE5VTEw7CiAJbmhpID0gcmN1X2RlcmVmZXJlbmNlKG5ocC0mZ3Q7bmhfaW5mbyk7CiYjNDM7CSpkc3RfcG9ydCA9IG5oaS0mZ3Q7ZHN0X3BvcnQ7CiAJcmV0dXJuICZhbXA7bmhpLSZndDtmaWJfbmhjOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC92eGxhbi5oIGIvaW5jbHVkZS9uZXQvdnhsYW4uaAppbmRleCBkZmJhODk2OTVlZmNmYS4uNmU2NDc1NzE1MWI4OGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3Z4bGFuLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvdnhsYW4uaApAQCAtNTY3LDggJiM0Mzs1NjcsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KHN0cnVjdCBuZXh0aG9wICpuaCwKIAkJCQkJICAgIHN0cnVjdCB2eGxhbl9yZHN0ICpyZHN0KQogewogCXN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGM7CiYjNDM7CV9fYmUxNiBkc3RfcG9ydCA9IDA7CiAKLQluaGMgPSBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChuaCwgaGFzaCAmZ3Q7Jmd0OyAxKTsKJiM0MzsJbmhjID0gbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQobmgsIGhhc2ggJmd0OyZndDsgMSwgJmFtcDtkc3RfcG9ydCk7CiAJaWYgKHVubGlrZWx5KCFuaGMpKQogCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTU4Myw2ICYjNDM7NTg0LDggQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsCiAJCWJyZWFrOwogCX0KIAomIzQzOwlyZHN0LSZndDtyZW1vdGVfcG9ydCA9IGRzdF9wb3J0OwomIzQzOwogCXJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaAppbmRleCBiYzQ5YmFmNGEyNjdmMC4uNTljZjFjZWU5M2JkNzAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaApAQCAtODMsNiAmIzQzOzgzLDkgQEAgZW51bSB7CiAJLyogdTMyOyByZWFkLW9ubHk7IHdoZXRoZXIgYW55IGRyaXZlciBjb2xsZWN0cyBIVyBzdGF0cyAqLwogCU5IQV9IV19TVEFUU19VU0VELAogCiYjNDM7CS8qIGJlMTY7IFVEUCBkZXN0aW5hdGlvbiBwb3J0IGZvciBhbiBmZGIgbmV4dGhvcCAoZS5nLiBWWExBTikgKi8KJiM0MzsJTkhBX0RTVF9QT1JULAomIzQzOwogCV9fTkhBX01BWCwKIH07CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25leHRob3AuYyBiL25ldC9pcHY0L25leHRob3AuYwppbmRleCA2MjA1YmQ1N2FhODUyMC4uMDAyMTM4MGI4YzFkZWYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L25leHRob3AuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9uZXh0aG9wLmMKQEAgLTM5LDYgJiM0MzszOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBydG1fbmhfcG9saWN5X25ld1tdID0gewogCVtOSEFfRU5DQVBfVFlQRV0JPSB7IC50eXBlID0gTkxBX1UxNiB9LAogCVtOSEFfRU5DQVBdCQk9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sCiAJW05IQV9GREJdCQk9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LAomIzQzOwlbTkhBX0RTVF9QT1JUXQkJPSBOTEFfUE9MSUNZX01JTihOTEFfQkUxNiwgMSksCiAJW05IQV9SRVNfR1JPVVBdCQk9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sCiAJW05IQV9IV19TVEFUU19FTkFCTEVdCT0gTkxBX1BPTElDWV9NQVgoTkxBX1UzMiwgdHJ1ZSksCiB9OwpAQCAtOTU2LDYgJiM0Mzs5NTcsOSBAQCBzdGF0aWMgaW50IG5oX2ZpbGxfbm9kZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV4dGhvcCAqbmgsCiAJfSBlbHNlIGlmIChuaGktJmd0O2ZkYl9uaCkgewogCQlpZiAobmxhX3B1dF9mbGFnKHNrYiwgTkhBX0ZEQikpCiAJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKJiM0MzsJCWlmIChuaGktJmd0O2RzdF9wb3J0ICZhbXA7JmFtcDsKJiM0MzsJCSAgICBubGFfcHV0X2JlMTYoc2tiLCBOSEFfRFNUX1BPUlQsIG5oaS0mZ3Q7ZHN0X3BvcnQpKQomIzQzOwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCX0gZWxzZSB7CiAJCWNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAKQEAgLTEwNTUsNiAmIzQzOzEwNTksOSBAQCBzdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaCkKIAkJYnJlYWs7CiAJfQogCiYjNDM7CWlmIChuaGktJmd0O2RzdF9wb3J0KQomIzQzOwkJc3ogJiM0Mzs9IG5sYV90b3RhbF9zaXplKDIpOwkvKiBOSEFfRFNUX1BPUlQgKi8KJiM0MzsKIAlpZiAobmhpLSZndDtmaWJfbmhjLm5oY19sd3RzdGF0ZSkgewogCQlzeiAmIzQzOz0gbHd0dW5uZWxfZ2V0X2VuY2FwX3NpemUobmhpLSZndDtmaWJfbmhjLm5oY19sd3RzdGF0ZSk7CiAJCXN6ICYjNDM7PSBubGFfdG90YWxfc2l6ZSgyKTsgIC8qIE5IQV9FTkNBUF9UWVBFICovCkBAIC0yOTU2LDggJiM0MzsyOTYzLDEwIEBAIHN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsCiAJbmhpLSZndDtmYW1pbHkgPSBjZmctJmd0O25oX2ZhbWlseTsKIAluaGktJmd0O2ZpYl9uaGMubmhjX3Njb3BlID0gUlRfU0NPUEVfTElOSzsKIAotCWlmIChjZmctJmd0O25oX2ZkYikKJiM0MzsJaWYgKGNmZy0mZ3Q7bmhfZmRiKSB7CiAJCW5oaS0mZ3Q7ZmRiX25oID0gMTsKJiM0MzsJCW5oaS0mZ3Q7ZHN0X3BvcnQgPSBjZmctJmd0O25oX2RzdF9wb3J0OwomIzQzOwl9CiAKIAlpZiAoY2ZnLSZndDtuaF9ibGFja2hvbGUpIHsKIAkJbmhpLSZndDtyZWplY3RfbmggPSAxOwpAQCAtMzE0Nyw2ICYjNDM7MzE1NiwxNSBAQCBzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQljZmctJmd0O25oX2ZkYiA9IG5sYV9nZXRfZmxhZyh0YltOSEFfRkRCXSk7CiAJfQogCiYjNDM7CWlmICh0YltOSEFfRFNUX1BPUlRdKSB7CiYjNDM7CQlpZiAoIXRiW05IQV9GREJdIHx8ICF0YltOSEFfR0FURVdBWV0pIHsKJiM0MzsJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssCiYjNDM7CQkJCSAgICAgICAmIzM0O0Rlc3RpbmF0aW9uIHBvcnQgY2FuIG9ubHkgYmUgc2V0IG9uIGZkYiBuZXh0aG9wcyB0aGF0IGhhdmUgYSBnYXRld2F5JiMzNDspOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwkJY2ZnLSZndDtuaF9kc3RfcG9ydCA9IG5sYV9nZXRfYmUxNih0YltOSEFfRFNUX1BPUlRdKTsKJiM0MzsJfQomIzQzOwogCWlmICh0YltOSEFfR1JPVVBdKSB7CiAJCWlmIChuaG0tJmd0O25oX2ZhbWlseSAhPSBBRl9VTlNQRUMpIHsKIAkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtJbnZhbGlkIGZhbWlseSBmb3IgZ3JvdXAmIzM0Oyk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wcy5zaAppbmRleCBhYzg2OGE3MzE2OTQ2YS4uODM0YmExYzA2NzZjODAgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHMuc2gKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wcy5zaApAQCAtMzAsNiAmIzQzOzMwLDcgQEAgSVBWNF9URVNUUz0mIzM0OwogCWlwdjRfbGFyZ2VfcmVzX2dycAogCWlwdjRfY29tcGF0X21vZGUKIAlpcHY0X2ZkYl9ncnBfZmNuYWwKJiM0MzsJaXB2NF9mZGJfcG9ydF9mY25hbAogCWlwdjRfbXBhdGhfc2VsZWN0CiAJaXB2NF90b3J0dXJlCiAJaXB2NF9yZXNfdG9ydHVyZQpAQCAtNDQsNiAmIzQzOzQ1LDcgQEAgSVBWNl9URVNUUz0mIzM0OwogCWlwdjZfbGFyZ2VfcmVzX2dycAogCWlwdjZfY29tcGF0X21vZGUKIAlpcHY2X2ZkYl9ncnBfZmNuYWwKJiM0MzsJaXB2Nl9mZGJfcG9ydF9mY25hbAogCWlwdjZfbXBhdGhfc2VsZWN0CiAJaXB2Nl90b3J0dXJlCiAJaXB2Nl9yZXNfdG9ydHVyZQpAQCAtNDMyLDYgJiM0Mzs0MzQsMTUgQEAgY2hlY2tfbmV4dGhvcF9mZGJfc3VwcG9ydCgpCiAJZmkKIH0KIAomIzQzO2NoZWNrX25leHRob3BfZmRiX3BvcnRfc3VwcG9ydCgpCiYjNDM7ewomIzQzOwkkSVAgbmV4dGhvcCBoZWxwIDImZ3Q7JmFtcDsxIHwgZ3JlcCAtcSAmIzM0O2RzdF9wb3J0JiMzNDsKJiM0MzsJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCiYjNDM7CQllY2hvICYjMzQ7U0tJUDogaXByb3V0ZTIgdG9vIG9sZCwgbWlzc2luZyBuZXh0aG9wIGRzdF9wb3J0IHN1cHBvcnQmIzM0OwomIzQzOwkJcmV0dXJuICRrc2Z0X3NraXAKJiM0MzsJZmkKJiM0Mzt9CiYjNDM7CiBjaGVja19uZXh0aG9wX3Jlc19zdXBwb3J0KCkKIHsKIAkkSVAgbmV4dGhvcCBoZWxwIDImZ3Q7JmFtcDsxIHwgZ3JlcCAtcSByZXNpbGllbnQKQEAgLTU0MSw2ICYjNDM7NTUyLDQxIEBAIGlwdjZfZmRiX2dycF9mY25hbCgpCiAJJElQIGxpbmsgZGVsIGRldiB2eDEwCiB9CiAKJiM0MztpcHY2X2ZkYl9wb3J0X2ZjbmFsKCkKJiM0Mzt7CiYjNDM7CWVjaG8KJiM0MzsJZWNobyAmIzM0O0lQdjYgZmRiIG5leHRob3AgZHN0X3BvcnQgZnVuY3Rpb25hbCYjMzQ7CiYjNDM7CWVjaG8gJiMzNDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzM0OwomIzQzOwomIzQzOwljaGVja19uZXh0aG9wX2ZkYl9wb3J0X3N1cHBvcnQKJiM0MzsJaWYgWyAkPyAtZXEgJGtzZnRfc2tpcCBdOyB0aGVuCiYjNDM7CQlyZXR1cm4gJGtzZnRfc2tpcAomIzQzOwlmaQomIzQzOwomIzQzOwkjIE5IQV9EU1RfUE9SVDogb3B0aW9uYWwgcGVyLW5leHRob3AgVlhMQU4gZGVzdGluYXRpb24gVURQIHBvcnQsCiYjNDM7CSMgbGV0dGluZyBhbiBmZGIgbmV4dGhvcCBncm91cCBiYWxhbmNlIGEgZmxvdyBhY3Jvc3MgbGVncyB0aGF0IHNoYXJlCiYjNDM7CSMgYW4gdW5kZXJsYXkgSVAgYnV0IGxpc3RlbiBvbiBkaWZmZXJlbnQgVURQIHBvcnRzLgomIzQzOwlydW5fY21kICYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDgwIHZpYSAyMDAxOmRiODo5MTo6MiBmZGIgZHN0X3BvcnQgNDc5MCYjMzQ7CiYjNDM7CWNoZWNrX25leHRob3AgJiMzNDtpZCA4MCYjMzQ7ICYjMzQ7aWQgODAgdmlhIDIwMDE6ZGI4OjkxOjoyIHNjb3BlIGxpbmsgZmRiIGRzdF9wb3J0IDQ3OTAmIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAwICYjMzQ7RmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCYjMzQ7CiYjNDM7CiYjNDM7CXJ1bl9jbWQgJiMzNDskSVAgbmV4dGhvcCBhZGQgaWQgODEgZmRiIGRzdF9wb3J0IDQ3OTAmIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAyICYjMzQ7RmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCBidXQgbm8gZ2F0ZXdheSYjMzQ7CiYjNDM7CiYjNDM7CXJ1bl9jbWQgJiMzNDskSVAgbmV4dGhvcCBhZGQgaWQgODEgdmlhIDIwMDE6ZGI4OjkxOjoyIGZkYiBkc3RfcG9ydCAwJiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMiAmIzM0O0ZkYiBuZXh0aG9wIHdpdGggZHN0X3BvcnQgMCYjMzQ7CiYjNDM7CiYjNDM7CXJ1bl9jbWQgJiMzNDskSVAgbmV4dGhvcCBhZGQgaWQgODIgdmlhIDIwMDE6ZGI4OjkxOjoyIGZkYiBkc3RfcG9ydCA0Nzg5JiMzNDsKJiM0MzsJcnVuX2NtZCAmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCA4MyB2aWEgMjAwMTpkYjg6OTE6OjMgZmRiIGRzdF9wb3J0IDU3ODkmIzM0OwomIzQzOwlydW5fY21kICYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDEwNiBncm91cCA4Mi84MyBmZGImIzM0OwomIzQzOwljaGVja19uZXh0aG9wICYjMzQ7aWQgMTA2JiMzNDsgJiMzNDtpZCAxMDYgZ3JvdXAgODIvODMgZmRiJiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMCAmIzM0O0ZkYiBuZXh0aG9wIGdyb3VwIHdpdGggbGVncyBkaWZmZXJpbmcgaW4gZHN0X3BvcnQmIzM0OwomIzQzOwomIzQzOwlydW5fY21kICYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDg0IHZpYSAyMDAxOmRiODo5MTo6MiBmZGImIzM0OwomIzQzOwljaGVja19uZXh0aG9wICYjMzQ7aWQgODQmIzM0OyAmIzM0O2lkIDg0IHZpYSAyMDAxOmRiODo5MTo6MiBzY29wZSBsaW5rIGZkYiYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDAgJiMzNDtGZGIgbmV4dGhvcCB3aXRob3V0IGRzdF9wb3J0IG9taXRzIGRzdF9wb3J0JiMzNDsKJiM0Mzt9CiYjNDM7CiBpcHY0X2ZkYl9ncnBfZmNuYWwoKQogewogCWxvY2FsIHJjCkBAIC02NDEsNiAmIzQzOzY4Nyw0MSBAQCBpcHY0X2ZkYl9ncnBfZmNuYWwoKQogCSRJUCBsaW5rIGRlbCBkZXYgdngxMAogfQogCiYjNDM7aXB2NF9mZGJfcG9ydF9mY25hbCgpCiYjNDM7ewomIzQzOwllY2hvCiYjNDM7CWVjaG8gJiMzNDtJUHY0IGZkYiBuZXh0aG9wIGRzdF9wb3J0IGZ1bmN0aW9uYWwmIzM0OwomIzQzOwllY2hvICYjMzQ7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfbmV4dGhvcF9mZGJfcG9ydF9zdXBwb3J0CiYjNDM7CWlmIFsgJD8gLWVxICRrc2Z0X3NraXAgXTsgdGhlbgomIzQzOwkJcmV0dXJuICRrc2Z0X3NraXAKJiM0MzsJZmkKJiM0MzsKJiM0MzsJIyBOSEFfRFNUX1BPUlQ6IG9wdGlvbmFsIHBlci1uZXh0aG9wIFZYTEFOIGRlc3RpbmF0aW9uIFVEUCBwb3J0LAomIzQzOwkjIGxldHRpbmcgYW4gZmRiIG5leHRob3AgZ3JvdXAgYmFsYW5jZSBhIGZsb3cgYWNyb3NzIGxlZ3MgdGhhdCBzaGFyZQomIzQzOwkjIGFuIHVuZGVybGF5IElQIGJ1dCBsaXN0ZW4gb24gZGlmZmVyZW50IFVEUCBwb3J0cy4KJiM0MzsJcnVuX2NtZCAmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMCB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgNDc5MCYjMzQ7CiYjNDM7CWNoZWNrX25leHRob3AgJiMzNDtpZCAzMCYjMzQ7ICYjMzQ7aWQgMzAgdmlhIDE3Mi4xNi4xLjIgc2NvcGUgbGluayBmZGIgZHN0X3BvcnQgNDc5MCYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDAgJiMzNDtGZGIgbmV4dGhvcCB3aXRoIGRzdF9wb3J0JiMzNDsKJiM0MzsKJiM0MzsJcnVuX2NtZCAmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMSBmZGIgZHN0X3BvcnQgNDc5MCYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDIgJiMzNDtGZGIgbmV4dGhvcCB3aXRoIGRzdF9wb3J0IGJ1dCBubyBnYXRld2F5JiMzNDsKJiM0MzsKJiM0MzsJcnVuX2NtZCAmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMSB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgMCYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDIgJiMzNDtGZGIgbmV4dGhvcCB3aXRoIGRzdF9wb3J0IDAmIzM0OwomIzQzOwomIzQzOwlydW5fY21kICYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDMyIHZpYSAxNzIuMTYuMS4yIGZkYiBkc3RfcG9ydCA0Nzg5JiMzNDsKJiM0MzsJcnVuX2NtZCAmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMyB2aWEgMTcyLjE2LjEuMyBmZGIgZHN0X3BvcnQgNTc4OSYjMzQ7CiYjNDM7CXJ1bl9jbWQgJiMzNDskSVAgbmV4dGhvcCBhZGQgaWQgMTA1IGdyb3VwIDMyLzMzIGZkYiYjMzQ7CiYjNDM7CWNoZWNrX25leHRob3AgJiMzNDtpZCAxMDUmIzM0OyAmIzM0O2lkIDEwNSBncm91cCAzMi8zMyBmZGImIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAwICYjMzQ7RmRiIG5leHRob3AgZ3JvdXAgd2l0aCBsZWdzIGRpZmZlcmluZyBpbiBkc3RfcG9ydCYjMzQ7CiYjNDM7CiYjNDM7CXJ1bl9jbWQgJiMzNDskSVAgbmV4dGhvcCBhZGQgaWQgMzQgdmlhIDE3Mi4xNi4xLjIgZmRiJiMzNDsKJiM0MzsJY2hlY2tfbmV4dGhvcCAmIzM0O2lkIDM0JiMzNDsgJiMzNDtpZCAzNCB2aWEgMTcyLjE2LjEuMiBzY29wZSBsaW5rIGZkYiYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDAgJiMzNDtGZGIgbmV4dGhvcCB3aXRob3V0IGRzdF9wb3J0IG9taXRzIGRzdF9wb3J0JiMzNDsKJiM0Mzt9CiYjNDM7CiBpcHY0X21wYXRoX3NlbGVjdCgpCiB7CiAJbG9jYWwgcmMgZGV2IG1hdGNoIGggYWRkcgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Rlc3RfdnhsYW5fbmguc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF92eGxhbl9uaC5zaAppbmRleCAyMGYzMzY5Zjc3NmIxNS4uN2I1ZGMxZDM3ZmEwMjEgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X3Z4bGFuX25oLnNoCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X3Z4bGFuX25oLnNoCkBAIC01Niw2ICYjNDM7NTYsMTYgQEAgdGNfc3RhdHNfZ2V0KCkKIAl0Y19ydWxlX2hhbmRsZV9zdGF0c19nZXQgJiMzNDtkZXYgZHVtbXkxIGVncmVzcyYjMzQ7IDEwMSAmIzM0Oy5wYWNrZXRzJiMzNDsgJiMzNDstbiAkbnMxJiMzNDsKIH0KIAomIzQzO25oX3N0YXRzX2dldF9wb3J0KCkKJiM0Mzt7CiYjNDM7CWlwIC1uICYjMzQ7JG5zMSYjMzQ7IC1zIC1qIG5leHRob3Agc2hvdyBpZCAyMCB8IGpxICYjMzQ7LltdW1wmIzM0O2dyb3VwX3N0YXRzXCYjMzQ7XVtdW1wmIzM0O3BhY2tldHNcJiMzNDtdJiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7dGNfc3RhdHNfZ2V0X3BvcnQoKQomIzQzO3sKJiM0MzsJdGNfcnVsZV9oYW5kbGVfc3RhdHNfZ2V0ICYjMzQ7ZGV2IGR1bW15MSBlZ3Jlc3MmIzM0OyAxMDIgJiMzNDsucGFja2V0cyYjMzQ7ICYjMzQ7LW4gJG5zMSYjMzQ7CiYjNDM7fQomIzQzOwogYmFzaWNfdHhfY29tbW9uKCkKIHsKIAlsb2NhbCBhZl9zdHI9JDE7IHNoaWZ0CkBAIC05MCw2ICYjNDM7MTAwLDI2IEBAIGJhc2ljX3R4X2NvbW1vbigpCiAJYnVzeXdhaXQgJiMzNDskQlVTWVdBSVRfVElNRU9VVCYjMzQ7IHVudGlsX2NvdW50ZXJfaXMgJiMzNDs9PSAxJiMzNDsgdGNfc3RhdHNfZ2V0ICZndDsgL2Rldi9udWxsCiAJY2hlY2tfZXJyICQ/ICYjMzQ7dGMgZmlsdGVyIHN0YXRzIGRpZCBub3QgaW5jcmVhc2UmIzM0OwogCiYjNDM7CSMgQWRkIGEgc2Vjb25kIEZEQiBuZXh0aG9wIGdyb3VwIHdob3NlIG5leHRob3AgY2FycmllcyBhIHBlci1uZXh0aG9wCiYjNDM7CSMgZGVzdGluYXRpb24gcG9ydCAoTkhBX0RTVF9QT1JUKSB0aGF0IGRpZmZlcnMgZnJvbSB0aGUgVlhMQU4gZGV2aWNlCiYjNDM7CSMgZGVmYXVsdC4gTWF0Y2hpbmcgb3V0ZXIgdHJhZmZpYyBtdXN0IGVncmVzcyB3aXRoIHRoYXQgcG9ydCwgc28gYQomIzQzOwkjIHNlcGFyYXRlIGZsb3dlciBmaWx0ZXIga2V5ZWQgb24gdGhlIG5ldyBwb3J0IGNhdGNoZXMgaXQuCiYjNDM7CXJ1bl9jbWQgJiMzNDt0YyAtbiAkbnMxIGZpbHRlciBhZGQgZGV2IGR1bW15MSBlZ3Jlc3MgcHJvdG8gJHByb3RvIHByZWYgMSBoYW5kbGUgMTAyIFwKJiM0MzsJCWZsb3dlciBpcF9wcm90byB1ZHAgZHN0X2lwICRyZW1vdGVfYWRkciBkc3RfcG9ydCA0NzkwIGFjdGlvbiBwYXNzJiMzNDsKJiM0MzsKJiM0MzsJcnVuX2NtZCAmIzM0O2lwIC1uICRuczEgbmV4dGhvcCBhZGQgaWQgMiB2aWEgJHJlbW90ZV9hZGRyIGZkYiBkc3RfcG9ydCA0NzkwJiMzNDsKJiM0MzsJcnVuX2NtZCAmIzM0O2lwIC1uICRuczEgbmV4dGhvcCBhZGQgaWQgMjAgZ3JvdXAgMiBmZGImIzM0OwomIzQzOwomIzQzOwlydW5fY21kICYjMzQ7YnJpZGdlIC1uICRuczEgZmRiIGFkZCAwMDoxMToyMjozMzo0NDo2NiBkZXYgdngwIHNlbGYgc3RhdGljIG5oaWQgMjAmIzM0OwomIzQzOwomIzQzOwlydW5fY21kICYjMzQ7aXAgbmV0bnMgZXhlYyAkbnMxIG1hdXNlemFobiB2eDAgLWEgb3duIC1iIDAwOjExOjIyOjMzOjQ0OjY2IC1jIDEgLXEmIzM0OwomIzQzOwomIzQzOwlidXN5d2FpdCAmIzM0OyRCVVNZV0FJVF9USU1FT1VUJiMzNDsgdW50aWxfY291bnRlcl9pcyAmIzM0Oz09IDEmIzM0OyBuaF9zdGF0c19nZXRfcG9ydCAmZ3Q7IC9kZXYvbnVsbAomIzQzOwljaGVja19lcnIgJD8gJiMzNDtGREIgbmV4dGhvcCBncm91cCBzdGF0cyBkaWQgbm90IGluY3JlYXNlICh3aXRoIHBvcnQpJiMzNDsKJiM0MzsKJiM0MzsJYnVzeXdhaXQgJiMzNDskQlVTWVdBSVRfVElNRU9VVCYjMzQ7IHVudGlsX2NvdW50ZXJfaXMgJiMzNDs9PSAxJiMzNDsgdGNfc3RhdHNfZ2V0X3BvcnQgJmd0OyAvZGV2L251bGwKJiM0MzsJY2hlY2tfZXJyICQ/ICYjMzQ7dGMgZmlsdGVyIHN0YXRzIGRpZCBub3QgaW5jcmVhc2UgKHdpdGggcG9ydCkmIzM0OwomIzQzOwogCWxvZ190ZXN0ICYjMzQ7VlhMQU4gRkRCIG5leHRob3A6ICRhZl9zdHIgYmFzaWMgVHgmIzM0OwogfQogCkBAIC0yMTAsOCAmIzQzOzI0MCw4IEBAIHJlcXVpcmVfY29tbWFuZCBhcnBpbmcKIHJlcXVpcmVfY29tbWFuZCBuZGlzYzYKIHJlcXVpcmVfY29tbWFuZCBqcQogCi1pZiAhIGlwIG5leHRob3AgaGVscCAyJmd0OyZhbXA7MSB8IGdyZXAgLXEgJiMzNDtzdGF0cyYjMzQ7OyB0aGVuCi0JZWNobyAmIzM0O1NLSVA6IGlwcm91dGUyIGlwIHRvbyBvbGQsIG1pc3NpbmcgbmV4dGhvcCBzdGF0cyBzdXBwb3J0JiMzNDsKJiM0MztpZiAhIGlwIG5leHRob3AgaGVscCAyJmd0OyZhbXA7MSB8IGdyZXAgLXEgJiMzNDtkc3RfcG9ydCYjMzQ7OyB0aGVuCiYjNDM7CWVjaG8gJiMzNDtTS0lQOiBpcHJvdXRlMiBpcCB0b28gb2xkLCBtaXNzaW5nIG5leHRob3AgZHN0X3BvcnQgc3VwcG9ydCYjMzQ7CiAJZXhpdCAmIzM0OyRrc2Z0X3NraXAmIzM0OwogZmkKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTU0CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5leHRob3AgRGVzdGluYXRpb24gUG9ydCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIHRoZSBjYXBhYmlsaXR5IHRvIHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBwb3J0IChgbmhfZHN0X3BvcnRgKSBmb3IgRkRCIG5leHRob3BzLCBzcGVjaWZpY2FsbHkgd2l0aCBWWExBTiBpbiBtaW5kLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzLCBpdCYjMzk7cyBwcmV0dHkgZm9jdXNlZCBvbiBjb3JlIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUuIEl0IHRvdWNoZXMgY3JpdGljYWwgZmlsZXMg4oCTIGBuZXh0aG9wLmhgLCBgdnhsYW4uaGAsIGBuZXh0aG9wLmhgLCBgbmV4dGhvcC5jYCwgYW5kIHRoZSBzZWxmdGVzdHMuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGhhcyB0aGUgcG90ZW50aWFsIGZvciBzb21lIHN1YnRsZSBpbnRlcmFjdGlvbnMsIHNvIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB3aGVyZSB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuIFRoZSBjaGFuZ2VzIGluIGBuZXQvaXB2NC9uZXh0aG9wLmNgIGFyZSBjcnVjaWFsLiBgcnRtX3RvX25oX2NvbmZpZ2AgaXMgcmVzcG9uc2libGUgZm9yIHBhcnNpbmcgdGhhdCBuZXcgYE5IQV9EU1RfUE9SVGAgYXR0cmlidXRlLiBUaGVuLCBgbmhfZmlsbF9ub2RlYCBhbmQgYG5oX25sbXNnX3NpemVfc2luZ2xlYCBtdXN0IG5vdyBoYW5kbGUgdGhlIHNpemluZyBhbmQgZmlsbGluZyBvZiBuZXRsaW5rIG1lc3NhZ2VzIGZvciB0aGlzIG5ldyBhdHRyaWJ1dGUuIENydWNpYWxseSwgYG5leHRob3BfY3JlYXRlYCBpcyB3aGF0IGFjdHVhbGx5IHNldHMgdGhlIGRlc3RpbmF0aW9uIHBvcnQgd2hlbiBhIG5ldyBuZXh0aG9wIGlzIGNyZWF0ZWQ7IGBuaGktJmd0O2RzdF9wb3J0ID0gY2ZnLSZndDtuaF9kc3RfcG9ydGAuCgpUaGUgY2hhbmdlcyBpbiBgaW5jbHVkZS9uZXQvdnhsYW4uaGAgYXJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAgbm93IHJldHJpZXZlcyB0aGUgYGRzdF9wb3J0YCBmcm9tIGBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdGAgYW5kIHRoZW4gc2V0cyBgcmRzdC0mZ3Q7cmVtb3RlX3BvcnRgLiBTbywgaXQmIzM5O3MgZGlyZWN0bHkgaW50ZWdyYXRpbmcgdGhpcyBkZXN0aW5hdGlvbiBwb3J0IHNldHRpbmcgaW50byB0aGUgVlhMQU4gcGF0aCBzZWxlY3Rpb24gbG9naWMuIFRoaXMgaXMgd2hlcmUgSSB3YW50IHRvIHBheSBzcGVjaWFsIGF0dGVudGlvbiwgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGhhbmRsaW5nIHRoZSBjb3JlIGxvZ2ljIG9mIHVzaW5nIHRoZSB2YWx1ZS4KCkkgbmVlZCB0byBjb25maXJtIHRoZSByZWFjaGFiaWxpdHkgb2YgYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAsIGFuZCBjaGVjayBmb3IgcmVsYXRlZCBmdW5jdGlvbnMgaW4gdGhlIGNvZGViYXNlLiBJIHNlZSBpdCYjMzk7cyBhbiBpbmxpbmUgZnVuY3Rpb24sIHNvIGl0IHNob3VsZCBiZSB3aWRlbHkgdXNlZC4gQnV0IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggZm9yIGl0cyB1c2VzIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yNjUwPXN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfbmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY2My1cdFx0Z290byBkcm9wO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2NjQ6XHRkb194bWl0ID0gdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KG5oLCBoYXNoLCBcdTAwMjZuaF9yZHN0KTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjY1LVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yNjgwPXN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY5Ny1cdH1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjk4Olx0ZG9feG1pdCA9IHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChuaCwgaGFzaCwgXHUwMDI2bmhfcmRzdCk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY5OS1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmluY2x1ZGUvbmV0L3Z4bGFuLmg9NTM0PXN0YXRpYyBpbmxpbmUgdm9pZCB2eGxhbl9mbGFnX2F0dHJfZXJyb3IoaW50IGF0dHJ0eXBlLFxuLS1cbmluY2x1ZGUvbmV0L3Z4bGFuLmgtNTY0LVxuaW5jbHVkZS9uZXQvdnhsYW4uaDo1NjU6c3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG5pbmNsdWRlL25ldC92eGxhbi5oLTU2Ni1cdFx0XHRcdFx0ICAgIHUzMiBoYXNoLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NDMKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqRGlnZ2luZyBpbnRvIFZYTEFOIFRyYW5zbWlzc2lvbiBMb2dpYyoqCgpBbHJpZ2h0LCBJIHNlZSB0aGF0IHRoZSBgdnhsYW5feG1pdF9uaGAgYW5kIGB2eGxhbl94bWl0X25oaWRgIGZ1bmN0aW9ucyBhcmUgdXRpbGl6aW5nIHNvbWV0aGluZyDigJMgcG90ZW50aWFsbHkgYSBjcml0aWNhbCBzdHJ1Y3R1cmUgb3IgcHJvY2VzcyDigJMgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGJldHRlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSByb290cyBvZiB0aGlzIGFuZCBzZWUgaWYgSSBjYW4gZmluZCB0aGUgZnVuY3Rpb24gd2hlcmUgaXQgaXMgYWN0dWFsbHkgY29uZmlndXJlZC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhpcyBpcyBnb2luZyB0byBiZSBpbiBgcnRtX3RvX25oX2NvbmZpZ2AuIFNvLCBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBgbmV0L2lwdjQvbmV4dGhvcC5jYCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgaXMgYmVpbmcgZGVmaW5lZC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLCBvciBhdCBsZWFzdCBhIG1hcCBmb3Igd2hlcmUgdGhpbmdzIGFyZSBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bV90b19uaF9jb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV4dGhvcC5jPTMwMzg9c3RhdGljIGludCBydG1fbmhfZ2V0X3RpbWVyKHN0cnVjdCBubGF0dHIgKmF0dHIsIHVuc2lnbmVkIGxvbmcgZmFsbGJhY2ssXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMwNjItXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzA2MzpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfZ3JwX3JlcyhzdHJ1Y3QgbmxhdHRyICpyZXMsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbm5ldC9pcHY0L25leHRob3AuYy0zMDY0LVx0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzEwMS1cbm5ldC9pcHY0L25leHRob3AuYzozMTAyOnN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzEwMy1cdFx0XHQgICAgc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBubGF0dHIgKip0Yixcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzE4OS1cdFx0aWYgKGNmZy1cdTAwM2VuaF9ncnBfdHlwZSA9PSBORVhUSE9QX0dSUF9UWVBFX1JFUylcbm5ldC9pcHY0L25leHRob3AuYzozMTkwOlx0XHRcdGVyciA9IHJ0bV90b19uaF9jb25maWdfZ3JwX3Jlcyh0YltOSEFfUkVTX0dST1VQXSxcbm5ldC9pcHY0L25leHRob3AuYy0zMTkxLVx0XHRcdFx0XHRcdCAgICAgICBjZmcsIGV4dGFjayk7XG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMyNzctXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzI3ODpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfcnRubChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0Yixcbm5ldC9pcHY0L25leHRob3AuYy0zMjc5LVx0XHRcdFx0IHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9MzMxMD1zdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMyNC1cbm5ldC9pcHY0L25leHRob3AuYzozMzI1Olx0ZXJyID0gcnRtX3RvX25oX2NvbmZpZyhuZXQsIHNrYiwgbmxoLCB0YiwgXHUwMDI2Y2ZnLCBleHRhY2spO1xubmV0L2lwdjQvbmV4dGhvcC5jLTMzMjYtXHRpZiAoZXJyKVxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0zMzM2LVxubmV0L2lwdjQvbmV4dGhvcC5jOjMzMzc6XHRlcnIgPSBydG1fdG9fbmhfY29uZmlnX3J0bmwobmV0LCB0YiwgXHUwMDI2Y2ZnLCBleHRhY2spO1xubmV0L2lwdjQvbmV4dGhvcC5jLTMzMzgtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MjgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGNvZGUtcmVsYXRlZCB0aG91Z2h0cywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIHRoZSBOZXh0IEhvcCBDb2RlKioKClJpZ2h0LCBgcnRtX25ld19uZXh0aG9wYCDigJMgdGhhdCYjMzk7cyBhIHNvbGlkIGZ1bmN0aW9uIHRvIHN0YXJ0IHdpdGg7IGl0IGZlZWxzIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludCBmb3IgdGhpcyB3aG9sZSBuZXh0LWhvcCBjcmVhdGlvbiBwcm9jZXNzLiBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHJlYWxseSBmb2xsb3cgdGhlIGxvZ2ljIGZsb3cgZnJvbSB0aGVyZS4gQW5kIHRoZW4sIGxvb2tpbmcgYXQgdGhlIGNvZGUgSSBzZWUgdGhhdCBgbmhfZmlsbF9ub2RlYCBhbmQgYG5leHRob3BfY3JlYXRlYCBsb29rIGxpa2UgcHJvbWlzaW5nIGZ1bmN0aW9ucyB0byBleGFtaW5lIGFsb25nc2lkZSBgcnRtX25ld19uZXh0aG9wYC4gVGhlIGBuaF9maWxsX25vZGVgIGZ1bmN0aW9uIHNlZW1zIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZywgZ2l2ZW4gdGhlIG5hbWUuIEkgd2FudCB0byBjaGVjayB0aGF0IG9uZSBvdXQgZmlyc3QuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG5vZGUgaXMgYmVpbmcgcG9wdWxhdGVkLCBhbmQgd2hhdCBraW5kIG9mIGRhdGEgaXQgcmVxdWlyZXMgZnJvbSB0aGUgdXNlci4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiBhY3Rpb24gaXRlbSBmb3IgbWUgdG9kYXkgaXMgZmlndXJpbmcgb3V0IGBuaF9maWxsX25vZGVgLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHdoYXQgZ29lcyBpbnRvIGJ1aWxkaW5nIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhIG5leHQgaG9wLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25oX2ZpbGxfbm9kZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmM9ODY2PXN0YXRpYyBpbnQgbmxhX3B1dF9uaF9ncm91cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTkxNC1cbm5ldC9pcHY0L25leHRob3AuYzo5MTU6c3RhdGljIGludCBuaF9maWxsX25vZGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5leHRob3AgKm5oLFxubmV0L2lwdjQvbmV4dGhvcC5jLTkxNi1cdFx0XHRpbnQgZXZlbnQsIHUzMiBwb3J0aWQsIHUzMiBzZXEsIHVuc2lnbmVkIGludCBubGZsYWdzLFxuLS1cbm5ldC9pcHY0L25leHRob3AuYz0xMDg5PXN0YXRpYyB2b2lkIG5leHRob3Bfbm90aWZ5KGludCBldmVudCwgc3RydWN0IG5leHRob3AgKm5oLCBzdHJ1Y3QgbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMTA5OS1cbm5ldC9pcHY0L25leHRob3AuYzoxMTAwOlx0ZXJyID0gbmhfZmlsbF9ub2RlKHNrYiwgbmgsIGV2ZW50LCBpbmZvLVx1MDAzZXBvcnRpZCwgc2VxLCBubGZsYWdzLCAwKTtcbm5ldC9pcHY0L25leHRob3AuYy0xMTAxLVx0aWYgKGVyciBcdTAwM2MgMCkge1xuLS1cbm5ldC9pcHY0L25leHRob3AuYz0zNDE4PXN0YXRpYyBpbnQgcnRtX2dldF9uZXh0aG9wKHN0cnVjdCBza19idWZmICppbl9za2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0zNDQ4LVxubmV0L2lwdjQvbmV4dGhvcC5jOjM0NDk6XHRlcnIgPSBuaF9maWxsX25vZGUoc2tiLCBuaCwgUlRNX05FV05FWFRIT1AsIE5FVExJTktfQ0IoaW5fc2tiKS5wb3J0aWQsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzQ1MC1cdFx0XHQgICBubGgtXHUwMDNlbmxtc2dfc2VxLCAwLCBvcF9mbGFncyk7XG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jPTM2Mzc9c3RhdGljIGludCBydG1fZHVtcF9uZXh0aG9wX2NiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYixcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzY0NS1cbm5ldC9pcHY0L25leHRob3AuYzozNjQ2Olx0cmV0dXJuIG5oX2ZpbGxfbm9kZShza2IsIG5oLCBSVE1fTkVXTkVYVEhPUCxcbm5ldC9pcHY0L25leHRob3AuYy0zNjQ3LVx0XHRcdCAgICBORVRMSU5LX0NCKGNiLVx1MDAzZXNrYikucG9ydGlkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1ODMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQgb2YgTmV4dGhvcCBNYW5hZ2VtZW50KioKCkFscmlnaHQsIHNvIEkgc2VlIGEgY2xlYXIgZ3JvdXAgb2YgZnVuY3Rpb25zIGhlcmUg4oCTIGBydG1fbmV3X25leHRob3BgLCBgcnRtX2dldF9uZXh0aG9wYCwgYHJ0bV9kdW1wX25leHRob3BfY2JgLCBhbmQgYG5leHRob3Bfbm90aWZ5YC4gVGhlc2UgYXJlIHRoZSBvbmVzIGFjdGl2ZWx5IGludm9sdmVkIGluIGNhbGxpbmcgZnVuY3Rpb25zIGZvciB0aGUgbmV4dGhvcCBwcm9jZXNzZXMuIFRoYXQmIzM5O3MgZ29vZCwgaXQgaGVscHMgdG8gaWRlbnRpZnkgdGhlIHBvdGVudGlhbCBlbnRyeSBhbmQgZXhpdCBwb2ludHMgZm9yIG5leHRob3AgaW50ZXJhY3Rpb24uIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBjcmVhdGlvbiBmdW5jdGlvbiwgYG5leHRob3BfY3JlYXRlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhlc2UgY2FsbHMgdHJpZ2dlciBhbmQgZmVlZCBpbnRvIG5leHRob3AgY3JlYXRpb24gdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUgYW5kIHBvdGVudGlhbCBpc3N1ZXMuIExldCYjMzk7cyBzZWUgaG93IHRoYXQgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25leHRob3BfY3JlYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9maWIuYz0xMDkwPXN0YXRpYyB2b2lkIG5zaW1fZmliX2R1bXBfaW5jb25zaXN0ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2ZpYi5jLTExMTEtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmM6MTExMjpzdGF0aWMgc3RydWN0IG5zaW1fbmV4dGhvcCAqbnNpbV9uZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbnNpbV9maWJfZGF0YSAqZGF0YSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9maWIuYy0xMTEzLVx0XHRcdFx0XHRcdHN0cnVjdCBuaF9ub3RpZmllcl9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9maWIuYz0xMjU2PXN0YXRpYyBpbnQgbnNpbV9uZXh0aG9wX2luc2VydChzdHJ1Y3QgbnNpbV9maWJfZGF0YSAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmMtMTI2MS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9maWIuYzoxMjYyOlx0bmV4dGhvcCA9IG5zaW1fbmV4dGhvcF9jcmVhdGUoZGF0YSwgaW5mbyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmMtMTI2My1cdGlmIChJU19FUlIobmV4dGhvcCkpXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jPTI3NDY9c3RhdGljIHZvaWQgZmx1c2hfYWxsX25leHRob3BzKHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMjc2MS1cbm5ldC9pcHY0L25leHRob3AuYzoyNzYyOnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGVfZ3JvdXAoc3RydWN0IG5ldCAqbmV0LFxubmV0L2lwdjQvbmV4dGhvcC5jLTI3NjMtXHRcdFx0XHRcdCAgICBzdHJ1Y3QgbmhfY29uZmlnICpjZmcpXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jPTI5MDg9c3RhdGljIGludCBuaF9jcmVhdGVfaXB2NihzdHJ1Y3QgbmV0ICpuZXQsICBzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTI5NDEtXG5uZXQvaXB2NC9uZXh0aG9wLmM6Mjk0MjpzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5oX2NvbmZpZyAqY2ZnLFxubmV0L2lwdjQvbmV4dGhvcC5jLTI5NDMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jPTMwMDE9c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAxNS1cdGlmIChjZmctXHUwMDNlbmhfZ3JwKVxubmV0L2lwdjQvbmV4dGhvcC5jOjMwMTY6XHRcdG5oID0gbmV4dGhvcF9jcmVhdGVfZ3JvdXAobmV0LCBjZmcpO1xubmV0L2lwdjQvbmV4dGhvcC5jLTMwMTctXHRlbHNlXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzAxODpcdFx0bmggPSBuZXh0aG9wX2NyZWF0ZShuZXQsIGNmZywgZXh0YWNrKTtcbm5ldC9pcHY0L25leHRob3AuYy0zMDE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUyNwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIElucXVpcnkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBuZXh0aG9wcyBhcmUgY3JlYXRlZCBhbmQgdXNlZC4gSXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgYG5leHRob3BfYWRkYCBpcyBmdW5kYW1lbnRhbCwgYW5kIGl0JiMzOTtzIGNhbGxlZCBieSBgbmV4dGhvcF9jcmVhdGVgLiBGdXJ0aGVyLCBgcnRtX25ld19uZXh0aG9wYCBhbHNvIG1ha2VzIHVzZSBvZiBgbmV4dGhvcF9hZGRgLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gc2V2ZXJhbCBmdW5jdGlvbnMgaWYgSSB3YW50IHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhpcywgc3BlY2lmaWNhbGx5OiBgcnRtX25ld19uZXh0aG9wYCwgYHJ0bV9nZXRfbmV4dGhvcGAsIGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgLCBgdnhsYW5feG1pdF9uaGAsIGFuZCBgdnhsYW5feG1pdF9uaGlkYC4gVGhlc2UgYXBwZWFyIHRvIGJlIHRoZSBrZXkgcG9pbnRzIG9mIGludGVyYWN0aW9uLgoKTm93LCBsZXQgbWUgY2hlY2sgZm9yIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSBhbHJlYWR5IGtub3cgdGhhdCBWWExBTiBuZWVkcyBgQ09ORklHX1ZYTEFOYCwgb2J2aW91c2x5LiBCdXQgd2hhdCBhYm91dCBuZXh0aG9wcyBtb3JlIGdlbmVyYWxseT8gSSB3b25kZXIgaWYgYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgIGlzIHJlcXVpcmVkLCBvciBpZiBgQ09ORklHX05FVGAgYWxvbmUgaXMgc3VmZmljaWVudD8gVGhlIHNhZmVzdCBiZXQgd291bGQgYmUgdG8gY2hlY2sgYG5ldC9pcHY0L0tjb25maWdgIGFuZCBzZWUgd2hhdCB0aGUgbmV4dGhvcCBzZWN0aW9uIHNheXMuIFRoYXQgc2hvdWxkIGNsYXJpZnkgYW55IGJ1aWxkLXRpbWUgcHJlcmVxdWlzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTk4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBJUHY0IE1ha2VmaWxlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBJUHY0IG5ldHdvcmtpbmcgc3RhY2suIFdoZXJlJiMzOTtzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0PyBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHJpZ2h0IGZvciB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGJ1aWxkIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgc3BlY2lmaWMgc3Vic3lzdGVtIGFyZSBnb2luZyB0byBiZSBkZWZpbmVkLiBJdCYjMzk7cyB0aGUgY2VudHJhbCBodWIgZm9yIGhvdyBldmVyeXRoaW5nIElQdjQtcmVsYXRlZCBnZXRzIGNvbXBpbGVkIGFuZCBsaW5rZWQgaW50byB0aGUga2VybmVsLiBUaGlzIGlzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb21wb25lbnQgaXMgYnVpbHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25leHRob3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE2LVx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XHQgICAgIG1ldHJpY3MubyBuZXRsaW5rLm8gbmV4dGhvcC5vIHVkcF90dW5uZWxfc3R1Yi5vXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyODkKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gSVB2NCBhbmQgVlhMQU4gQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gYG5leHRob3Aub2AgaXMgY29uc2lzdGVudGx5IGJ1aWx0IHdpdGggSVB2NCBpbiBtaW5kLiBNYWtlcyBzZW5zZS4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBhc3NvY2lhdGVkIHdpdGggVlhMQU4uIE15IGluaXRpYWwgdGhvdWdodCBpcyBgQ09ORklHX1ZYTEFOYCwgb2J2aW91c2x5LiBUaW1lIHRvIGNoZWNrIHRoZSBzdGFuZGFyZCBsb2NhdGlvbnMgZm9yIHRoZXNlIHNvcnRzIG9mIHRoaW5nczogYGRyaXZlcnMvbmV0L01ha2VmaWxlYCBvciBwZXJoYXBzIGEgbW9yZSBzcGVjaWZpYyBgZHJpdmVycy9uZXQvdnhsYW4vTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIHJlbGV2YW50IGJ1aWxkIGZsYWdzIGFuZCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgZ290IHRvIGJlIG9uZSBvZiB0aG9zZSB0d28gZmlsZXMsIGlmIG5vdCBib3RoIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlPTM1PW9iai0kKENPTkZJR19WSVJUSU9fTkVUKSAmIzQzOz0gdmlydGlvX25ldC5vXG5kcml2ZXJzL25ldC9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfVlhMQU4pICYjNDM7PSB2eGxhbi9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTM3LW9iai0kKENPTkZJR19HRU5FVkUpICYjNDM7PSBnZW5ldmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU5NwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBWWExBTiBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBWWExBTiBzZXR1cCwgYW5kIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnQsIGFzIGV4cGVjdGVkLCBpcyBgQ09ORklHX1ZYTEFOYC4gQnV0IGFyZSB0aGVyZSBhbnkgKm90aGVyKiByZWxldmFudCBjb25maWdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGhpbmsuLi4gdGhlIHRlc3Qgc2NyaXB0IHVzZXMgYG1hdXNlemFobmAsIGB0Y2AsIGFuZCBgYnJpZGdlYCwgd2hpY2ggc3VnZ2VzdHMgYSBmZXcgbW9yZSBwb3NzaWJpbGl0aWVzLiBGb3IgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQsIEkmIzM5O20gdGhpbmtpbmcgYENPTkZJR19ORVRfU0NIX0lOR1JFU1NgLCBgQ09ORklHX05FVF9DTFNfRkxPV0VSYCwgYW5kLCBvZiBjb3Vyc2UsIGBDT05GSUdfQlJJREdFYCBtaWdodCBiZSB1c2VmdWwsIGJ1dCBgQ09ORklHX1ZYTEFOYCBpcyB1bmRvdWJ0ZWRseSB0aGUgbW9zdCBjcml0aWNhbCBmb3IgY29yZSBmdW5jdGlvbmFsaXR5LgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzLiBJJiMzOTt2ZSBnb3QgbXkgaW5pdGlhbCBsaXN0OiBgcnRtX25ld19uZXh0aG9wYCwgYHJ0bV9nZXRfbmV4dGhvcGAsIGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgLCBgdnhsYW5feG1pdF9uaGAsIGFuZCBgdnhsYW5feG1pdF9uaGlkYC4gV2FpdCBhIG1pbnV0ZSwgYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAgaXMgYW4gaW5saW5lIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0IHdvbiYjMzk7dCBiZSBhIGRpcmVjdCB0YXJnZXQgZm9yIGludmVzdGlnYXRpb24sIGJ1dCByYXRoZXIgdGhlIGZ1bmN0aW9ucyAqY2FsbGluZyogaXQsIHdoaWNoIGFyZSBgdnhsYW5feG1pdF9uaGAgYW5kIGB2eGxhbl94bWl0X25oaWRgLiBJdCYjMzk7cyBpbmxpbmUgaW4gYGluY2x1ZGUvbmV0L3Z4bGFuLmhgLCBzbyBJJiMzOTtsbCBwcmlvcml0aXplIHRob3NlIHR3by4KCk9rYXksIHNvIHRoZSBmb2N1c2VkIGxpc3QgaXMgZ29pbmcgdG8gYmU6IGBydG1fbmV3X25leHRob3BgLCBgcnRtX2dldF9uZXh0aG9wYCwgYHJ0bV90b19uaF9jb25maWdgLCBgbmhfZmlsbF9ub2RlYCwgYG5leHRob3BfY3JlYXRlYCwgYHZ4bGFuX3htaXRfbmhgLCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAuIEkgbmVlZCB0byBub3cgdmVyaWZ5IGlmIGB2eGxhbl94bWl0X25oYCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAgYXJlIHN0YXRpYyBhcyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl94bWl0X25oJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yMzQ0PXZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY0OS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjUwOnN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfbmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjUxLVx0XHRcdCAgc3RydWN0IHZ4bGFuX2ZkYiAqZiwgX19iZTMyIHZuaSwgYm9vbCBkaWRfcnNjKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjc5LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2ODA6c3RhdGljIG5ldGRldl90eF90IHZ4bGFuX3htaXRfbmhpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2ODEtXHRcdFx0XHQgICB1MzIgbmhpZCwgX19iZTMyIHZuaSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjcyNT1zdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzcyLVx0aWYgKG5oaWQpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc3MzpcdFx0cmV0dXJuIHZ4bGFuX3htaXRfbmhpZChza2IsIGRldiwgbmhpZCwgdm5pKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzc0LVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODE4LVx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihmLVx1MDAzZW5oKSkge1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4MTk6XHRcdHZ4bGFuX3htaXRfbmgoc2tiLCBkZXYsIGYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjgyMC1cdFx0XHQgICAgICAodm5pID8gOiB2eGxhbi1cdTAwM2VkZWZhdWx0X2RzdC5yZW1vdGVfdm5pKSwgZGlkX3JzYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTk3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBTdGF0aWMgTmF0dXJlIG9mIENvcmUgVlhMQU4gRGF0YSBTdHJ1Y3R1cmVzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBzdGF0aWMgZWxlbWVudHMgaGVyZS4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgVlhMQU4gdHJhbnNtaXNzaW9uIG1lY2hhbmlzbXMg4oCTIHNwZWNpZmljYWxseSBgdnhsYW5feG1pdF9uaGAsIGB2eGxhbl94bWl0X25oaWRgLCBhbmQgaG93IHRoZXNlIHJlbGF0ZSB0byB0aGUgYnJvYWRlciByb3V0aW5nIHRhYmxlIG1hbmFnZW1lbnQsIGluY2x1ZGluZyBgcnRtX25ld19uZXh0aG9wYCwgYHJ0bV90b19uaF9jb25maWdgLCBgbmV4dGhvcF9jcmVhdGVgLCBhbmQgYG5oX2ZpbGxfbm9kZWAuIE15IHByaW1hcnkgY29uY2VybiBpcyB0aGF0IHRoZXkgKmFyZSogc3RhdGljLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgcnRtX3RvX25oX2NvbmZpZ2AgaXMgc3RhdGljLiBJdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBpbiB0cmFuc2xhdGluZyByb3V0aW5nIG1lc3NhZ2VzIGludG8gbmV4dC1ob3AgY29uZmlndXJhdGlvbnMsIHNvIGl0cyBiZWhhdmlvciBiZWluZyBzdGF0aWMgb3Igbm90IGlzIGdvaW5nIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB3ZSBjYW4gYXBwbHkgYW55IGR5bmFtaWMgcnVsZXMgdG8gaXRzIGJlaGF2aW9yLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgZ2V0IGEgZGVmaW5pdGl2ZSBhbnN3ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bV90b19uaF9jb25maWcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV4dGhvcC5jPTMwMzg9c3RhdGljIGludCBydG1fbmhfZ2V0X3RpbWVyKHN0cnVjdCBubGF0dHIgKmF0dHIsIHVuc2lnbmVkIGxvbmcgZmFsbGJhY2ssXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMwNjItXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzA2MzpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfZ3JwX3JlcyhzdHJ1Y3QgbmxhdHRyICpyZXMsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbm5ldC9pcHY0L25leHRob3AuYy0zMDY0LVx0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzEwMS1cbm5ldC9pcHY0L25leHRob3AuYzozMTAyOnN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzEwMy1cdFx0XHQgICAgc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBubGF0dHIgKip0Yixcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzE4OS1cdFx0aWYgKGNmZy1cdTAwM2VuaF9ncnBfdHlwZSA9PSBORVhUSE9QX0dSUF9UWVBFX1JFUylcbm5ldC9pcHY0L25leHRob3AuYzozMTkwOlx0XHRcdGVyciA9IHJ0bV90b19uaF9jb25maWdfZ3JwX3Jlcyh0YltOSEFfUkVTX0dST1VQXSxcbm5ldC9pcHY0L25leHRob3AuYy0zMTkxLVx0XHRcdFx0XHRcdCAgICAgICBjZmcsIGV4dGFjayk7XG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMyNzctXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzI3ODpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfcnRubChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0Yixcbm5ldC9pcHY0L25leHRob3AuYy0zMjc5LVx0XHRcdFx0IHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9MzMxMD1zdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMyNC1cbm5ldC9pcHY0L25leHRob3AuYzozMzI1Olx0ZXJyID0gcnRtX3RvX25oX2NvbmZpZyhuZXQsIHNrYiwgbmxoLCB0YiwgXHUwMDI2Y2ZnLCBleHRhY2spO1xubmV0L2lwdjQvbmV4dGhvcC5jLTMzMjYtXHRpZiAoZXJyKVxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0zMzM2LVxubmV0L2lwdjQvbmV4dGhvcC5jOjMzMzc6XHRlcnIgPSBydG1fdG9fbmhfY29uZmlnX3J0bmwobmV0LCB0YiwgXHUwMDI2Y2ZnLCBleHRhY2spO1xubmV0L2lwdjQvbmV4dGhvcC5jLTMzMzgtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk2NAoJCQkJCQkJb3V0cHV0OiAxODQKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVlhMQU4gRGVzdGluYXRpb24gUG9ydCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIGlzIGFib3V0IGFkZGluZyBkZXN0aW5hdGlvbiBwb3J0IHNwZWNpZmljYXRpb24gdG8gRm9yd2FyZGluZyBEYXRhYmFzZSAoRkRCKSBuZXh0aG9wcywgc3BlY2lmaWNhbGx5IGZvciBWWExBTi4gVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIGFiaWxpdHkgdG8gY29uZmlndXJlIGEgZGVzdGluYXRpb24gcG9ydCwgYG5oX2RzdF9wb3J0YCwgZGlyZWN0bHkgb24gYSBWWExBTiBuZXh0aG9wLiBJIHNlZSB0aGUgY2hhbmdlcyB0b3VjaCB0aGUgbmV0bGluayBBUEkgdG8gcGFyc2UgYE5IQV9EU1RfUE9SVGAsIHdoaWNoIGlzIHRoZW4gc3RvcmVkIHdpdGhpbiB0aGUgbmV4dGhvcCBjb25maWd1cmF0aW9uIGl0c2VsZi4gVGhpcyBjb25maWd1cmF0aW9uIGlzIHN1YnNlcXVlbnRseSB1dGlsaXplZCBkdXJpbmcgdGhlIFZYTEFOIHRyYW5zbWlzc2lvbiBwYXRoIHNlbGVjdGlvbiBwcm9jZXNzLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl04oCZcyBhIG1vZGlmaWNhdGlvbiBkZWVwIHdpdGhpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIGFuZCB0aGUgVlhMQU4gZHJpdmVyLiBUaGF0JiMzOTtzIGdvb2QgZnJvbSBteSBwZXJzcGVjdGl2ZTogaXQmIzM5O3MgcmVhY2hhYmxlIGNvZGUgYW5kIHRoZXJlZm9yZSB2ZXJ5IGZ1enphYmxlLiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gZGVtb25zdHJhdGUgdGhhdCB0aGlzIGlzIHdvcmtpbmcgZnJvbSBhbiBvcGVyYXRpb25hbCBwZXJzcGVjdGl2ZSAtIHRoZXJlIGNhbiYjMzk7dCBiZSBhIGRpc2Nvbm5lY3QgZnJvbSB0aGUgY29uZmlndXJhdGlvbiB0byB0aGUgZXhlY3V0aW9uLgoKSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBzeW1ib2xzOiBgcnRtX25ld19uZXh0aG9wYCwgYHJ0bV90b19uaF9jb25maWdgLCBgbmV4dGhvcF9jcmVhdGVgLCBgbmhfZmlsbF9ub2RlYCwgYHZ4bGFuX3htaXRfbmhgLCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAuIFRoZXNlIGFyZSBnb2luZyB0byBiZSB0aGUga2V5IGFyZWFzIHdoZXJlIHRoZSBuZXcgZnVuY3Rpb25hbGl0eSBpcyBpbnRyb2R1Y2VkIGFuZCB3aGVyZSB0aGUgaW50ZWdyYXRpb24gd2l0aCB0aGUgZXhpc3RpbmcgVlhMQU4gcGF0aCBoYXBwZW5zLgoKSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIHRvIHNldCB0aGlzIHVwIHNvIHdlIGNhbiBnZXQgbWVhbmluZ2Z1bCByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlhMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydG1fbmV3X25leHRob3AmIzM0OywKICAgICYjMzQ7cnRtX3RvX25oX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtuZXh0aG9wX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtuaF9maWxsX25vZGUmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaCYjMzQ7LAogICAgJiMzNDt2eGxhbl94bWl0X25oaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGEgZGVzdGluYXRpb24gcG9ydCAobmhfZHN0X3BvcnQpIG9uIGZkYiBuZXh0aG9wcyAoZS5nLiwgVlhMQU4pLiBJdCBtb2RpZmllcyB0aGUgbmV0bGluayBBUEkgdG8gcGFyc2UgTkhBX0RTVF9QT1JULCBzdG9yZXMgaXQgaW4gdGhlIG5leHRob3AgY29uZmlndXJhdGlvbiwgYW5kIHVzZXMgaXQgZHVyaW5nIFZYTEFOIHRyYW5zbWl0IHBhdGggc2VsZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgVlhMQU4gZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRtX25ld19uZXh0aG9wJiMzNDssCiAgICAmIzM0O3J0bV90b19uaF9jb25maWcmIzM0OywKICAgICYjMzQ7bmV4dGhvcF9jcmVhdGUmIzM0OywKICAgICYjMzQ7bmhfZmlsbF9ub2RlJiMzNDssCiAgICAmIzM0O3Z4bGFuX3htaXRfbmgmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaGlkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhIGRlc3RpbmF0aW9uIHBvcnQgKG5oX2RzdF9wb3J0KSBvbiBmZGIgbmV4dGhvcHMgKGUuZy4sIFZYTEFOKS4gSXQgbW9kaWZpZXMgdGhlIG5ldGxpbmsgQVBJIHRvIHBhcnNlIE5IQV9EU1RfUE9SVCwgc3RvcmVzIGl0IGluIHRoZSBuZXh0aG9wIGNvbmZpZ3VyYXRpb24sIGFuZCB1c2VzIGl0IGR1cmluZyBWWExBTiB0cmFuc21pdCBwYXRoIHNlbGVjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIFZYTEFOIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTc6NDQuMTM0MjYyNzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU1MDAwNzU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV9uZXdfbmV4dGhvcFwiLFxuICAgIFwicnRtX3RvX25oX2NvbmZpZ1wiLFxuICAgIFwibmV4dGhvcF9jcmVhdGVcIixcbiAgICBcIm5oX2ZpbGxfbm9kZVwiLFxuICAgIFwidnhsYW5feG1pdF9uaFwiLFxuICAgIFwidnhsYW5feG1pdF9uaGlkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGEgZGVzdGluYXRpb24gcG9ydCAobmhfZHN0X3BvcnQpIG9uIGZkYiBuZXh0aG9wcyAoZS5nLiwgVlhMQU4pLiBJdCBtb2RpZmllcyB0aGUgbmV0bGluayBBUEkgdG8gcGFyc2UgTkhBX0RTVF9QT1JULCBzdG9yZXMgaXQgaW4gdGhlIG5leHRob3AgY29uZmlndXJhdGlvbiwgYW5kIHVzZXMgaXQgZHVyaW5nIFZYTEFOIHRyYW5zbWl0IHBhdGggc2VsZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgVlhMQU4gZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE3OjQ0LjEzNDI3MTc4OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyNzQzMjQwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE0MmJiMjIwYmM4NzVmNGU2MmExZDhlMzlhNjBjNWQ0MTA4MmI0NGFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMjQgMDM6MTc6NDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oIGIvaW5jbHVkZS9uZXQvbmV4dGhvcC5oXFxuaW5kZXggNTcyZTY5Y2RhNDc2NmQuLmY4NmMxMTUwNzRkN2FiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L25leHRob3AuaFxcbisrKyBiL2luY2x1ZGUvbmV0L25leHRob3AuaFxcbkBAIC0yOCw2ICsyOCw3IEBAIHN0cnVjdCBuaF9jb25maWcge1xcbiBcXHR1OFxcdFxcdG5oX3Byb3RvY29sO1xcbiBcXHR1OFxcdFxcdG5oX2JsYWNraG9sZTtcXG4gXFx0dThcXHRcXHRuaF9mZGI7XFxuK1xcdF9fYmUxNlxcdFxcdG5oX2RzdF9wb3J0O1xcbiBcXHR1MzJcXHRcXHRuaF9mbGFncztcXG4gXFxuIFxcdGludFxcdFxcdG5oX2lmaW5kZXg7XFxuQEAgLTYzLDYgKzY0LDcgQEAgc3RydWN0IG5oX2luZm8ge1xcbiBcXHR1OFxcdFxcdFxcdGZhbWlseTtcXG4gXFx0Ym9vbFxcdFxcdFxcdHJlamVjdF9uaDtcXG4gXFx0Ym9vbFxcdFxcdFxcdGZkYl9uaDtcXG4rXFx0X19iZTE2XFx0XFx0XFx0ZHN0X3BvcnQ7XFxuIFxcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHN0cnVjdCBmaWJfbmhfY29tbW9uXFx0ZmliX25oYztcXG5AQCAtNTc0LDcgKzU3Niw4IEBAIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX2ZkYl9uaGMoc3RydWN0IG5leHRob3AgKm5oKVxcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBpbnQgaGFzaClcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGludCBoYXNoLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgX19iZTE2ICpkc3RfcG9ydClcXG4ge1xcbiBcXHRzdHJ1Y3QgbmhfaW5mbyAqbmhpO1xcbiBcXHRzdHJ1Y3QgbmV4dGhvcCAqbmhwO1xcbkBAIC01ODMsNiArNTg2LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQoc3RydWN0IG5leHRob3AgKm5oLFxcbiBcXHRpZiAodW5saWtlbHkoIW5ocCkpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHRuaGkgPSByY3VfZGVyZWZlcmVuY2UobmhwLVxcdTAwM2VuaF9pbmZvKTtcXG4rXFx0KmRzdF9wb3J0ID0gbmhpLVxcdTAwM2Vkc3RfcG9ydDtcXG4gXFx0cmV0dXJuIFxcdTAwMjZuaGktXFx1MDAzZWZpYl9uaGM7XFxuIH1cXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3Z4bGFuLmggYi9pbmNsdWRlL25ldC92eGxhbi5oXFxuaW5kZXggZGZiYTg5Njk1ZWZjZmEuLjZlNjQ3NTcxNTFiODhlIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3Z4bGFuLmhcXG4rKysgYi9pbmNsdWRlL25ldC92eGxhbi5oXFxuQEAgLTU2Nyw4ICs1NjcsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KHN0cnVjdCBuZXh0aG9wICpuaCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB2eGxhbl9yZHN0ICpyZHN0KVxcbiB7XFxuIFxcdHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGM7XFxuK1xcdF9fYmUxNiBkc3RfcG9ydCA9IDA7XFxuIFxcbi1cXHRuaGMgPSBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChuaCwgaGFzaCBcXHUwMDNlXFx1MDAzZSAxKTtcXG4rXFx0bmhjID0gbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQobmgsIGhhc2ggXFx1MDAzZVxcdTAwM2UgMSwgXFx1MDAyNmRzdF9wb3J0KTtcXG4gXFx0aWYgKHVubGlrZWx5KCFuaGMpKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbkBAIC01ODMsNiArNTg0LDggQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcbitcXHRyZHN0LVxcdTAwM2VyZW1vdGVfcG9ydCA9IGRzdF9wb3J0O1xcbitcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXFxuaW5kZXggYmM0OWJhZjRhMjY3ZjAuLjU5Y2YxY2VlOTNiZDcwIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXFxuQEAgLTgzLDYgKzgzLDkgQEAgZW51bSB7XFxuIFxcdC8qIHUzMjsgcmVhZC1vbmx5OyB3aGV0aGVyIGFueSBkcml2ZXIgY29sbGVjdHMgSFcgc3RhdHMgKi9cXG4gXFx0TkhBX0hXX1NUQVRTX1VTRUQsXFxuIFxcbitcXHQvKiBiZTE2OyBVRFAgZGVzdGluYXRpb24gcG9ydCBmb3IgYW4gZmRiIG5leHRob3AgKGUuZy4gVlhMQU4pICovXFxuK1xcdE5IQV9EU1RfUE9SVCxcXG4rXFxuIFxcdF9fTkhBX01BWCxcXG4gfTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L25leHRob3AuYyBiL25ldC9pcHY0L25leHRob3AuY1xcbmluZGV4IDYyMDViZDU3YWE4NTIwLi4wMDIxMzgwYjhjMWRlZiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9uZXh0aG9wLmNcXG4rKysgYi9uZXQvaXB2NC9uZXh0aG9wLmNcXG5AQCAtMzksNiArMzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgcnRtX25oX3BvbGljeV9uZXdbXSA9IHtcXG4gXFx0W05IQV9FTkNBUF9UWVBFXVxcdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcXG4gXFx0W05IQV9FTkNBUF1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXFxuIFxcdFtOSEFfRkRCXVxcdFxcdD0geyAudHlwZSA9IE5MQV9GTEFHIH0sXFxuK1xcdFtOSEFfRFNUX1BPUlRdXFx0XFx0PSBOTEFfUE9MSUNZX01JTihOTEFfQkUxNiwgMSksXFxuIFxcdFtOSEFfUkVTX0dST1VQXVxcdFxcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcXG4gXFx0W05IQV9IV19TVEFUU19FTkFCTEVdXFx0PSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCB0cnVlKSxcXG4gfTtcXG5AQCAtOTU2LDYgKzk1Nyw5IEBAIHN0YXRpYyBpbnQgbmhfZmlsbF9ub2RlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcXG4gXFx0fSBlbHNlIGlmIChuaGktXFx1MDAzZWZkYl9uaCkge1xcbiBcXHRcXHRpZiAobmxhX3B1dF9mbGFnKHNrYiwgTkhBX0ZEQikpXFxuIFxcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbitcXHRcXHRpZiAobmhpLVxcdTAwM2Vkc3RfcG9ydCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgbmxhX3B1dF9iZTE2KHNrYiwgTkhBX0RTVF9QT1JULCBuaGktXFx1MDAzZWRzdF9wb3J0KSlcXG4rXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIFxcbkBAIC0xMDU1LDYgKzEwNTksOSBAQCBzdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaClcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChuaGktXFx1MDAzZWRzdF9wb3J0KVxcbitcXHRcXHRzeiArPSBubGFfdG90YWxfc2l6ZSgyKTtcXHQvKiBOSEFfRFNUX1BPUlQgKi9cXG4rXFxuIFxcdGlmIChuaGktXFx1MDAzZWZpYl9uaGMubmhjX2x3dHN0YXRlKSB7XFxuIFxcdFxcdHN6ICs9IGx3dHVubmVsX2dldF9lbmNhcF9zaXplKG5oaS1cXHUwMDNlZmliX25oYy5uaGNfbHd0c3RhdGUpO1xcbiBcXHRcXHRzeiArPSBubGFfdG90YWxfc2l6ZSgyKTsgIC8qIE5IQV9FTkNBUF9UWVBFICovXFxuQEAgLTI5NTYsOCArMjk2MywxMCBAQCBzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5oX2NvbmZpZyAqY2ZnLFxcbiBcXHRuaGktXFx1MDAzZWZhbWlseSA9IGNmZy1cXHUwMDNlbmhfZmFtaWx5O1xcbiBcXHRuaGktXFx1MDAzZWZpYl9uaGMubmhjX3Njb3BlID0gUlRfU0NPUEVfTElOSztcXG4gXFxuLVxcdGlmIChjZmctXFx1MDAzZW5oX2ZkYilcXG4rXFx0aWYgKGNmZy1cXHUwMDNlbmhfZmRiKSB7XFxuIFxcdFxcdG5oaS1cXHUwMDNlZmRiX25oID0gMTtcXG4rXFx0XFx0bmhpLVxcdTAwM2Vkc3RfcG9ydCA9IGNmZy1cXHUwMDNlbmhfZHN0X3BvcnQ7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChjZmctXFx1MDAzZW5oX2JsYWNraG9sZSkge1xcbiBcXHRcXHRuaGktXFx1MDAzZXJlamVjdF9uaCA9IDE7XFxuQEAgLTMxNDcsNiArMzE1NiwxNSBAQCBzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRjZmctXFx1MDAzZW5oX2ZkYiA9IG5sYV9nZXRfZmxhZyh0YltOSEFfRkRCXSk7XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh0YltOSEFfRFNUX1BPUlRdKSB7XFxuK1xcdFxcdGlmICghdGJbTkhBX0ZEQl0gfHwgIXRiW05IQV9HQVRFV0FZXSkge1xcbitcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssXFxuK1xcdFxcdFxcdFxcdCAgICAgICBcXFwiRGVzdGluYXRpb24gcG9ydCBjYW4gb25seSBiZSBzZXQgb24gZmRiIG5leHRob3BzIHRoYXQgaGF2ZSBhIGdhdGV3YXlcXFwiKTtcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0Y2ZnLVxcdTAwM2VuaF9kc3RfcG9ydCA9IG5sYV9nZXRfYmUxNih0YltOSEFfRFNUX1BPUlRdKTtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKHRiW05IQV9HUk9VUF0pIHtcXG4gXFx0XFx0aWYgKG5obS1cXHUwMDNlbmhfZmFtaWx5ICE9IEFGX1VOU1BFQykge1xcbiBcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJJbnZhbGlkIGZhbWlseSBmb3IgZ3JvdXBcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wcy5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHMuc2hcXG5pbmRleCBhYzg2OGE3MzE2OTQ2YS4uODM0YmExYzA2NzZjODAgMTAwNzU1XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wcy5zaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHMuc2hcXG5AQCAtMzAsNiArMzAsNyBAQCBJUFY0X1RFU1RTPVxcXCJcXG4gXFx0aXB2NF9sYXJnZV9yZXNfZ3JwXFxuIFxcdGlwdjRfY29tcGF0X21vZGVcXG4gXFx0aXB2NF9mZGJfZ3JwX2ZjbmFsXFxuK1xcdGlwdjRfZmRiX3BvcnRfZmNuYWxcXG4gXFx0aXB2NF9tcGF0aF9zZWxlY3RcXG4gXFx0aXB2NF90b3J0dXJlXFxuIFxcdGlwdjRfcmVzX3RvcnR1cmVcXG5AQCAtNDQsNiArNDUsNyBAQCBJUFY2X1RFU1RTPVxcXCJcXG4gXFx0aXB2Nl9sYXJnZV9yZXNfZ3JwXFxuIFxcdGlwdjZfY29tcGF0X21vZGVcXG4gXFx0aXB2Nl9mZGJfZ3JwX2ZjbmFsXFxuK1xcdGlwdjZfZmRiX3BvcnRfZmNuYWxcXG4gXFx0aXB2Nl9tcGF0aF9zZWxlY3RcXG4gXFx0aXB2Nl90b3J0dXJlXFxuIFxcdGlwdjZfcmVzX3RvcnR1cmVcXG5AQCAtNDMyLDYgKzQzNCwxNSBAQCBjaGVja19uZXh0aG9wX2ZkYl9zdXBwb3J0KClcXG4gXFx0ZmlcXG4gfVxcbiBcXG4rY2hlY2tfbmV4dGhvcF9mZGJfcG9ydF9zdXBwb3J0KClcXG4re1xcbitcXHQkSVAgbmV4dGhvcCBoZWxwIDJcXHUwMDNlXFx1MDAyNjEgfCBncmVwIC1xIFxcXCJkc3RfcG9ydFxcXCJcXG4rXFx0aWYgWyAkPyAtbmUgMCBdOyB0aGVuXFxuK1xcdFxcdGVjaG8gXFxcIlNLSVA6IGlwcm91dGUyIHRvbyBvbGQsIG1pc3NpbmcgbmV4dGhvcCBkc3RfcG9ydCBzdXBwb3J0XFxcIlxcbitcXHRcXHRyZXR1cm4gJGtzZnRfc2tpcFxcbitcXHRmaVxcbit9XFxuK1xcbiBjaGVja19uZXh0aG9wX3Jlc19zdXBwb3J0KClcXG4ge1xcbiBcXHQkSVAgbmV4dGhvcCBoZWxwIDJcXHUwMDNlXFx1MDAyNjEgfCBncmVwIC1xIHJlc2lsaWVudFxcbkBAIC01NDEsNiArNTUyLDQxIEBAIGlwdjZfZmRiX2dycF9mY25hbCgpXFxuIFxcdCRJUCBsaW5rIGRlbCBkZXYgdngxMFxcbiB9XFxuIFxcbitpcHY2X2ZkYl9wb3J0X2ZjbmFsKClcXG4re1xcbitcXHRlY2hvXFxuK1xcdGVjaG8gXFxcIklQdjYgZmRiIG5leHRob3AgZHN0X3BvcnQgZnVuY3Rpb25hbFxcXCJcXG4rXFx0ZWNobyBcXFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxcIlxcbitcXG4rXFx0Y2hlY2tfbmV4dGhvcF9mZGJfcG9ydF9zdXBwb3J0XFxuK1xcdGlmIFsgJD8gLWVxICRrc2Z0X3NraXAgXTsgdGhlblxcbitcXHRcXHRyZXR1cm4gJGtzZnRfc2tpcFxcbitcXHRmaVxcbitcXG4rXFx0IyBOSEFfRFNUX1BPUlQ6IG9wdGlvbmFsIHBlci1uZXh0aG9wIFZYTEFOIGRlc3RpbmF0aW9uIFVEUCBwb3J0LFxcbitcXHQjIGxldHRpbmcgYW4gZmRiIG5leHRob3AgZ3JvdXAgYmFsYW5jZSBhIGZsb3cgYWNyb3NzIGxlZ3MgdGhhdCBzaGFyZVxcbitcXHQjIGFuIHVuZGVybGF5IElQIGJ1dCBsaXN0ZW4gb24gZGlmZmVyZW50IFVEUCBwb3J0cy5cXG4rXFx0cnVuX2NtZCBcXFwiJElQIG5leHRob3AgYWRkIGlkIDgwIHZpYSAyMDAxOmRiODo5MTo6MiBmZGIgZHN0X3BvcnQgNDc5MFxcXCJcXG4rXFx0Y2hlY2tfbmV4dGhvcCBcXFwiaWQgODBcXFwiIFxcXCJpZCA4MCB2aWEgMjAwMTpkYjg6OTE6OjIgc2NvcGUgbGluayBmZGIgZHN0X3BvcnQgNDc5MFxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMCBcXFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydFxcXCJcXG4rXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCA4MSBmZGIgZHN0X3BvcnQgNDc5MFxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMiBcXFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCBidXQgbm8gZ2F0ZXdheVxcXCJcXG4rXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCA4MSB2aWEgMjAwMTpkYjg6OTE6OjIgZmRiIGRzdF9wb3J0IDBcXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDIgXFxcIkZkYiBuZXh0aG9wIHdpdGggZHN0X3BvcnQgMFxcXCJcXG4rXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCA4MiB2aWEgMjAwMTpkYjg6OTE6OjIgZmRiIGRzdF9wb3J0IDQ3ODlcXFwiXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCA4MyB2aWEgMjAwMTpkYjg6OTE6OjMgZmRiIGRzdF9wb3J0IDU3ODlcXFwiXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCAxMDYgZ3JvdXAgODIvODMgZmRiXFxcIlxcbitcXHRjaGVja19uZXh0aG9wIFxcXCJpZCAxMDZcXFwiIFxcXCJpZCAxMDYgZ3JvdXAgODIvODMgZmRiXFxcIlxcbitcXHRsb2dfdGVzdCAkPyAwIFxcXCJGZGIgbmV4dGhvcCBncm91cCB3aXRoIGxlZ3MgZGlmZmVyaW5nIGluIGRzdF9wb3J0XFxcIlxcbitcXG4rXFx0cnVuX2NtZCBcXFwiJElQIG5leHRob3AgYWRkIGlkIDg0IHZpYSAyMDAxOmRiODo5MTo6MiBmZGJcXFwiXFxuK1xcdGNoZWNrX25leHRob3AgXFxcImlkIDg0XFxcIiBcXFwiaWQgODQgdmlhIDIwMDE6ZGI4OjkxOjoyIHNjb3BlIGxpbmsgZmRiXFxcIlxcbitcXHRsb2dfdGVzdCAkPyAwIFxcXCJGZGIgbmV4dGhvcCB3aXRob3V0IGRzdF9wb3J0IG9taXRzIGRzdF9wb3J0XFxcIlxcbit9XFxuK1xcbiBpcHY0X2ZkYl9ncnBfZmNuYWwoKVxcbiB7XFxuIFxcdGxvY2FsIHJjXFxuQEAgLTY0MSw2ICs2ODcsNDEgQEAgaXB2NF9mZGJfZ3JwX2ZjbmFsKClcXG4gXFx0JElQIGxpbmsgZGVsIGRldiB2eDEwXFxuIH1cXG4gXFxuK2lwdjRfZmRiX3BvcnRfZmNuYWwoKVxcbit7XFxuK1xcdGVjaG9cXG4rXFx0ZWNobyBcXFwiSVB2NCBmZGIgbmV4dGhvcCBkc3RfcG9ydCBmdW5jdGlvbmFsXFxcIlxcbitcXHRlY2hvIFxcXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXFwiXFxuK1xcbitcXHRjaGVja19uZXh0aG9wX2ZkYl9wb3J0X3N1cHBvcnRcXG4rXFx0aWYgWyAkPyAtZXEgJGtzZnRfc2tpcCBdOyB0aGVuXFxuK1xcdFxcdHJldHVybiAka3NmdF9za2lwXFxuK1xcdGZpXFxuK1xcbitcXHQjIE5IQV9EU1RfUE9SVDogb3B0aW9uYWwgcGVyLW5leHRob3AgVlhMQU4gZGVzdGluYXRpb24gVURQIHBvcnQsXFxuK1xcdCMgbGV0dGluZyBhbiBmZGIgbmV4dGhvcCBncm91cCBiYWxhbmNlIGEgZmxvdyBhY3Jvc3MgbGVncyB0aGF0IHNoYXJlXFxuK1xcdCMgYW4gdW5kZXJsYXkgSVAgYnV0IGxpc3RlbiBvbiBkaWZmZXJlbnQgVURQIHBvcnRzLlxcbitcXHRydW5fY21kIFxcXCIkSVAgbmV4dGhvcCBhZGQgaWQgMzAgdmlhIDE3Mi4xNi4xLjIgZmRiIGRzdF9wb3J0IDQ3OTBcXFwiXFxuK1xcdGNoZWNrX25leHRob3AgXFxcImlkIDMwXFxcIiBcXFwiaWQgMzAgdmlhIDE3Mi4xNi4xLjIgc2NvcGUgbGluayBmZGIgZHN0X3BvcnQgNDc5MFxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMCBcXFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydFxcXCJcXG4rXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCAzMSBmZGIgZHN0X3BvcnQgNDc5MFxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMiBcXFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCBidXQgbm8gZ2F0ZXdheVxcXCJcXG4rXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCAzMSB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgMFxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMiBcXFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCAwXFxcIlxcbitcXG4rXFx0cnVuX2NtZCBcXFwiJElQIG5leHRob3AgYWRkIGlkIDMyIHZpYSAxNzIuMTYuMS4yIGZkYiBkc3RfcG9ydCA0Nzg5XFxcIlxcbitcXHRydW5fY21kIFxcXCIkSVAgbmV4dGhvcCBhZGQgaWQgMzMgdmlhIDE3Mi4xNi4xLjMgZmRiIGRzdF9wb3J0IDU3ODlcXFwiXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCAxMDUgZ3JvdXAgMzIvMzMgZmRiXFxcIlxcbitcXHRjaGVja19uZXh0aG9wIFxcXCJpZCAxMDVcXFwiIFxcXCJpZCAxMDUgZ3JvdXAgMzIvMzMgZmRiXFxcIlxcbitcXHRsb2dfdGVzdCAkPyAwIFxcXCJGZGIgbmV4dGhvcCBncm91cCB3aXRoIGxlZ3MgZGlmZmVyaW5nIGluIGRzdF9wb3J0XFxcIlxcbitcXG4rXFx0cnVuX2NtZCBcXFwiJElQIG5leHRob3AgYWRkIGlkIDM0IHZpYSAxNzIuMTYuMS4yIGZkYlxcXCJcXG4rXFx0Y2hlY2tfbmV4dGhvcCBcXFwiaWQgMzRcXFwiIFxcXCJpZCAzNCB2aWEgMTcyLjE2LjEuMiBzY29wZSBsaW5rIGZkYlxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMCBcXFwiRmRiIG5leHRob3Agd2l0aG91dCBkc3RfcG9ydCBvbWl0cyBkc3RfcG9ydFxcXCJcXG4rfVxcbitcXG4gaXB2NF9tcGF0aF9zZWxlY3QoKVxcbiB7XFxuIFxcdGxvY2FsIHJjIGRldiBtYXRjaCBoIGFkZHJcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Rlc3RfdnhsYW5fbmguc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF92eGxhbl9uaC5zaFxcbmluZGV4IDIwZjMzNjlmNzc2YjE1Li43YjVkYzFkMzdmYTAyMSAxMDA3NTVcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF92eGxhbl9uaC5zaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X3Z4bGFuX25oLnNoXFxuQEAgLTU2LDYgKzU2LDE2IEBAIHRjX3N0YXRzX2dldCgpXFxuIFxcdHRjX3J1bGVfaGFuZGxlX3N0YXRzX2dldCBcXFwiZGV2IGR1bW15MSBlZ3Jlc3NcXFwiIDEwMSBcXFwiLnBhY2tldHNcXFwiIFxcXCItbiAkbnMxXFxcIlxcbiB9XFxuIFxcbituaF9zdGF0c19nZXRfcG9ydCgpXFxuK3tcXG4rXFx0aXAgLW4gXFxcIiRuczFcXFwiIC1zIC1qIG5leHRob3Agc2hvdyBpZCAyMCB8IGpxIFxcXCIuW11bXFxcXFxcXCJncm91cF9zdGF0c1xcXFxcXFwiXVtdW1xcXFxcXFwicGFja2V0c1xcXFxcXFwiXVxcXCJcXG4rfVxcbitcXG4rdGNfc3RhdHNfZ2V0X3BvcnQoKVxcbit7XFxuK1xcdHRjX3J1bGVfaGFuZGxlX3N0YXRzX2dldCBcXFwiZGV2IGR1bW15MSBlZ3Jlc3NcXFwiIDEwMiBcXFwiLnBhY2tldHNcXFwiIFxcXCItbiAkbnMxXFxcIlxcbit9XFxuK1xcbiBiYXNpY190eF9jb21tb24oKVxcbiB7XFxuIFxcdGxvY2FsIGFmX3N0cj0kMTsgc2hpZnRcXG5AQCAtOTAsNiArMTAwLDI2IEBAIGJhc2ljX3R4X2NvbW1vbigpXFxuIFxcdGJ1c3l3YWl0IFxcXCIkQlVTWVdBSVRfVElNRU9VVFxcXCIgdW50aWxfY291bnRlcl9pcyBcXFwiPT0gMVxcXCIgdGNfc3RhdHNfZ2V0IFxcdTAwM2UgL2Rldi9udWxsXFxuIFxcdGNoZWNrX2VyciAkPyBcXFwidGMgZmlsdGVyIHN0YXRzIGRpZCBub3QgaW5jcmVhc2VcXFwiXFxuIFxcbitcXHQjIEFkZCBhIHNlY29uZCBGREIgbmV4dGhvcCBncm91cCB3aG9zZSBuZXh0aG9wIGNhcnJpZXMgYSBwZXItbmV4dGhvcFxcbitcXHQjIGRlc3RpbmF0aW9uIHBvcnQgKE5IQV9EU1RfUE9SVCkgdGhhdCBkaWZmZXJzIGZyb20gdGhlIFZYTEFOIGRldmljZVxcbitcXHQjIGRlZmF1bHQuIE1hdGNoaW5nIG91dGVyIHRyYWZmaWMgbXVzdCBlZ3Jlc3Mgd2l0aCB0aGF0IHBvcnQsIHNvIGFcXG4rXFx0IyBzZXBhcmF0ZSBmbG93ZXIgZmlsdGVyIGtleWVkIG9uIHRoZSBuZXcgcG9ydCBjYXRjaGVzIGl0LlxcbitcXHRydW5fY21kIFxcXCJ0YyAtbiAkbnMxIGZpbHRlciBhZGQgZGV2IGR1bW15MSBlZ3Jlc3MgcHJvdG8gJHByb3RvIHByZWYgMSBoYW5kbGUgMTAyIFxcXFxcXG4rXFx0XFx0Zmxvd2VyIGlwX3Byb3RvIHVkcCBkc3RfaXAgJHJlbW90ZV9hZGRyIGRzdF9wb3J0IDQ3OTAgYWN0aW9uIHBhc3NcXFwiXFxuK1xcbitcXHRydW5fY21kIFxcXCJpcCAtbiAkbnMxIG5leHRob3AgYWRkIGlkIDIgdmlhICRyZW1vdGVfYWRkciBmZGIgZHN0X3BvcnQgNDc5MFxcXCJcXG4rXFx0cnVuX2NtZCBcXFwiaXAgLW4gJG5zMSBuZXh0aG9wIGFkZCBpZCAyMCBncm91cCAyIGZkYlxcXCJcXG4rXFxuK1xcdHJ1bl9jbWQgXFxcImJyaWRnZSAtbiAkbnMxIGZkYiBhZGQgMDA6MTE6MjI6MzM6NDQ6NjYgZGV2IHZ4MCBzZWxmIHN0YXRpYyBuaGlkIDIwXFxcIlxcbitcXG4rXFx0cnVuX2NtZCBcXFwiaXAgbmV0bnMgZXhlYyAkbnMxIG1hdXNlemFobiB2eDAgLWEgb3duIC1iIDAwOjExOjIyOjMzOjQ0OjY2IC1jIDEgLXFcXFwiXFxuK1xcbitcXHRidXN5d2FpdCBcXFwiJEJVU1lXQUlUX1RJTUVPVVRcXFwiIHVudGlsX2NvdW50ZXJfaXMgXFxcIj09IDFcXFwiIG5oX3N0YXRzX2dldF9wb3J0IFxcdTAwM2UgL2Rldi9udWxsXFxuK1xcdGNoZWNrX2VyciAkPyBcXFwiRkRCIG5leHRob3AgZ3JvdXAgc3RhdHMgZGlkIG5vdCBpbmNyZWFzZSAod2l0aCBwb3J0KVxcXCJcXG4rXFxuK1xcdGJ1c3l3YWl0IFxcXCIkQlVTWVdBSVRfVElNRU9VVFxcXCIgdW50aWxfY291bnRlcl9pcyBcXFwiPT0gMVxcXCIgdGNfc3RhdHNfZ2V0X3BvcnQgXFx1MDAzZSAvZGV2L251bGxcXG4rXFx0Y2hlY2tfZXJyICQ/IFxcXCJ0YyBmaWx0ZXIgc3RhdHMgZGlkIG5vdCBpbmNyZWFzZSAod2l0aCBwb3J0KVxcXCJcXG4rXFxuIFxcdGxvZ190ZXN0IFxcXCJWWExBTiBGREIgbmV4dGhvcDogJGFmX3N0ciBiYXNpYyBUeFxcXCJcXG4gfVxcbiBcXG5AQCAtMjEwLDggKzI0MCw4IEBAIHJlcXVpcmVfY29tbWFuZCBhcnBpbmdcXG4gcmVxdWlyZV9jb21tYW5kIG5kaXNjNlxcbiByZXF1aXJlX2NvbW1hbmQganFcXG4gXFxuLWlmICEgaXAgbmV4dGhvcCBoZWxwIDJcXHUwMDNlXFx1MDAyNjEgfCBncmVwIC1xIFxcXCJzdGF0c1xcXCI7IHRoZW5cXG4tXFx0ZWNobyBcXFwiU0tJUDogaXByb3V0ZTIgaXAgdG9vIG9sZCwgbWlzc2luZyBuZXh0aG9wIHN0YXRzIHN1cHBvcnRcXFwiXFxuK2lmICEgaXAgbmV4dGhvcCBoZWxwIDJcXHUwMDNlXFx1MDAyNjEgfCBncmVwIC1xIFxcXCJkc3RfcG9ydFxcXCI7IHRoZW5cXG4rXFx0ZWNobyBcXFwiU0tJUDogaXByb3V0ZTIgaXAgdG9vIG9sZCwgbWlzc2luZyBuZXh0aG9wIGRzdF9wb3J0IHN1cHBvcnRcXFwiXFxuIFxcdGV4aXQgXFxcIiRrc2Z0X3NraXBcXFwiXFxuIGZpXFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxNzo0NS4yNjI2NDcxMzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3OTQyMTYwODkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV9uZXdfbmV4dGhvcFwiLFxuICAgIFwicnRtX3RvX25oX2NvbmZpZ1wiLFxuICAgIFwibmV4dGhvcF9jcmVhdGVcIixcbiAgICBcIm5oX2ZpbGxfbm9kZVwiLFxuICAgIFwidnhsYW5feG1pdF9uaFwiLFxuICAgIFwidnhsYW5feG1pdF9uaGlkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGEgZGVzdGluYXRpb24gcG9ydCAobmhfZHN0X3BvcnQpIG9uIGZkYiBuZXh0aG9wcyAoZS5nLiwgVlhMQU4pLiBJdCBtb2RpZmllcyB0aGUgbmV0bGluayBBUEkgdG8gcGFyc2UgTkhBX0RTVF9QT1JULCBzdG9yZXMgaXQgaW4gdGhlIG5leHRob3AgY29uZmlndXJhdGlvbiwgYW5kIHVzZXMgaXQgZHVyaW5nIFZYTEFOIHRyYW5zbWl0IHBhdGggc2VsZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgVlhMQU4gZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTQyYmIyMjBiYzg3NWY0ZTYyYTFkOGUzOWE2MGM1ZDQxMDgyYjQ0YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDAzOjE3OjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oIGIvaW5jbHVkZS9uZXQvbmV4dGhvcC5oXG5pbmRleCA1NzJlNjljZGE0NzY2ZC4uZjg2YzExNTA3NGQ3YWIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9uZXh0aG9wLmhcbisrKyBiL2luY2x1ZGUvbmV0L25leHRob3AuaFxuQEAgLTI4LDYgKzI4LDcgQEAgc3RydWN0IG5oX2NvbmZpZyB7XG4gXHR1OFx0XHRuaF9wcm90b2NvbDtcbiBcdHU4XHRcdG5oX2JsYWNraG9sZTtcbiBcdHU4XHRcdG5oX2ZkYjtcbitcdF9fYmUxNlx0XHRuaF9kc3RfcG9ydDtcbiBcdHUzMlx0XHRuaF9mbGFncztcbiBcbiBcdGludFx0XHRuaF9pZmluZGV4O1xuQEAgLTYzLDYgKzY0LDcgQEAgc3RydWN0IG5oX2luZm8ge1xuIFx0dThcdFx0XHRmYW1pbHk7XG4gXHRib29sXHRcdFx0cmVqZWN0X25oO1xuIFx0Ym9vbFx0XHRcdGZkYl9uaDtcbitcdF9fYmUxNlx0XHRcdGRzdF9wb3J0O1xuIFxuIFx0dW5pb24ge1xuIFx0XHRzdHJ1Y3QgZmliX25oX2NvbW1vblx0ZmliX25oYztcbkBAIC01NzQsNyArNTc2LDggQEAgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfZmRiX25oYyhzdHJ1Y3QgbmV4dGhvcCAqbmgpXG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfcGF0aF9mZGJfcmVzdWx0KHN0cnVjdCBuZXh0aG9wICpuaCxcbi1cdFx0XHRcdFx0XHRcdCAgICBpbnQgaGFzaClcbitcdFx0XHRcdFx0XHRcdCAgICBpbnQgaGFzaCxcbitcdFx0XHRcdFx0XHRcdCAgICBfX2JlMTYgKmRzdF9wb3J0KVxuIHtcbiBcdHN0cnVjdCBuaF9pbmZvICpuaGk7XG4gXHRzdHJ1Y3QgbmV4dGhvcCAqbmhwO1xuQEAgLTU4Myw2ICs1ODYsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHRpZiAodW5saWtlbHkoIW5ocCkpXG4gXHRcdHJldHVybiBOVUxMO1xuIFx0bmhpID0gcmN1X2RlcmVmZXJlbmNlKG5ocC1cdTAwM2VuaF9pbmZvKTtcbitcdCpkc3RfcG9ydCA9IG5oaS1cdTAwM2Vkc3RfcG9ydDtcbiBcdHJldHVybiBcdTAwMjZuaGktXHUwMDNlZmliX25oYztcbiB9XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdnhsYW4uaCBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbmluZGV4IGRmYmE4OTY5NWVmY2ZhLi42ZTY0NzU3MTUxYjg4ZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbisrKyBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbkBAIC01NjcsOCArNTY3LDkgQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHRcdFx0XHRcdCAgICBzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdClcbiB7XG4gXHRzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjO1xuK1x0X19iZTE2IGRzdF9wb3J0ID0gMDtcbiBcbi1cdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFx1MDAzZVx1MDAzZSAxKTtcbitcdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFx1MDAzZVx1MDAzZSAxLCBcdTAwMjZkc3RfcG9ydCk7XG4gXHRpZiAodW5saWtlbHkoIW5oYykpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC01ODMsNiArNTg0LDggQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuK1x0cmRzdC1cdTAwM2VyZW1vdGVfcG9ydCA9IGRzdF9wb3J0O1xuK1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG5pbmRleCBiYzQ5YmFmNGEyNjdmMC4uNTljZjFjZWU5M2JkNzAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG5AQCAtODMsNiArODMsOSBAQCBlbnVtIHtcbiBcdC8qIHUzMjsgcmVhZC1vbmx5OyB3aGV0aGVyIGFueSBkcml2ZXIgY29sbGVjdHMgSFcgc3RhdHMgKi9cbiBcdE5IQV9IV19TVEFUU19VU0VELFxuIFxuK1x0LyogYmUxNjsgVURQIGRlc3RpbmF0aW9uIHBvcnQgZm9yIGFuIGZkYiBuZXh0aG9wIChlLmcuIFZYTEFOKSAqL1xuK1x0TkhBX0RTVF9QT1JULFxuK1xuIFx0X19OSEFfTUFYLFxuIH07XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV4dGhvcC5jIGIvbmV0L2lwdjQvbmV4dGhvcC5jXG5pbmRleCA2MjA1YmQ1N2FhODUyMC4uMDAyMTM4MGI4YzFkZWYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9uZXh0aG9wLmNcbisrKyBiL25ldC9pcHY0L25leHRob3AuY1xuQEAgLTM5LDYgKzM5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHJ0bV9uaF9wb2xpY3lfbmV3W10gPSB7XG4gXHRbTkhBX0VOQ0FQX1RZUEVdXHQ9IHsgLnR5cGUgPSBOTEFfVTE2IH0sXG4gXHRbTkhBX0VOQ0FQXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbTkhBX0ZEQl1cdFx0PSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcbitcdFtOSEFfRFNUX1BPUlRdXHRcdD0gTkxBX1BPTElDWV9NSU4oTkxBX0JFMTYsIDEpLFxuIFx0W05IQV9SRVNfR1JPVVBdXHRcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcbiBcdFtOSEFfSFdfU1RBVFNfRU5BQkxFXVx0PSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCB0cnVlKSxcbiB9O1xuQEAgLTk1Niw2ICs5NTcsOSBAQCBzdGF0aWMgaW50IG5oX2ZpbGxfbm9kZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHR9IGVsc2UgaWYgKG5oaS1cdTAwM2VmZGJfbmgpIHtcbiBcdFx0aWYgKG5sYV9wdXRfZmxhZyhza2IsIE5IQV9GREIpKVxuIFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuK1x0XHRpZiAobmhpLVx1MDAzZWRzdF9wb3J0IFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgbmxhX3B1dF9iZTE2KHNrYiwgTkhBX0RTVF9QT1JULCBuaGktXHUwMDNlZHN0X3BvcnQpKVxuK1x0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFx0fSBlbHNlIHtcbiBcdFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbiBcbkBAIC0xMDU1LDYgKzEwNTksOSBAQCBzdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaClcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4rXHRpZiAobmhpLVx1MDAzZWRzdF9wb3J0KVxuK1x0XHRzeiArPSBubGFfdG90YWxfc2l6ZSgyKTtcdC8qIE5IQV9EU1RfUE9SVCAqL1xuK1xuIFx0aWYgKG5oaS1cdTAwM2VmaWJfbmhjLm5oY19sd3RzdGF0ZSkge1xuIFx0XHRzeiArPSBsd3R1bm5lbF9nZXRfZW5jYXBfc2l6ZShuaGktXHUwMDNlZmliX25oYy5uaGNfbHd0c3RhdGUpO1xuIFx0XHRzeiArPSBubGFfdG90YWxfc2l6ZSgyKTsgIC8qIE5IQV9FTkNBUF9UWVBFICovXG5AQCAtMjk1Niw4ICsyOTYzLDEwIEBAIHN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXG4gXHRuaGktXHUwMDNlZmFtaWx5ID0gY2ZnLVx1MDAzZW5oX2ZhbWlseTtcbiBcdG5oaS1cdTAwM2VmaWJfbmhjLm5oY19zY29wZSA9IFJUX1NDT1BFX0xJTks7XG4gXG4tXHRpZiAoY2ZnLVx1MDAzZW5oX2ZkYilcbitcdGlmIChjZmctXHUwMDNlbmhfZmRiKSB7XG4gXHRcdG5oaS1cdTAwM2VmZGJfbmggPSAxO1xuK1x0XHRuaGktXHUwMDNlZHN0X3BvcnQgPSBjZmctXHUwMDNlbmhfZHN0X3BvcnQ7XG4rXHR9XG4gXG4gXHRpZiAoY2ZnLVx1MDAzZW5oX2JsYWNraG9sZSkge1xuIFx0XHRuaGktXHUwMDNlcmVqZWN0X25oID0gMTtcbkBAIC0zMTQ3LDYgKzMxNTYsMTUgQEAgc3RhdGljIGludCBydG1fdG9fbmhfY29uZmlnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0Y2ZnLVx1MDAzZW5oX2ZkYiA9IG5sYV9nZXRfZmxhZyh0YltOSEFfRkRCXSk7XG4gXHR9XG4gXG4rXHRpZiAodGJbTkhBX0RTVF9QT1JUXSkge1xuK1x0XHRpZiAoIXRiW05IQV9GREJdIHx8ICF0YltOSEFfR0FURVdBWV0pIHtcbitcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4rXHRcdFx0XHQgICAgICAgXCJEZXN0aW5hdGlvbiBwb3J0IGNhbiBvbmx5IGJlIHNldCBvbiBmZGIgbmV4dGhvcHMgdGhhdCBoYXZlIGEgZ2F0ZXdheVwiKTtcbitcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuK1x0XHRjZmctXHUwMDNlbmhfZHN0X3BvcnQgPSBubGFfZ2V0X2JlMTYodGJbTkhBX0RTVF9QT1JUXSk7XG4rXHR9XG4rXG4gXHRpZiAodGJbTkhBX0dST1VQXSkge1xuIFx0XHRpZiAobmhtLVx1MDAzZW5oX2ZhbWlseSAhPSBBRl9VTlNQRUMpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiSW52YWxpZCBmYW1pbHkgZm9yIGdyb3VwXCIpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHMuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoXG5pbmRleCBhYzg2OGE3MzE2OTQ2YS4uODM0YmExYzA2NzZjODAgMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoXG5AQCAtMzAsNiArMzAsNyBAQCBJUFY0X1RFU1RTPVwiXG4gXHRpcHY0X2xhcmdlX3Jlc19ncnBcbiBcdGlwdjRfY29tcGF0X21vZGVcbiBcdGlwdjRfZmRiX2dycF9mY25hbFxuK1x0aXB2NF9mZGJfcG9ydF9mY25hbFxuIFx0aXB2NF9tcGF0aF9zZWxlY3RcbiBcdGlwdjRfdG9ydHVyZVxuIFx0aXB2NF9yZXNfdG9ydHVyZVxuQEAgLTQ0LDYgKzQ1LDcgQEAgSVBWNl9URVNUUz1cIlxuIFx0aXB2Nl9sYXJnZV9yZXNfZ3JwXG4gXHRpcHY2X2NvbXBhdF9tb2RlXG4gXHRpcHY2X2ZkYl9ncnBfZmNuYWxcbitcdGlwdjZfZmRiX3BvcnRfZmNuYWxcbiBcdGlwdjZfbXBhdGhfc2VsZWN0XG4gXHRpcHY2X3RvcnR1cmVcbiBcdGlwdjZfcmVzX3RvcnR1cmVcbkBAIC00MzIsNiArNDM0LDE1IEBAIGNoZWNrX25leHRob3BfZmRiX3N1cHBvcnQoKVxuIFx0ZmlcbiB9XG4gXG4rY2hlY2tfbmV4dGhvcF9mZGJfcG9ydF9zdXBwb3J0KClcbit7XG4rXHQkSVAgbmV4dGhvcCBoZWxwIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAtcSBcImRzdF9wb3J0XCJcbitcdGlmIFsgJD8gLW5lIDAgXTsgdGhlblxuK1x0XHRlY2hvIFwiU0tJUDogaXByb3V0ZTIgdG9vIG9sZCwgbWlzc2luZyBuZXh0aG9wIGRzdF9wb3J0IHN1cHBvcnRcIlxuK1x0XHRyZXR1cm4gJGtzZnRfc2tpcFxuK1x0Zmlcbit9XG4rXG4gY2hlY2tfbmV4dGhvcF9yZXNfc3VwcG9ydCgpXG4ge1xuIFx0JElQIG5leHRob3AgaGVscCAyXHUwMDNlXHUwMDI2MSB8IGdyZXAgLXEgcmVzaWxpZW50XG5AQCAtNTQxLDYgKzU1Miw0MSBAQCBpcHY2X2ZkYl9ncnBfZmNuYWwoKVxuIFx0JElQIGxpbmsgZGVsIGRldiB2eDEwXG4gfVxuIFxuK2lwdjZfZmRiX3BvcnRfZmNuYWwoKVxuK3tcbitcdGVjaG9cbitcdGVjaG8gXCJJUHY2IGZkYiBuZXh0aG9wIGRzdF9wb3J0IGZ1bmN0aW9uYWxcIlxuK1x0ZWNobyBcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiXG4rXG4rXHRjaGVja19uZXh0aG9wX2ZkYl9wb3J0X3N1cHBvcnRcbitcdGlmIFsgJD8gLWVxICRrc2Z0X3NraXAgXTsgdGhlblxuK1x0XHRyZXR1cm4gJGtzZnRfc2tpcFxuK1x0ZmlcbitcbitcdCMgTkhBX0RTVF9QT1JUOiBvcHRpb25hbCBwZXItbmV4dGhvcCBWWExBTiBkZXN0aW5hdGlvbiBVRFAgcG9ydCxcbitcdCMgbGV0dGluZyBhbiBmZGIgbmV4dGhvcCBncm91cCBiYWxhbmNlIGEgZmxvdyBhY3Jvc3MgbGVncyB0aGF0IHNoYXJlXG4rXHQjIGFuIHVuZGVybGF5IElQIGJ1dCBsaXN0ZW4gb24gZGlmZmVyZW50IFVEUCBwb3J0cy5cbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgODAgdmlhIDIwMDE6ZGI4OjkxOjoyIGZkYiBkc3RfcG9ydCA0NzkwXCJcbitcdGNoZWNrX25leHRob3AgXCJpZCA4MFwiIFwiaWQgODAgdmlhIDIwMDE6ZGI4OjkxOjoyIHNjb3BlIGxpbmsgZmRiIGRzdF9wb3J0IDQ3OTBcIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIkZkYiBuZXh0aG9wIHdpdGggZHN0X3BvcnRcIlxuK1xuK1x0cnVuX2NtZCBcIiRJUCBuZXh0aG9wIGFkZCBpZCA4MSBmZGIgZHN0X3BvcnQgNDc5MFwiXG4rXHRsb2dfdGVzdCAkPyAyIFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCBidXQgbm8gZ2F0ZXdheVwiXG4rXG4rXHRydW5fY21kIFwiJElQIG5leHRob3AgYWRkIGlkIDgxIHZpYSAyMDAxOmRiODo5MTo6MiBmZGIgZHN0X3BvcnQgMFwiXG4rXHRsb2dfdGVzdCAkPyAyIFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCAwXCJcbitcbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgODIgdmlhIDIwMDE6ZGI4OjkxOjoyIGZkYiBkc3RfcG9ydCA0Nzg5XCJcbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgODMgdmlhIDIwMDE6ZGI4OjkxOjozIGZkYiBkc3RfcG9ydCA1Nzg5XCJcbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgMTA2IGdyb3VwIDgyLzgzIGZkYlwiXG4rXHRjaGVja19uZXh0aG9wIFwiaWQgMTA2XCIgXCJpZCAxMDYgZ3JvdXAgODIvODMgZmRiXCJcbitcdGxvZ190ZXN0ICQ/IDAgXCJGZGIgbmV4dGhvcCBncm91cCB3aXRoIGxlZ3MgZGlmZmVyaW5nIGluIGRzdF9wb3J0XCJcbitcbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgODQgdmlhIDIwMDE6ZGI4OjkxOjoyIGZkYlwiXG4rXHRjaGVja19uZXh0aG9wIFwiaWQgODRcIiBcImlkIDg0IHZpYSAyMDAxOmRiODo5MTo6MiBzY29wZSBsaW5rIGZkYlwiXG4rXHRsb2dfdGVzdCAkPyAwIFwiRmRiIG5leHRob3Agd2l0aG91dCBkc3RfcG9ydCBvbWl0cyBkc3RfcG9ydFwiXG4rfVxuK1xuIGlwdjRfZmRiX2dycF9mY25hbCgpXG4ge1xuIFx0bG9jYWwgcmNcbkBAIC02NDEsNiArNjg3LDQxIEBAIGlwdjRfZmRiX2dycF9mY25hbCgpXG4gXHQkSVAgbGluayBkZWwgZGV2IHZ4MTBcbiB9XG4gXG4raXB2NF9mZGJfcG9ydF9mY25hbCgpXG4re1xuK1x0ZWNob1xuK1x0ZWNobyBcIklQdjQgZmRiIG5leHRob3AgZHN0X3BvcnQgZnVuY3Rpb25hbFwiXG4rXHRlY2hvIFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCJcbitcbitcdGNoZWNrX25leHRob3BfZmRiX3BvcnRfc3VwcG9ydFxuK1x0aWYgWyAkPyAtZXEgJGtzZnRfc2tpcCBdOyB0aGVuXG4rXHRcdHJldHVybiAka3NmdF9za2lwXG4rXHRmaVxuK1xuK1x0IyBOSEFfRFNUX1BPUlQ6IG9wdGlvbmFsIHBlci1uZXh0aG9wIFZYTEFOIGRlc3RpbmF0aW9uIFVEUCBwb3J0LFxuK1x0IyBsZXR0aW5nIGFuIGZkYiBuZXh0aG9wIGdyb3VwIGJhbGFuY2UgYSBmbG93IGFjcm9zcyBsZWdzIHRoYXQgc2hhcmVcbitcdCMgYW4gdW5kZXJsYXkgSVAgYnV0IGxpc3RlbiBvbiBkaWZmZXJlbnQgVURQIHBvcnRzLlxuK1x0cnVuX2NtZCBcIiRJUCBuZXh0aG9wIGFkZCBpZCAzMCB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgNDc5MFwiXG4rXHRjaGVja19uZXh0aG9wIFwiaWQgMzBcIiBcImlkIDMwIHZpYSAxNzIuMTYuMS4yIHNjb3BlIGxpbmsgZmRiIGRzdF9wb3J0IDQ3OTBcIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIkZkYiBuZXh0aG9wIHdpdGggZHN0X3BvcnRcIlxuK1xuK1x0cnVuX2NtZCBcIiRJUCBuZXh0aG9wIGFkZCBpZCAzMSBmZGIgZHN0X3BvcnQgNDc5MFwiXG4rXHRsb2dfdGVzdCAkPyAyIFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCBidXQgbm8gZ2F0ZXdheVwiXG4rXG4rXHRydW5fY21kIFwiJElQIG5leHRob3AgYWRkIGlkIDMxIHZpYSAxNzIuMTYuMS4yIGZkYiBkc3RfcG9ydCAwXCJcbitcdGxvZ190ZXN0ICQ/IDIgXCJGZGIgbmV4dGhvcCB3aXRoIGRzdF9wb3J0IDBcIlxuK1xuK1x0cnVuX2NtZCBcIiRJUCBuZXh0aG9wIGFkZCBpZCAzMiB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgNDc4OVwiXG4rXHRydW5fY21kIFwiJElQIG5leHRob3AgYWRkIGlkIDMzIHZpYSAxNzIuMTYuMS4zIGZkYiBkc3RfcG9ydCA1Nzg5XCJcbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgMTA1IGdyb3VwIDMyLzMzIGZkYlwiXG4rXHRjaGVja19uZXh0aG9wIFwiaWQgMTA1XCIgXCJpZCAxMDUgZ3JvdXAgMzIvMzMgZmRiXCJcbitcdGxvZ190ZXN0ICQ/IDAgXCJGZGIgbmV4dGhvcCBncm91cCB3aXRoIGxlZ3MgZGlmZmVyaW5nIGluIGRzdF9wb3J0XCJcbitcbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgMzQgdmlhIDE3Mi4xNi4xLjIgZmRiXCJcbitcdGNoZWNrX25leHRob3AgXCJpZCAzNFwiIFwiaWQgMzQgdmlhIDE3Mi4xNi4xLjIgc2NvcGUgbGluayBmZGJcIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIkZkYiBuZXh0aG9wIHdpdGhvdXQgZHN0X3BvcnQgb21pdHMgZHN0X3BvcnRcIlxuK31cbitcbiBpcHY0X21wYXRoX3NlbGVjdCgpXG4ge1xuIFx0bG9jYWwgcmMgZGV2IG1hdGNoIGggYWRkclxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X3Z4bGFuX25oLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Rlc3RfdnhsYW5fbmguc2hcbmluZGV4IDIwZjMzNjlmNzc2YjE1Li43YjVkYzFkMzdmYTAyMSAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X3Z4bGFuX25oLnNoXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF92eGxhbl9uaC5zaFxuQEAgLTU2LDYgKzU2LDE2IEBAIHRjX3N0YXRzX2dldCgpXG4gXHR0Y19ydWxlX2hhbmRsZV9zdGF0c19nZXQgXCJkZXYgZHVtbXkxIGVncmVzc1wiIDEwMSBcIi5wYWNrZXRzXCIgXCItbiAkbnMxXCJcbiB9XG4gXG4rbmhfc3RhdHNfZ2V0X3BvcnQoKVxuK3tcbitcdGlwIC1uIFwiJG5zMVwiIC1zIC1qIG5leHRob3Agc2hvdyBpZCAyMCB8IGpxIFwiLltdW1xcXCJncm91cF9zdGF0c1xcXCJdW11bXFxcInBhY2tldHNcXFwiXVwiXG4rfVxuK1xuK3RjX3N0YXRzX2dldF9wb3J0KClcbit7XG4rXHR0Y19ydWxlX2hhbmRsZV9zdGF0c19nZXQgXCJkZXYgZHVtbXkxIGVncmVzc1wiIDEwMiBcIi5wYWNrZXRzXCIgXCItbiAkbnMxXCJcbit9XG4rXG4gYmFzaWNfdHhfY29tbW9uKClcbiB7XG4gXHRsb2NhbCBhZl9zdHI9JDE7IHNoaWZ0XG5AQCAtOTAsNiArMTAwLDI2IEBAIGJhc2ljX3R4X2NvbW1vbigpXG4gXHRidXN5d2FpdCBcIiRCVVNZV0FJVF9USU1FT1VUXCIgdW50aWxfY291bnRlcl9pcyBcIj09IDFcIiB0Y19zdGF0c19nZXQgXHUwMDNlIC9kZXYvbnVsbFxuIFx0Y2hlY2tfZXJyICQ/IFwidGMgZmlsdGVyIHN0YXRzIGRpZCBub3QgaW5jcmVhc2VcIlxuIFxuK1x0IyBBZGQgYSBzZWNvbmQgRkRCIG5leHRob3AgZ3JvdXAgd2hvc2UgbmV4dGhvcCBjYXJyaWVzIGEgcGVyLW5leHRob3BcbitcdCMgZGVzdGluYXRpb24gcG9ydCAoTkhBX0RTVF9QT1JUKSB0aGF0IGRpZmZlcnMgZnJvbSB0aGUgVlhMQU4gZGV2aWNlXG4rXHQjIGRlZmF1bHQuIE1hdGNoaW5nIG91dGVyIHRyYWZmaWMgbXVzdCBlZ3Jlc3Mgd2l0aCB0aGF0IHBvcnQsIHNvIGFcbitcdCMgc2VwYXJhdGUgZmxvd2VyIGZpbHRlciBrZXllZCBvbiB0aGUgbmV3IHBvcnQgY2F0Y2hlcyBpdC5cbitcdHJ1bl9jbWQgXCJ0YyAtbiAkbnMxIGZpbHRlciBhZGQgZGV2IGR1bW15MSBlZ3Jlc3MgcHJvdG8gJHByb3RvIHByZWYgMSBoYW5kbGUgMTAyIFxcXG4rXHRcdGZsb3dlciBpcF9wcm90byB1ZHAgZHN0X2lwICRyZW1vdGVfYWRkciBkc3RfcG9ydCA0NzkwIGFjdGlvbiBwYXNzXCJcbitcbitcdHJ1bl9jbWQgXCJpcCAtbiAkbnMxIG5leHRob3AgYWRkIGlkIDIgdmlhICRyZW1vdGVfYWRkciBmZGIgZHN0X3BvcnQgNDc5MFwiXG4rXHRydW5fY21kIFwiaXAgLW4gJG5zMSBuZXh0aG9wIGFkZCBpZCAyMCBncm91cCAyIGZkYlwiXG4rXG4rXHRydW5fY21kIFwiYnJpZGdlIC1uICRuczEgZmRiIGFkZCAwMDoxMToyMjozMzo0NDo2NiBkZXYgdngwIHNlbGYgc3RhdGljIG5oaWQgMjBcIlxuK1xuK1x0cnVuX2NtZCBcImlwIG5ldG5zIGV4ZWMgJG5zMSBtYXVzZXphaG4gdngwIC1hIG93biAtYiAwMDoxMToyMjozMzo0NDo2NiAtYyAxIC1xXCJcbitcbitcdGJ1c3l3YWl0IFwiJEJVU1lXQUlUX1RJTUVPVVRcIiB1bnRpbF9jb3VudGVyX2lzIFwiPT0gMVwiIG5oX3N0YXRzX2dldF9wb3J0IFx1MDAzZSAvZGV2L251bGxcbitcdGNoZWNrX2VyciAkPyBcIkZEQiBuZXh0aG9wIGdyb3VwIHN0YXRzIGRpZCBub3QgaW5jcmVhc2UgKHdpdGggcG9ydClcIlxuK1xuK1x0YnVzeXdhaXQgXCIkQlVTWVdBSVRfVElNRU9VVFwiIHVudGlsX2NvdW50ZXJfaXMgXCI9PSAxXCIgdGNfc3RhdHNfZ2V0X3BvcnQgXHUwMDNlIC9kZXYvbnVsbFxuK1x0Y2hlY2tfZXJyICQ/IFwidGMgZmlsdGVyIHN0YXRzIGRpZCBub3QgaW5jcmVhc2UgKHdpdGggcG9ydClcIlxuK1xuIFx0bG9nX3Rlc3QgXCJWWExBTiBGREIgbmV4dGhvcDogJGFmX3N0ciBiYXNpYyBUeFwiXG4gfVxuIFxuQEAgLTIxMCw4ICsyNDAsOCBAQCByZXF1aXJlX2NvbW1hbmQgYXJwaW5nXG4gcmVxdWlyZV9jb21tYW5kIG5kaXNjNlxuIHJlcXVpcmVfY29tbWFuZCBqcVxuIFxuLWlmICEgaXAgbmV4dGhvcCBoZWxwIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAtcSBcInN0YXRzXCI7IHRoZW5cbi1cdGVjaG8gXCJTS0lQOiBpcHJvdXRlMiBpcCB0b28gb2xkLCBtaXNzaW5nIG5leHRob3Agc3RhdHMgc3VwcG9ydFwiXG4raWYgISBpcCBuZXh0aG9wIGhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwIC1xIFwiZHN0X3BvcnRcIjsgdGhlblxuK1x0ZWNobyBcIlNLSVA6IGlwcm91dGUyIGlwIHRvbyBvbGQsIG1pc3NpbmcgbmV4dGhvcCBkc3RfcG9ydCBzdXBwb3J0XCJcbiBcdGV4aXQgXCIka3NmdF9za2lwXCJcbiBmaVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTc6NDUuMjYyNjQ5MDY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI1NzY2NTQyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXh0aG9wIERlc3RpbmF0aW9uIFBvcnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIHRoZSBjYXBhYmlsaXR5IHRvIHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBwb3J0IChgbmhfZHN0X3BvcnRgKSBmb3IgRkRCIG5leHRob3BzLCBzcGVjaWZpY2FsbHkgd2l0aCBWWExBTiBpbiBtaW5kLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzLCBpdCdzIHByZXR0eSBmb2N1c2VkIG9uIGNvcmUgbmV0d29ya2luZyBpbmZyYXN0cnVjdHVyZS4gSXQgdG91Y2hlcyBjcml0aWNhbCBmaWxlcyDigJMgYG5leHRob3AuaGAsIGB2eGxhbi5oYCwgYG5leHRob3AuaGAsIGBuZXh0aG9wLmNgLCBhbmQgdGhlIHNlbGZ0ZXN0cy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBoYXMgdGhlIHBvdGVudGlhbCBmb3Igc29tZSBzdWJ0bGUgaW50ZXJhY3Rpb25zLCBzbyBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB3aGVyZSB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuIFRoZSBjaGFuZ2VzIGluIGBuZXQvaXB2NC9uZXh0aG9wLmNgIGFyZSBjcnVjaWFsLiBgcnRtX3RvX25oX2NvbmZpZ2AgaXMgcmVzcG9uc2libGUgZm9yIHBhcnNpbmcgdGhhdCBuZXcgYE5IQV9EU1RfUE9SVGAgYXR0cmlidXRlLiBUaGVuLCBgbmhfZmlsbF9ub2RlYCBhbmQgYG5oX25sbXNnX3NpemVfc2luZ2xlYCBtdXN0IG5vdyBoYW5kbGUgdGhlIHNpemluZyBhbmQgZmlsbGluZyBvZiBuZXRsaW5rIG1lc3NhZ2VzIGZvciB0aGlzIG5ldyBhdHRyaWJ1dGUuIENydWNpYWxseSwgYG5leHRob3BfY3JlYXRlYCBpcyB3aGF0IGFjdHVhbGx5IHNldHMgdGhlIGRlc3RpbmF0aW9uIHBvcnQgd2hlbiBhIG5ldyBuZXh0aG9wIGlzIGNyZWF0ZWQ7IGBuaGktXHUwMDNlZHN0X3BvcnQgPSBjZmctXHUwMDNlbmhfZHN0X3BvcnRgLlxuXG5UaGUgY2hhbmdlcyBpbiBgaW5jbHVkZS9uZXQvdnhsYW4uaGAgYXJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAgbm93IHJldHJpZXZlcyB0aGUgYGRzdF9wb3J0YCBmcm9tIGBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdGAgYW5kIHRoZW4gc2V0cyBgcmRzdC1cdTAwM2VyZW1vdGVfcG9ydGAuIFNvLCBpdCdzIGRpcmVjdGx5IGludGVncmF0aW5nIHRoaXMgZGVzdGluYXRpb24gcG9ydCBzZXR0aW5nIGludG8gdGhlIFZYTEFOIHBhdGggc2VsZWN0aW9uIGxvZ2ljLiBUaGlzIGlzIHdoZXJlIEkgd2FudCB0byBwYXkgc3BlY2lhbCBhdHRlbnRpb24sIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBoYW5kbGluZyB0aGUgY29yZSBsb2dpYyBvZiB1c2luZyB0aGUgdmFsdWUuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSByZWFjaGFiaWxpdHkgb2YgYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAsIGFuZCBjaGVjayBmb3IgcmVsYXRlZCBmdW5jdGlvbnMgaW4gdGhlIGNvZGViYXNlLiBJIHNlZSBpdCdzIGFuIGlubGluZSBmdW5jdGlvbiwgc28gaXQgc2hvdWxkIGJlIHdpZGVseSB1c2VkLiBCdXQgSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBJJ20gZ29pbmcgdG8gc2VhcmNoIGZvciBpdHMgdXNlcyB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTU0LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTc6NTMuNTIwMzE3ODgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODA4MzY4MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjY1MD1zdGF0aWMgdm9pZCB2eGxhbl94bWl0X25oKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY2My1cXHRcXHRnb3RvIGRyb3A7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2NjQ6XFx0ZG9feG1pdCA9IHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChuaCwgaGFzaCwgXFx1MDAyNm5oX3Jkc3QpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjY1LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTI2ODA9c3RhdGljIG5ldGRldl90eF90IHZ4bGFuX3htaXRfbmhpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2OTctXFx0fVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjk4OlxcdGRvX3htaXQgPSB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3QobmgsIGhhc2gsIFxcdTAwMjZuaF9yZHN0KTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY5OS1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmluY2x1ZGUvbmV0L3Z4bGFuLmg9NTM0PXN0YXRpYyBpbmxpbmUgdm9pZCB2eGxhbl9mbGFnX2F0dHJfZXJyb3IoaW50IGF0dHJ0eXBlLFxcbi0tXFxuaW5jbHVkZS9uZXQvdnhsYW4uaC01NjQtXFxuaW5jbHVkZS9uZXQvdnhsYW4uaDo1NjU6c3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXFxuaW5jbHVkZS9uZXQvdnhsYW4uaC01NjYtXFx0XFx0XFx0XFx0XFx0ICAgIHUzMiBoYXNoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxODoxMy4zMjg2OTQ5NTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkzNjYzOTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6XG5cbioqRGlnZ2luZyBpbnRvIFZYTEFOIFRyYW5zbWlzc2lvbiBMb2dpYyoqXG5cbkFscmlnaHQsIEkgc2VlIHRoYXQgdGhlIGB2eGxhbl94bWl0X25oYCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAgZnVuY3Rpb25zIGFyZSB1dGlsaXppbmcgc29tZXRoaW5nIOKAkyBwb3RlbnRpYWxseSBhIGNyaXRpY2FsIHN0cnVjdHVyZSBvciBwcm9jZXNzIOKAkyBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgYmV0dGVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIHJvb3RzIG9mIHRoaXMgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIHRoZSBmdW5jdGlvbiB3aGVyZSBpdCBpcyBhY3R1YWxseSBjb25maWd1cmVkLiBNeSBndXQgZmVlbGluZyBpcyB0aGlzIGlzIGdvaW5nIHRvIGJlIGluIGBydG1fdG9fbmhfY29uZmlnYC4gU28sIEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgYG5ldC9pcHY0L25leHRob3AuY2AgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGlzIGJlaW5nIGRlZmluZWQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycywgb3IgYXQgbGVhc3QgYSBtYXAgZm9yIHdoZXJlIHRoaW5ncyBhcmUgY29uZmlndXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg0MywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjE2LjUyMjM2MTM0MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzgyOTgzNDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bV90b19uaF9jb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jPTMwMzg9c3RhdGljIGludCBydG1fbmhfZ2V0X3RpbWVyKHN0cnVjdCBubGF0dHIgKmF0dHIsIHVuc2lnbmVkIGxvbmcgZmFsbGJhY2ssXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzA2Mi1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzA2MzpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfZ3JwX3JlcyhzdHJ1Y3QgbmxhdHRyICpyZXMsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzA2NC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMxMDEtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMxMDI6c3RhdGljIGludCBydG1fdG9fbmhfY29uZmlnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzEwMy1cXHRcXHRcXHQgICAgc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBubGF0dHIgKip0YixcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zMTg5LVxcdFxcdGlmIChjZmctXFx1MDAzZW5oX2dycF90eXBlID09IE5FWFRIT1BfR1JQX1RZUEVfUkVTKVxcbm5ldC9pcHY0L25leHRob3AuYzozMTkwOlxcdFxcdFxcdGVyciA9IHJ0bV90b19uaF9jb25maWdfZ3JwX3Jlcyh0YltOSEFfUkVTX0dST1VQXSxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzE5MS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgY2ZnLCBleHRhY2spO1xcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMyNzctXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMyNzg6c3RhdGljIGludCBydG1fdG9fbmhfY29uZmlnX3J0bmwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICoqdGIsXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMyNzktXFx0XFx0XFx0XFx0IHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz0zMzEwPXN0YXRpYyBpbnQgcnRtX25ld19uZXh0aG9wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMzMjQtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMzMjU6XFx0ZXJyID0gcnRtX3RvX25oX2NvbmZpZyhuZXQsIHNrYiwgbmxoLCB0YiwgXFx1MDAyNmNmZywgZXh0YWNrKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMyNi1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMzMzYtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMzMzc6XFx0ZXJyID0gcnRtX3RvX25oX2NvbmZpZ19ydG5sKG5ldCwgdGIsIFxcdTAwMjZjZmcsIGV4dGFjayk7XFxubmV0L2lwdjQvbmV4dGhvcC5jLTMzMzgtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTg6MTkuMzA1MzQ5MzU2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1OTc1OTk5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgY29kZS1yZWxhdGVkIHRob3VnaHRzLCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgTmV4dCBIb3AgQ29kZSoqXG5cblJpZ2h0LCBgcnRtX25ld19uZXh0aG9wYCDigJMgdGhhdCdzIGEgc29saWQgZnVuY3Rpb24gdG8gc3RhcnQgd2l0aDsgaXQgZmVlbHMgbGlrZSB0aGUga2V5IGVudHJ5IHBvaW50IGZvciB0aGlzIHdob2xlIG5leHQtaG9wIGNyZWF0aW9uIHByb2Nlc3MuIEknbSB0aGlua2luZyBJIHNob3VsZCByZWFsbHkgZm9sbG93IHRoZSBsb2dpYyBmbG93IGZyb20gdGhlcmUuIEFuZCB0aGVuLCBsb29raW5nIGF0IHRoZSBjb2RlIEkgc2VlIHRoYXQgYG5oX2ZpbGxfbm9kZWAgYW5kIGBuZXh0aG9wX2NyZWF0ZWAgbG9vayBsaWtlIHByb21pc2luZyBmdW5jdGlvbnMgdG8gZXhhbWluZSBhbG9uZ3NpZGUgYHJ0bV9uZXdfbmV4dGhvcGAuIFRoZSBgbmhfZmlsbF9ub2RlYCBmdW5jdGlvbiBzZWVtcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcsIGdpdmVuIHRoZSBuYW1lLiBJIHdhbnQgdG8gY2hlY2sgdGhhdCBvbmUgb3V0IGZpcnN0LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG5vZGUgaXMgYmVpbmcgcG9wdWxhdGVkLCBhbmQgd2hhdCBraW5kIG9mIGRhdGEgaXQgcmVxdWlyZXMgZnJvbSB0aGUgdXNlci4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiBhY3Rpb24gaXRlbSBmb3IgbWUgdG9kYXkgaXMgZmlndXJpbmcgb3V0IGBuaF9maWxsX25vZGVgLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHdoYXQgZ29lcyBpbnRvIGJ1aWxkaW5nIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhIG5leHQgaG9wLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzI4LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTg6MjMuMTY1MTExOTc5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0Mjc2NDQxNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmhfZmlsbF9ub2RlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25leHRob3AuYz04NjY9c3RhdGljIGludCBubGFfcHV0X25oX2dyb3VwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy05MTQtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjkxNTpzdGF0aWMgaW50IG5oX2ZpbGxfbm9kZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV4dGhvcCAqbmgsXFxubmV0L2lwdjQvbmV4dGhvcC5jLTkxNi1cXHRcXHRcXHRpbnQgZXZlbnQsIHUzMiBwb3J0aWQsIHUzMiBzZXEsIHVuc2lnbmVkIGludCBubGZsYWdzLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jPTEwODk9c3RhdGljIHZvaWQgbmV4dGhvcF9ub3RpZnkoaW50IGV2ZW50LCBzdHJ1Y3QgbmV4dGhvcCAqbmgsIHN0cnVjdCBubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTEwOTktXFxubmV0L2lwdjQvbmV4dGhvcC5jOjExMDA6XFx0ZXJyID0gbmhfZmlsbF9ub2RlKHNrYiwgbmgsIGV2ZW50LCBpbmZvLVxcdTAwM2Vwb3J0aWQsIHNlcSwgbmxmbGFncywgMCk7XFxubmV0L2lwdjQvbmV4dGhvcC5jLTExMDEtXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz0zNDE4PXN0YXRpYyBpbnQgcnRtX2dldF9uZXh0aG9wKHN0cnVjdCBza19idWZmICppbl9za2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTM0NDgtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjM0NDk6XFx0ZXJyID0gbmhfZmlsbF9ub2RlKHNrYiwgbmgsIFJUTV9ORVdORVhUSE9QLCBORVRMSU5LX0NCKGluX3NrYikucG9ydGlkLFxcbm5ldC9pcHY0L25leHRob3AuYy0zNDUwLVxcdFxcdFxcdCAgIG5saC1cXHUwMDNlbmxtc2dfc2VxLCAwLCBvcF9mbGFncyk7XFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9MzYzNz1zdGF0aWMgaW50IHJ0bV9kdW1wX25leHRob3BfY2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTM2NDUtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjM2NDY6XFx0cmV0dXJuIG5oX2ZpbGxfbm9kZShza2IsIG5oLCBSVE1fTkVXTkVYVEhPUCxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzY0Ny1cXHRcXHRcXHQgICAgTkVUTElOS19DQihjYi1cXHUwMDNlc2tiKS5wb3J0aWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjI1LjU5Mjc2MjY4N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzcyMjc4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipNeSBJbW1lZGlhdGUgQXNzZXNzbWVudCBvZiBOZXh0aG9wIE1hbmFnZW1lbnQqKlxuXG5BbHJpZ2h0LCBzbyBJIHNlZSBhIGNsZWFyIGdyb3VwIG9mIGZ1bmN0aW9ucyBoZXJlIOKAkyBgcnRtX25ld19uZXh0aG9wYCwgYHJ0bV9nZXRfbmV4dGhvcGAsIGBydG1fZHVtcF9uZXh0aG9wX2NiYCwgYW5kIGBuZXh0aG9wX25vdGlmeWAuIFRoZXNlIGFyZSB0aGUgb25lcyBhY3RpdmVseSBpbnZvbHZlZCBpbiBjYWxsaW5nIGZ1bmN0aW9ucyBmb3IgdGhlIG5leHRob3AgcHJvY2Vzc2VzLiBUaGF0J3MgZ29vZCwgaXQgaGVscHMgdG8gaWRlbnRpZnkgdGhlIHBvdGVudGlhbCBlbnRyeSBhbmQgZXhpdCBwb2ludHMgZm9yIG5leHRob3AgaW50ZXJhY3Rpb24uIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBjcmVhdGlvbiBmdW5jdGlvbiwgYG5leHRob3BfY3JlYXRlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhlc2UgY2FsbHMgdHJpZ2dlciBhbmQgZmVlZCBpbnRvIG5leHRob3AgY3JlYXRpb24gdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUgYW5kIHBvdGVudGlhbCBpc3N1ZXMuIExldCdzIHNlZSBob3cgdGhhdCB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU4MywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjI4Ljg2OTk5Mzk2OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwODYyNDgyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXh0aG9wX2NyZWF0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmM9MTA5MD1zdGF0aWMgdm9pZCBuc2ltX2ZpYl9kdW1wX2luY29uc2lzdGVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2ZpYi5jLTExMTEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2ZpYi5jOjExMTI6c3RhdGljIHN0cnVjdCBuc2ltX25leHRob3AgKm5zaW1fbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5zaW1fZmliX2RhdGEgKmRhdGEsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2ZpYi5jLTExMTMtXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IG5oX25vdGlmaWVyX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmM9MTI1Nj1zdGF0aWMgaW50IG5zaW1fbmV4dGhvcF9pbnNlcnQoc3RydWN0IG5zaW1fZmliX2RhdGEgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmMtMTI2MS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmM6MTI2MjpcXHRuZXh0aG9wID0gbnNpbV9uZXh0aG9wX2NyZWF0ZShkYXRhLCBpbmZvKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmMtMTI2My1cXHRpZiAoSVNfRVJSKG5leHRob3ApKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jPTI3NDY9c3RhdGljIHZvaWQgZmx1c2hfYWxsX25leHRob3BzKHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0yNzYxLVxcbm5ldC9pcHY0L25leHRob3AuYzoyNzYyOnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGVfZ3JvdXAoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC9pcHY0L25leHRob3AuYy0yNzYzLVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmhfY29uZmlnICpjZmcpXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9MjkwOD1zdGF0aWMgaW50IG5oX2NyZWF0ZV9pcHY2KHN0cnVjdCBuZXQgKm5ldCwgIHN0cnVjdCBuZXh0aG9wICpuaCxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0yOTQxLVxcbm5ldC9pcHY0L25leHRob3AuYzoyOTQyOnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXFxubmV0L2lwdjQvbmV4dGhvcC5jLTI5NDMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jPTMwMDE9c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zMDE1LVxcdGlmIChjZmctXFx1MDAzZW5oX2dycClcXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzAxNjpcXHRcXHRuaCA9IG5leHRob3BfY3JlYXRlX2dyb3VwKG5ldCwgY2ZnKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAxNy1cXHRlbHNlXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMwMTg6XFx0XFx0bmggPSBuZXh0aG9wX2NyZWF0ZShuZXQsIGNmZywgZXh0YWNrKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAxOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTg6MzAuODc4NjI1MjM0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1OTI4NDI0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBJbnF1aXJ5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IG5leHRob3BzIGFyZSBjcmVhdGVkIGFuZCB1c2VkLiBJdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCBgbmV4dGhvcF9hZGRgIGlzIGZ1bmRhbWVudGFsLCBhbmQgaXQncyBjYWxsZWQgYnkgYG5leHRob3BfY3JlYXRlYC4gRnVydGhlciwgYHJ0bV9uZXdfbmV4dGhvcGAgYWxzbyBtYWtlcyB1c2Ugb2YgYG5leHRob3BfYWRkYC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHNldmVyYWwgZnVuY3Rpb25zIGlmIEkgd2FudCB0byBmdWxseSB1bmRlcnN0YW5kIHRoaXMsIHNwZWNpZmljYWxseTogYHJ0bV9uZXdfbmV4dGhvcGAsIGBydG1fZ2V0X25leHRob3BgLCBgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0YCwgYHZ4bGFuX3htaXRfbmhgLCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAuIFRoZXNlIGFwcGVhciB0byBiZSB0aGUga2V5IHBvaW50cyBvZiBpbnRlcmFjdGlvbi5cblxuTm93LCBsZXQgbWUgY2hlY2sgZm9yIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSBhbHJlYWR5IGtub3cgdGhhdCBWWExBTiBuZWVkcyBgQ09ORklHX1ZYTEFOYCwgb2J2aW91c2x5LiBCdXQgd2hhdCBhYm91dCBuZXh0aG9wcyBtb3JlIGdlbmVyYWxseT8gSSB3b25kZXIgaWYgYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgIGlzIHJlcXVpcmVkLCBvciBpZiBgQ09ORklHX05FVGAgYWxvbmUgaXMgc3VmZmljaWVudD8gVGhlIHNhZmVzdCBiZXQgd291bGQgYmUgdG8gY2hlY2sgYG5ldC9pcHY0L0tjb25maWdgIGFuZCBzZWUgd2hhdCB0aGUgbmV4dGhvcCBzZWN0aW9uIHNheXMuIFRoYXQgc2hvdWxkIGNsYXJpZnkgYW55IGJ1aWxkLXRpbWUgcHJlcmVxdWlzaXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MjcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTg6MzUuNDcxNDcxMjc4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI5NDE5OTk1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXh0aG9wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjM2LjkwMDkwMDQwM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDMxMzc5ODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIElQdjQgTWFrZWZpbGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgSVB2NCBuZXR3b3JraW5nIHN0YWNrLiBXaGVyZSdzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0PyBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHJpZ2h0IGZvciB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSB0aGUgYnVpbGQgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBzcGVjaWZpYyBzdWJzeXN0ZW0gYXJlIGdvaW5nIHRvIGJlIGRlZmluZWQuIEl0J3MgdGhlIGNlbnRyYWwgaHViIGZvciBob3cgZXZlcnl0aGluZyBJUHY0LXJlbGF0ZWQgZ2V0cyBjb21waWxlZCBhbmQgbGlua2VkIGludG8gdGhlIGtlcm5lbC4gVGhpcyBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29tcG9uZW50IGlzIGJ1aWx0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDk5OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjQxLjkzMjI4NDE5OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NjcyOTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5leHRob3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTYtXFx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XFx0ICAgICBtZXRyaWNzLm8gbmV0bGluay5vIG5leHRob3AubyB1ZHBfdHVubmVsX3N0dWIub1xcbm5ldC9pcHY0L01ha2VmaWxlLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxODo0Mi40MDE5NjA3OTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwMjI0NjA3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIElQdjQgYW5kIFZYTEFOIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gYG5leHRob3Aub2AgaXMgY29uc2lzdGVudGx5IGJ1aWx0IHdpdGggSVB2NCBpbiBtaW5kLiBNYWtlcyBzZW5zZS4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBhc3NvY2lhdGVkIHdpdGggVlhMQU4uIE15IGluaXRpYWwgdGhvdWdodCBpcyBgQ09ORklHX1ZYTEFOYCwgb2J2aW91c2x5LiBUaW1lIHRvIGNoZWNrIHRoZSBzdGFuZGFyZCBsb2NhdGlvbnMgZm9yIHRoZXNlIHNvcnRzIG9mIHRoaW5nczogYGRyaXZlcnMvbmV0L01ha2VmaWxlYCBvciBwZXJoYXBzIGEgbW9yZSBzcGVjaWZpYyBgZHJpdmVycy9uZXQvdnhsYW4vTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSByZWxldmFudCBidWlsZCBmbGFncyBhbmQgZGVwZW5kZW5jaWVzLiBJJ20gYXNzdW1pbmcgaXQncyBnb3QgdG8gYmUgb25lIG9mIHRob3NlIHR3byBmaWxlcywgaWYgbm90IGJvdGghXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjg5LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTg6NDYuODA0MjA5MDIzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTc3OTk1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2eGxhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVklSVElPX05FVCkgKz0gdmlydGlvX25ldC5vXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX1ZYTEFOKSArPSB2eGxhbi9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0zNy1vYmotJChDT05GSUdfR0VORVZFKSArPSBnZW5ldmUub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxODo0Ni45MDM5OTQxNDdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAyMDA3MTk2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBWWExBTiBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGUgVlhMQU4gc2V0dXAsIGFuZCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50LCBhcyBleHBlY3RlZCwgaXMgYENPTkZJR19WWExBTmAuIEJ1dCBhcmUgdGhlcmUgYW55ICpvdGhlciogcmVsZXZhbnQgY29uZmlncyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gTGV0IG1lIHRoaW5rLi4uIHRoZSB0ZXN0IHNjcmlwdCB1c2VzIGBtYXVzZXphaG5gLCBgdGNgLCBhbmQgYGJyaWRnZWAsIHdoaWNoIHN1Z2dlc3RzIGEgZmV3IG1vcmUgcG9zc2liaWxpdGllcy4gRm9yIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50LCBJJ20gdGhpbmtpbmcgYENPTkZJR19ORVRfU0NIX0lOR1JFU1NgLCBgQ09ORklHX05FVF9DTFNfRkxPV0VSYCwgYW5kLCBvZiBjb3Vyc2UsIGBDT05GSUdfQlJJREdFYCBtaWdodCBiZSB1c2VmdWwsIGJ1dCBgQ09ORklHX1ZYTEFOYCBpcyB1bmRvdWJ0ZWRseSB0aGUgbW9zdCBjcml0aWNhbCBmb3IgY29yZSBmdW5jdGlvbmFsaXR5LlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgZm9jdXMgc3ltYm9scy4gSSd2ZSBnb3QgbXkgaW5pdGlhbCBsaXN0OiBgcnRtX25ld19uZXh0aG9wYCwgYHJ0bV9nZXRfbmV4dGhvcGAsIGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgLCBgdnhsYW5feG1pdF9uaGAsIGFuZCBgdnhsYW5feG1pdF9uaGlkYC4gV2FpdCBhIG1pbnV0ZSwgYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAgaXMgYW4gaW5saW5lIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0IHdvbid0IGJlIGEgZGlyZWN0IHRhcmdldCBmb3IgaW52ZXN0aWdhdGlvbiwgYnV0IHJhdGhlciB0aGUgZnVuY3Rpb25zICpjYWxsaW5nKiBpdCwgd2hpY2ggYXJlIGB2eGxhbl94bWl0X25oYCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAuIEl0J3MgaW5saW5lIGluIGBpbmNsdWRlL25ldC92eGxhbi5oYCwgc28gSSdsbCBwcmlvcml0aXplIHRob3NlIHR3by5cblxuT2theSwgc28gdGhlIGZvY3VzZWQgbGlzdCBpcyBnb2luZyB0byBiZTogYHJ0bV9uZXdfbmV4dGhvcGAsIGBydG1fZ2V0X25leHRob3BgLCBgcnRtX3RvX25oX2NvbmZpZ2AsIGBuaF9maWxsX25vZGVgLCBgbmV4dGhvcF9jcmVhdGVgLCBgdnhsYW5feG1pdF9uaGAsIGFuZCBgdnhsYW5feG1pdF9uaGlkYC4gSSBuZWVkIHRvIG5vdyB2ZXJpZnkgaWYgYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYCBhcmUgc3RhdGljIGFzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTk3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjUzLjkyNDA2OTI5OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2NzM4MDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX3htaXRfbmhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yMzQ0PXZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjQ5LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjUwOnN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfbmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY1MS1cXHRcXHRcXHQgIHN0cnVjdCB2eGxhbl9mZGIgKmYsIF9fYmUzMiB2bmksIGJvb2wgZGlkX3JzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjc5LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjgwOnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY4MS1cXHRcXHRcXHRcXHQgICB1MzIgbmhpZCwgX19iZTMyIHZuaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yNzI1PXN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjc3Mi1cXHRpZiAobmhpZClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc3MzpcXHRcXHRyZXR1cm4gdnhsYW5feG1pdF9uaGlkKHNrYiwgZGV2LCBuaGlkLCB2bmkpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzc0LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4MTgtXFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihmLVxcdTAwM2VuaCkpIHtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjgxOTpcXHRcXHR2eGxhbl94bWl0X25oKHNrYiwgZGV2LCBmLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODIwLVxcdFxcdFxcdCAgICAgICh2bmkgPyA6IHZ4bGFuLVxcdTAwM2VkZWZhdWx0X2RzdC5yZW1vdGVfdm5pKSwgZGlkX3JzYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjU0LjQwMDgxNDk1N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzM4NjU4MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFN0YXRpYyBOYXR1cmUgb2YgQ29yZSBWWExBTiBEYXRhIFN0cnVjdHVyZXMqKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBzdGF0aWMgZWxlbWVudHMgaGVyZS4gSSdtIGZvY3VzaW5nIG9uIHRoZSBWWExBTiB0cmFuc21pc3Npb24gbWVjaGFuaXNtcyDigJMgc3BlY2lmaWNhbGx5IGB2eGxhbl94bWl0X25oYCwgYHZ4bGFuX3htaXRfbmhpZGAsIGFuZCBob3cgdGhlc2UgcmVsYXRlIHRvIHRoZSBicm9hZGVyIHJvdXRpbmcgdGFibGUgbWFuYWdlbWVudCwgaW5jbHVkaW5nIGBydG1fbmV3X25leHRob3BgLCBgcnRtX3RvX25oX2NvbmZpZ2AsIGBuZXh0aG9wX2NyZWF0ZWAsIGFuZCBgbmhfZmlsbF9ub2RlYC4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoYXQgdGhleSAqYXJlKiBzdGF0aWMuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoYXQgYHJ0bV90b19uaF9jb25maWdgIGlzIHN0YXRpYy4gSXQncyBhIGtleSBmdW5jdGlvbiBpbiB0cmFuc2xhdGluZyByb3V0aW5nIG1lc3NhZ2VzIGludG8gbmV4dC1ob3AgY29uZmlndXJhdGlvbnMsIHNvIGl0cyBiZWhhdmlvciBiZWluZyBzdGF0aWMgb3Igbm90IGlzIGdvaW5nIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB3ZSBjYW4gYXBwbHkgYW55IGR5bmFtaWMgcnVsZXMgdG8gaXRzIGJlaGF2aW9yLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBnZXQgYSBkZWZpbml0aXZlIGFuc3dlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5OTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxODo1OC43Mzk0NzY3NDhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTY5OTI4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydG1fdG9fbmhfY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25leHRob3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmM9MzAzOD1zdGF0aWMgaW50IHJ0bV9uaF9nZXRfdGltZXIoc3RydWN0IG5sYXR0ciAqYXR0ciwgdW5zaWduZWQgbG9uZyBmYWxsYmFjayxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zMDYyLVxcbm5ldC9pcHY0L25leHRob3AuYzozMDYzOnN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZ19ncnBfcmVzKHN0cnVjdCBubGF0dHIgKnJlcywgc3RydWN0IG5oX2NvbmZpZyAqY2ZnLFxcbm5ldC9pcHY0L25leHRob3AuYy0zMDY0LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzEwMS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzEwMjpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY0L25leHRob3AuYy0zMTAzLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMxODktXFx0XFx0aWYgKGNmZy1cXHUwMDNlbmhfZ3JwX3R5cGUgPT0gTkVYVEhPUF9HUlBfVFlQRV9SRVMpXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMxOTA6XFx0XFx0XFx0ZXJyID0gcnRtX3RvX25oX2NvbmZpZ19ncnBfcmVzKHRiW05IQV9SRVNfR1JPVVBdLFxcbm5ldC9pcHY0L25leHRob3AuYy0zMTkxLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBjZmcsIGV4dGFjayk7XFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzI3Ny1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzI3ODpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfcnRubChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzI3OS1cXHRcXHRcXHRcXHQgc3RydWN0IG5oX2NvbmZpZyAqY2ZnLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jPTMzMTA9c3RhdGljIGludCBydG1fbmV3X25leHRob3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMyNC1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzMyNTpcXHRlcnIgPSBydG1fdG9fbmhfY29uZmlnKG5ldCwgc2tiLCBubGgsIHRiLCBcXHUwMDI2Y2ZnLCBleHRhY2spO1xcbm5ldC9pcHY0L25leHRob3AuYy0zMzI2LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMzNi1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzMzNzpcXHRlcnIgPSBydG1fdG9fbmhfY29uZmlnX3J0bmwobmV0LCB0YiwgXFx1MDAyNmNmZywgZXh0YWNrKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMzOC1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxODo1OC44NTkxODA3M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjY0MzY2NTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZYTEFOIERlc3RpbmF0aW9uIFBvcnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGFib3V0IGFkZGluZyBkZXN0aW5hdGlvbiBwb3J0IHNwZWNpZmljYXRpb24gdG8gRm9yd2FyZGluZyBEYXRhYmFzZSAoRkRCKSBuZXh0aG9wcywgc3BlY2lmaWNhbGx5IGZvciBWWExBTi4gVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIGFiaWxpdHkgdG8gY29uZmlndXJlIGEgZGVzdGluYXRpb24gcG9ydCwgYG5oX2RzdF9wb3J0YCwgZGlyZWN0bHkgb24gYSBWWExBTiBuZXh0aG9wLiBJIHNlZSB0aGUgY2hhbmdlcyB0b3VjaCB0aGUgbmV0bGluayBBUEkgdG8gcGFyc2UgYE5IQV9EU1RfUE9SVGAsIHdoaWNoIGlzIHRoZW4gc3RvcmVkIHdpdGhpbiB0aGUgbmV4dGhvcCBjb25maWd1cmF0aW9uIGl0c2VsZi4gVGhpcyBjb25maWd1cmF0aW9uIGlzIHN1YnNlcXVlbnRseSB1dGlsaXplZCBkdXJpbmcgdGhlIFZYTEFOIHRyYW5zbWlzc2lvbiBwYXRoIHNlbGVjdGlvbiBwcm9jZXNzLlxuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaXTigJlzIGEgbW9kaWZpY2F0aW9uIGRlZXAgd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHRoZSBWWExBTiBkcml2ZXIuIFRoYXQncyBnb29kIGZyb20gbXkgcGVyc3BlY3RpdmU6IGl0J3MgcmVhY2hhYmxlIGNvZGUgYW5kIHRoZXJlZm9yZSB2ZXJ5IGZ1enphYmxlLiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gZGVtb25zdHJhdGUgdGhhdCB0aGlzIGlzIHdvcmtpbmcgZnJvbSBhbiBvcGVyYXRpb25hbCBwZXJzcGVjdGl2ZSAtIHRoZXJlIGNhbid0IGJlIGEgZGlzY29ubmVjdCBmcm9tIHRoZSBjb25maWd1cmF0aW9uIHRvIHRoZSBleGVjdXRpb24uXG5cbkkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2Ugc3ltYm9sczogYHJ0bV9uZXdfbmV4dGhvcGAsIGBydG1fdG9fbmhfY29uZmlnYCwgYG5leHRob3BfY3JlYXRlYCwgYG5oX2ZpbGxfbm9kZWAsIGB2eGxhbl94bWl0X25oYCwgYW5kIGB2eGxhbl94bWl0X25oaWRgLiBUaGVzZSBhcmUgZ29pbmcgdG8gYmUgdGhlIGtleSBhcmVhcyB3aGVyZSB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgaXMgaW50cm9kdWNlZCBhbmQgd2hlcmUgdGhlIGludGVncmF0aW9uIHdpdGggdGhlIGV4aXN0aW5nIFZYTEFOIHBhdGggaGFwcGVucy5cblxuSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gc2V0IHRoaXMgdXAgc28gd2UgY2FuIGdldCBtZWFuaW5nZnVsIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzOTY0LCJPdXRwdXRUb2tlbnMiOjE4NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxOTowNC41MjM1NTA1NjNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA3MDAzOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZYTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRtX25ld19uZXh0aG9wXCIsXG4gICAgXCJydG1fdG9fbmhfY29uZmlnXCIsXG4gICAgXCJuZXh0aG9wX2NyZWF0ZVwiLFxuICAgIFwibmhfZmlsbF9ub2RlXCIsXG4gICAgXCJ2eGxhbl94bWl0X25oXCIsXG4gICAgXCJ2eGxhbl94bWl0X25oaWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYSBkZXN0aW5hdGlvbiBwb3J0IChuaF9kc3RfcG9ydCkgb24gZmRiIG5leHRob3BzIChlLmcuLCBWWExBTikuIEl0IG1vZGlmaWVzIHRoZSBuZXRsaW5rIEFQSSB0byBwYXJzZSBOSEFfRFNUX1BPUlQsIHN0b3JlcyBpdCBpbiB0aGUgbmV4dGhvcCBjb25maWd1cmF0aW9uLCBhbmQgdXNlcyBpdCBkdXJpbmcgVlhMQU4gdHJhbnNtaXQgcGF0aCBzZWxlY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIGFuZCBWWExBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV9uZXdfbmV4dGhvcFwiLFxuICAgIFwicnRtX3RvX25oX2NvbmZpZ1wiLFxuICAgIFwibmV4dGhvcF9jcmVhdGVcIixcbiAgICBcIm5oX2ZpbGxfbm9kZVwiLFxuICAgIFwidnhsYW5feG1pdF9uaFwiLFxuICAgIFwidnhsYW5feG1pdF9uaGlkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGEgZGVzdGluYXRpb24gcG9ydCAobmhfZHN0X3BvcnQpIG9uIGZkYiBuZXh0aG9wcyAoZS5nLiwgVlhMQU4pLiBJdCBtb2RpZmllcyB0aGUgbmV0bGluayBBUEkgdG8gcGFyc2UgTkhBX0RTVF9QT1JULCBzdG9yZXMgaXQgaW4gdGhlIG5leHRob3AgY29uZmlndXJhdGlvbiwgYW5kIHVzZXMgaXQgZHVyaW5nIFZYTEFOIHRyYW5zbWl0IHBhdGggc2VsZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgVlhMQU4gZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbzxdr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 02:53:00 +0000 UTC FinishedAt: 2026-07-24 03:19:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN" ], "series_id": "f8da41d0-bd0b-47e1-9457-180e305ed408" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtm_new_nexthop", "rtm_to_nh_config", "nexthop_create", "nh_fill_node", "vxlan_xmit_nh", "vxlan_xmit_nhid" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRtX25ld19uZXh0aG9wJiMzNDssCiAgICAmIzM0O3J0bV90b19uaF9jb25maWcmIzM0OywKICAgICYjMzQ7bmV4dGhvcF9jcmVhdGUmIzM0OywKICAgICYjMzQ7bmhfZmlsbF9ub2RlJiMzNDssCiAgICAmIzM0O3Z4bGFuX3htaXRfbmgmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaGlkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhIGRlc3RpbmF0aW9uIHBvcnQgKG5oX2RzdF9wb3J0KSBvbiBmZGIgbmV4dGhvcHMgKGUuZy4sIFZYTEFOKS4gSXQgbW9kaWZpZXMgdGhlIG5ldGxpbmsgQVBJIHRvIHBhcnNlIE5IQV9EU1RfUE9SVCwgc3RvcmVzIGl0IGluIHRoZSBuZXh0aG9wIGNvbmZpZ3VyYXRpb24sIGFuZCB1c2VzIGl0IGR1cmluZyBWWExBTiB0cmFuc21pdCBwYXRoIHNlbGVjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIFZYTEFOIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTQyYmIyMjBiYzg3NWY0ZTYyYTFkOGUzOWE2MGM1ZDQxMDgyYjQ0YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDAzOjE3OjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25leHRob3AuaCBiL2luY2x1ZGUvbmV0L25leHRob3AuaFxuaW5kZXggNTcyZTY5Y2RhNDc2NmQuLmY4NmMxMTUwNzRkN2FiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXh0aG9wLmhcbkBAIC0yOCw2ICYjNDM7MjgsNyBAQCBzdHJ1Y3QgbmhfY29uZmlnIHtcbiBcdHU4XHRcdG5oX3Byb3RvY29sO1xuIFx0dThcdFx0bmhfYmxhY2tob2xlO1xuIFx0dThcdFx0bmhfZmRiO1xuJiM0MztcdF9fYmUxNlx0XHRuaF9kc3RfcG9ydDtcbiBcdHUzMlx0XHRuaF9mbGFncztcbiBcbiBcdGludFx0XHRuaF9pZmluZGV4O1xuQEAgLTYzLDYgJiM0Mzs2NCw3IEBAIHN0cnVjdCBuaF9pbmZvIHtcbiBcdHU4XHRcdFx0ZmFtaWx5O1xuIFx0Ym9vbFx0XHRcdHJlamVjdF9uaDtcbiBcdGJvb2xcdFx0XHRmZGJfbmg7XG4mIzQzO1x0X19iZTE2XHRcdFx0ZHN0X3BvcnQ7XG4gXG4gXHR1bmlvbiB7XG4gXHRcdHN0cnVjdCBmaWJfbmhfY29tbW9uXHRmaWJfbmhjO1xuQEAgLTU3NCw3ICYjNDM7NTc2LDggQEAgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfZmRiX25oYyhzdHJ1Y3QgbmV4dGhvcCAqbmgpXG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfcGF0aF9mZGJfcmVzdWx0KHN0cnVjdCBuZXh0aG9wICpuaCxcbi1cdFx0XHRcdFx0XHRcdCAgICBpbnQgaGFzaClcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgaW50IGhhc2gsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIF9fYmUxNiAqZHN0X3BvcnQpXG4ge1xuIFx0c3RydWN0IG5oX2luZm8gKm5oaTtcbiBcdHN0cnVjdCBuZXh0aG9wICpuaHA7XG5AQCAtNTgzLDYgJiM0Mzs1ODYsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHRpZiAodW5saWtlbHkoIW5ocCkpXG4gXHRcdHJldHVybiBOVUxMO1xuIFx0bmhpID0gcmN1X2RlcmVmZXJlbmNlKG5ocC1cdTAwM2VuaF9pbmZvKTtcbiYjNDM7XHQqZHN0X3BvcnQgPSBuaGktXHUwMDNlZHN0X3BvcnQ7XG4gXHRyZXR1cm4gXHUwMDI2bmhpLVx1MDAzZWZpYl9uaGM7XG4gfVxuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3Z4bGFuLmggYi9pbmNsdWRlL25ldC92eGxhbi5oXG5pbmRleCBkZmJhODk2OTVlZmNmYS4uNmU2NDc1NzE1MWI4OGUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC92eGxhbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC92eGxhbi5oXG5AQCAtNTY3LDggJiM0Mzs1NjcsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KHN0cnVjdCBuZXh0aG9wICpuaCxcbiBcdFx0XHRcdFx0ICAgIHN0cnVjdCB2eGxhbl9yZHN0ICpyZHN0KVxuIHtcbiBcdHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGM7XG4mIzQzO1x0X19iZTE2IGRzdF9wb3J0ID0gMDtcbiBcbi1cdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFx1MDAzZVx1MDAzZSAxKTtcbiYjNDM7XHRuaGMgPSBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChuaCwgaGFzaCBcdTAwM2VcdTAwM2UgMSwgXHUwMDI2ZHN0X3BvcnQpO1xuIFx0aWYgKHVubGlrZWx5KCFuaGMpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG5AQCAtNTgzLDYgJiM0Mzs1ODQsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KHN0cnVjdCBuZXh0aG9wICpuaCxcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4mIzQzO1x0cmRzdC1cdTAwM2VyZW1vdGVfcG9ydCA9IGRzdF9wb3J0O1xuJiM0MztcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaFxuaW5kZXggYmM0OWJhZjRhMjY3ZjAuLjU5Y2YxY2VlOTNiZDcwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaFxuQEAgLTgzLDYgJiM0Mzs4Myw5IEBAIGVudW0ge1xuIFx0LyogdTMyOyByZWFkLW9ubHk7IHdoZXRoZXIgYW55IGRyaXZlciBjb2xsZWN0cyBIVyBzdGF0cyAqL1xuIFx0TkhBX0hXX1NUQVRTX1VTRUQsXG4gXG4mIzQzO1x0LyogYmUxNjsgVURQIGRlc3RpbmF0aW9uIHBvcnQgZm9yIGFuIGZkYiBuZXh0aG9wIChlLmcuIFZYTEFOKSAqL1xuJiM0MztcdE5IQV9EU1RfUE9SVCxcbiYjNDM7XG4gXHRfX05IQV9NQVgsXG4gfTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXh0aG9wLmMgYi9uZXQvaXB2NC9uZXh0aG9wLmNcbmluZGV4IDYyMDViZDU3YWE4NTIwLi4wMDIxMzgwYjhjMWRlZiAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L25leHRob3AuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvbmV4dGhvcC5jXG5AQCAtMzksNiAmIzQzOzM5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHJ0bV9uaF9wb2xpY3lfbmV3W10gPSB7XG4gXHRbTkhBX0VOQ0FQX1RZUEVdXHQ9IHsgLnR5cGUgPSBOTEFfVTE2IH0sXG4gXHRbTkhBX0VOQ0FQXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbTkhBX0ZEQl1cdFx0PSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcbiYjNDM7XHRbTkhBX0RTVF9QT1JUXVx0XHQ9IE5MQV9QT0xJQ1lfTUlOKE5MQV9CRTE2LCAxKSxcbiBcdFtOSEFfUkVTX0dST1VQXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbTkhBX0hXX1NUQVRTX0VOQUJMRV1cdD0gTkxBX1BPTElDWV9NQVgoTkxBX1UzMiwgdHJ1ZSksXG4gfTtcbkBAIC05NTYsNiAmIzQzOzk1Nyw5IEBAIHN0YXRpYyBpbnQgbmhfZmlsbF9ub2RlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcbiBcdH0gZWxzZSBpZiAobmhpLVx1MDAzZWZkYl9uaCkge1xuIFx0XHRpZiAobmxhX3B1dF9mbGFnKHNrYiwgTkhBX0ZEQikpXG4gXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzQzO1x0XHRpZiAobmhpLVx1MDAzZWRzdF9wb3J0IFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIG5sYV9wdXRfYmUxNihza2IsIE5IQV9EU1RfUE9SVCwgbmhpLVx1MDAzZWRzdF9wb3J0KSlcbiYjNDM7XHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXHR9IGVsc2Uge1xuIFx0XHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuIFxuQEAgLTEwNTUsNiAmIzQzOzEwNTksOSBAQCBzdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaClcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKG5oaS1cdTAwM2Vkc3RfcG9ydClcbiYjNDM7XHRcdHN6ICYjNDM7PSBubGFfdG90YWxfc2l6ZSgyKTtcdC8qIE5IQV9EU1RfUE9SVCAqL1xuJiM0MztcbiBcdGlmIChuaGktXHUwMDNlZmliX25oYy5uaGNfbHd0c3RhdGUpIHtcbiBcdFx0c3ogJiM0Mzs9IGx3dHVubmVsX2dldF9lbmNhcF9zaXplKG5oaS1cdTAwM2VmaWJfbmhjLm5oY19sd3RzdGF0ZSk7XG4gXHRcdHN6ICYjNDM7PSBubGFfdG90YWxfc2l6ZSgyKTsgIC8qIE5IQV9FTkNBUF9UWVBFICovXG5AQCAtMjk1Niw4ICYjNDM7Mjk2MywxMCBAQCBzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5oX2NvbmZpZyAqY2ZnLFxuIFx0bmhpLVx1MDAzZWZhbWlseSA9IGNmZy1cdTAwM2VuaF9mYW1pbHk7XG4gXHRuaGktXHUwMDNlZmliX25oYy5uaGNfc2NvcGUgPSBSVF9TQ09QRV9MSU5LO1xuIFxuLVx0aWYgKGNmZy1cdTAwM2VuaF9mZGIpXG4mIzQzO1x0aWYgKGNmZy1cdTAwM2VuaF9mZGIpIHtcbiBcdFx0bmhpLVx1MDAzZWZkYl9uaCA9IDE7XG4mIzQzO1x0XHRuaGktXHUwMDNlZHN0X3BvcnQgPSBjZmctXHUwMDNlbmhfZHN0X3BvcnQ7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKGNmZy1cdTAwM2VuaF9ibGFja2hvbGUpIHtcbiBcdFx0bmhpLVx1MDAzZXJlamVjdF9uaCA9IDE7XG5AQCAtMzE0Nyw2ICYjNDM7MzE1NiwxNSBAQCBzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRjZmctXHUwMDNlbmhfZmRiID0gbmxhX2dldF9mbGFnKHRiW05IQV9GREJdKTtcbiBcdH1cbiBcbiYjNDM7XHRpZiAodGJbTkhBX0RTVF9QT1JUXSkge1xuJiM0MztcdFx0aWYgKCF0YltOSEFfRkRCXSB8fCAhdGJbTkhBX0dBVEVXQVldKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbiYjNDM7XHRcdFx0XHQgICAgICAgXCYjMzQ7RGVzdGluYXRpb24gcG9ydCBjYW4gb25seSBiZSBzZXQgb24gZmRiIG5leHRob3BzIHRoYXQgaGF2ZSBhIGdhdGV3YXlcJiMzNDspO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGNmZy1cdTAwM2VuaF9kc3RfcG9ydCA9IG5sYV9nZXRfYmUxNih0YltOSEFfRFNUX1BPUlRdKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKHRiW05IQV9HUk9VUF0pIHtcbiBcdFx0aWYgKG5obS1cdTAwM2VuaF9mYW1pbHkgIT0gQUZfVU5TUEVDKSB7XG4gXHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtJbnZhbGlkIGZhbWlseSBmb3IgZ3JvdXBcJiMzNDspO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHMuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoXG5pbmRleCBhYzg2OGE3MzE2OTQ2YS4uODM0YmExYzA2NzZjODAgMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoXG5AQCAtMzAsNiAmIzQzOzMwLDcgQEAgSVBWNF9URVNUUz1cJiMzNDtcbiBcdGlwdjRfbGFyZ2VfcmVzX2dycFxuIFx0aXB2NF9jb21wYXRfbW9kZVxuIFx0aXB2NF9mZGJfZ3JwX2ZjbmFsXG4mIzQzO1x0aXB2NF9mZGJfcG9ydF9mY25hbFxuIFx0aXB2NF9tcGF0aF9zZWxlY3RcbiBcdGlwdjRfdG9ydHVyZVxuIFx0aXB2NF9yZXNfdG9ydHVyZVxuQEAgLTQ0LDYgJiM0Mzs0NSw3IEBAIElQVjZfVEVTVFM9XCYjMzQ7XG4gXHRpcHY2X2xhcmdlX3Jlc19ncnBcbiBcdGlwdjZfY29tcGF0X21vZGVcbiBcdGlwdjZfZmRiX2dycF9mY25hbFxuJiM0MztcdGlwdjZfZmRiX3BvcnRfZmNuYWxcbiBcdGlwdjZfbXBhdGhfc2VsZWN0XG4gXHRpcHY2X3RvcnR1cmVcbiBcdGlwdjZfcmVzX3RvcnR1cmVcbkBAIC00MzIsNiAmIzQzOzQzNCwxNSBAQCBjaGVja19uZXh0aG9wX2ZkYl9zdXBwb3J0KClcbiBcdGZpXG4gfVxuIFxuJiM0MztjaGVja19uZXh0aG9wX2ZkYl9wb3J0X3N1cHBvcnQoKVxuJiM0Mzt7XG4mIzQzO1x0JElQIG5leHRob3AgaGVscCAyXHUwMDNlXHUwMDI2MSB8IGdyZXAgLXEgXCYjMzQ7ZHN0X3BvcnRcJiMzNDtcbiYjNDM7XHRpZiBbICQ/IC1uZSAwIF07IHRoZW5cbiYjNDM7XHRcdGVjaG8gXCYjMzQ7U0tJUDogaXByb3V0ZTIgdG9vIG9sZCwgbWlzc2luZyBuZXh0aG9wIGRzdF9wb3J0IHN1cHBvcnRcJiMzNDtcbiYjNDM7XHRcdHJldHVybiAka3NmdF9za2lwXG4mIzQzO1x0ZmlcbiYjNDM7fVxuJiM0MztcbiBjaGVja19uZXh0aG9wX3Jlc19zdXBwb3J0KClcbiB7XG4gXHQkSVAgbmV4dGhvcCBoZWxwIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAtcSByZXNpbGllbnRcbkBAIC01NDEsNiAmIzQzOzU1Miw0MSBAQCBpcHY2X2ZkYl9ncnBfZmNuYWwoKVxuIFx0JElQIGxpbmsgZGVsIGRldiB2eDEwXG4gfVxuIFxuJiM0MztpcHY2X2ZkYl9wb3J0X2ZjbmFsKClcbiYjNDM7e1xuJiM0MztcdGVjaG9cbiYjNDM7XHRlY2hvIFwmIzM0O0lQdjYgZmRiIG5leHRob3AgZHN0X3BvcnQgZnVuY3Rpb25hbFwmIzM0O1xuJiM0MztcdGVjaG8gXCYjMzQ7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX25leHRob3BfZmRiX3BvcnRfc3VwcG9ydFxuJiM0MztcdGlmIFsgJD8gLWVxICRrc2Z0X3NraXAgXTsgdGhlblxuJiM0MztcdFx0cmV0dXJuICRrc2Z0X3NraXBcbiYjNDM7XHRmaVxuJiM0MztcbiYjNDM7XHQjIE5IQV9EU1RfUE9SVDogb3B0aW9uYWwgcGVyLW5leHRob3AgVlhMQU4gZGVzdGluYXRpb24gVURQIHBvcnQsXG4mIzQzO1x0IyBsZXR0aW5nIGFuIGZkYiBuZXh0aG9wIGdyb3VwIGJhbGFuY2UgYSBmbG93IGFjcm9zcyBsZWdzIHRoYXQgc2hhcmVcbiYjNDM7XHQjIGFuIHVuZGVybGF5IElQIGJ1dCBsaXN0ZW4gb24gZGlmZmVyZW50IFVEUCBwb3J0cy5cbiYjNDM7XHRydW5fY21kIFwmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCA4MCB2aWEgMjAwMTpkYjg6OTE6OjIgZmRiIGRzdF9wb3J0IDQ3OTBcJiMzNDtcbiYjNDM7XHRjaGVja19uZXh0aG9wIFwmIzM0O2lkIDgwXCYjMzQ7IFwmIzM0O2lkIDgwIHZpYSAyMDAxOmRiODo5MTo6MiBzY29wZSBsaW5rIGZkYiBkc3RfcG9ydCA0NzkwXCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtGZGIgbmV4dGhvcCB3aXRoIGRzdF9wb3J0XCYjMzQ7XG4mIzQzO1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDgxIGZkYiBkc3RfcG9ydCA0NzkwXCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMiBcJiMzNDtGZGIgbmV4dGhvcCB3aXRoIGRzdF9wb3J0IGJ1dCBubyBnYXRld2F5XCYjMzQ7XG4mIzQzO1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDgxIHZpYSAyMDAxOmRiODo5MTo6MiBmZGIgZHN0X3BvcnQgMFwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDIgXCYjMzQ7RmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCAwXCYjMzQ7XG4mIzQzO1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDgyIHZpYSAyMDAxOmRiODo5MTo6MiBmZGIgZHN0X3BvcnQgNDc4OVwmIzM0O1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDgzIHZpYSAyMDAxOmRiODo5MTo6MyBmZGIgZHN0X3BvcnQgNTc4OVwmIzM0O1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDEwNiBncm91cCA4Mi84MyBmZGJcJiMzNDtcbiYjNDM7XHRjaGVja19uZXh0aG9wIFwmIzM0O2lkIDEwNlwmIzM0OyBcJiMzNDtpZCAxMDYgZ3JvdXAgODIvODMgZmRiXCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtGZGIgbmV4dGhvcCBncm91cCB3aXRoIGxlZ3MgZGlmZmVyaW5nIGluIGRzdF9wb3J0XCYjMzQ7XG4mIzQzO1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDg0IHZpYSAyMDAxOmRiODo5MTo6MiBmZGJcJiMzNDtcbiYjNDM7XHRjaGVja19uZXh0aG9wIFwmIzM0O2lkIDg0XCYjMzQ7IFwmIzM0O2lkIDg0IHZpYSAyMDAxOmRiODo5MTo6MiBzY29wZSBsaW5rIGZkYlwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDAgXCYjMzQ7RmRiIG5leHRob3Agd2l0aG91dCBkc3RfcG9ydCBvbWl0cyBkc3RfcG9ydFwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuIGlwdjRfZmRiX2dycF9mY25hbCgpXG4ge1xuIFx0bG9jYWwgcmNcbkBAIC02NDEsNiAmIzQzOzY4Nyw0MSBAQCBpcHY0X2ZkYl9ncnBfZmNuYWwoKVxuIFx0JElQIGxpbmsgZGVsIGRldiB2eDEwXG4gfVxuIFxuJiM0MztpcHY0X2ZkYl9wb3J0X2ZjbmFsKClcbiYjNDM7e1xuJiM0MztcdGVjaG9cbiYjNDM7XHRlY2hvIFwmIzM0O0lQdjQgZmRiIG5leHRob3AgZHN0X3BvcnQgZnVuY3Rpb25hbFwmIzM0O1xuJiM0MztcdGVjaG8gXCYjMzQ7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGNoZWNrX25leHRob3BfZmRiX3BvcnRfc3VwcG9ydFxuJiM0MztcdGlmIFsgJD8gLWVxICRrc2Z0X3NraXAgXTsgdGhlblxuJiM0MztcdFx0cmV0dXJuICRrc2Z0X3NraXBcbiYjNDM7XHRmaVxuJiM0MztcbiYjNDM7XHQjIE5IQV9EU1RfUE9SVDogb3B0aW9uYWwgcGVyLW5leHRob3AgVlhMQU4gZGVzdGluYXRpb24gVURQIHBvcnQsXG4mIzQzO1x0IyBsZXR0aW5nIGFuIGZkYiBuZXh0aG9wIGdyb3VwIGJhbGFuY2UgYSBmbG93IGFjcm9zcyBsZWdzIHRoYXQgc2hhcmVcbiYjNDM7XHQjIGFuIHVuZGVybGF5IElQIGJ1dCBsaXN0ZW4gb24gZGlmZmVyZW50IFVEUCBwb3J0cy5cbiYjNDM7XHRydW5fY21kIFwmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMCB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgNDc5MFwmIzM0O1xuJiM0MztcdGNoZWNrX25leHRob3AgXCYjMzQ7aWQgMzBcJiMzNDsgXCYjMzQ7aWQgMzAgdmlhIDE3Mi4xNi4xLjIgc2NvcGUgbGluayBmZGIgZHN0X3BvcnQgNDc5MFwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDAgXCYjMzQ7RmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydFwmIzM0O1xuJiM0MztcbiYjNDM7XHRydW5fY21kIFwmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMSBmZGIgZHN0X3BvcnQgNDc5MFwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDIgXCYjMzQ7RmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCBidXQgbm8gZ2F0ZXdheVwmIzM0O1xuJiM0MztcbiYjNDM7XHRydW5fY21kIFwmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMSB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgMFwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDIgXCYjMzQ7RmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCAwXCYjMzQ7XG4mIzQzO1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDMyIHZpYSAxNzIuMTYuMS4yIGZkYiBkc3RfcG9ydCA0Nzg5XCYjMzQ7XG4mIzQzO1x0cnVuX2NtZCBcJiMzNDskSVAgbmV4dGhvcCBhZGQgaWQgMzMgdmlhIDE3Mi4xNi4xLjMgZmRiIGRzdF9wb3J0IDU3ODlcJiMzNDtcbiYjNDM7XHRydW5fY21kIFwmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAxMDUgZ3JvdXAgMzIvMzMgZmRiXCYjMzQ7XG4mIzQzO1x0Y2hlY2tfbmV4dGhvcCBcJiMzNDtpZCAxMDVcJiMzNDsgXCYjMzQ7aWQgMTA1IGdyb3VwIDMyLzMzIGZkYlwmIzM0O1xuJiM0MztcdGxvZ190ZXN0ICQ/IDAgXCYjMzQ7RmRiIG5leHRob3AgZ3JvdXAgd2l0aCBsZWdzIGRpZmZlcmluZyBpbiBkc3RfcG9ydFwmIzM0O1xuJiM0MztcbiYjNDM7XHRydW5fY21kIFwmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzNCB2aWEgMTcyLjE2LjEuMiBmZGJcJiMzNDtcbiYjNDM7XHRjaGVja19uZXh0aG9wIFwmIzM0O2lkIDM0XCYjMzQ7IFwmIzM0O2lkIDM0IHZpYSAxNzIuMTYuMS4yIHNjb3BlIGxpbmsgZmRiXCYjMzQ7XG4mIzQzO1x0bG9nX3Rlc3QgJD8gMCBcJiMzNDtGZGIgbmV4dGhvcCB3aXRob3V0IGRzdF9wb3J0IG9taXRzIGRzdF9wb3J0XCYjMzQ7XG4mIzQzO31cbiYjNDM7XG4gaXB2NF9tcGF0aF9zZWxlY3QoKVxuIHtcbiBcdGxvY2FsIHJjIGRldiBtYXRjaCBoIGFkZHJcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF92eGxhbl9uaC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X3Z4bGFuX25oLnNoXG5pbmRleCAyMGYzMzY5Zjc3NmIxNS4uN2I1ZGMxZDM3ZmEwMjEgMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF92eGxhbl9uaC5zaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Rlc3RfdnhsYW5fbmguc2hcbkBAIC01Niw2ICYjNDM7NTYsMTYgQEAgdGNfc3RhdHNfZ2V0KClcbiBcdHRjX3J1bGVfaGFuZGxlX3N0YXRzX2dldCBcJiMzNDtkZXYgZHVtbXkxIGVncmVzc1wmIzM0OyAxMDEgXCYjMzQ7LnBhY2tldHNcJiMzNDsgXCYjMzQ7LW4gJG5zMVwmIzM0O1xuIH1cbiBcbiYjNDM7bmhfc3RhdHNfZ2V0X3BvcnQoKVxuJiM0Mzt7XG4mIzQzO1x0aXAgLW4gXCYjMzQ7JG5zMVwmIzM0OyAtcyAtaiBuZXh0aG9wIHNob3cgaWQgMjAgfCBqcSBcJiMzNDsuW11bXFxcJiMzNDtncm91cF9zdGF0c1xcXCYjMzQ7XVtdW1xcXCYjMzQ7cGFja2V0c1xcXCYjMzQ7XVwmIzM0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt0Y19zdGF0c19nZXRfcG9ydCgpXG4mIzQzO3tcbiYjNDM7XHR0Y19ydWxlX2hhbmRsZV9zdGF0c19nZXQgXCYjMzQ7ZGV2IGR1bW15MSBlZ3Jlc3NcJiMzNDsgMTAyIFwmIzM0Oy5wYWNrZXRzXCYjMzQ7IFwmIzM0Oy1uICRuczFcJiMzNDtcbiYjNDM7fVxuJiM0MztcbiBiYXNpY190eF9jb21tb24oKVxuIHtcbiBcdGxvY2FsIGFmX3N0cj0kMTsgc2hpZnRcbkBAIC05MCw2ICYjNDM7MTAwLDI2IEBAIGJhc2ljX3R4X2NvbW1vbigpXG4gXHRidXN5d2FpdCBcJiMzNDskQlVTWVdBSVRfVElNRU9VVFwmIzM0OyB1bnRpbF9jb3VudGVyX2lzIFwmIzM0Oz09IDFcJiMzNDsgdGNfc3RhdHNfZ2V0IFx1MDAzZSAvZGV2L251bGxcbiBcdGNoZWNrX2VyciAkPyBcJiMzNDt0YyBmaWx0ZXIgc3RhdHMgZGlkIG5vdCBpbmNyZWFzZVwmIzM0O1xuIFxuJiM0MztcdCMgQWRkIGEgc2Vjb25kIEZEQiBuZXh0aG9wIGdyb3VwIHdob3NlIG5leHRob3AgY2FycmllcyBhIHBlci1uZXh0aG9wXG4mIzQzO1x0IyBkZXN0aW5hdGlvbiBwb3J0IChOSEFfRFNUX1BPUlQpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBWWExBTiBkZXZpY2VcbiYjNDM7XHQjIGRlZmF1bHQuIE1hdGNoaW5nIG91dGVyIHRyYWZmaWMgbXVzdCBlZ3Jlc3Mgd2l0aCB0aGF0IHBvcnQsIHNvIGFcbiYjNDM7XHQjIHNlcGFyYXRlIGZsb3dlciBmaWx0ZXIga2V5ZWQgb24gdGhlIG5ldyBwb3J0IGNhdGNoZXMgaXQuXG4mIzQzO1x0cnVuX2NtZCBcJiMzNDt0YyAtbiAkbnMxIGZpbHRlciBhZGQgZGV2IGR1bW15MSBlZ3Jlc3MgcHJvdG8gJHByb3RvIHByZWYgMSBoYW5kbGUgMTAyIFxcXG4mIzQzO1x0XHRmbG93ZXIgaXBfcHJvdG8gdWRwIGRzdF9pcCAkcmVtb3RlX2FkZHIgZHN0X3BvcnQgNDc5MCBhY3Rpb24gcGFzc1wmIzM0O1xuJiM0MztcbiYjNDM7XHRydW5fY21kIFwmIzM0O2lwIC1uICRuczEgbmV4dGhvcCBhZGQgaWQgMiB2aWEgJHJlbW90ZV9hZGRyIGZkYiBkc3RfcG9ydCA0NzkwXCYjMzQ7XG4mIzQzO1x0cnVuX2NtZCBcJiMzNDtpcCAtbiAkbnMxIG5leHRob3AgYWRkIGlkIDIwIGdyb3VwIDIgZmRiXCYjMzQ7XG4mIzQzO1xuJiM0MztcdHJ1bl9jbWQgXCYjMzQ7YnJpZGdlIC1uICRuczEgZmRiIGFkZCAwMDoxMToyMjozMzo0NDo2NiBkZXYgdngwIHNlbGYgc3RhdGljIG5oaWQgMjBcJiMzNDtcbiYjNDM7XG4mIzQzO1x0cnVuX2NtZCBcJiMzNDtpcCBuZXRucyBleGVjICRuczEgbWF1c2V6YWhuIHZ4MCAtYSBvd24gLWIgMDA6MTE6MjI6MzM6NDQ6NjYgLWMgMSAtcVwmIzM0O1xuJiM0MztcbiYjNDM7XHRidXN5d2FpdCBcJiMzNDskQlVTWVdBSVRfVElNRU9VVFwmIzM0OyB1bnRpbF9jb3VudGVyX2lzIFwmIzM0Oz09IDFcJiMzNDsgbmhfc3RhdHNfZ2V0X3BvcnQgXHUwMDNlIC9kZXYvbnVsbFxuJiM0MztcdGNoZWNrX2VyciAkPyBcJiMzNDtGREIgbmV4dGhvcCBncm91cCBzdGF0cyBkaWQgbm90IGluY3JlYXNlICh3aXRoIHBvcnQpXCYjMzQ7XG4mIzQzO1xuJiM0MztcdGJ1c3l3YWl0IFwmIzM0OyRCVVNZV0FJVF9USU1FT1VUXCYjMzQ7IHVudGlsX2NvdW50ZXJfaXMgXCYjMzQ7PT0gMVwmIzM0OyB0Y19zdGF0c19nZXRfcG9ydCBcdTAwM2UgL2Rldi9udWxsXG4mIzQzO1x0Y2hlY2tfZXJyICQ/IFwmIzM0O3RjIGZpbHRlciBzdGF0cyBkaWQgbm90IGluY3JlYXNlICh3aXRoIHBvcnQpXCYjMzQ7XG4mIzQzO1xuIFx0bG9nX3Rlc3QgXCYjMzQ7VlhMQU4gRkRCIG5leHRob3A6ICRhZl9zdHIgYmFzaWMgVHhcJiMzNDtcbiB9XG4gXG5AQCAtMjEwLDggJiM0MzsyNDAsOCBAQCByZXF1aXJlX2NvbW1hbmQgYXJwaW5nXG4gcmVxdWlyZV9jb21tYW5kIG5kaXNjNlxuIHJlcXVpcmVfY29tbWFuZCBqcVxuIFxuLWlmICEgaXAgbmV4dGhvcCBoZWxwIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAtcSBcJiMzNDtzdGF0c1wmIzM0OzsgdGhlblxuLVx0ZWNobyBcJiMzNDtTS0lQOiBpcHJvdXRlMiBpcCB0b28gb2xkLCBtaXNzaW5nIG5leHRob3Agc3RhdHMgc3VwcG9ydFwmIzM0O1xuJiM0MztpZiAhIGlwIG5leHRob3AgaGVscCAyXHUwMDNlXHUwMDI2MSB8IGdyZXAgLXEgXCYjMzQ7ZHN0X3BvcnRcJiMzNDs7IHRoZW5cbiYjNDM7XHRlY2hvIFwmIzM0O1NLSVA6IGlwcm91dGUyIGlwIHRvbyBvbGQsIG1pc3NpbmcgbmV4dGhvcCBkc3RfcG9ydCBzdXBwb3J0XCYjMzQ7XG4gXHRleGl0IFwmIzM0OyRrc2Z0X3NraXBcJiMzNDtcbiBmaVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWWExBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bV9uZXdfbmV4dGhvcCYjMzQ7LAogICAgJiMzNDtydG1fdG9fbmhfY29uZmlnJiMzNDssCiAgICAmIzM0O25leHRob3BfY3JlYXRlJiMzNDssCiAgICAmIzM0O25oX2ZpbGxfbm9kZSYjMzQ7LAogICAgJiMzNDt2eGxhbl94bWl0X25oJiMzNDssCiAgICAmIzM0O3Z4bGFuX3htaXRfbmhpZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYSBkZXN0aW5hdGlvbiBwb3J0IChuaF9kc3RfcG9ydCkgb24gZmRiIG5leHRob3BzIChlLmcuLCBWWExBTikuIEl0IG1vZGlmaWVzIHRoZSBuZXRsaW5rIEFQSSB0byBwYXJzZSBOSEFfRFNUX1BPUlQsIHN0b3JlcyBpdCBpbiB0aGUgbmV4dGhvcCBjb25maWd1cmF0aW9uLCBhbmQgdXNlcyBpdCBkdXJpbmcgVlhMQU4gdHJhbnNtaXQgcGF0aCBzZWxlY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIGFuZCBWWExBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTQyYmIyMjBiYzg3NWY0ZTYyYTFkOGUzOWE2MGM1ZDQxMDgyYjQ0YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDI0IDAzOjE3OjQyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oIGIvaW5jbHVkZS9uZXQvbmV4dGhvcC5oCmluZGV4IDU3MmU2OWNkYTQ3NjZkLi5mODZjMTE1MDc0ZDdhYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L25leHRob3AuaApAQCAtMjgsNiAmIzQzOzI4LDcgQEAgc3RydWN0IG5oX2NvbmZpZyB7CiAJdTgJCW5oX3Byb3RvY29sOwogCXU4CQluaF9ibGFja2hvbGU7CiAJdTgJCW5oX2ZkYjsKJiM0MzsJX19iZTE2CQluaF9kc3RfcG9ydDsKIAl1MzIJCW5oX2ZsYWdzOwogCiAJaW50CQluaF9pZmluZGV4OwpAQCAtNjMsNiAmIzQzOzY0LDcgQEAgc3RydWN0IG5oX2luZm8gewogCXU4CQkJZmFtaWx5OwogCWJvb2wJCQlyZWplY3Rfbmg7CiAJYm9vbAkJCWZkYl9uaDsKJiM0MzsJX19iZTE2CQkJZHN0X3BvcnQ7CiAKIAl1bmlvbiB7CiAJCXN0cnVjdCBmaWJfbmhfY29tbW9uCWZpYl9uaGM7CkBAIC01NzQsNyAmIzQzOzU3Niw4IEBAIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX2ZkYl9uaGMoc3RydWN0IG5leHRob3AgKm5oKQogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChzdHJ1Y3QgbmV4dGhvcCAqbmgsCi0JCQkJCQkJICAgIGludCBoYXNoKQomIzQzOwkJCQkJCQkgICAgaW50IGhhc2gsCiYjNDM7CQkJCQkJCSAgICBfX2JlMTYgKmRzdF9wb3J0KQogewogCXN0cnVjdCBuaF9pbmZvICpuaGk7CiAJc3RydWN0IG5leHRob3AgKm5ocDsKQEAgLTU4Myw2ICYjNDM7NTg2LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQoc3RydWN0IG5leHRob3AgKm5oLAogCWlmICh1bmxpa2VseSghbmhwKSkKIAkJcmV0dXJuIE5VTEw7CiAJbmhpID0gcmN1X2RlcmVmZXJlbmNlKG5ocC0mZ3Q7bmhfaW5mbyk7CiYjNDM7CSpkc3RfcG9ydCA9IG5oaS0mZ3Q7ZHN0X3BvcnQ7CiAJcmV0dXJuICZhbXA7bmhpLSZndDtmaWJfbmhjOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC92eGxhbi5oIGIvaW5jbHVkZS9uZXQvdnhsYW4uaAppbmRleCBkZmJhODk2OTVlZmNmYS4uNmU2NDc1NzE1MWI4OGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3Z4bGFuLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvdnhsYW4uaApAQCAtNTY3LDggJiM0Mzs1NjcsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KHN0cnVjdCBuZXh0aG9wICpuaCwKIAkJCQkJICAgIHN0cnVjdCB2eGxhbl9yZHN0ICpyZHN0KQogewogCXN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGM7CiYjNDM7CV9fYmUxNiBkc3RfcG9ydCA9IDA7CiAKLQluaGMgPSBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChuaCwgaGFzaCAmZ3Q7Jmd0OyAxKTsKJiM0MzsJbmhjID0gbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQobmgsIGhhc2ggJmd0OyZndDsgMSwgJmFtcDtkc3RfcG9ydCk7CiAJaWYgKHVubGlrZWx5KCFuaGMpKQogCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTU4Myw2ICYjNDM7NTg0LDggQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsCiAJCWJyZWFrOwogCX0KIAomIzQzOwlyZHN0LSZndDtyZW1vdGVfcG9ydCA9IGRzdF9wb3J0OwomIzQzOwogCXJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaAppbmRleCBiYzQ5YmFmNGEyNjdmMC4uNTljZjFjZWU5M2JkNzAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaApAQCAtODMsNiAmIzQzOzgzLDkgQEAgZW51bSB7CiAJLyogdTMyOyByZWFkLW9ubHk7IHdoZXRoZXIgYW55IGRyaXZlciBjb2xsZWN0cyBIVyBzdGF0cyAqLwogCU5IQV9IV19TVEFUU19VU0VELAogCiYjNDM7CS8qIGJlMTY7IFVEUCBkZXN0aW5hdGlvbiBwb3J0IGZvciBhbiBmZGIgbmV4dGhvcCAoZS5nLiBWWExBTikgKi8KJiM0MzsJTkhBX0RTVF9QT1JULAomIzQzOwogCV9fTkhBX01BWCwKIH07CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25leHRob3AuYyBiL25ldC9pcHY0L25leHRob3AuYwppbmRleCA2MjA1YmQ1N2FhODUyMC4uMDAyMTM4MGI4YzFkZWYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L25leHRob3AuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9uZXh0aG9wLmMKQEAgLTM5LDYgJiM0MzszOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBydG1fbmhfcG9saWN5X25ld1tdID0gewogCVtOSEFfRU5DQVBfVFlQRV0JPSB7IC50eXBlID0gTkxBX1UxNiB9LAogCVtOSEFfRU5DQVBdCQk9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sCiAJW05IQV9GREJdCQk9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LAomIzQzOwlbTkhBX0RTVF9QT1JUXQkJPSBOTEFfUE9MSUNZX01JTihOTEFfQkUxNiwgMSksCiAJW05IQV9SRVNfR1JPVVBdCQk9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sCiAJW05IQV9IV19TVEFUU19FTkFCTEVdCT0gTkxBX1BPTElDWV9NQVgoTkxBX1UzMiwgdHJ1ZSksCiB9OwpAQCAtOTU2LDYgJiM0Mzs5NTcsOSBAQCBzdGF0aWMgaW50IG5oX2ZpbGxfbm9kZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV4dGhvcCAqbmgsCiAJfSBlbHNlIGlmIChuaGktJmd0O2ZkYl9uaCkgewogCQlpZiAobmxhX3B1dF9mbGFnKHNrYiwgTkhBX0ZEQikpCiAJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKJiM0MzsJCWlmIChuaGktJmd0O2RzdF9wb3J0ICZhbXA7JmFtcDsKJiM0MzsJCSAgICBubGFfcHV0X2JlMTYoc2tiLCBOSEFfRFNUX1BPUlQsIG5oaS0mZ3Q7ZHN0X3BvcnQpKQomIzQzOwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOwogCX0gZWxzZSB7CiAJCWNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAKQEAgLTEwNTUsNiAmIzQzOzEwNTksOSBAQCBzdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaCkKIAkJYnJlYWs7CiAJfQogCiYjNDM7CWlmIChuaGktJmd0O2RzdF9wb3J0KQomIzQzOwkJc3ogJiM0Mzs9IG5sYV90b3RhbF9zaXplKDIpOwkvKiBOSEFfRFNUX1BPUlQgKi8KJiM0MzsKIAlpZiAobmhpLSZndDtmaWJfbmhjLm5oY19sd3RzdGF0ZSkgewogCQlzeiAmIzQzOz0gbHd0dW5uZWxfZ2V0X2VuY2FwX3NpemUobmhpLSZndDtmaWJfbmhjLm5oY19sd3RzdGF0ZSk7CiAJCXN6ICYjNDM7PSBubGFfdG90YWxfc2l6ZSgyKTsgIC8qIE5IQV9FTkNBUF9UWVBFICovCkBAIC0yOTU2LDggJiM0MzsyOTYzLDEwIEBAIHN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsCiAJbmhpLSZndDtmYW1pbHkgPSBjZmctJmd0O25oX2ZhbWlseTsKIAluaGktJmd0O2ZpYl9uaGMubmhjX3Njb3BlID0gUlRfU0NPUEVfTElOSzsKIAotCWlmIChjZmctJmd0O25oX2ZkYikKJiM0MzsJaWYgKGNmZy0mZ3Q7bmhfZmRiKSB7CiAJCW5oaS0mZ3Q7ZmRiX25oID0gMTsKJiM0MzsJCW5oaS0mZ3Q7ZHN0X3BvcnQgPSBjZmctJmd0O25oX2RzdF9wb3J0OwomIzQzOwl9CiAKIAlpZiAoY2ZnLSZndDtuaF9ibGFja2hvbGUpIHsKIAkJbmhpLSZndDtyZWplY3RfbmggPSAxOwpAQCAtMzE0Nyw2ICYjNDM7MzE1NiwxNSBAQCBzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQljZmctJmd0O25oX2ZkYiA9IG5sYV9nZXRfZmxhZyh0YltOSEFfRkRCXSk7CiAJfQogCiYjNDM7CWlmICh0YltOSEFfRFNUX1BPUlRdKSB7CiYjNDM7CQlpZiAoIXRiW05IQV9GREJdIHx8ICF0YltOSEFfR0FURVdBWV0pIHsKJiM0MzsJCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssCiYjNDM7CQkJCSAgICAgICAmIzM0O0Rlc3RpbmF0aW9uIHBvcnQgY2FuIG9ubHkgYmUgc2V0IG9uIGZkYiBuZXh0aG9wcyB0aGF0IGhhdmUgYSBnYXRld2F5JiMzNDspOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwkJY2ZnLSZndDtuaF9kc3RfcG9ydCA9IG5sYV9nZXRfYmUxNih0YltOSEFfRFNUX1BPUlRdKTsKJiM0MzsJfQomIzQzOwogCWlmICh0YltOSEFfR1JPVVBdKSB7CiAJCWlmIChuaG0tJmd0O25oX2ZhbWlseSAhPSBBRl9VTlNQRUMpIHsKIAkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtJbnZhbGlkIGZhbWlseSBmb3IgZ3JvdXAmIzM0Oyk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wcy5zaAppbmRleCBhYzg2OGE3MzE2OTQ2YS4uODM0YmExYzA2NzZjODAgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHMuc2gKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wcy5zaApAQCAtMzAsNiAmIzQzOzMwLDcgQEAgSVBWNF9URVNUUz0mIzM0OwogCWlwdjRfbGFyZ2VfcmVzX2dycAogCWlwdjRfY29tcGF0X21vZGUKIAlpcHY0X2ZkYl9ncnBfZmNuYWwKJiM0MzsJaXB2NF9mZGJfcG9ydF9mY25hbAogCWlwdjRfbXBhdGhfc2VsZWN0CiAJaXB2NF90b3J0dXJlCiAJaXB2NF9yZXNfdG9ydHVyZQpAQCAtNDQsNiAmIzQzOzQ1LDcgQEAgSVBWNl9URVNUUz0mIzM0OwogCWlwdjZfbGFyZ2VfcmVzX2dycAogCWlwdjZfY29tcGF0X21vZGUKIAlpcHY2X2ZkYl9ncnBfZmNuYWwKJiM0MzsJaXB2Nl9mZGJfcG9ydF9mY25hbAogCWlwdjZfbXBhdGhfc2VsZWN0CiAJaXB2Nl90b3J0dXJlCiAJaXB2Nl9yZXNfdG9ydHVyZQpAQCAtNDMyLDYgJiM0Mzs0MzQsMTUgQEAgY2hlY2tfbmV4dGhvcF9mZGJfc3VwcG9ydCgpCiAJZmkKIH0KIAomIzQzO2NoZWNrX25leHRob3BfZmRiX3BvcnRfc3VwcG9ydCgpCiYjNDM7ewomIzQzOwkkSVAgbmV4dGhvcCBoZWxwIDImZ3Q7JmFtcDsxIHwgZ3JlcCAtcSAmIzM0O2RzdF9wb3J0JiMzNDsKJiM0MzsJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCiYjNDM7CQllY2hvICYjMzQ7U0tJUDogaXByb3V0ZTIgdG9vIG9sZCwgbWlzc2luZyBuZXh0aG9wIGRzdF9wb3J0IHN1cHBvcnQmIzM0OwomIzQzOwkJcmV0dXJuICRrc2Z0X3NraXAKJiM0MzsJZmkKJiM0Mzt9CiYjNDM7CiBjaGVja19uZXh0aG9wX3Jlc19zdXBwb3J0KCkKIHsKIAkkSVAgbmV4dGhvcCBoZWxwIDImZ3Q7JmFtcDsxIHwgZ3JlcCAtcSByZXNpbGllbnQKQEAgLTU0MSw2ICYjNDM7NTUyLDQxIEBAIGlwdjZfZmRiX2dycF9mY25hbCgpCiAJJElQIGxpbmsgZGVsIGRldiB2eDEwCiB9CiAKJiM0MztpcHY2X2ZkYl9wb3J0X2ZjbmFsKCkKJiM0Mzt7CiYjNDM7CWVjaG8KJiM0MzsJZWNobyAmIzM0O0lQdjYgZmRiIG5leHRob3AgZHN0X3BvcnQgZnVuY3Rpb25hbCYjMzQ7CiYjNDM7CWVjaG8gJiMzNDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzM0OwomIzQzOwomIzQzOwljaGVja19uZXh0aG9wX2ZkYl9wb3J0X3N1cHBvcnQKJiM0MzsJaWYgWyAkPyAtZXEgJGtzZnRfc2tpcCBdOyB0aGVuCiYjNDM7CQlyZXR1cm4gJGtzZnRfc2tpcAomIzQzOwlmaQomIzQzOwomIzQzOwkjIE5IQV9EU1RfUE9SVDogb3B0aW9uYWwgcGVyLW5leHRob3AgVlhMQU4gZGVzdGluYXRpb24gVURQIHBvcnQsCiYjNDM7CSMgbGV0dGluZyBhbiBmZGIgbmV4dGhvcCBncm91cCBiYWxhbmNlIGEgZmxvdyBhY3Jvc3MgbGVncyB0aGF0IHNoYXJlCiYjNDM7CSMgYW4gdW5kZXJsYXkgSVAgYnV0IGxpc3RlbiBvbiBkaWZmZXJlbnQgVURQIHBvcnRzLgomIzQzOwlydW5fY21kICYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDgwIHZpYSAyMDAxOmRiODo5MTo6MiBmZGIgZHN0X3BvcnQgNDc5MCYjMzQ7CiYjNDM7CWNoZWNrX25leHRob3AgJiMzNDtpZCA4MCYjMzQ7ICYjMzQ7aWQgODAgdmlhIDIwMDE6ZGI4OjkxOjoyIHNjb3BlIGxpbmsgZmRiIGRzdF9wb3J0IDQ3OTAmIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAwICYjMzQ7RmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCYjMzQ7CiYjNDM7CiYjNDM7CXJ1bl9jbWQgJiMzNDskSVAgbmV4dGhvcCBhZGQgaWQgODEgZmRiIGRzdF9wb3J0IDQ3OTAmIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAyICYjMzQ7RmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCBidXQgbm8gZ2F0ZXdheSYjMzQ7CiYjNDM7CiYjNDM7CXJ1bl9jbWQgJiMzNDskSVAgbmV4dGhvcCBhZGQgaWQgODEgdmlhIDIwMDE6ZGI4OjkxOjoyIGZkYiBkc3RfcG9ydCAwJiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMiAmIzM0O0ZkYiBuZXh0aG9wIHdpdGggZHN0X3BvcnQgMCYjMzQ7CiYjNDM7CiYjNDM7CXJ1bl9jbWQgJiMzNDskSVAgbmV4dGhvcCBhZGQgaWQgODIgdmlhIDIwMDE6ZGI4OjkxOjoyIGZkYiBkc3RfcG9ydCA0Nzg5JiMzNDsKJiM0MzsJcnVuX2NtZCAmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCA4MyB2aWEgMjAwMTpkYjg6OTE6OjMgZmRiIGRzdF9wb3J0IDU3ODkmIzM0OwomIzQzOwlydW5fY21kICYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDEwNiBncm91cCA4Mi84MyBmZGImIzM0OwomIzQzOwljaGVja19uZXh0aG9wICYjMzQ7aWQgMTA2JiMzNDsgJiMzNDtpZCAxMDYgZ3JvdXAgODIvODMgZmRiJiMzNDsKJiM0MzsJbG9nX3Rlc3QgJD8gMCAmIzM0O0ZkYiBuZXh0aG9wIGdyb3VwIHdpdGggbGVncyBkaWZmZXJpbmcgaW4gZHN0X3BvcnQmIzM0OwomIzQzOwomIzQzOwlydW5fY21kICYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDg0IHZpYSAyMDAxOmRiODo5MTo6MiBmZGImIzM0OwomIzQzOwljaGVja19uZXh0aG9wICYjMzQ7aWQgODQmIzM0OyAmIzM0O2lkIDg0IHZpYSAyMDAxOmRiODo5MTo6MiBzY29wZSBsaW5rIGZkYiYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDAgJiMzNDtGZGIgbmV4dGhvcCB3aXRob3V0IGRzdF9wb3J0IG9taXRzIGRzdF9wb3J0JiMzNDsKJiM0Mzt9CiYjNDM7CiBpcHY0X2ZkYl9ncnBfZmNuYWwoKQogewogCWxvY2FsIHJjCkBAIC02NDEsNiAmIzQzOzY4Nyw0MSBAQCBpcHY0X2ZkYl9ncnBfZmNuYWwoKQogCSRJUCBsaW5rIGRlbCBkZXYgdngxMAogfQogCiYjNDM7aXB2NF9mZGJfcG9ydF9mY25hbCgpCiYjNDM7ewomIzQzOwllY2hvCiYjNDM7CWVjaG8gJiMzNDtJUHY0IGZkYiBuZXh0aG9wIGRzdF9wb3J0IGZ1bmN0aW9uYWwmIzM0OwomIzQzOwllY2hvICYjMzQ7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiMzNDsKJiM0MzsKJiM0MzsJY2hlY2tfbmV4dGhvcF9mZGJfcG9ydF9zdXBwb3J0CiYjNDM7CWlmIFsgJD8gLWVxICRrc2Z0X3NraXAgXTsgdGhlbgomIzQzOwkJcmV0dXJuICRrc2Z0X3NraXAKJiM0MzsJZmkKJiM0MzsKJiM0MzsJIyBOSEFfRFNUX1BPUlQ6IG9wdGlvbmFsIHBlci1uZXh0aG9wIFZYTEFOIGRlc3RpbmF0aW9uIFVEUCBwb3J0LAomIzQzOwkjIGxldHRpbmcgYW4gZmRiIG5leHRob3AgZ3JvdXAgYmFsYW5jZSBhIGZsb3cgYWNyb3NzIGxlZ3MgdGhhdCBzaGFyZQomIzQzOwkjIGFuIHVuZGVybGF5IElQIGJ1dCBsaXN0ZW4gb24gZGlmZmVyZW50IFVEUCBwb3J0cy4KJiM0MzsJcnVuX2NtZCAmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMCB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgNDc5MCYjMzQ7CiYjNDM7CWNoZWNrX25leHRob3AgJiMzNDtpZCAzMCYjMzQ7ICYjMzQ7aWQgMzAgdmlhIDE3Mi4xNi4xLjIgc2NvcGUgbGluayBmZGIgZHN0X3BvcnQgNDc5MCYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDAgJiMzNDtGZGIgbmV4dGhvcCB3aXRoIGRzdF9wb3J0JiMzNDsKJiM0MzsKJiM0MzsJcnVuX2NtZCAmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMSBmZGIgZHN0X3BvcnQgNDc5MCYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDIgJiMzNDtGZGIgbmV4dGhvcCB3aXRoIGRzdF9wb3J0IGJ1dCBubyBnYXRld2F5JiMzNDsKJiM0MzsKJiM0MzsJcnVuX2NtZCAmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMSB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgMCYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDIgJiMzNDtGZGIgbmV4dGhvcCB3aXRoIGRzdF9wb3J0IDAmIzM0OwomIzQzOwomIzQzOwlydW5fY21kICYjMzQ7JElQIG5leHRob3AgYWRkIGlkIDMyIHZpYSAxNzIuMTYuMS4yIGZkYiBkc3RfcG9ydCA0Nzg5JiMzNDsKJiM0MzsJcnVuX2NtZCAmIzM0OyRJUCBuZXh0aG9wIGFkZCBpZCAzMyB2aWEgMTcyLjE2LjEuMyBmZGIgZHN0X3BvcnQgNTc4OSYjMzQ7CiYjNDM7CXJ1bl9jbWQgJiMzNDskSVAgbmV4dGhvcCBhZGQgaWQgMTA1IGdyb3VwIDMyLzMzIGZkYiYjMzQ7CiYjNDM7CWNoZWNrX25leHRob3AgJiMzNDtpZCAxMDUmIzM0OyAmIzM0O2lkIDEwNSBncm91cCAzMi8zMyBmZGImIzM0OwomIzQzOwlsb2dfdGVzdCAkPyAwICYjMzQ7RmRiIG5leHRob3AgZ3JvdXAgd2l0aCBsZWdzIGRpZmZlcmluZyBpbiBkc3RfcG9ydCYjMzQ7CiYjNDM7CiYjNDM7CXJ1bl9jbWQgJiMzNDskSVAgbmV4dGhvcCBhZGQgaWQgMzQgdmlhIDE3Mi4xNi4xLjIgZmRiJiMzNDsKJiM0MzsJY2hlY2tfbmV4dGhvcCAmIzM0O2lkIDM0JiMzNDsgJiMzNDtpZCAzNCB2aWEgMTcyLjE2LjEuMiBzY29wZSBsaW5rIGZkYiYjMzQ7CiYjNDM7CWxvZ190ZXN0ICQ/IDAgJiMzNDtGZGIgbmV4dGhvcCB3aXRob3V0IGRzdF9wb3J0IG9taXRzIGRzdF9wb3J0JiMzNDsKJiM0Mzt9CiYjNDM7CiBpcHY0X21wYXRoX3NlbGVjdCgpCiB7CiAJbG9jYWwgcmMgZGV2IG1hdGNoIGggYWRkcgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Rlc3RfdnhsYW5fbmguc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF92eGxhbl9uaC5zaAppbmRleCAyMGYzMzY5Zjc3NmIxNS4uN2I1ZGMxZDM3ZmEwMjEgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X3Z4bGFuX25oLnNoCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X3Z4bGFuX25oLnNoCkBAIC01Niw2ICYjNDM7NTYsMTYgQEAgdGNfc3RhdHNfZ2V0KCkKIAl0Y19ydWxlX2hhbmRsZV9zdGF0c19nZXQgJiMzNDtkZXYgZHVtbXkxIGVncmVzcyYjMzQ7IDEwMSAmIzM0Oy5wYWNrZXRzJiMzNDsgJiMzNDstbiAkbnMxJiMzNDsKIH0KIAomIzQzO25oX3N0YXRzX2dldF9wb3J0KCkKJiM0Mzt7CiYjNDM7CWlwIC1uICYjMzQ7JG5zMSYjMzQ7IC1zIC1qIG5leHRob3Agc2hvdyBpZCAyMCB8IGpxICYjMzQ7LltdW1wmIzM0O2dyb3VwX3N0YXRzXCYjMzQ7XVtdW1wmIzM0O3BhY2tldHNcJiMzNDtdJiMzNDsKJiM0Mzt9CiYjNDM7CiYjNDM7dGNfc3RhdHNfZ2V0X3BvcnQoKQomIzQzO3sKJiM0MzsJdGNfcnVsZV9oYW5kbGVfc3RhdHNfZ2V0ICYjMzQ7ZGV2IGR1bW15MSBlZ3Jlc3MmIzM0OyAxMDIgJiMzNDsucGFja2V0cyYjMzQ7ICYjMzQ7LW4gJG5zMSYjMzQ7CiYjNDM7fQomIzQzOwogYmFzaWNfdHhfY29tbW9uKCkKIHsKIAlsb2NhbCBhZl9zdHI9JDE7IHNoaWZ0CkBAIC05MCw2ICYjNDM7MTAwLDI2IEBAIGJhc2ljX3R4X2NvbW1vbigpCiAJYnVzeXdhaXQgJiMzNDskQlVTWVdBSVRfVElNRU9VVCYjMzQ7IHVudGlsX2NvdW50ZXJfaXMgJiMzNDs9PSAxJiMzNDsgdGNfc3RhdHNfZ2V0ICZndDsgL2Rldi9udWxsCiAJY2hlY2tfZXJyICQ/ICYjMzQ7dGMgZmlsdGVyIHN0YXRzIGRpZCBub3QgaW5jcmVhc2UmIzM0OwogCiYjNDM7CSMgQWRkIGEgc2Vjb25kIEZEQiBuZXh0aG9wIGdyb3VwIHdob3NlIG5leHRob3AgY2FycmllcyBhIHBlci1uZXh0aG9wCiYjNDM7CSMgZGVzdGluYXRpb24gcG9ydCAoTkhBX0RTVF9QT1JUKSB0aGF0IGRpZmZlcnMgZnJvbSB0aGUgVlhMQU4gZGV2aWNlCiYjNDM7CSMgZGVmYXVsdC4gTWF0Y2hpbmcgb3V0ZXIgdHJhZmZpYyBtdXN0IGVncmVzcyB3aXRoIHRoYXQgcG9ydCwgc28gYQomIzQzOwkjIHNlcGFyYXRlIGZsb3dlciBmaWx0ZXIga2V5ZWQgb24gdGhlIG5ldyBwb3J0IGNhdGNoZXMgaXQuCiYjNDM7CXJ1bl9jbWQgJiMzNDt0YyAtbiAkbnMxIGZpbHRlciBhZGQgZGV2IGR1bW15MSBlZ3Jlc3MgcHJvdG8gJHByb3RvIHByZWYgMSBoYW5kbGUgMTAyIFwKJiM0MzsJCWZsb3dlciBpcF9wcm90byB1ZHAgZHN0X2lwICRyZW1vdGVfYWRkciBkc3RfcG9ydCA0NzkwIGFjdGlvbiBwYXNzJiMzNDsKJiM0MzsKJiM0MzsJcnVuX2NtZCAmIzM0O2lwIC1uICRuczEgbmV4dGhvcCBhZGQgaWQgMiB2aWEgJHJlbW90ZV9hZGRyIGZkYiBkc3RfcG9ydCA0NzkwJiMzNDsKJiM0MzsJcnVuX2NtZCAmIzM0O2lwIC1uICRuczEgbmV4dGhvcCBhZGQgaWQgMjAgZ3JvdXAgMiBmZGImIzM0OwomIzQzOwomIzQzOwlydW5fY21kICYjMzQ7YnJpZGdlIC1uICRuczEgZmRiIGFkZCAwMDoxMToyMjozMzo0NDo2NiBkZXYgdngwIHNlbGYgc3RhdGljIG5oaWQgMjAmIzM0OwomIzQzOwomIzQzOwlydW5fY21kICYjMzQ7aXAgbmV0bnMgZXhlYyAkbnMxIG1hdXNlemFobiB2eDAgLWEgb3duIC1iIDAwOjExOjIyOjMzOjQ0OjY2IC1jIDEgLXEmIzM0OwomIzQzOwomIzQzOwlidXN5d2FpdCAmIzM0OyRCVVNZV0FJVF9USU1FT1VUJiMzNDsgdW50aWxfY291bnRlcl9pcyAmIzM0Oz09IDEmIzM0OyBuaF9zdGF0c19nZXRfcG9ydCAmZ3Q7IC9kZXYvbnVsbAomIzQzOwljaGVja19lcnIgJD8gJiMzNDtGREIgbmV4dGhvcCBncm91cCBzdGF0cyBkaWQgbm90IGluY3JlYXNlICh3aXRoIHBvcnQpJiMzNDsKJiM0MzsKJiM0MzsJYnVzeXdhaXQgJiMzNDskQlVTWVdBSVRfVElNRU9VVCYjMzQ7IHVudGlsX2NvdW50ZXJfaXMgJiMzNDs9PSAxJiMzNDsgdGNfc3RhdHNfZ2V0X3BvcnQgJmd0OyAvZGV2L251bGwKJiM0MzsJY2hlY2tfZXJyICQ/ICYjMzQ7dGMgZmlsdGVyIHN0YXRzIGRpZCBub3QgaW5jcmVhc2UgKHdpdGggcG9ydCkmIzM0OwomIzQzOwogCWxvZ190ZXN0ICYjMzQ7VlhMQU4gRkRCIG5leHRob3A6ICRhZl9zdHIgYmFzaWMgVHgmIzM0OwogfQogCkBAIC0yMTAsOCAmIzQzOzI0MCw4IEBAIHJlcXVpcmVfY29tbWFuZCBhcnBpbmcKIHJlcXVpcmVfY29tbWFuZCBuZGlzYzYKIHJlcXVpcmVfY29tbWFuZCBqcQogCi1pZiAhIGlwIG5leHRob3AgaGVscCAyJmd0OyZhbXA7MSB8IGdyZXAgLXEgJiMzNDtzdGF0cyYjMzQ7OyB0aGVuCi0JZWNobyAmIzM0O1NLSVA6IGlwcm91dGUyIGlwIHRvbyBvbGQsIG1pc3NpbmcgbmV4dGhvcCBzdGF0cyBzdXBwb3J0JiMzNDsKJiM0MztpZiAhIGlwIG5leHRob3AgaGVscCAyJmd0OyZhbXA7MSB8IGdyZXAgLXEgJiMzNDtkc3RfcG9ydCYjMzQ7OyB0aGVuCiYjNDM7CWVjaG8gJiMzNDtTS0lQOiBpcHJvdXRlMiBpcCB0b28gb2xkLCBtaXNzaW5nIG5leHRob3AgZHN0X3BvcnQgc3VwcG9ydCYjMzQ7CiAJZXhpdCAmIzM0OyRrc2Z0X3NraXAmIzM0OwogZmkKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTU0CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5leHRob3AgRGVzdGluYXRpb24gUG9ydCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIHRoZSBjYXBhYmlsaXR5IHRvIHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBwb3J0IChgbmhfZHN0X3BvcnRgKSBmb3IgRkRCIG5leHRob3BzLCBzcGVjaWZpY2FsbHkgd2l0aCBWWExBTiBpbiBtaW5kLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzLCBpdCYjMzk7cyBwcmV0dHkgZm9jdXNlZCBvbiBjb3JlIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUuIEl0IHRvdWNoZXMgY3JpdGljYWwgZmlsZXMg4oCTIGBuZXh0aG9wLmhgLCBgdnhsYW4uaGAsIGBuZXh0aG9wLmhgLCBgbmV4dGhvcC5jYCwgYW5kIHRoZSBzZWxmdGVzdHMuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGhhcyB0aGUgcG90ZW50aWFsIGZvciBzb21lIHN1YnRsZSBpbnRlcmFjdGlvbnMsIHNvIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB3aGVyZSB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuIFRoZSBjaGFuZ2VzIGluIGBuZXQvaXB2NC9uZXh0aG9wLmNgIGFyZSBjcnVjaWFsLiBgcnRtX3RvX25oX2NvbmZpZ2AgaXMgcmVzcG9uc2libGUgZm9yIHBhcnNpbmcgdGhhdCBuZXcgYE5IQV9EU1RfUE9SVGAgYXR0cmlidXRlLiBUaGVuLCBgbmhfZmlsbF9ub2RlYCBhbmQgYG5oX25sbXNnX3NpemVfc2luZ2xlYCBtdXN0IG5vdyBoYW5kbGUgdGhlIHNpemluZyBhbmQgZmlsbGluZyBvZiBuZXRsaW5rIG1lc3NhZ2VzIGZvciB0aGlzIG5ldyBhdHRyaWJ1dGUuIENydWNpYWxseSwgYG5leHRob3BfY3JlYXRlYCBpcyB3aGF0IGFjdHVhbGx5IHNldHMgdGhlIGRlc3RpbmF0aW9uIHBvcnQgd2hlbiBhIG5ldyBuZXh0aG9wIGlzIGNyZWF0ZWQ7IGBuaGktJmd0O2RzdF9wb3J0ID0gY2ZnLSZndDtuaF9kc3RfcG9ydGAuCgpUaGUgY2hhbmdlcyBpbiBgaW5jbHVkZS9uZXQvdnhsYW4uaGAgYXJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAgbm93IHJldHJpZXZlcyB0aGUgYGRzdF9wb3J0YCBmcm9tIGBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdGAgYW5kIHRoZW4gc2V0cyBgcmRzdC0mZ3Q7cmVtb3RlX3BvcnRgLiBTbywgaXQmIzM5O3MgZGlyZWN0bHkgaW50ZWdyYXRpbmcgdGhpcyBkZXN0aW5hdGlvbiBwb3J0IHNldHRpbmcgaW50byB0aGUgVlhMQU4gcGF0aCBzZWxlY3Rpb24gbG9naWMuIFRoaXMgaXMgd2hlcmUgSSB3YW50IHRvIHBheSBzcGVjaWFsIGF0dGVudGlvbiwgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGhhbmRsaW5nIHRoZSBjb3JlIGxvZ2ljIG9mIHVzaW5nIHRoZSB2YWx1ZS4KCkkgbmVlZCB0byBjb25maXJtIHRoZSByZWFjaGFiaWxpdHkgb2YgYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAsIGFuZCBjaGVjayBmb3IgcmVsYXRlZCBmdW5jdGlvbnMgaW4gdGhlIGNvZGViYXNlLiBJIHNlZSBpdCYjMzk7cyBhbiBpbmxpbmUgZnVuY3Rpb24sIHNvIGl0IHNob3VsZCBiZSB3aWRlbHkgdXNlZC4gQnV0IEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggZm9yIGl0cyB1c2VzIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yNjUwPXN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfbmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY2My1cdFx0Z290byBkcm9wO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2NjQ6XHRkb194bWl0ID0gdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KG5oLCBoYXNoLCBcdTAwMjZuaF9yZHN0KTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjY1LVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yNjgwPXN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY5Ny1cdH1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjk4Olx0ZG9feG1pdCA9IHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChuaCwgaGFzaCwgXHUwMDI2bmhfcmRzdCk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY5OS1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmluY2x1ZGUvbmV0L3Z4bGFuLmg9NTM0PXN0YXRpYyBpbmxpbmUgdm9pZCB2eGxhbl9mbGFnX2F0dHJfZXJyb3IoaW50IGF0dHJ0eXBlLFxuLS1cbmluY2x1ZGUvbmV0L3Z4bGFuLmgtNTY0LVxuaW5jbHVkZS9uZXQvdnhsYW4uaDo1NjU6c3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG5pbmNsdWRlL25ldC92eGxhbi5oLTU2Ni1cdFx0XHRcdFx0ICAgIHUzMiBoYXNoLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NDMKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqRGlnZ2luZyBpbnRvIFZYTEFOIFRyYW5zbWlzc2lvbiBMb2dpYyoqCgpBbHJpZ2h0LCBJIHNlZSB0aGF0IHRoZSBgdnhsYW5feG1pdF9uaGAgYW5kIGB2eGxhbl94bWl0X25oaWRgIGZ1bmN0aW9ucyBhcmUgdXRpbGl6aW5nIHNvbWV0aGluZyDigJMgcG90ZW50aWFsbHkgYSBjcml0aWNhbCBzdHJ1Y3R1cmUgb3IgcHJvY2VzcyDigJMgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0IGJldHRlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSByb290cyBvZiB0aGlzIGFuZCBzZWUgaWYgSSBjYW4gZmluZCB0aGUgZnVuY3Rpb24gd2hlcmUgaXQgaXMgYWN0dWFsbHkgY29uZmlndXJlZC4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhpcyBpcyBnb2luZyB0byBiZSBpbiBgcnRtX3RvX25oX2NvbmZpZ2AuIFNvLCBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBgbmV0L2lwdjQvbmV4dGhvcC5jYCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgaXMgYmVpbmcgZGVmaW5lZC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLCBvciBhdCBsZWFzdCBhIG1hcCBmb3Igd2hlcmUgdGhpbmdzIGFyZSBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bV90b19uaF9jb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV4dGhvcC5jPTMwMzg9c3RhdGljIGludCBydG1fbmhfZ2V0X3RpbWVyKHN0cnVjdCBubGF0dHIgKmF0dHIsIHVuc2lnbmVkIGxvbmcgZmFsbGJhY2ssXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMwNjItXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzA2MzpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfZ3JwX3JlcyhzdHJ1Y3QgbmxhdHRyICpyZXMsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbm5ldC9pcHY0L25leHRob3AuYy0zMDY0LVx0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzEwMS1cbm5ldC9pcHY0L25leHRob3AuYzozMTAyOnN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzEwMy1cdFx0XHQgICAgc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBubGF0dHIgKip0Yixcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzE4OS1cdFx0aWYgKGNmZy1cdTAwM2VuaF9ncnBfdHlwZSA9PSBORVhUSE9QX0dSUF9UWVBFX1JFUylcbm5ldC9pcHY0L25leHRob3AuYzozMTkwOlx0XHRcdGVyciA9IHJ0bV90b19uaF9jb25maWdfZ3JwX3Jlcyh0YltOSEFfUkVTX0dST1VQXSxcbm5ldC9pcHY0L25leHRob3AuYy0zMTkxLVx0XHRcdFx0XHRcdCAgICAgICBjZmcsIGV4dGFjayk7XG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMyNzctXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzI3ODpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfcnRubChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0Yixcbm5ldC9pcHY0L25leHRob3AuYy0zMjc5LVx0XHRcdFx0IHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9MzMxMD1zdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMyNC1cbm5ldC9pcHY0L25leHRob3AuYzozMzI1Olx0ZXJyID0gcnRtX3RvX25oX2NvbmZpZyhuZXQsIHNrYiwgbmxoLCB0YiwgXHUwMDI2Y2ZnLCBleHRhY2spO1xubmV0L2lwdjQvbmV4dGhvcC5jLTMzMjYtXHRpZiAoZXJyKVxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0zMzM2LVxubmV0L2lwdjQvbmV4dGhvcC5jOjMzMzc6XHRlcnIgPSBydG1fdG9fbmhfY29uZmlnX3J0bmwobmV0LCB0YiwgXHUwMDI2Y2ZnLCBleHRhY2spO1xubmV0L2lwdjQvbmV4dGhvcC5jLTMzMzgtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MjgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGNvZGUtcmVsYXRlZCB0aG91Z2h0cywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIHRoZSBOZXh0IEhvcCBDb2RlKioKClJpZ2h0LCBgcnRtX25ld19uZXh0aG9wYCDigJMgdGhhdCYjMzk7cyBhIHNvbGlkIGZ1bmN0aW9uIHRvIHN0YXJ0IHdpdGg7IGl0IGZlZWxzIGxpa2UgdGhlIGtleSBlbnRyeSBwb2ludCBmb3IgdGhpcyB3aG9sZSBuZXh0LWhvcCBjcmVhdGlvbiBwcm9jZXNzLiBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHJlYWxseSBmb2xsb3cgdGhlIGxvZ2ljIGZsb3cgZnJvbSB0aGVyZS4gQW5kIHRoZW4sIGxvb2tpbmcgYXQgdGhlIGNvZGUgSSBzZWUgdGhhdCBgbmhfZmlsbF9ub2RlYCBhbmQgYG5leHRob3BfY3JlYXRlYCBsb29rIGxpa2UgcHJvbWlzaW5nIGZ1bmN0aW9ucyB0byBleGFtaW5lIGFsb25nc2lkZSBgcnRtX25ld19uZXh0aG9wYC4gVGhlIGBuaF9maWxsX25vZGVgIGZ1bmN0aW9uIHNlZW1zIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZywgZ2l2ZW4gdGhlIG5hbWUuIEkgd2FudCB0byBjaGVjayB0aGF0IG9uZSBvdXQgZmlyc3QuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG5vZGUgaXMgYmVpbmcgcG9wdWxhdGVkLCBhbmQgd2hhdCBraW5kIG9mIGRhdGEgaXQgcmVxdWlyZXMgZnJvbSB0aGUgdXNlci4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiBhY3Rpb24gaXRlbSBmb3IgbWUgdG9kYXkgaXMgZmlndXJpbmcgb3V0IGBuaF9maWxsX25vZGVgLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHdoYXQgZ29lcyBpbnRvIGJ1aWxkaW5nIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhIG5leHQgaG9wLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25oX2ZpbGxfbm9kZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmM9ODY2PXN0YXRpYyBpbnQgbmxhX3B1dF9uaF9ncm91cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTkxNC1cbm5ldC9pcHY0L25leHRob3AuYzo5MTU6c3RhdGljIGludCBuaF9maWxsX25vZGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5leHRob3AgKm5oLFxubmV0L2lwdjQvbmV4dGhvcC5jLTkxNi1cdFx0XHRpbnQgZXZlbnQsIHUzMiBwb3J0aWQsIHUzMiBzZXEsIHVuc2lnbmVkIGludCBubGZsYWdzLFxuLS1cbm5ldC9pcHY0L25leHRob3AuYz0xMDg5PXN0YXRpYyB2b2lkIG5leHRob3Bfbm90aWZ5KGludCBldmVudCwgc3RydWN0IG5leHRob3AgKm5oLCBzdHJ1Y3QgbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMTA5OS1cbm5ldC9pcHY0L25leHRob3AuYzoxMTAwOlx0ZXJyID0gbmhfZmlsbF9ub2RlKHNrYiwgbmgsIGV2ZW50LCBpbmZvLVx1MDAzZXBvcnRpZCwgc2VxLCBubGZsYWdzLCAwKTtcbm5ldC9pcHY0L25leHRob3AuYy0xMTAxLVx0aWYgKGVyciBcdTAwM2MgMCkge1xuLS1cbm5ldC9pcHY0L25leHRob3AuYz0zNDE4PXN0YXRpYyBpbnQgcnRtX2dldF9uZXh0aG9wKHN0cnVjdCBza19idWZmICppbl9za2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0zNDQ4LVxubmV0L2lwdjQvbmV4dGhvcC5jOjM0NDk6XHRlcnIgPSBuaF9maWxsX25vZGUoc2tiLCBuaCwgUlRNX05FV05FWFRIT1AsIE5FVExJTktfQ0IoaW5fc2tiKS5wb3J0aWQsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzQ1MC1cdFx0XHQgICBubGgtXHUwMDNlbmxtc2dfc2VxLCAwLCBvcF9mbGFncyk7XG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jPTM2Mzc9c3RhdGljIGludCBydG1fZHVtcF9uZXh0aG9wX2NiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYixcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzY0NS1cbm5ldC9pcHY0L25leHRob3AuYzozNjQ2Olx0cmV0dXJuIG5oX2ZpbGxfbm9kZShza2IsIG5oLCBSVE1fTkVXTkVYVEhPUCxcbm5ldC9pcHY0L25leHRob3AuYy0zNjQ3LVx0XHRcdCAgICBORVRMSU5LX0NCKGNiLVx1MDAzZXNrYikucG9ydGlkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1ODMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQgb2YgTmV4dGhvcCBNYW5hZ2VtZW50KioKCkFscmlnaHQsIHNvIEkgc2VlIGEgY2xlYXIgZ3JvdXAgb2YgZnVuY3Rpb25zIGhlcmUg4oCTIGBydG1fbmV3X25leHRob3BgLCBgcnRtX2dldF9uZXh0aG9wYCwgYHJ0bV9kdW1wX25leHRob3BfY2JgLCBhbmQgYG5leHRob3Bfbm90aWZ5YC4gVGhlc2UgYXJlIHRoZSBvbmVzIGFjdGl2ZWx5IGludm9sdmVkIGluIGNhbGxpbmcgZnVuY3Rpb25zIGZvciB0aGUgbmV4dGhvcCBwcm9jZXNzZXMuIFRoYXQmIzM5O3MgZ29vZCwgaXQgaGVscHMgdG8gaWRlbnRpZnkgdGhlIHBvdGVudGlhbCBlbnRyeSBhbmQgZXhpdCBwb2ludHMgZm9yIG5leHRob3AgaW50ZXJhY3Rpb24uIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBjcmVhdGlvbiBmdW5jdGlvbiwgYG5leHRob3BfY3JlYXRlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhlc2UgY2FsbHMgdHJpZ2dlciBhbmQgZmVlZCBpbnRvIG5leHRob3AgY3JlYXRpb24gdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUgYW5kIHBvdGVudGlhbCBpc3N1ZXMuIExldCYjMzk7cyBzZWUgaG93IHRoYXQgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25leHRob3BfY3JlYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9maWIuYz0xMDkwPXN0YXRpYyB2b2lkIG5zaW1fZmliX2R1bXBfaW5jb25zaXN0ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2ZpYi5jLTExMTEtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmM6MTExMjpzdGF0aWMgc3RydWN0IG5zaW1fbmV4dGhvcCAqbnNpbV9uZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbnNpbV9maWJfZGF0YSAqZGF0YSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9maWIuYy0xMTEzLVx0XHRcdFx0XHRcdHN0cnVjdCBuaF9ub3RpZmllcl9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9maWIuYz0xMjU2PXN0YXRpYyBpbnQgbnNpbV9uZXh0aG9wX2luc2VydChzdHJ1Y3QgbnNpbV9maWJfZGF0YSAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmMtMTI2MS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9maWIuYzoxMjYyOlx0bmV4dGhvcCA9IG5zaW1fbmV4dGhvcF9jcmVhdGUoZGF0YSwgaW5mbyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmMtMTI2My1cdGlmIChJU19FUlIobmV4dGhvcCkpXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jPTI3NDY9c3RhdGljIHZvaWQgZmx1c2hfYWxsX25leHRob3BzKHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMjc2MS1cbm5ldC9pcHY0L25leHRob3AuYzoyNzYyOnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGVfZ3JvdXAoc3RydWN0IG5ldCAqbmV0LFxubmV0L2lwdjQvbmV4dGhvcC5jLTI3NjMtXHRcdFx0XHRcdCAgICBzdHJ1Y3QgbmhfY29uZmlnICpjZmcpXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jPTI5MDg9c3RhdGljIGludCBuaF9jcmVhdGVfaXB2NihzdHJ1Y3QgbmV0ICpuZXQsICBzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTI5NDEtXG5uZXQvaXB2NC9uZXh0aG9wLmM6Mjk0MjpzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5oX2NvbmZpZyAqY2ZnLFxubmV0L2lwdjQvbmV4dGhvcC5jLTI5NDMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jPTMwMDE9c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAxNS1cdGlmIChjZmctXHUwMDNlbmhfZ3JwKVxubmV0L2lwdjQvbmV4dGhvcC5jOjMwMTY6XHRcdG5oID0gbmV4dGhvcF9jcmVhdGVfZ3JvdXAobmV0LCBjZmcpO1xubmV0L2lwdjQvbmV4dGhvcC5jLTMwMTctXHRlbHNlXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzAxODpcdFx0bmggPSBuZXh0aG9wX2NyZWF0ZShuZXQsIGNmZywgZXh0YWNrKTtcbm5ldC9pcHY0L25leHRob3AuYy0zMDE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDUyNwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIElucXVpcnkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBuZXh0aG9wcyBhcmUgY3JlYXRlZCBhbmQgdXNlZC4gSXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgYG5leHRob3BfYWRkYCBpcyBmdW5kYW1lbnRhbCwgYW5kIGl0JiMzOTtzIGNhbGxlZCBieSBgbmV4dGhvcF9jcmVhdGVgLiBGdXJ0aGVyLCBgcnRtX25ld19uZXh0aG9wYCBhbHNvIG1ha2VzIHVzZSBvZiBgbmV4dGhvcF9hZGRgLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gc2V2ZXJhbCBmdW5jdGlvbnMgaWYgSSB3YW50IHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhpcywgc3BlY2lmaWNhbGx5OiBgcnRtX25ld19uZXh0aG9wYCwgYHJ0bV9nZXRfbmV4dGhvcGAsIGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgLCBgdnhsYW5feG1pdF9uaGAsIGFuZCBgdnhsYW5feG1pdF9uaGlkYC4gVGhlc2UgYXBwZWFyIHRvIGJlIHRoZSBrZXkgcG9pbnRzIG9mIGludGVyYWN0aW9uLgoKTm93LCBsZXQgbWUgY2hlY2sgZm9yIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSBhbHJlYWR5IGtub3cgdGhhdCBWWExBTiBuZWVkcyBgQ09ORklHX1ZYTEFOYCwgb2J2aW91c2x5LiBCdXQgd2hhdCBhYm91dCBuZXh0aG9wcyBtb3JlIGdlbmVyYWxseT8gSSB3b25kZXIgaWYgYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgIGlzIHJlcXVpcmVkLCBvciBpZiBgQ09ORklHX05FVGAgYWxvbmUgaXMgc3VmZmljaWVudD8gVGhlIHNhZmVzdCBiZXQgd291bGQgYmUgdG8gY2hlY2sgYG5ldC9pcHY0L0tjb25maWdgIGFuZCBzZWUgd2hhdCB0aGUgbmV4dGhvcCBzZWN0aW9uIHNheXMuIFRoYXQgc2hvdWxkIGNsYXJpZnkgYW55IGJ1aWxkLXRpbWUgcHJlcmVxdWlzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTk4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBJUHY0IE1ha2VmaWxlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBJUHY0IG5ldHdvcmtpbmcgc3RhY2suIFdoZXJlJiMzOTtzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0PyBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHJpZ2h0IGZvciB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGJ1aWxkIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgc3BlY2lmaWMgc3Vic3lzdGVtIGFyZSBnb2luZyB0byBiZSBkZWZpbmVkLiBJdCYjMzk7cyB0aGUgY2VudHJhbCBodWIgZm9yIGhvdyBldmVyeXRoaW5nIElQdjQtcmVsYXRlZCBnZXRzIGNvbXBpbGVkIGFuZCBsaW5rZWQgaW50byB0aGUga2VybmVsLiBUaGlzIGlzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb21wb25lbnQgaXMgYnVpbHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25leHRob3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE2LVx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XHQgICAgIG1ldHJpY3MubyBuZXRsaW5rLm8gbmV4dGhvcC5vIHVkcF90dW5uZWxfc3R1Yi5vXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyODkKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gSVB2NCBhbmQgVlhMQU4gQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gYG5leHRob3Aub2AgaXMgY29uc2lzdGVudGx5IGJ1aWx0IHdpdGggSVB2NCBpbiBtaW5kLiBNYWtlcyBzZW5zZS4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBhc3NvY2lhdGVkIHdpdGggVlhMQU4uIE15IGluaXRpYWwgdGhvdWdodCBpcyBgQ09ORklHX1ZYTEFOYCwgb2J2aW91c2x5LiBUaW1lIHRvIGNoZWNrIHRoZSBzdGFuZGFyZCBsb2NhdGlvbnMgZm9yIHRoZXNlIHNvcnRzIG9mIHRoaW5nczogYGRyaXZlcnMvbmV0L01ha2VmaWxlYCBvciBwZXJoYXBzIGEgbW9yZSBzcGVjaWZpYyBgZHJpdmVycy9uZXQvdnhsYW4vTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIHJlbGV2YW50IGJ1aWxkIGZsYWdzIGFuZCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgZ290IHRvIGJlIG9uZSBvZiB0aG9zZSB0d28gZmlsZXMsIGlmIG5vdCBib3RoIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlPTM1PW9iai0kKENPTkZJR19WSVJUSU9fTkVUKSAmIzQzOz0gdmlydGlvX25ldC5vXG5kcml2ZXJzL25ldC9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfVlhMQU4pICYjNDM7PSB2eGxhbi9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTM3LW9iai0kKENPTkZJR19HRU5FVkUpICYjNDM7PSBnZW5ldmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU5NwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBWWExBTiBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBWWExBTiBzZXR1cCwgYW5kIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnQsIGFzIGV4cGVjdGVkLCBpcyBgQ09ORklHX1ZYTEFOYC4gQnV0IGFyZSB0aGVyZSBhbnkgKm90aGVyKiByZWxldmFudCBjb25maWdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGhpbmsuLi4gdGhlIHRlc3Qgc2NyaXB0IHVzZXMgYG1hdXNlemFobmAsIGB0Y2AsIGFuZCBgYnJpZGdlYCwgd2hpY2ggc3VnZ2VzdHMgYSBmZXcgbW9yZSBwb3NzaWJpbGl0aWVzLiBGb3IgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQsIEkmIzM5O20gdGhpbmtpbmcgYENPTkZJR19ORVRfU0NIX0lOR1JFU1NgLCBgQ09ORklHX05FVF9DTFNfRkxPV0VSYCwgYW5kLCBvZiBjb3Vyc2UsIGBDT05GSUdfQlJJREdFYCBtaWdodCBiZSB1c2VmdWwsIGJ1dCBgQ09ORklHX1ZYTEFOYCBpcyB1bmRvdWJ0ZWRseSB0aGUgbW9zdCBjcml0aWNhbCBmb3IgY29yZSBmdW5jdGlvbmFsaXR5LgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzLiBJJiMzOTt2ZSBnb3QgbXkgaW5pdGlhbCBsaXN0OiBgcnRtX25ld19uZXh0aG9wYCwgYHJ0bV9nZXRfbmV4dGhvcGAsIGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgLCBgdnhsYW5feG1pdF9uaGAsIGFuZCBgdnhsYW5feG1pdF9uaGlkYC4gV2FpdCBhIG1pbnV0ZSwgYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAgaXMgYW4gaW5saW5lIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0IHdvbiYjMzk7dCBiZSBhIGRpcmVjdCB0YXJnZXQgZm9yIGludmVzdGlnYXRpb24sIGJ1dCByYXRoZXIgdGhlIGZ1bmN0aW9ucyAqY2FsbGluZyogaXQsIHdoaWNoIGFyZSBgdnhsYW5feG1pdF9uaGAgYW5kIGB2eGxhbl94bWl0X25oaWRgLiBJdCYjMzk7cyBpbmxpbmUgaW4gYGluY2x1ZGUvbmV0L3Z4bGFuLmhgLCBzbyBJJiMzOTtsbCBwcmlvcml0aXplIHRob3NlIHR3by4KCk9rYXksIHNvIHRoZSBmb2N1c2VkIGxpc3QgaXMgZ29pbmcgdG8gYmU6IGBydG1fbmV3X25leHRob3BgLCBgcnRtX2dldF9uZXh0aG9wYCwgYHJ0bV90b19uaF9jb25maWdgLCBgbmhfZmlsbF9ub2RlYCwgYG5leHRob3BfY3JlYXRlYCwgYHZ4bGFuX3htaXRfbmhgLCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAuIEkgbmVlZCB0byBub3cgdmVyaWZ5IGlmIGB2eGxhbl94bWl0X25oYCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAgYXJlIHN0YXRpYyBhcyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl94bWl0X25oJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yMzQ0PXZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY0OS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjUwOnN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfbmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjUxLVx0XHRcdCAgc3RydWN0IHZ4bGFuX2ZkYiAqZiwgX19iZTMyIHZuaSwgYm9vbCBkaWRfcnNjKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjc5LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2ODA6c3RhdGljIG5ldGRldl90eF90IHZ4bGFuX3htaXRfbmhpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2ODEtXHRcdFx0XHQgICB1MzIgbmhpZCwgX19iZTMyIHZuaSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjcyNT1zdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzcyLVx0aWYgKG5oaWQpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc3MzpcdFx0cmV0dXJuIHZ4bGFuX3htaXRfbmhpZChza2IsIGRldiwgbmhpZCwgdm5pKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzc0LVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODE4LVx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihmLVx1MDAzZW5oKSkge1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4MTk6XHRcdHZ4bGFuX3htaXRfbmgoc2tiLCBkZXYsIGYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjgyMC1cdFx0XHQgICAgICAodm5pID8gOiB2eGxhbi1cdTAwM2VkZWZhdWx0X2RzdC5yZW1vdGVfdm5pKSwgZGlkX3JzYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTk3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBTdGF0aWMgTmF0dXJlIG9mIENvcmUgVlhMQU4gRGF0YSBTdHJ1Y3R1cmVzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBzdGF0aWMgZWxlbWVudHMgaGVyZS4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgVlhMQU4gdHJhbnNtaXNzaW9uIG1lY2hhbmlzbXMg4oCTIHNwZWNpZmljYWxseSBgdnhsYW5feG1pdF9uaGAsIGB2eGxhbl94bWl0X25oaWRgLCBhbmQgaG93IHRoZXNlIHJlbGF0ZSB0byB0aGUgYnJvYWRlciByb3V0aW5nIHRhYmxlIG1hbmFnZW1lbnQsIGluY2x1ZGluZyBgcnRtX25ld19uZXh0aG9wYCwgYHJ0bV90b19uaF9jb25maWdgLCBgbmV4dGhvcF9jcmVhdGVgLCBhbmQgYG5oX2ZpbGxfbm9kZWAuIE15IHByaW1hcnkgY29uY2VybiBpcyB0aGF0IHRoZXkgKmFyZSogc3RhdGljLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgcnRtX3RvX25oX2NvbmZpZ2AgaXMgc3RhdGljLiBJdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBpbiB0cmFuc2xhdGluZyByb3V0aW5nIG1lc3NhZ2VzIGludG8gbmV4dC1ob3AgY29uZmlndXJhdGlvbnMsIHNvIGl0cyBiZWhhdmlvciBiZWluZyBzdGF0aWMgb3Igbm90IGlzIGdvaW5nIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB3ZSBjYW4gYXBwbHkgYW55IGR5bmFtaWMgcnVsZXMgdG8gaXRzIGJlaGF2aW9yLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgZ2V0IGEgZGVmaW5pdGl2ZSBhbnN3ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDAzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bV90b19uaF9jb25maWcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV4dGhvcC5jPTMwMzg9c3RhdGljIGludCBydG1fbmhfZ2V0X3RpbWVyKHN0cnVjdCBubGF0dHIgKmF0dHIsIHVuc2lnbmVkIGxvbmcgZmFsbGJhY2ssXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMwNjItXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzA2MzpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfZ3JwX3JlcyhzdHJ1Y3QgbmxhdHRyICpyZXMsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbm5ldC9pcHY0L25leHRob3AuYy0zMDY0LVx0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzEwMS1cbm5ldC9pcHY0L25leHRob3AuYzozMTAyOnN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzEwMy1cdFx0XHQgICAgc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBubGF0dHIgKip0Yixcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzE4OS1cdFx0aWYgKGNmZy1cdTAwM2VuaF9ncnBfdHlwZSA9PSBORVhUSE9QX0dSUF9UWVBFX1JFUylcbm5ldC9pcHY0L25leHRob3AuYzozMTkwOlx0XHRcdGVyciA9IHJ0bV90b19uaF9jb25maWdfZ3JwX3Jlcyh0YltOSEFfUkVTX0dST1VQXSxcbm5ldC9pcHY0L25leHRob3AuYy0zMTkxLVx0XHRcdFx0XHRcdCAgICAgICBjZmcsIGV4dGFjayk7XG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMyNzctXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzI3ODpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfcnRubChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0Yixcbm5ldC9pcHY0L25leHRob3AuYy0zMjc5LVx0XHRcdFx0IHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9MzMxMD1zdGF0aWMgaW50IHJ0bV9uZXdfbmV4dGhvcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMyNC1cbm5ldC9pcHY0L25leHRob3AuYzozMzI1Olx0ZXJyID0gcnRtX3RvX25oX2NvbmZpZyhuZXQsIHNrYiwgbmxoLCB0YiwgXHUwMDI2Y2ZnLCBleHRhY2spO1xubmV0L2lwdjQvbmV4dGhvcC5jLTMzMjYtXHRpZiAoZXJyKVxuLS1cbm5ldC9pcHY0L25leHRob3AuYy0zMzM2LVxubmV0L2lwdjQvbmV4dGhvcC5jOjMzMzc6XHRlcnIgPSBydG1fdG9fbmhfY29uZmlnX3J0bmwobmV0LCB0YiwgXHUwMDI2Y2ZnLCBleHRhY2spO1xubmV0L2lwdjQvbmV4dGhvcC5jLTMzMzgtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk2NAoJCQkJCQkJb3V0cHV0OiAxODQKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVlhMQU4gRGVzdGluYXRpb24gUG9ydCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIGlzIGFib3V0IGFkZGluZyBkZXN0aW5hdGlvbiBwb3J0IHNwZWNpZmljYXRpb24gdG8gRm9yd2FyZGluZyBEYXRhYmFzZSAoRkRCKSBuZXh0aG9wcywgc3BlY2lmaWNhbGx5IGZvciBWWExBTi4gVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIGFiaWxpdHkgdG8gY29uZmlndXJlIGEgZGVzdGluYXRpb24gcG9ydCwgYG5oX2RzdF9wb3J0YCwgZGlyZWN0bHkgb24gYSBWWExBTiBuZXh0aG9wLiBJIHNlZSB0aGUgY2hhbmdlcyB0b3VjaCB0aGUgbmV0bGluayBBUEkgdG8gcGFyc2UgYE5IQV9EU1RfUE9SVGAsIHdoaWNoIGlzIHRoZW4gc3RvcmVkIHdpdGhpbiB0aGUgbmV4dGhvcCBjb25maWd1cmF0aW9uIGl0c2VsZi4gVGhpcyBjb25maWd1cmF0aW9uIGlzIHN1YnNlcXVlbnRseSB1dGlsaXplZCBkdXJpbmcgdGhlIFZYTEFOIHRyYW5zbWlzc2lvbiBwYXRoIHNlbGVjdGlvbiBwcm9jZXNzLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl04oCZcyBhIG1vZGlmaWNhdGlvbiBkZWVwIHdpdGhpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIGFuZCB0aGUgVlhMQU4gZHJpdmVyLiBUaGF0JiMzOTtzIGdvb2QgZnJvbSBteSBwZXJzcGVjdGl2ZTogaXQmIzM5O3MgcmVhY2hhYmxlIGNvZGUgYW5kIHRoZXJlZm9yZSB2ZXJ5IGZ1enphYmxlLiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gZGVtb25zdHJhdGUgdGhhdCB0aGlzIGlzIHdvcmtpbmcgZnJvbSBhbiBvcGVyYXRpb25hbCBwZXJzcGVjdGl2ZSAtIHRoZXJlIGNhbiYjMzk7dCBiZSBhIGRpc2Nvbm5lY3QgZnJvbSB0aGUgY29uZmlndXJhdGlvbiB0byB0aGUgZXhlY3V0aW9uLgoKSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBzeW1ib2xzOiBgcnRtX25ld19uZXh0aG9wYCwgYHJ0bV90b19uaF9jb25maWdgLCBgbmV4dGhvcF9jcmVhdGVgLCBgbmhfZmlsbF9ub2RlYCwgYHZ4bGFuX3htaXRfbmhgLCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAuIFRoZXNlIGFyZSBnb2luZyB0byBiZSB0aGUga2V5IGFyZWFzIHdoZXJlIHRoZSBuZXcgZnVuY3Rpb25hbGl0eSBpcyBpbnRyb2R1Y2VkIGFuZCB3aGVyZSB0aGUgaW50ZWdyYXRpb24gd2l0aCB0aGUgZXhpc3RpbmcgVlhMQU4gcGF0aCBoYXBwZW5zLgoKSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkIHRvIHNldCB0aGlzIHVwIHNvIHdlIGNhbiBnZXQgbWVhbmluZ2Z1bCByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwMzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlhMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydG1fbmV3X25leHRob3AmIzM0OywKICAgICYjMzQ7cnRtX3RvX25oX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtuZXh0aG9wX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtuaF9maWxsX25vZGUmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaCYjMzQ7LAogICAgJiMzNDt2eGxhbl94bWl0X25oaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGEgZGVzdGluYXRpb24gcG9ydCAobmhfZHN0X3BvcnQpIG9uIGZkYiBuZXh0aG9wcyAoZS5nLiwgVlhMQU4pLiBJdCBtb2RpZmllcyB0aGUgbmV0bGluayBBUEkgdG8gcGFyc2UgTkhBX0RTVF9QT1JULCBzdG9yZXMgaXQgaW4gdGhlIG5leHRob3AgY29uZmlndXJhdGlvbiwgYW5kIHVzZXMgaXQgZHVyaW5nIFZYTEFOIHRyYW5zbWl0IHBhdGggc2VsZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgVlhMQU4gZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRtX25ld19uZXh0aG9wJiMzNDssCiAgICAmIzM0O3J0bV90b19uaF9jb25maWcmIzM0OywKICAgICYjMzQ7bmV4dGhvcF9jcmVhdGUmIzM0OywKICAgICYjMzQ7bmhfZmlsbF9ub2RlJiMzNDssCiAgICAmIzM0O3Z4bGFuX3htaXRfbmgmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaGlkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhIGRlc3RpbmF0aW9uIHBvcnQgKG5oX2RzdF9wb3J0KSBvbiBmZGIgbmV4dGhvcHMgKGUuZy4sIFZYTEFOKS4gSXQgbW9kaWZpZXMgdGhlIG5ldGxpbmsgQVBJIHRvIHBhcnNlIE5IQV9EU1RfUE9SVCwgc3RvcmVzIGl0IGluIHRoZSBuZXh0aG9wIGNvbmZpZ3VyYXRpb24sIGFuZCB1c2VzIGl0IGR1cmluZyBWWExBTiB0cmFuc21pdCBwYXRoIHNlbGVjdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIFZYTEFOIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTc6NDQuMTM0MjYyNzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU1MDAwNzU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV9uZXdfbmV4dGhvcFwiLFxuICAgIFwicnRtX3RvX25oX2NvbmZpZ1wiLFxuICAgIFwibmV4dGhvcF9jcmVhdGVcIixcbiAgICBcIm5oX2ZpbGxfbm9kZVwiLFxuICAgIFwidnhsYW5feG1pdF9uaFwiLFxuICAgIFwidnhsYW5feG1pdF9uaGlkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGEgZGVzdGluYXRpb24gcG9ydCAobmhfZHN0X3BvcnQpIG9uIGZkYiBuZXh0aG9wcyAoZS5nLiwgVlhMQU4pLiBJdCBtb2RpZmllcyB0aGUgbmV0bGluayBBUEkgdG8gcGFyc2UgTkhBX0RTVF9QT1JULCBzdG9yZXMgaXQgaW4gdGhlIG5leHRob3AgY29uZmlndXJhdGlvbiwgYW5kIHVzZXMgaXQgZHVyaW5nIFZYTEFOIHRyYW5zbWl0IHBhdGggc2VsZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgVlhMQU4gZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE3OjQ0LjEzNDI3MTc4OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyNzQzMjQwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE0MmJiMjIwYmM4NzVmNGU2MmExZDhlMzlhNjBjNWQ0MTA4MmI0NGFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMjQgMDM6MTc6NDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oIGIvaW5jbHVkZS9uZXQvbmV4dGhvcC5oXFxuaW5kZXggNTcyZTY5Y2RhNDc2NmQuLmY4NmMxMTUwNzRkN2FiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L25leHRob3AuaFxcbisrKyBiL2luY2x1ZGUvbmV0L25leHRob3AuaFxcbkBAIC0yOCw2ICsyOCw3IEBAIHN0cnVjdCBuaF9jb25maWcge1xcbiBcXHR1OFxcdFxcdG5oX3Byb3RvY29sO1xcbiBcXHR1OFxcdFxcdG5oX2JsYWNraG9sZTtcXG4gXFx0dThcXHRcXHRuaF9mZGI7XFxuK1xcdF9fYmUxNlxcdFxcdG5oX2RzdF9wb3J0O1xcbiBcXHR1MzJcXHRcXHRuaF9mbGFncztcXG4gXFxuIFxcdGludFxcdFxcdG5oX2lmaW5kZXg7XFxuQEAgLTYzLDYgKzY0LDcgQEAgc3RydWN0IG5oX2luZm8ge1xcbiBcXHR1OFxcdFxcdFxcdGZhbWlseTtcXG4gXFx0Ym9vbFxcdFxcdFxcdHJlamVjdF9uaDtcXG4gXFx0Ym9vbFxcdFxcdFxcdGZkYl9uaDtcXG4rXFx0X19iZTE2XFx0XFx0XFx0ZHN0X3BvcnQ7XFxuIFxcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHN0cnVjdCBmaWJfbmhfY29tbW9uXFx0ZmliX25oYztcXG5AQCAtNTc0LDcgKzU3Niw4IEBAIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX2ZkYl9uaGMoc3RydWN0IG5leHRob3AgKm5oKVxcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBpbnQgaGFzaClcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGludCBoYXNoLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgX19iZTE2ICpkc3RfcG9ydClcXG4ge1xcbiBcXHRzdHJ1Y3QgbmhfaW5mbyAqbmhpO1xcbiBcXHRzdHJ1Y3QgbmV4dGhvcCAqbmhwO1xcbkBAIC01ODMsNiArNTg2LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQoc3RydWN0IG5leHRob3AgKm5oLFxcbiBcXHRpZiAodW5saWtlbHkoIW5ocCkpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHRuaGkgPSByY3VfZGVyZWZlcmVuY2UobmhwLVxcdTAwM2VuaF9pbmZvKTtcXG4rXFx0KmRzdF9wb3J0ID0gbmhpLVxcdTAwM2Vkc3RfcG9ydDtcXG4gXFx0cmV0dXJuIFxcdTAwMjZuaGktXFx1MDAzZWZpYl9uaGM7XFxuIH1cXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3Z4bGFuLmggYi9pbmNsdWRlL25ldC92eGxhbi5oXFxuaW5kZXggZGZiYTg5Njk1ZWZjZmEuLjZlNjQ3NTcxNTFiODhlIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3Z4bGFuLmhcXG4rKysgYi9pbmNsdWRlL25ldC92eGxhbi5oXFxuQEAgLTU2Nyw4ICs1NjcsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KHN0cnVjdCBuZXh0aG9wICpuaCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB2eGxhbl9yZHN0ICpyZHN0KVxcbiB7XFxuIFxcdHN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGM7XFxuK1xcdF9fYmUxNiBkc3RfcG9ydCA9IDA7XFxuIFxcbi1cXHRuaGMgPSBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChuaCwgaGFzaCBcXHUwMDNlXFx1MDAzZSAxKTtcXG4rXFx0bmhjID0gbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQobmgsIGhhc2ggXFx1MDAzZVxcdTAwM2UgMSwgXFx1MDAyNmRzdF9wb3J0KTtcXG4gXFx0aWYgKHVubGlrZWx5KCFuaGMpKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbkBAIC01ODMsNiArNTg0LDggQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcbitcXHRyZHN0LVxcdTAwM2VyZW1vdGVfcG9ydCA9IGRzdF9wb3J0O1xcbitcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXFxuaW5kZXggYmM0OWJhZjRhMjY3ZjAuLjU5Y2YxY2VlOTNiZDcwIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXFxuQEAgLTgzLDYgKzgzLDkgQEAgZW51bSB7XFxuIFxcdC8qIHUzMjsgcmVhZC1vbmx5OyB3aGV0aGVyIGFueSBkcml2ZXIgY29sbGVjdHMgSFcgc3RhdHMgKi9cXG4gXFx0TkhBX0hXX1NUQVRTX1VTRUQsXFxuIFxcbitcXHQvKiBiZTE2OyBVRFAgZGVzdGluYXRpb24gcG9ydCBmb3IgYW4gZmRiIG5leHRob3AgKGUuZy4gVlhMQU4pICovXFxuK1xcdE5IQV9EU1RfUE9SVCxcXG4rXFxuIFxcdF9fTkhBX01BWCxcXG4gfTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L25leHRob3AuYyBiL25ldC9pcHY0L25leHRob3AuY1xcbmluZGV4IDYyMDViZDU3YWE4NTIwLi4wMDIxMzgwYjhjMWRlZiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9uZXh0aG9wLmNcXG4rKysgYi9uZXQvaXB2NC9uZXh0aG9wLmNcXG5AQCAtMzksNiArMzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgcnRtX25oX3BvbGljeV9uZXdbXSA9IHtcXG4gXFx0W05IQV9FTkNBUF9UWVBFXVxcdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcXG4gXFx0W05IQV9FTkNBUF1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXFxuIFxcdFtOSEFfRkRCXVxcdFxcdD0geyAudHlwZSA9IE5MQV9GTEFHIH0sXFxuK1xcdFtOSEFfRFNUX1BPUlRdXFx0XFx0PSBOTEFfUE9MSUNZX01JTihOTEFfQkUxNiwgMSksXFxuIFxcdFtOSEFfUkVTX0dST1VQXVxcdFxcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcXG4gXFx0W05IQV9IV19TVEFUU19FTkFCTEVdXFx0PSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCB0cnVlKSxcXG4gfTtcXG5AQCAtOTU2LDYgKzk1Nyw5IEBAIHN0YXRpYyBpbnQgbmhfZmlsbF9ub2RlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcXG4gXFx0fSBlbHNlIGlmIChuaGktXFx1MDAzZWZkYl9uaCkge1xcbiBcXHRcXHRpZiAobmxhX3B1dF9mbGFnKHNrYiwgTkhBX0ZEQikpXFxuIFxcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbitcXHRcXHRpZiAobmhpLVxcdTAwM2Vkc3RfcG9ydCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgbmxhX3B1dF9iZTE2KHNrYiwgTkhBX0RTVF9QT1JULCBuaGktXFx1MDAzZWRzdF9wb3J0KSlcXG4rXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIFxcbkBAIC0xMDU1LDYgKzEwNTksOSBAQCBzdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaClcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChuaGktXFx1MDAzZWRzdF9wb3J0KVxcbitcXHRcXHRzeiArPSBubGFfdG90YWxfc2l6ZSgyKTtcXHQvKiBOSEFfRFNUX1BPUlQgKi9cXG4rXFxuIFxcdGlmIChuaGktXFx1MDAzZWZpYl9uaGMubmhjX2x3dHN0YXRlKSB7XFxuIFxcdFxcdHN6ICs9IGx3dHVubmVsX2dldF9lbmNhcF9zaXplKG5oaS1cXHUwMDNlZmliX25oYy5uaGNfbHd0c3RhdGUpO1xcbiBcXHRcXHRzeiArPSBubGFfdG90YWxfc2l6ZSgyKTsgIC8qIE5IQV9FTkNBUF9UWVBFICovXFxuQEAgLTI5NTYsOCArMjk2MywxMCBAQCBzdGF0aWMgc3RydWN0IG5leHRob3AgKm5leHRob3BfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5oX2NvbmZpZyAqY2ZnLFxcbiBcXHRuaGktXFx1MDAzZWZhbWlseSA9IGNmZy1cXHUwMDNlbmhfZmFtaWx5O1xcbiBcXHRuaGktXFx1MDAzZWZpYl9uaGMubmhjX3Njb3BlID0gUlRfU0NPUEVfTElOSztcXG4gXFxuLVxcdGlmIChjZmctXFx1MDAzZW5oX2ZkYilcXG4rXFx0aWYgKGNmZy1cXHUwMDNlbmhfZmRiKSB7XFxuIFxcdFxcdG5oaS1cXHUwMDNlZmRiX25oID0gMTtcXG4rXFx0XFx0bmhpLVxcdTAwM2Vkc3RfcG9ydCA9IGNmZy1cXHUwMDNlbmhfZHN0X3BvcnQ7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChjZmctXFx1MDAzZW5oX2JsYWNraG9sZSkge1xcbiBcXHRcXHRuaGktXFx1MDAzZXJlamVjdF9uaCA9IDE7XFxuQEAgLTMxNDcsNiArMzE1NiwxNSBAQCBzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRjZmctXFx1MDAzZW5oX2ZkYiA9IG5sYV9nZXRfZmxhZyh0YltOSEFfRkRCXSk7XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh0YltOSEFfRFNUX1BPUlRdKSB7XFxuK1xcdFxcdGlmICghdGJbTkhBX0ZEQl0gfHwgIXRiW05IQV9HQVRFV0FZXSkge1xcbitcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssXFxuK1xcdFxcdFxcdFxcdCAgICAgICBcXFwiRGVzdGluYXRpb24gcG9ydCBjYW4gb25seSBiZSBzZXQgb24gZmRiIG5leHRob3BzIHRoYXQgaGF2ZSBhIGdhdGV3YXlcXFwiKTtcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0Y2ZnLVxcdTAwM2VuaF9kc3RfcG9ydCA9IG5sYV9nZXRfYmUxNih0YltOSEFfRFNUX1BPUlRdKTtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKHRiW05IQV9HUk9VUF0pIHtcXG4gXFx0XFx0aWYgKG5obS1cXHUwMDNlbmhfZmFtaWx5ICE9IEFGX1VOU1BFQykge1xcbiBcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJJbnZhbGlkIGZhbWlseSBmb3IgZ3JvdXBcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wcy5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHMuc2hcXG5pbmRleCBhYzg2OGE3MzE2OTQ2YS4uODM0YmExYzA2NzZjODAgMTAwNzU1XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wcy5zaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHMuc2hcXG5AQCAtMzAsNiArMzAsNyBAQCBJUFY0X1RFU1RTPVxcXCJcXG4gXFx0aXB2NF9sYXJnZV9yZXNfZ3JwXFxuIFxcdGlwdjRfY29tcGF0X21vZGVcXG4gXFx0aXB2NF9mZGJfZ3JwX2ZjbmFsXFxuK1xcdGlwdjRfZmRiX3BvcnRfZmNuYWxcXG4gXFx0aXB2NF9tcGF0aF9zZWxlY3RcXG4gXFx0aXB2NF90b3J0dXJlXFxuIFxcdGlwdjRfcmVzX3RvcnR1cmVcXG5AQCAtNDQsNiArNDUsNyBAQCBJUFY2X1RFU1RTPVxcXCJcXG4gXFx0aXB2Nl9sYXJnZV9yZXNfZ3JwXFxuIFxcdGlwdjZfY29tcGF0X21vZGVcXG4gXFx0aXB2Nl9mZGJfZ3JwX2ZjbmFsXFxuK1xcdGlwdjZfZmRiX3BvcnRfZmNuYWxcXG4gXFx0aXB2Nl9tcGF0aF9zZWxlY3RcXG4gXFx0aXB2Nl90b3J0dXJlXFxuIFxcdGlwdjZfcmVzX3RvcnR1cmVcXG5AQCAtNDMyLDYgKzQzNCwxNSBAQCBjaGVja19uZXh0aG9wX2ZkYl9zdXBwb3J0KClcXG4gXFx0ZmlcXG4gfVxcbiBcXG4rY2hlY2tfbmV4dGhvcF9mZGJfcG9ydF9zdXBwb3J0KClcXG4re1xcbitcXHQkSVAgbmV4dGhvcCBoZWxwIDJcXHUwMDNlXFx1MDAyNjEgfCBncmVwIC1xIFxcXCJkc3RfcG9ydFxcXCJcXG4rXFx0aWYgWyAkPyAtbmUgMCBdOyB0aGVuXFxuK1xcdFxcdGVjaG8gXFxcIlNLSVA6IGlwcm91dGUyIHRvbyBvbGQsIG1pc3NpbmcgbmV4dGhvcCBkc3RfcG9ydCBzdXBwb3J0XFxcIlxcbitcXHRcXHRyZXR1cm4gJGtzZnRfc2tpcFxcbitcXHRmaVxcbit9XFxuK1xcbiBjaGVja19uZXh0aG9wX3Jlc19zdXBwb3J0KClcXG4ge1xcbiBcXHQkSVAgbmV4dGhvcCBoZWxwIDJcXHUwMDNlXFx1MDAyNjEgfCBncmVwIC1xIHJlc2lsaWVudFxcbkBAIC01NDEsNiArNTUyLDQxIEBAIGlwdjZfZmRiX2dycF9mY25hbCgpXFxuIFxcdCRJUCBsaW5rIGRlbCBkZXYgdngxMFxcbiB9XFxuIFxcbitpcHY2X2ZkYl9wb3J0X2ZjbmFsKClcXG4re1xcbitcXHRlY2hvXFxuK1xcdGVjaG8gXFxcIklQdjYgZmRiIG5leHRob3AgZHN0X3BvcnQgZnVuY3Rpb25hbFxcXCJcXG4rXFx0ZWNobyBcXFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxcIlxcbitcXG4rXFx0Y2hlY2tfbmV4dGhvcF9mZGJfcG9ydF9zdXBwb3J0XFxuK1xcdGlmIFsgJD8gLWVxICRrc2Z0X3NraXAgXTsgdGhlblxcbitcXHRcXHRyZXR1cm4gJGtzZnRfc2tpcFxcbitcXHRmaVxcbitcXG4rXFx0IyBOSEFfRFNUX1BPUlQ6IG9wdGlvbmFsIHBlci1uZXh0aG9wIFZYTEFOIGRlc3RpbmF0aW9uIFVEUCBwb3J0LFxcbitcXHQjIGxldHRpbmcgYW4gZmRiIG5leHRob3AgZ3JvdXAgYmFsYW5jZSBhIGZsb3cgYWNyb3NzIGxlZ3MgdGhhdCBzaGFyZVxcbitcXHQjIGFuIHVuZGVybGF5IElQIGJ1dCBsaXN0ZW4gb24gZGlmZmVyZW50IFVEUCBwb3J0cy5cXG4rXFx0cnVuX2NtZCBcXFwiJElQIG5leHRob3AgYWRkIGlkIDgwIHZpYSAyMDAxOmRiODo5MTo6MiBmZGIgZHN0X3BvcnQgNDc5MFxcXCJcXG4rXFx0Y2hlY2tfbmV4dGhvcCBcXFwiaWQgODBcXFwiIFxcXCJpZCA4MCB2aWEgMjAwMTpkYjg6OTE6OjIgc2NvcGUgbGluayBmZGIgZHN0X3BvcnQgNDc5MFxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMCBcXFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydFxcXCJcXG4rXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCA4MSBmZGIgZHN0X3BvcnQgNDc5MFxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMiBcXFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCBidXQgbm8gZ2F0ZXdheVxcXCJcXG4rXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCA4MSB2aWEgMjAwMTpkYjg6OTE6OjIgZmRiIGRzdF9wb3J0IDBcXFwiXFxuK1xcdGxvZ190ZXN0ICQ/IDIgXFxcIkZkYiBuZXh0aG9wIHdpdGggZHN0X3BvcnQgMFxcXCJcXG4rXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCA4MiB2aWEgMjAwMTpkYjg6OTE6OjIgZmRiIGRzdF9wb3J0IDQ3ODlcXFwiXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCA4MyB2aWEgMjAwMTpkYjg6OTE6OjMgZmRiIGRzdF9wb3J0IDU3ODlcXFwiXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCAxMDYgZ3JvdXAgODIvODMgZmRiXFxcIlxcbitcXHRjaGVja19uZXh0aG9wIFxcXCJpZCAxMDZcXFwiIFxcXCJpZCAxMDYgZ3JvdXAgODIvODMgZmRiXFxcIlxcbitcXHRsb2dfdGVzdCAkPyAwIFxcXCJGZGIgbmV4dGhvcCBncm91cCB3aXRoIGxlZ3MgZGlmZmVyaW5nIGluIGRzdF9wb3J0XFxcIlxcbitcXG4rXFx0cnVuX2NtZCBcXFwiJElQIG5leHRob3AgYWRkIGlkIDg0IHZpYSAyMDAxOmRiODo5MTo6MiBmZGJcXFwiXFxuK1xcdGNoZWNrX25leHRob3AgXFxcImlkIDg0XFxcIiBcXFwiaWQgODQgdmlhIDIwMDE6ZGI4OjkxOjoyIHNjb3BlIGxpbmsgZmRiXFxcIlxcbitcXHRsb2dfdGVzdCAkPyAwIFxcXCJGZGIgbmV4dGhvcCB3aXRob3V0IGRzdF9wb3J0IG9taXRzIGRzdF9wb3J0XFxcIlxcbit9XFxuK1xcbiBpcHY0X2ZkYl9ncnBfZmNuYWwoKVxcbiB7XFxuIFxcdGxvY2FsIHJjXFxuQEAgLTY0MSw2ICs2ODcsNDEgQEAgaXB2NF9mZGJfZ3JwX2ZjbmFsKClcXG4gXFx0JElQIGxpbmsgZGVsIGRldiB2eDEwXFxuIH1cXG4gXFxuK2lwdjRfZmRiX3BvcnRfZmNuYWwoKVxcbit7XFxuK1xcdGVjaG9cXG4rXFx0ZWNobyBcXFwiSVB2NCBmZGIgbmV4dGhvcCBkc3RfcG9ydCBmdW5jdGlvbmFsXFxcIlxcbitcXHRlY2hvIFxcXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXFwiXFxuK1xcbitcXHRjaGVja19uZXh0aG9wX2ZkYl9wb3J0X3N1cHBvcnRcXG4rXFx0aWYgWyAkPyAtZXEgJGtzZnRfc2tpcCBdOyB0aGVuXFxuK1xcdFxcdHJldHVybiAka3NmdF9za2lwXFxuK1xcdGZpXFxuK1xcbitcXHQjIE5IQV9EU1RfUE9SVDogb3B0aW9uYWwgcGVyLW5leHRob3AgVlhMQU4gZGVzdGluYXRpb24gVURQIHBvcnQsXFxuK1xcdCMgbGV0dGluZyBhbiBmZGIgbmV4dGhvcCBncm91cCBiYWxhbmNlIGEgZmxvdyBhY3Jvc3MgbGVncyB0aGF0IHNoYXJlXFxuK1xcdCMgYW4gdW5kZXJsYXkgSVAgYnV0IGxpc3RlbiBvbiBkaWZmZXJlbnQgVURQIHBvcnRzLlxcbitcXHRydW5fY21kIFxcXCIkSVAgbmV4dGhvcCBhZGQgaWQgMzAgdmlhIDE3Mi4xNi4xLjIgZmRiIGRzdF9wb3J0IDQ3OTBcXFwiXFxuK1xcdGNoZWNrX25leHRob3AgXFxcImlkIDMwXFxcIiBcXFwiaWQgMzAgdmlhIDE3Mi4xNi4xLjIgc2NvcGUgbGluayBmZGIgZHN0X3BvcnQgNDc5MFxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMCBcXFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydFxcXCJcXG4rXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCAzMSBmZGIgZHN0X3BvcnQgNDc5MFxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMiBcXFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCBidXQgbm8gZ2F0ZXdheVxcXCJcXG4rXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCAzMSB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgMFxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMiBcXFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCAwXFxcIlxcbitcXG4rXFx0cnVuX2NtZCBcXFwiJElQIG5leHRob3AgYWRkIGlkIDMyIHZpYSAxNzIuMTYuMS4yIGZkYiBkc3RfcG9ydCA0Nzg5XFxcIlxcbitcXHRydW5fY21kIFxcXCIkSVAgbmV4dGhvcCBhZGQgaWQgMzMgdmlhIDE3Mi4xNi4xLjMgZmRiIGRzdF9wb3J0IDU3ODlcXFwiXFxuK1xcdHJ1bl9jbWQgXFxcIiRJUCBuZXh0aG9wIGFkZCBpZCAxMDUgZ3JvdXAgMzIvMzMgZmRiXFxcIlxcbitcXHRjaGVja19uZXh0aG9wIFxcXCJpZCAxMDVcXFwiIFxcXCJpZCAxMDUgZ3JvdXAgMzIvMzMgZmRiXFxcIlxcbitcXHRsb2dfdGVzdCAkPyAwIFxcXCJGZGIgbmV4dGhvcCBncm91cCB3aXRoIGxlZ3MgZGlmZmVyaW5nIGluIGRzdF9wb3J0XFxcIlxcbitcXG4rXFx0cnVuX2NtZCBcXFwiJElQIG5leHRob3AgYWRkIGlkIDM0IHZpYSAxNzIuMTYuMS4yIGZkYlxcXCJcXG4rXFx0Y2hlY2tfbmV4dGhvcCBcXFwiaWQgMzRcXFwiIFxcXCJpZCAzNCB2aWEgMTcyLjE2LjEuMiBzY29wZSBsaW5rIGZkYlxcXCJcXG4rXFx0bG9nX3Rlc3QgJD8gMCBcXFwiRmRiIG5leHRob3Agd2l0aG91dCBkc3RfcG9ydCBvbWl0cyBkc3RfcG9ydFxcXCJcXG4rfVxcbitcXG4gaXB2NF9tcGF0aF9zZWxlY3QoKVxcbiB7XFxuIFxcdGxvY2FsIHJjIGRldiBtYXRjaCBoIGFkZHJcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Rlc3RfdnhsYW5fbmguc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF92eGxhbl9uaC5zaFxcbmluZGV4IDIwZjMzNjlmNzc2YjE1Li43YjVkYzFkMzdmYTAyMSAxMDA3NTVcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF92eGxhbl9uaC5zaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X3Z4bGFuX25oLnNoXFxuQEAgLTU2LDYgKzU2LDE2IEBAIHRjX3N0YXRzX2dldCgpXFxuIFxcdHRjX3J1bGVfaGFuZGxlX3N0YXRzX2dldCBcXFwiZGV2IGR1bW15MSBlZ3Jlc3NcXFwiIDEwMSBcXFwiLnBhY2tldHNcXFwiIFxcXCItbiAkbnMxXFxcIlxcbiB9XFxuIFxcbituaF9zdGF0c19nZXRfcG9ydCgpXFxuK3tcXG4rXFx0aXAgLW4gXFxcIiRuczFcXFwiIC1zIC1qIG5leHRob3Agc2hvdyBpZCAyMCB8IGpxIFxcXCIuW11bXFxcXFxcXCJncm91cF9zdGF0c1xcXFxcXFwiXVtdW1xcXFxcXFwicGFja2V0c1xcXFxcXFwiXVxcXCJcXG4rfVxcbitcXG4rdGNfc3RhdHNfZ2V0X3BvcnQoKVxcbit7XFxuK1xcdHRjX3J1bGVfaGFuZGxlX3N0YXRzX2dldCBcXFwiZGV2IGR1bW15MSBlZ3Jlc3NcXFwiIDEwMiBcXFwiLnBhY2tldHNcXFwiIFxcXCItbiAkbnMxXFxcIlxcbit9XFxuK1xcbiBiYXNpY190eF9jb21tb24oKVxcbiB7XFxuIFxcdGxvY2FsIGFmX3N0cj0kMTsgc2hpZnRcXG5AQCAtOTAsNiArMTAwLDI2IEBAIGJhc2ljX3R4X2NvbW1vbigpXFxuIFxcdGJ1c3l3YWl0IFxcXCIkQlVTWVdBSVRfVElNRU9VVFxcXCIgdW50aWxfY291bnRlcl9pcyBcXFwiPT0gMVxcXCIgdGNfc3RhdHNfZ2V0IFxcdTAwM2UgL2Rldi9udWxsXFxuIFxcdGNoZWNrX2VyciAkPyBcXFwidGMgZmlsdGVyIHN0YXRzIGRpZCBub3QgaW5jcmVhc2VcXFwiXFxuIFxcbitcXHQjIEFkZCBhIHNlY29uZCBGREIgbmV4dGhvcCBncm91cCB3aG9zZSBuZXh0aG9wIGNhcnJpZXMgYSBwZXItbmV4dGhvcFxcbitcXHQjIGRlc3RpbmF0aW9uIHBvcnQgKE5IQV9EU1RfUE9SVCkgdGhhdCBkaWZmZXJzIGZyb20gdGhlIFZYTEFOIGRldmljZVxcbitcXHQjIGRlZmF1bHQuIE1hdGNoaW5nIG91dGVyIHRyYWZmaWMgbXVzdCBlZ3Jlc3Mgd2l0aCB0aGF0IHBvcnQsIHNvIGFcXG4rXFx0IyBzZXBhcmF0ZSBmbG93ZXIgZmlsdGVyIGtleWVkIG9uIHRoZSBuZXcgcG9ydCBjYXRjaGVzIGl0LlxcbitcXHRydW5fY21kIFxcXCJ0YyAtbiAkbnMxIGZpbHRlciBhZGQgZGV2IGR1bW15MSBlZ3Jlc3MgcHJvdG8gJHByb3RvIHByZWYgMSBoYW5kbGUgMTAyIFxcXFxcXG4rXFx0XFx0Zmxvd2VyIGlwX3Byb3RvIHVkcCBkc3RfaXAgJHJlbW90ZV9hZGRyIGRzdF9wb3J0IDQ3OTAgYWN0aW9uIHBhc3NcXFwiXFxuK1xcbitcXHRydW5fY21kIFxcXCJpcCAtbiAkbnMxIG5leHRob3AgYWRkIGlkIDIgdmlhICRyZW1vdGVfYWRkciBmZGIgZHN0X3BvcnQgNDc5MFxcXCJcXG4rXFx0cnVuX2NtZCBcXFwiaXAgLW4gJG5zMSBuZXh0aG9wIGFkZCBpZCAyMCBncm91cCAyIGZkYlxcXCJcXG4rXFxuK1xcdHJ1bl9jbWQgXFxcImJyaWRnZSAtbiAkbnMxIGZkYiBhZGQgMDA6MTE6MjI6MzM6NDQ6NjYgZGV2IHZ4MCBzZWxmIHN0YXRpYyBuaGlkIDIwXFxcIlxcbitcXG4rXFx0cnVuX2NtZCBcXFwiaXAgbmV0bnMgZXhlYyAkbnMxIG1hdXNlemFobiB2eDAgLWEgb3duIC1iIDAwOjExOjIyOjMzOjQ0OjY2IC1jIDEgLXFcXFwiXFxuK1xcbitcXHRidXN5d2FpdCBcXFwiJEJVU1lXQUlUX1RJTUVPVVRcXFwiIHVudGlsX2NvdW50ZXJfaXMgXFxcIj09IDFcXFwiIG5oX3N0YXRzX2dldF9wb3J0IFxcdTAwM2UgL2Rldi9udWxsXFxuK1xcdGNoZWNrX2VyciAkPyBcXFwiRkRCIG5leHRob3AgZ3JvdXAgc3RhdHMgZGlkIG5vdCBpbmNyZWFzZSAod2l0aCBwb3J0KVxcXCJcXG4rXFxuK1xcdGJ1c3l3YWl0IFxcXCIkQlVTWVdBSVRfVElNRU9VVFxcXCIgdW50aWxfY291bnRlcl9pcyBcXFwiPT0gMVxcXCIgdGNfc3RhdHNfZ2V0X3BvcnQgXFx1MDAzZSAvZGV2L251bGxcXG4rXFx0Y2hlY2tfZXJyICQ/IFxcXCJ0YyBmaWx0ZXIgc3RhdHMgZGlkIG5vdCBpbmNyZWFzZSAod2l0aCBwb3J0KVxcXCJcXG4rXFxuIFxcdGxvZ190ZXN0IFxcXCJWWExBTiBGREIgbmV4dGhvcDogJGFmX3N0ciBiYXNpYyBUeFxcXCJcXG4gfVxcbiBcXG5AQCAtMjEwLDggKzI0MCw4IEBAIHJlcXVpcmVfY29tbWFuZCBhcnBpbmdcXG4gcmVxdWlyZV9jb21tYW5kIG5kaXNjNlxcbiByZXF1aXJlX2NvbW1hbmQganFcXG4gXFxuLWlmICEgaXAgbmV4dGhvcCBoZWxwIDJcXHUwMDNlXFx1MDAyNjEgfCBncmVwIC1xIFxcXCJzdGF0c1xcXCI7IHRoZW5cXG4tXFx0ZWNobyBcXFwiU0tJUDogaXByb3V0ZTIgaXAgdG9vIG9sZCwgbWlzc2luZyBuZXh0aG9wIHN0YXRzIHN1cHBvcnRcXFwiXFxuK2lmICEgaXAgbmV4dGhvcCBoZWxwIDJcXHUwMDNlXFx1MDAyNjEgfCBncmVwIC1xIFxcXCJkc3RfcG9ydFxcXCI7IHRoZW5cXG4rXFx0ZWNobyBcXFwiU0tJUDogaXByb3V0ZTIgaXAgdG9vIG9sZCwgbWlzc2luZyBuZXh0aG9wIGRzdF9wb3J0IHN1cHBvcnRcXFwiXFxuIFxcdGV4aXQgXFxcIiRrc2Z0X3NraXBcXFwiXFxuIGZpXFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxNzo0NS4yNjI2NDcxMzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3OTQyMTYwODkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV9uZXdfbmV4dGhvcFwiLFxuICAgIFwicnRtX3RvX25oX2NvbmZpZ1wiLFxuICAgIFwibmV4dGhvcF9jcmVhdGVcIixcbiAgICBcIm5oX2ZpbGxfbm9kZVwiLFxuICAgIFwidnhsYW5feG1pdF9uaFwiLFxuICAgIFwidnhsYW5feG1pdF9uaGlkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGEgZGVzdGluYXRpb24gcG9ydCAobmhfZHN0X3BvcnQpIG9uIGZkYiBuZXh0aG9wcyAoZS5nLiwgVlhMQU4pLiBJdCBtb2RpZmllcyB0aGUgbmV0bGluayBBUEkgdG8gcGFyc2UgTkhBX0RTVF9QT1JULCBzdG9yZXMgaXQgaW4gdGhlIG5leHRob3AgY29uZmlndXJhdGlvbiwgYW5kIHVzZXMgaXQgZHVyaW5nIFZYTEFOIHRyYW5zbWl0IHBhdGggc2VsZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgVlhMQU4gZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTQyYmIyMjBiYzg3NWY0ZTYyYTFkOGUzOWE2MGM1ZDQxMDgyYjQ0YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDAzOjE3OjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oIGIvaW5jbHVkZS9uZXQvbmV4dGhvcC5oXG5pbmRleCA1NzJlNjljZGE0NzY2ZC4uZjg2YzExNTA3NGQ3YWIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9uZXh0aG9wLmhcbisrKyBiL2luY2x1ZGUvbmV0L25leHRob3AuaFxuQEAgLTI4LDYgKzI4LDcgQEAgc3RydWN0IG5oX2NvbmZpZyB7XG4gXHR1OFx0XHRuaF9wcm90b2NvbDtcbiBcdHU4XHRcdG5oX2JsYWNraG9sZTtcbiBcdHU4XHRcdG5oX2ZkYjtcbitcdF9fYmUxNlx0XHRuaF9kc3RfcG9ydDtcbiBcdHUzMlx0XHRuaF9mbGFncztcbiBcbiBcdGludFx0XHRuaF9pZmluZGV4O1xuQEAgLTYzLDYgKzY0LDcgQEAgc3RydWN0IG5oX2luZm8ge1xuIFx0dThcdFx0XHRmYW1pbHk7XG4gXHRib29sXHRcdFx0cmVqZWN0X25oO1xuIFx0Ym9vbFx0XHRcdGZkYl9uaDtcbitcdF9fYmUxNlx0XHRcdGRzdF9wb3J0O1xuIFxuIFx0dW5pb24ge1xuIFx0XHRzdHJ1Y3QgZmliX25oX2NvbW1vblx0ZmliX25oYztcbkBAIC01NzQsNyArNTc2LDggQEAgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfZmRiX25oYyhzdHJ1Y3QgbmV4dGhvcCAqbmgpXG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfcGF0aF9mZGJfcmVzdWx0KHN0cnVjdCBuZXh0aG9wICpuaCxcbi1cdFx0XHRcdFx0XHRcdCAgICBpbnQgaGFzaClcbitcdFx0XHRcdFx0XHRcdCAgICBpbnQgaGFzaCxcbitcdFx0XHRcdFx0XHRcdCAgICBfX2JlMTYgKmRzdF9wb3J0KVxuIHtcbiBcdHN0cnVjdCBuaF9pbmZvICpuaGk7XG4gXHRzdHJ1Y3QgbmV4dGhvcCAqbmhwO1xuQEAgLTU4Myw2ICs1ODYsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHRpZiAodW5saWtlbHkoIW5ocCkpXG4gXHRcdHJldHVybiBOVUxMO1xuIFx0bmhpID0gcmN1X2RlcmVmZXJlbmNlKG5ocC1cdTAwM2VuaF9pbmZvKTtcbitcdCpkc3RfcG9ydCA9IG5oaS1cdTAwM2Vkc3RfcG9ydDtcbiBcdHJldHVybiBcdTAwMjZuaGktXHUwMDNlZmliX25oYztcbiB9XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdnhsYW4uaCBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbmluZGV4IGRmYmE4OTY5NWVmY2ZhLi42ZTY0NzU3MTUxYjg4ZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbisrKyBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbkBAIC01NjcsOCArNTY3LDkgQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHRcdFx0XHRcdCAgICBzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdClcbiB7XG4gXHRzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjO1xuK1x0X19iZTE2IGRzdF9wb3J0ID0gMDtcbiBcbi1cdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFx1MDAzZVx1MDAzZSAxKTtcbitcdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFx1MDAzZVx1MDAzZSAxLCBcdTAwMjZkc3RfcG9ydCk7XG4gXHRpZiAodW5saWtlbHkoIW5oYykpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC01ODMsNiArNTg0LDggQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuK1x0cmRzdC1cdTAwM2VyZW1vdGVfcG9ydCA9IGRzdF9wb3J0O1xuK1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG5pbmRleCBiYzQ5YmFmNGEyNjdmMC4uNTljZjFjZWU5M2JkNzAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG5AQCAtODMsNiArODMsOSBAQCBlbnVtIHtcbiBcdC8qIHUzMjsgcmVhZC1vbmx5OyB3aGV0aGVyIGFueSBkcml2ZXIgY29sbGVjdHMgSFcgc3RhdHMgKi9cbiBcdE5IQV9IV19TVEFUU19VU0VELFxuIFxuK1x0LyogYmUxNjsgVURQIGRlc3RpbmF0aW9uIHBvcnQgZm9yIGFuIGZkYiBuZXh0aG9wIChlLmcuIFZYTEFOKSAqL1xuK1x0TkhBX0RTVF9QT1JULFxuK1xuIFx0X19OSEFfTUFYLFxuIH07XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV4dGhvcC5jIGIvbmV0L2lwdjQvbmV4dGhvcC5jXG5pbmRleCA2MjA1YmQ1N2FhODUyMC4uMDAyMTM4MGI4YzFkZWYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9uZXh0aG9wLmNcbisrKyBiL25ldC9pcHY0L25leHRob3AuY1xuQEAgLTM5LDYgKzM5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHJ0bV9uaF9wb2xpY3lfbmV3W10gPSB7XG4gXHRbTkhBX0VOQ0FQX1RZUEVdXHQ9IHsgLnR5cGUgPSBOTEFfVTE2IH0sXG4gXHRbTkhBX0VOQ0FQXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbTkhBX0ZEQl1cdFx0PSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcbitcdFtOSEFfRFNUX1BPUlRdXHRcdD0gTkxBX1BPTElDWV9NSU4oTkxBX0JFMTYsIDEpLFxuIFx0W05IQV9SRVNfR1JPVVBdXHRcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcbiBcdFtOSEFfSFdfU1RBVFNfRU5BQkxFXVx0PSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCB0cnVlKSxcbiB9O1xuQEAgLTk1Niw2ICs5NTcsOSBAQCBzdGF0aWMgaW50IG5oX2ZpbGxfbm9kZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHR9IGVsc2UgaWYgKG5oaS1cdTAwM2VmZGJfbmgpIHtcbiBcdFx0aWYgKG5sYV9wdXRfZmxhZyhza2IsIE5IQV9GREIpKVxuIFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuK1x0XHRpZiAobmhpLVx1MDAzZWRzdF9wb3J0IFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgbmxhX3B1dF9iZTE2KHNrYiwgTkhBX0RTVF9QT1JULCBuaGktXHUwMDNlZHN0X3BvcnQpKVxuK1x0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFx0fSBlbHNlIHtcbiBcdFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbiBcbkBAIC0xMDU1LDYgKzEwNTksOSBAQCBzdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaClcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4rXHRpZiAobmhpLVx1MDAzZWRzdF9wb3J0KVxuK1x0XHRzeiArPSBubGFfdG90YWxfc2l6ZSgyKTtcdC8qIE5IQV9EU1RfUE9SVCAqL1xuK1xuIFx0aWYgKG5oaS1cdTAwM2VmaWJfbmhjLm5oY19sd3RzdGF0ZSkge1xuIFx0XHRzeiArPSBsd3R1bm5lbF9nZXRfZW5jYXBfc2l6ZShuaGktXHUwMDNlZmliX25oYy5uaGNfbHd0c3RhdGUpO1xuIFx0XHRzeiArPSBubGFfdG90YWxfc2l6ZSgyKTsgIC8qIE5IQV9FTkNBUF9UWVBFICovXG5AQCAtMjk1Niw4ICsyOTYzLDEwIEBAIHN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXG4gXHRuaGktXHUwMDNlZmFtaWx5ID0gY2ZnLVx1MDAzZW5oX2ZhbWlseTtcbiBcdG5oaS1cdTAwM2VmaWJfbmhjLm5oY19zY29wZSA9IFJUX1NDT1BFX0xJTks7XG4gXG4tXHRpZiAoY2ZnLVx1MDAzZW5oX2ZkYilcbitcdGlmIChjZmctXHUwMDNlbmhfZmRiKSB7XG4gXHRcdG5oaS1cdTAwM2VmZGJfbmggPSAxO1xuK1x0XHRuaGktXHUwMDNlZHN0X3BvcnQgPSBjZmctXHUwMDNlbmhfZHN0X3BvcnQ7XG4rXHR9XG4gXG4gXHRpZiAoY2ZnLVx1MDAzZW5oX2JsYWNraG9sZSkge1xuIFx0XHRuaGktXHUwMDNlcmVqZWN0X25oID0gMTtcbkBAIC0zMTQ3LDYgKzMxNTYsMTUgQEAgc3RhdGljIGludCBydG1fdG9fbmhfY29uZmlnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0Y2ZnLVx1MDAzZW5oX2ZkYiA9IG5sYV9nZXRfZmxhZyh0YltOSEFfRkRCXSk7XG4gXHR9XG4gXG4rXHRpZiAodGJbTkhBX0RTVF9QT1JUXSkge1xuK1x0XHRpZiAoIXRiW05IQV9GREJdIHx8ICF0YltOSEFfR0FURVdBWV0pIHtcbitcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4rXHRcdFx0XHQgICAgICAgXCJEZXN0aW5hdGlvbiBwb3J0IGNhbiBvbmx5IGJlIHNldCBvbiBmZGIgbmV4dGhvcHMgdGhhdCBoYXZlIGEgZ2F0ZXdheVwiKTtcbitcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuK1x0XHRjZmctXHUwMDNlbmhfZHN0X3BvcnQgPSBubGFfZ2V0X2JlMTYodGJbTkhBX0RTVF9QT1JUXSk7XG4rXHR9XG4rXG4gXHRpZiAodGJbTkhBX0dST1VQXSkge1xuIFx0XHRpZiAobmhtLVx1MDAzZW5oX2ZhbWlseSAhPSBBRl9VTlNQRUMpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiSW52YWxpZCBmYW1pbHkgZm9yIGdyb3VwXCIpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHMuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoXG5pbmRleCBhYzg2OGE3MzE2OTQ2YS4uODM0YmExYzA2NzZjODAgMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzLnNoXG5AQCAtMzAsNiArMzAsNyBAQCBJUFY0X1RFU1RTPVwiXG4gXHRpcHY0X2xhcmdlX3Jlc19ncnBcbiBcdGlwdjRfY29tcGF0X21vZGVcbiBcdGlwdjRfZmRiX2dycF9mY25hbFxuK1x0aXB2NF9mZGJfcG9ydF9mY25hbFxuIFx0aXB2NF9tcGF0aF9zZWxlY3RcbiBcdGlwdjRfdG9ydHVyZVxuIFx0aXB2NF9yZXNfdG9ydHVyZVxuQEAgLTQ0LDYgKzQ1LDcgQEAgSVBWNl9URVNUUz1cIlxuIFx0aXB2Nl9sYXJnZV9yZXNfZ3JwXG4gXHRpcHY2X2NvbXBhdF9tb2RlXG4gXHRpcHY2X2ZkYl9ncnBfZmNuYWxcbitcdGlwdjZfZmRiX3BvcnRfZmNuYWxcbiBcdGlwdjZfbXBhdGhfc2VsZWN0XG4gXHRpcHY2X3RvcnR1cmVcbiBcdGlwdjZfcmVzX3RvcnR1cmVcbkBAIC00MzIsNiArNDM0LDE1IEBAIGNoZWNrX25leHRob3BfZmRiX3N1cHBvcnQoKVxuIFx0ZmlcbiB9XG4gXG4rY2hlY2tfbmV4dGhvcF9mZGJfcG9ydF9zdXBwb3J0KClcbit7XG4rXHQkSVAgbmV4dGhvcCBoZWxwIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAtcSBcImRzdF9wb3J0XCJcbitcdGlmIFsgJD8gLW5lIDAgXTsgdGhlblxuK1x0XHRlY2hvIFwiU0tJUDogaXByb3V0ZTIgdG9vIG9sZCwgbWlzc2luZyBuZXh0aG9wIGRzdF9wb3J0IHN1cHBvcnRcIlxuK1x0XHRyZXR1cm4gJGtzZnRfc2tpcFxuK1x0Zmlcbit9XG4rXG4gY2hlY2tfbmV4dGhvcF9yZXNfc3VwcG9ydCgpXG4ge1xuIFx0JElQIG5leHRob3AgaGVscCAyXHUwMDNlXHUwMDI2MSB8IGdyZXAgLXEgcmVzaWxpZW50XG5AQCAtNTQxLDYgKzU1Miw0MSBAQCBpcHY2X2ZkYl9ncnBfZmNuYWwoKVxuIFx0JElQIGxpbmsgZGVsIGRldiB2eDEwXG4gfVxuIFxuK2lwdjZfZmRiX3BvcnRfZmNuYWwoKVxuK3tcbitcdGVjaG9cbitcdGVjaG8gXCJJUHY2IGZkYiBuZXh0aG9wIGRzdF9wb3J0IGZ1bmN0aW9uYWxcIlxuK1x0ZWNobyBcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiXG4rXG4rXHRjaGVja19uZXh0aG9wX2ZkYl9wb3J0X3N1cHBvcnRcbitcdGlmIFsgJD8gLWVxICRrc2Z0X3NraXAgXTsgdGhlblxuK1x0XHRyZXR1cm4gJGtzZnRfc2tpcFxuK1x0ZmlcbitcbitcdCMgTkhBX0RTVF9QT1JUOiBvcHRpb25hbCBwZXItbmV4dGhvcCBWWExBTiBkZXN0aW5hdGlvbiBVRFAgcG9ydCxcbitcdCMgbGV0dGluZyBhbiBmZGIgbmV4dGhvcCBncm91cCBiYWxhbmNlIGEgZmxvdyBhY3Jvc3MgbGVncyB0aGF0IHNoYXJlXG4rXHQjIGFuIHVuZGVybGF5IElQIGJ1dCBsaXN0ZW4gb24gZGlmZmVyZW50IFVEUCBwb3J0cy5cbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgODAgdmlhIDIwMDE6ZGI4OjkxOjoyIGZkYiBkc3RfcG9ydCA0NzkwXCJcbitcdGNoZWNrX25leHRob3AgXCJpZCA4MFwiIFwiaWQgODAgdmlhIDIwMDE6ZGI4OjkxOjoyIHNjb3BlIGxpbmsgZmRiIGRzdF9wb3J0IDQ3OTBcIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIkZkYiBuZXh0aG9wIHdpdGggZHN0X3BvcnRcIlxuK1xuK1x0cnVuX2NtZCBcIiRJUCBuZXh0aG9wIGFkZCBpZCA4MSBmZGIgZHN0X3BvcnQgNDc5MFwiXG4rXHRsb2dfdGVzdCAkPyAyIFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCBidXQgbm8gZ2F0ZXdheVwiXG4rXG4rXHRydW5fY21kIFwiJElQIG5leHRob3AgYWRkIGlkIDgxIHZpYSAyMDAxOmRiODo5MTo6MiBmZGIgZHN0X3BvcnQgMFwiXG4rXHRsb2dfdGVzdCAkPyAyIFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCAwXCJcbitcbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgODIgdmlhIDIwMDE6ZGI4OjkxOjoyIGZkYiBkc3RfcG9ydCA0Nzg5XCJcbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgODMgdmlhIDIwMDE6ZGI4OjkxOjozIGZkYiBkc3RfcG9ydCA1Nzg5XCJcbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgMTA2IGdyb3VwIDgyLzgzIGZkYlwiXG4rXHRjaGVja19uZXh0aG9wIFwiaWQgMTA2XCIgXCJpZCAxMDYgZ3JvdXAgODIvODMgZmRiXCJcbitcdGxvZ190ZXN0ICQ/IDAgXCJGZGIgbmV4dGhvcCBncm91cCB3aXRoIGxlZ3MgZGlmZmVyaW5nIGluIGRzdF9wb3J0XCJcbitcbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgODQgdmlhIDIwMDE6ZGI4OjkxOjoyIGZkYlwiXG4rXHRjaGVja19uZXh0aG9wIFwiaWQgODRcIiBcImlkIDg0IHZpYSAyMDAxOmRiODo5MTo6MiBzY29wZSBsaW5rIGZkYlwiXG4rXHRsb2dfdGVzdCAkPyAwIFwiRmRiIG5leHRob3Agd2l0aG91dCBkc3RfcG9ydCBvbWl0cyBkc3RfcG9ydFwiXG4rfVxuK1xuIGlwdjRfZmRiX2dycF9mY25hbCgpXG4ge1xuIFx0bG9jYWwgcmNcbkBAIC02NDEsNiArNjg3LDQxIEBAIGlwdjRfZmRiX2dycF9mY25hbCgpXG4gXHQkSVAgbGluayBkZWwgZGV2IHZ4MTBcbiB9XG4gXG4raXB2NF9mZGJfcG9ydF9mY25hbCgpXG4re1xuK1x0ZWNob1xuK1x0ZWNobyBcIklQdjQgZmRiIG5leHRob3AgZHN0X3BvcnQgZnVuY3Rpb25hbFwiXG4rXHRlY2hvIFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCJcbitcbitcdGNoZWNrX25leHRob3BfZmRiX3BvcnRfc3VwcG9ydFxuK1x0aWYgWyAkPyAtZXEgJGtzZnRfc2tpcCBdOyB0aGVuXG4rXHRcdHJldHVybiAka3NmdF9za2lwXG4rXHRmaVxuK1xuK1x0IyBOSEFfRFNUX1BPUlQ6IG9wdGlvbmFsIHBlci1uZXh0aG9wIFZYTEFOIGRlc3RpbmF0aW9uIFVEUCBwb3J0LFxuK1x0IyBsZXR0aW5nIGFuIGZkYiBuZXh0aG9wIGdyb3VwIGJhbGFuY2UgYSBmbG93IGFjcm9zcyBsZWdzIHRoYXQgc2hhcmVcbitcdCMgYW4gdW5kZXJsYXkgSVAgYnV0IGxpc3RlbiBvbiBkaWZmZXJlbnQgVURQIHBvcnRzLlxuK1x0cnVuX2NtZCBcIiRJUCBuZXh0aG9wIGFkZCBpZCAzMCB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgNDc5MFwiXG4rXHRjaGVja19uZXh0aG9wIFwiaWQgMzBcIiBcImlkIDMwIHZpYSAxNzIuMTYuMS4yIHNjb3BlIGxpbmsgZmRiIGRzdF9wb3J0IDQ3OTBcIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIkZkYiBuZXh0aG9wIHdpdGggZHN0X3BvcnRcIlxuK1xuK1x0cnVuX2NtZCBcIiRJUCBuZXh0aG9wIGFkZCBpZCAzMSBmZGIgZHN0X3BvcnQgNDc5MFwiXG4rXHRsb2dfdGVzdCAkPyAyIFwiRmRiIG5leHRob3Agd2l0aCBkc3RfcG9ydCBidXQgbm8gZ2F0ZXdheVwiXG4rXG4rXHRydW5fY21kIFwiJElQIG5leHRob3AgYWRkIGlkIDMxIHZpYSAxNzIuMTYuMS4yIGZkYiBkc3RfcG9ydCAwXCJcbitcdGxvZ190ZXN0ICQ/IDIgXCJGZGIgbmV4dGhvcCB3aXRoIGRzdF9wb3J0IDBcIlxuK1xuK1x0cnVuX2NtZCBcIiRJUCBuZXh0aG9wIGFkZCBpZCAzMiB2aWEgMTcyLjE2LjEuMiBmZGIgZHN0X3BvcnQgNDc4OVwiXG4rXHRydW5fY21kIFwiJElQIG5leHRob3AgYWRkIGlkIDMzIHZpYSAxNzIuMTYuMS4zIGZkYiBkc3RfcG9ydCA1Nzg5XCJcbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgMTA1IGdyb3VwIDMyLzMzIGZkYlwiXG4rXHRjaGVja19uZXh0aG9wIFwiaWQgMTA1XCIgXCJpZCAxMDUgZ3JvdXAgMzIvMzMgZmRiXCJcbitcdGxvZ190ZXN0ICQ/IDAgXCJGZGIgbmV4dGhvcCBncm91cCB3aXRoIGxlZ3MgZGlmZmVyaW5nIGluIGRzdF9wb3J0XCJcbitcbitcdHJ1bl9jbWQgXCIkSVAgbmV4dGhvcCBhZGQgaWQgMzQgdmlhIDE3Mi4xNi4xLjIgZmRiXCJcbitcdGNoZWNrX25leHRob3AgXCJpZCAzNFwiIFwiaWQgMzQgdmlhIDE3Mi4xNi4xLjIgc2NvcGUgbGluayBmZGJcIlxuK1x0bG9nX3Rlc3QgJD8gMCBcIkZkYiBuZXh0aG9wIHdpdGhvdXQgZHN0X3BvcnQgb21pdHMgZHN0X3BvcnRcIlxuK31cbitcbiBpcHY0X21wYXRoX3NlbGVjdCgpXG4ge1xuIFx0bG9jYWwgcmMgZGV2IG1hdGNoIGggYWRkclxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X3Z4bGFuX25oLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3Rlc3RfdnhsYW5fbmguc2hcbmluZGV4IDIwZjMzNjlmNzc2YjE1Li43YjVkYzFkMzdmYTAyMSAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC90ZXN0X3Z4bGFuX25oLnNoXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvdGVzdF92eGxhbl9uaC5zaFxuQEAgLTU2LDYgKzU2LDE2IEBAIHRjX3N0YXRzX2dldCgpXG4gXHR0Y19ydWxlX2hhbmRsZV9zdGF0c19nZXQgXCJkZXYgZHVtbXkxIGVncmVzc1wiIDEwMSBcIi5wYWNrZXRzXCIgXCItbiAkbnMxXCJcbiB9XG4gXG4rbmhfc3RhdHNfZ2V0X3BvcnQoKVxuK3tcbitcdGlwIC1uIFwiJG5zMVwiIC1zIC1qIG5leHRob3Agc2hvdyBpZCAyMCB8IGpxIFwiLltdW1xcXCJncm91cF9zdGF0c1xcXCJdW11bXFxcInBhY2tldHNcXFwiXVwiXG4rfVxuK1xuK3RjX3N0YXRzX2dldF9wb3J0KClcbit7XG4rXHR0Y19ydWxlX2hhbmRsZV9zdGF0c19nZXQgXCJkZXYgZHVtbXkxIGVncmVzc1wiIDEwMiBcIi5wYWNrZXRzXCIgXCItbiAkbnMxXCJcbit9XG4rXG4gYmFzaWNfdHhfY29tbW9uKClcbiB7XG4gXHRsb2NhbCBhZl9zdHI9JDE7IHNoaWZ0XG5AQCAtOTAsNiArMTAwLDI2IEBAIGJhc2ljX3R4X2NvbW1vbigpXG4gXHRidXN5d2FpdCBcIiRCVVNZV0FJVF9USU1FT1VUXCIgdW50aWxfY291bnRlcl9pcyBcIj09IDFcIiB0Y19zdGF0c19nZXQgXHUwMDNlIC9kZXYvbnVsbFxuIFx0Y2hlY2tfZXJyICQ/IFwidGMgZmlsdGVyIHN0YXRzIGRpZCBub3QgaW5jcmVhc2VcIlxuIFxuK1x0IyBBZGQgYSBzZWNvbmQgRkRCIG5leHRob3AgZ3JvdXAgd2hvc2UgbmV4dGhvcCBjYXJyaWVzIGEgcGVyLW5leHRob3BcbitcdCMgZGVzdGluYXRpb24gcG9ydCAoTkhBX0RTVF9QT1JUKSB0aGF0IGRpZmZlcnMgZnJvbSB0aGUgVlhMQU4gZGV2aWNlXG4rXHQjIGRlZmF1bHQuIE1hdGNoaW5nIG91dGVyIHRyYWZmaWMgbXVzdCBlZ3Jlc3Mgd2l0aCB0aGF0IHBvcnQsIHNvIGFcbitcdCMgc2VwYXJhdGUgZmxvd2VyIGZpbHRlciBrZXllZCBvbiB0aGUgbmV3IHBvcnQgY2F0Y2hlcyBpdC5cbitcdHJ1bl9jbWQgXCJ0YyAtbiAkbnMxIGZpbHRlciBhZGQgZGV2IGR1bW15MSBlZ3Jlc3MgcHJvdG8gJHByb3RvIHByZWYgMSBoYW5kbGUgMTAyIFxcXG4rXHRcdGZsb3dlciBpcF9wcm90byB1ZHAgZHN0X2lwICRyZW1vdGVfYWRkciBkc3RfcG9ydCA0NzkwIGFjdGlvbiBwYXNzXCJcbitcbitcdHJ1bl9jbWQgXCJpcCAtbiAkbnMxIG5leHRob3AgYWRkIGlkIDIgdmlhICRyZW1vdGVfYWRkciBmZGIgZHN0X3BvcnQgNDc5MFwiXG4rXHRydW5fY21kIFwiaXAgLW4gJG5zMSBuZXh0aG9wIGFkZCBpZCAyMCBncm91cCAyIGZkYlwiXG4rXG4rXHRydW5fY21kIFwiYnJpZGdlIC1uICRuczEgZmRiIGFkZCAwMDoxMToyMjozMzo0NDo2NiBkZXYgdngwIHNlbGYgc3RhdGljIG5oaWQgMjBcIlxuK1xuK1x0cnVuX2NtZCBcImlwIG5ldG5zIGV4ZWMgJG5zMSBtYXVzZXphaG4gdngwIC1hIG93biAtYiAwMDoxMToyMjozMzo0NDo2NiAtYyAxIC1xXCJcbitcbitcdGJ1c3l3YWl0IFwiJEJVU1lXQUlUX1RJTUVPVVRcIiB1bnRpbF9jb3VudGVyX2lzIFwiPT0gMVwiIG5oX3N0YXRzX2dldF9wb3J0IFx1MDAzZSAvZGV2L251bGxcbitcdGNoZWNrX2VyciAkPyBcIkZEQiBuZXh0aG9wIGdyb3VwIHN0YXRzIGRpZCBub3QgaW5jcmVhc2UgKHdpdGggcG9ydClcIlxuK1xuK1x0YnVzeXdhaXQgXCIkQlVTWVdBSVRfVElNRU9VVFwiIHVudGlsX2NvdW50ZXJfaXMgXCI9PSAxXCIgdGNfc3RhdHNfZ2V0X3BvcnQgXHUwMDNlIC9kZXYvbnVsbFxuK1x0Y2hlY2tfZXJyICQ/IFwidGMgZmlsdGVyIHN0YXRzIGRpZCBub3QgaW5jcmVhc2UgKHdpdGggcG9ydClcIlxuK1xuIFx0bG9nX3Rlc3QgXCJWWExBTiBGREIgbmV4dGhvcDogJGFmX3N0ciBiYXNpYyBUeFwiXG4gfVxuIFxuQEAgLTIxMCw4ICsyNDAsOCBAQCByZXF1aXJlX2NvbW1hbmQgYXJwaW5nXG4gcmVxdWlyZV9jb21tYW5kIG5kaXNjNlxuIHJlcXVpcmVfY29tbWFuZCBqcVxuIFxuLWlmICEgaXAgbmV4dGhvcCBoZWxwIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAtcSBcInN0YXRzXCI7IHRoZW5cbi1cdGVjaG8gXCJTS0lQOiBpcHJvdXRlMiBpcCB0b28gb2xkLCBtaXNzaW5nIG5leHRob3Agc3RhdHMgc3VwcG9ydFwiXG4raWYgISBpcCBuZXh0aG9wIGhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwIC1xIFwiZHN0X3BvcnRcIjsgdGhlblxuK1x0ZWNobyBcIlNLSVA6IGlwcm91dGUyIGlwIHRvbyBvbGQsIG1pc3NpbmcgbmV4dGhvcCBkc3RfcG9ydCBzdXBwb3J0XCJcbiBcdGV4aXQgXCIka3NmdF9za2lwXCJcbiBmaVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTc6NDUuMjYyNjQ5MDY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI1NzY2NTQyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXh0aG9wIERlc3RpbmF0aW9uIFBvcnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIHRoZSBjYXBhYmlsaXR5IHRvIHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBwb3J0IChgbmhfZHN0X3BvcnRgKSBmb3IgRkRCIG5leHRob3BzLCBzcGVjaWZpY2FsbHkgd2l0aCBWWExBTiBpbiBtaW5kLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzLCBpdCdzIHByZXR0eSBmb2N1c2VkIG9uIGNvcmUgbmV0d29ya2luZyBpbmZyYXN0cnVjdHVyZS4gSXQgdG91Y2hlcyBjcml0aWNhbCBmaWxlcyDigJMgYG5leHRob3AuaGAsIGB2eGxhbi5oYCwgYG5leHRob3AuaGAsIGBuZXh0aG9wLmNgLCBhbmQgdGhlIHNlbGZ0ZXN0cy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBoYXMgdGhlIHBvdGVudGlhbCBmb3Igc29tZSBzdWJ0bGUgaW50ZXJhY3Rpb25zLCBzbyBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB3aGVyZSB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuIFRoZSBjaGFuZ2VzIGluIGBuZXQvaXB2NC9uZXh0aG9wLmNgIGFyZSBjcnVjaWFsLiBgcnRtX3RvX25oX2NvbmZpZ2AgaXMgcmVzcG9uc2libGUgZm9yIHBhcnNpbmcgdGhhdCBuZXcgYE5IQV9EU1RfUE9SVGAgYXR0cmlidXRlLiBUaGVuLCBgbmhfZmlsbF9ub2RlYCBhbmQgYG5oX25sbXNnX3NpemVfc2luZ2xlYCBtdXN0IG5vdyBoYW5kbGUgdGhlIHNpemluZyBhbmQgZmlsbGluZyBvZiBuZXRsaW5rIG1lc3NhZ2VzIGZvciB0aGlzIG5ldyBhdHRyaWJ1dGUuIENydWNpYWxseSwgYG5leHRob3BfY3JlYXRlYCBpcyB3aGF0IGFjdHVhbGx5IHNldHMgdGhlIGRlc3RpbmF0aW9uIHBvcnQgd2hlbiBhIG5ldyBuZXh0aG9wIGlzIGNyZWF0ZWQ7IGBuaGktXHUwMDNlZHN0X3BvcnQgPSBjZmctXHUwMDNlbmhfZHN0X3BvcnRgLlxuXG5UaGUgY2hhbmdlcyBpbiBgaW5jbHVkZS9uZXQvdnhsYW4uaGAgYXJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAgbm93IHJldHJpZXZlcyB0aGUgYGRzdF9wb3J0YCBmcm9tIGBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdGAgYW5kIHRoZW4gc2V0cyBgcmRzdC1cdTAwM2VyZW1vdGVfcG9ydGAuIFNvLCBpdCdzIGRpcmVjdGx5IGludGVncmF0aW5nIHRoaXMgZGVzdGluYXRpb24gcG9ydCBzZXR0aW5nIGludG8gdGhlIFZYTEFOIHBhdGggc2VsZWN0aW9uIGxvZ2ljLiBUaGlzIGlzIHdoZXJlIEkgd2FudCB0byBwYXkgc3BlY2lhbCBhdHRlbnRpb24sIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBoYW5kbGluZyB0aGUgY29yZSBsb2dpYyBvZiB1c2luZyB0aGUgdmFsdWUuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSByZWFjaGFiaWxpdHkgb2YgYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAsIGFuZCBjaGVjayBmb3IgcmVsYXRlZCBmdW5jdGlvbnMgaW4gdGhlIGNvZGViYXNlLiBJIHNlZSBpdCdzIGFuIGlubGluZSBmdW5jdGlvbiwgc28gaXQgc2hvdWxkIGJlIHdpZGVseSB1c2VkLiBCdXQgSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBJJ20gZ29pbmcgdG8gc2VhcmNoIGZvciBpdHMgdXNlcyB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTU0LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTc6NTMuNTIwMzE3ODgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODA4MzY4MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjY1MD1zdGF0aWMgdm9pZCB2eGxhbl94bWl0X25oKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY2My1cXHRcXHRnb3RvIGRyb3A7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2NjQ6XFx0ZG9feG1pdCA9IHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChuaCwgaGFzaCwgXFx1MDAyNm5oX3Jkc3QpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjY1LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTI2ODA9c3RhdGljIG5ldGRldl90eF90IHZ4bGFuX3htaXRfbmhpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2OTctXFx0fVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjk4OlxcdGRvX3htaXQgPSB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3QobmgsIGhhc2gsIFxcdTAwMjZuaF9yZHN0KTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY5OS1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmluY2x1ZGUvbmV0L3Z4bGFuLmg9NTM0PXN0YXRpYyBpbmxpbmUgdm9pZCB2eGxhbl9mbGFnX2F0dHJfZXJyb3IoaW50IGF0dHJ0eXBlLFxcbi0tXFxuaW5jbHVkZS9uZXQvdnhsYW4uaC01NjQtXFxuaW5jbHVkZS9uZXQvdnhsYW4uaDo1NjU6c3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXFxuaW5jbHVkZS9uZXQvdnhsYW4uaC01NjYtXFx0XFx0XFx0XFx0XFx0ICAgIHUzMiBoYXNoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxODoxMy4zMjg2OTQ5NTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkzNjYzOTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6XG5cbioqRGlnZ2luZyBpbnRvIFZYTEFOIFRyYW5zbWlzc2lvbiBMb2dpYyoqXG5cbkFscmlnaHQsIEkgc2VlIHRoYXQgdGhlIGB2eGxhbl94bWl0X25oYCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAgZnVuY3Rpb25zIGFyZSB1dGlsaXppbmcgc29tZXRoaW5nIOKAkyBwb3RlbnRpYWxseSBhIGNyaXRpY2FsIHN0cnVjdHVyZSBvciBwcm9jZXNzIOKAkyBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXQgYmV0dGVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIHJvb3RzIG9mIHRoaXMgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIHRoZSBmdW5jdGlvbiB3aGVyZSBpdCBpcyBhY3R1YWxseSBjb25maWd1cmVkLiBNeSBndXQgZmVlbGluZyBpcyB0aGlzIGlzIGdvaW5nIHRvIGJlIGluIGBydG1fdG9fbmhfY29uZmlnYC4gU28sIEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgYG5ldC9pcHY0L25leHRob3AuY2AgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIGlzIGJlaW5nIGRlZmluZWQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycywgb3IgYXQgbGVhc3QgYSBtYXAgZm9yIHdoZXJlIHRoaW5ncyBhcmUgY29uZmlndXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg0MywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjE2LjUyMjM2MTM0MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzgyOTgzNDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bV90b19uaF9jb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jPTMwMzg9c3RhdGljIGludCBydG1fbmhfZ2V0X3RpbWVyKHN0cnVjdCBubGF0dHIgKmF0dHIsIHVuc2lnbmVkIGxvbmcgZmFsbGJhY2ssXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzA2Mi1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzA2MzpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfZ3JwX3JlcyhzdHJ1Y3QgbmxhdHRyICpyZXMsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzA2NC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMxMDEtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMxMDI6c3RhdGljIGludCBydG1fdG9fbmhfY29uZmlnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzEwMy1cXHRcXHRcXHQgICAgc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBubGF0dHIgKip0YixcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zMTg5LVxcdFxcdGlmIChjZmctXFx1MDAzZW5oX2dycF90eXBlID09IE5FWFRIT1BfR1JQX1RZUEVfUkVTKVxcbm5ldC9pcHY0L25leHRob3AuYzozMTkwOlxcdFxcdFxcdGVyciA9IHJ0bV90b19uaF9jb25maWdfZ3JwX3Jlcyh0YltOSEFfUkVTX0dST1VQXSxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzE5MS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgY2ZnLCBleHRhY2spO1xcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMyNzctXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMyNzg6c3RhdGljIGludCBydG1fdG9fbmhfY29uZmlnX3J0bmwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICoqdGIsXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMyNzktXFx0XFx0XFx0XFx0IHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz0zMzEwPXN0YXRpYyBpbnQgcnRtX25ld19uZXh0aG9wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMzMjQtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMzMjU6XFx0ZXJyID0gcnRtX3RvX25oX2NvbmZpZyhuZXQsIHNrYiwgbmxoLCB0YiwgXFx1MDAyNmNmZywgZXh0YWNrKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMyNi1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMzMzYtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMzMzc6XFx0ZXJyID0gcnRtX3RvX25oX2NvbmZpZ19ydG5sKG5ldCwgdGIsIFxcdTAwMjZjZmcsIGV4dGFjayk7XFxubmV0L2lwdjQvbmV4dGhvcC5jLTMzMzgtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTg6MTkuMzA1MzQ5MzU2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1OTc1OTk5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgY29kZS1yZWxhdGVkIHRob3VnaHRzLCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgTmV4dCBIb3AgQ29kZSoqXG5cblJpZ2h0LCBgcnRtX25ld19uZXh0aG9wYCDigJMgdGhhdCdzIGEgc29saWQgZnVuY3Rpb24gdG8gc3RhcnQgd2l0aDsgaXQgZmVlbHMgbGlrZSB0aGUga2V5IGVudHJ5IHBvaW50IGZvciB0aGlzIHdob2xlIG5leHQtaG9wIGNyZWF0aW9uIHByb2Nlc3MuIEknbSB0aGlua2luZyBJIHNob3VsZCByZWFsbHkgZm9sbG93IHRoZSBsb2dpYyBmbG93IGZyb20gdGhlcmUuIEFuZCB0aGVuLCBsb29raW5nIGF0IHRoZSBjb2RlIEkgc2VlIHRoYXQgYG5oX2ZpbGxfbm9kZWAgYW5kIGBuZXh0aG9wX2NyZWF0ZWAgbG9vayBsaWtlIHByb21pc2luZyBmdW5jdGlvbnMgdG8gZXhhbWluZSBhbG9uZ3NpZGUgYHJ0bV9uZXdfbmV4dGhvcGAuIFRoZSBgbmhfZmlsbF9ub2RlYCBmdW5jdGlvbiBzZWVtcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcsIGdpdmVuIHRoZSBuYW1lLiBJIHdhbnQgdG8gY2hlY2sgdGhhdCBvbmUgb3V0IGZpcnN0LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG5vZGUgaXMgYmVpbmcgcG9wdWxhdGVkLCBhbmQgd2hhdCBraW5kIG9mIGRhdGEgaXQgcmVxdWlyZXMgZnJvbSB0aGUgdXNlci4gSXQgbG9va3MgbGlrZSB0aGUgbWFpbiBhY3Rpb24gaXRlbSBmb3IgbWUgdG9kYXkgaXMgZmlndXJpbmcgb3V0IGBuaF9maWxsX25vZGVgLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHdoYXQgZ29lcyBpbnRvIGJ1aWxkaW5nIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhIG5leHQgaG9wLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzI4LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTg6MjMuMTY1MTExOTc5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0Mjc2NDQxNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmhfZmlsbF9ub2RlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25leHRob3AuYz04NjY9c3RhdGljIGludCBubGFfcHV0X25oX2dyb3VwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy05MTQtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjkxNTpzdGF0aWMgaW50IG5oX2ZpbGxfbm9kZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV4dGhvcCAqbmgsXFxubmV0L2lwdjQvbmV4dGhvcC5jLTkxNi1cXHRcXHRcXHRpbnQgZXZlbnQsIHUzMiBwb3J0aWQsIHUzMiBzZXEsIHVuc2lnbmVkIGludCBubGZsYWdzLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jPTEwODk9c3RhdGljIHZvaWQgbmV4dGhvcF9ub3RpZnkoaW50IGV2ZW50LCBzdHJ1Y3QgbmV4dGhvcCAqbmgsIHN0cnVjdCBubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTEwOTktXFxubmV0L2lwdjQvbmV4dGhvcC5jOjExMDA6XFx0ZXJyID0gbmhfZmlsbF9ub2RlKHNrYiwgbmgsIGV2ZW50LCBpbmZvLVxcdTAwM2Vwb3J0aWQsIHNlcSwgbmxmbGFncywgMCk7XFxubmV0L2lwdjQvbmV4dGhvcC5jLTExMDEtXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz0zNDE4PXN0YXRpYyBpbnQgcnRtX2dldF9uZXh0aG9wKHN0cnVjdCBza19idWZmICppbl9za2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTM0NDgtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjM0NDk6XFx0ZXJyID0gbmhfZmlsbF9ub2RlKHNrYiwgbmgsIFJUTV9ORVdORVhUSE9QLCBORVRMSU5LX0NCKGluX3NrYikucG9ydGlkLFxcbm5ldC9pcHY0L25leHRob3AuYy0zNDUwLVxcdFxcdFxcdCAgIG5saC1cXHUwMDNlbmxtc2dfc2VxLCAwLCBvcF9mbGFncyk7XFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9MzYzNz1zdGF0aWMgaW50IHJ0bV9kdW1wX25leHRob3BfY2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTM2NDUtXFxubmV0L2lwdjQvbmV4dGhvcC5jOjM2NDY6XFx0cmV0dXJuIG5oX2ZpbGxfbm9kZShza2IsIG5oLCBSVE1fTkVXTkVYVEhPUCxcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzY0Ny1cXHRcXHRcXHQgICAgTkVUTElOS19DQihjYi1cXHUwMDNlc2tiKS5wb3J0aWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjI1LjU5Mjc2MjY4N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzcyMjc4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipNeSBJbW1lZGlhdGUgQXNzZXNzbWVudCBvZiBOZXh0aG9wIE1hbmFnZW1lbnQqKlxuXG5BbHJpZ2h0LCBzbyBJIHNlZSBhIGNsZWFyIGdyb3VwIG9mIGZ1bmN0aW9ucyBoZXJlIOKAkyBgcnRtX25ld19uZXh0aG9wYCwgYHJ0bV9nZXRfbmV4dGhvcGAsIGBydG1fZHVtcF9uZXh0aG9wX2NiYCwgYW5kIGBuZXh0aG9wX25vdGlmeWAuIFRoZXNlIGFyZSB0aGUgb25lcyBhY3RpdmVseSBpbnZvbHZlZCBpbiBjYWxsaW5nIGZ1bmN0aW9ucyBmb3IgdGhlIG5leHRob3AgcHJvY2Vzc2VzLiBUaGF0J3MgZ29vZCwgaXQgaGVscHMgdG8gaWRlbnRpZnkgdGhlIHBvdGVudGlhbCBlbnRyeSBhbmQgZXhpdCBwb2ludHMgZm9yIG5leHRob3AgaW50ZXJhY3Rpb24uIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBjcmVhdGlvbiBmdW5jdGlvbiwgYG5leHRob3BfY3JlYXRlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhlc2UgY2FsbHMgdHJpZ2dlciBhbmQgZmVlZCBpbnRvIG5leHRob3AgY3JlYXRpb24gdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBhcmNoaXRlY3R1cmUgYW5kIHBvdGVudGlhbCBpc3N1ZXMuIExldCdzIHNlZSBob3cgdGhhdCB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU4MywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjI4Ljg2OTk5Mzk2OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwODYyNDgyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXh0aG9wX2NyZWF0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmM9MTA5MD1zdGF0aWMgdm9pZCBuc2ltX2ZpYl9kdW1wX2luY29uc2lzdGVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2ZpYi5jLTExMTEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2ZpYi5jOjExMTI6c3RhdGljIHN0cnVjdCBuc2ltX25leHRob3AgKm5zaW1fbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5zaW1fZmliX2RhdGEgKmRhdGEsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2ZpYi5jLTExMTMtXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IG5oX25vdGlmaWVyX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmM9MTI1Nj1zdGF0aWMgaW50IG5zaW1fbmV4dGhvcF9pbnNlcnQoc3RydWN0IG5zaW1fZmliX2RhdGEgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmMtMTI2MS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmM6MTI2MjpcXHRuZXh0aG9wID0gbnNpbV9uZXh0aG9wX2NyZWF0ZShkYXRhLCBpbmZvKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmMtMTI2My1cXHRpZiAoSVNfRVJSKG5leHRob3ApKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jPTI3NDY9c3RhdGljIHZvaWQgZmx1c2hfYWxsX25leHRob3BzKHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0yNzYxLVxcbm5ldC9pcHY0L25leHRob3AuYzoyNzYyOnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGVfZ3JvdXAoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC9pcHY0L25leHRob3AuYy0yNzYzLVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmhfY29uZmlnICpjZmcpXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9MjkwOD1zdGF0aWMgaW50IG5oX2NyZWF0ZV9pcHY2KHN0cnVjdCBuZXQgKm5ldCwgIHN0cnVjdCBuZXh0aG9wICpuaCxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0yOTQxLVxcbm5ldC9pcHY0L25leHRob3AuYzoyOTQyOnN0YXRpYyBzdHJ1Y3QgbmV4dGhvcCAqbmV4dGhvcF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmhfY29uZmlnICpjZmcsXFxubmV0L2lwdjQvbmV4dGhvcC5jLTI5NDMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jPTMwMDE9c3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zMDE1LVxcdGlmIChjZmctXFx1MDAzZW5oX2dycClcXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzAxNjpcXHRcXHRuaCA9IG5leHRob3BfY3JlYXRlX2dyb3VwKG5ldCwgY2ZnKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAxNy1cXHRlbHNlXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMwMTg6XFx0XFx0bmggPSBuZXh0aG9wX2NyZWF0ZShuZXQsIGNmZywgZXh0YWNrKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzAxOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTg6MzAuODc4NjI1MjM0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1OTI4NDI0NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBJbnF1aXJ5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IG5leHRob3BzIGFyZSBjcmVhdGVkIGFuZCB1c2VkLiBJdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCBgbmV4dGhvcF9hZGRgIGlzIGZ1bmRhbWVudGFsLCBhbmQgaXQncyBjYWxsZWQgYnkgYG5leHRob3BfY3JlYXRlYC4gRnVydGhlciwgYHJ0bV9uZXdfbmV4dGhvcGAgYWxzbyBtYWtlcyB1c2Ugb2YgYG5leHRob3BfYWRkYC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHNldmVyYWwgZnVuY3Rpb25zIGlmIEkgd2FudCB0byBmdWxseSB1bmRlcnN0YW5kIHRoaXMsIHNwZWNpZmljYWxseTogYHJ0bV9uZXdfbmV4dGhvcGAsIGBydG1fZ2V0X25leHRob3BgLCBgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0YCwgYHZ4bGFuX3htaXRfbmhgLCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAuIFRoZXNlIGFwcGVhciB0byBiZSB0aGUga2V5IHBvaW50cyBvZiBpbnRlcmFjdGlvbi5cblxuTm93LCBsZXQgbWUgY2hlY2sgZm9yIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSBhbHJlYWR5IGtub3cgdGhhdCBWWExBTiBuZWVkcyBgQ09ORklHX1ZYTEFOYCwgb2J2aW91c2x5LiBCdXQgd2hhdCBhYm91dCBuZXh0aG9wcyBtb3JlIGdlbmVyYWxseT8gSSB3b25kZXIgaWYgYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgIGlzIHJlcXVpcmVkLCBvciBpZiBgQ09ORklHX05FVGAgYWxvbmUgaXMgc3VmZmljaWVudD8gVGhlIHNhZmVzdCBiZXQgd291bGQgYmUgdG8gY2hlY2sgYG5ldC9pcHY0L0tjb25maWdgIGFuZCBzZWUgd2hhdCB0aGUgbmV4dGhvcCBzZWN0aW9uIHNheXMuIFRoYXQgc2hvdWxkIGNsYXJpZnkgYW55IGJ1aWxkLXRpbWUgcHJlcmVxdWlzaXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1MjcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTg6MzUuNDcxNDcxMjc4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI5NDE5OTk1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXh0aG9wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjM2LjkwMDkwMDQwM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDMxMzc5ODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIElQdjQgTWFrZWZpbGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgSVB2NCBuZXR3b3JraW5nIHN0YWNrLiBXaGVyZSdzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0PyBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHJpZ2h0IGZvciB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSB0aGUgYnVpbGQgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBzcGVjaWZpYyBzdWJzeXN0ZW0gYXJlIGdvaW5nIHRvIGJlIGRlZmluZWQuIEl0J3MgdGhlIGNlbnRyYWwgaHViIGZvciBob3cgZXZlcnl0aGluZyBJUHY0LXJlbGF0ZWQgZ2V0cyBjb21waWxlZCBhbmQgbGlua2VkIGludG8gdGhlIGtlcm5lbC4gVGhpcyBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29tcG9uZW50IGlzIGJ1aWx0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDk5OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjQxLjkzMjI4NDE5OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NjcyOTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5leHRob3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTYtXFx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XFx0ICAgICBtZXRyaWNzLm8gbmV0bGluay5vIG5leHRob3AubyB1ZHBfdHVubmVsX3N0dWIub1xcbm5ldC9pcHY0L01ha2VmaWxlLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxODo0Mi40MDE5NjA3OTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwMjI0NjA3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIElQdjQgYW5kIFZYTEFOIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gYG5leHRob3Aub2AgaXMgY29uc2lzdGVudGx5IGJ1aWx0IHdpdGggSVB2NCBpbiBtaW5kLiBNYWtlcyBzZW5zZS4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBhc3NvY2lhdGVkIHdpdGggVlhMQU4uIE15IGluaXRpYWwgdGhvdWdodCBpcyBgQ09ORklHX1ZYTEFOYCwgb2J2aW91c2x5LiBUaW1lIHRvIGNoZWNrIHRoZSBzdGFuZGFyZCBsb2NhdGlvbnMgZm9yIHRoZXNlIHNvcnRzIG9mIHRoaW5nczogYGRyaXZlcnMvbmV0L01ha2VmaWxlYCBvciBwZXJoYXBzIGEgbW9yZSBzcGVjaWZpYyBgZHJpdmVycy9uZXQvdnhsYW4vTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSByZWxldmFudCBidWlsZCBmbGFncyBhbmQgZGVwZW5kZW5jaWVzLiBJJ20gYXNzdW1pbmcgaXQncyBnb3QgdG8gYmUgb25lIG9mIHRob3NlIHR3byBmaWxlcywgaWYgbm90IGJvdGghXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjg5LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDM6MTg6NDYuODA0MjA5MDIzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTc3OTk1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2eGxhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVklSVElPX05FVCkgKz0gdmlydGlvX25ldC5vXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX1ZYTEFOKSArPSB2eGxhbi9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0zNy1vYmotJChDT05GSUdfR0VORVZFKSArPSBnZW5ldmUub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxODo0Ni45MDM5OTQxNDdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAyMDA3MTk2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBWWExBTiBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byB0aGUgVlhMQU4gc2V0dXAsIGFuZCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50LCBhcyBleHBlY3RlZCwgaXMgYENPTkZJR19WWExBTmAuIEJ1dCBhcmUgdGhlcmUgYW55ICpvdGhlciogcmVsZXZhbnQgY29uZmlncyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gTGV0IG1lIHRoaW5rLi4uIHRoZSB0ZXN0IHNjcmlwdCB1c2VzIGBtYXVzZXphaG5gLCBgdGNgLCBhbmQgYGJyaWRnZWAsIHdoaWNoIHN1Z2dlc3RzIGEgZmV3IG1vcmUgcG9zc2liaWxpdGllcy4gRm9yIHRoZSB0ZXN0aW5nIGVudmlyb25tZW50LCBJJ20gdGhpbmtpbmcgYENPTkZJR19ORVRfU0NIX0lOR1JFU1NgLCBgQ09ORklHX05FVF9DTFNfRkxPV0VSYCwgYW5kLCBvZiBjb3Vyc2UsIGBDT05GSUdfQlJJREdFYCBtaWdodCBiZSB1c2VmdWwsIGJ1dCBgQ09ORklHX1ZYTEFOYCBpcyB1bmRvdWJ0ZWRseSB0aGUgbW9zdCBjcml0aWNhbCBmb3IgY29yZSBmdW5jdGlvbmFsaXR5LlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgZm9jdXMgc3ltYm9scy4gSSd2ZSBnb3QgbXkgaW5pdGlhbCBsaXN0OiBgcnRtX25ld19uZXh0aG9wYCwgYHJ0bV9nZXRfbmV4dGhvcGAsIGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgLCBgdnhsYW5feG1pdF9uaGAsIGFuZCBgdnhsYW5feG1pdF9uaGlkYC4gV2FpdCBhIG1pbnV0ZSwgYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAgaXMgYW4gaW5saW5lIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0IHdvbid0IGJlIGEgZGlyZWN0IHRhcmdldCBmb3IgaW52ZXN0aWdhdGlvbiwgYnV0IHJhdGhlciB0aGUgZnVuY3Rpb25zICpjYWxsaW5nKiBpdCwgd2hpY2ggYXJlIGB2eGxhbl94bWl0X25oYCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAuIEl0J3MgaW5saW5lIGluIGBpbmNsdWRlL25ldC92eGxhbi5oYCwgc28gSSdsbCBwcmlvcml0aXplIHRob3NlIHR3by5cblxuT2theSwgc28gdGhlIGZvY3VzZWQgbGlzdCBpcyBnb2luZyB0byBiZTogYHJ0bV9uZXdfbmV4dGhvcGAsIGBydG1fZ2V0X25leHRob3BgLCBgcnRtX3RvX25oX2NvbmZpZ2AsIGBuaF9maWxsX25vZGVgLCBgbmV4dGhvcF9jcmVhdGVgLCBgdnhsYW5feG1pdF9uaGAsIGFuZCBgdnhsYW5feG1pdF9uaGlkYC4gSSBuZWVkIHRvIG5vdyB2ZXJpZnkgaWYgYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYCBhcmUgc3RhdGljIGFzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTk3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjUzLjkyNDA2OTI5OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2NzM4MDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX3htaXRfbmhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yMzQ0PXZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjQ5LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjUwOnN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfbmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY1MS1cXHRcXHRcXHQgIHN0cnVjdCB2eGxhbl9mZGIgKmYsIF9fYmUzMiB2bmksIGJvb2wgZGlkX3JzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjc5LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjgwOnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY4MS1cXHRcXHRcXHRcXHQgICB1MzIgbmhpZCwgX19iZTMyIHZuaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yNzI1PXN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjc3Mi1cXHRpZiAobmhpZClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc3MzpcXHRcXHRyZXR1cm4gdnhsYW5feG1pdF9uaGlkKHNrYiwgZGV2LCBuaGlkLCB2bmkpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzc0LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4MTgtXFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihmLVxcdTAwM2VuaCkpIHtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjgxOTpcXHRcXHR2eGxhbl94bWl0X25oKHNrYiwgZGV2LCBmLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODIwLVxcdFxcdFxcdCAgICAgICh2bmkgPyA6IHZ4bGFuLVxcdTAwM2VkZWZhdWx0X2RzdC5yZW1vdGVfdm5pKSwgZGlkX3JzYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDAzOjE4OjU0LjQwMDgxNDk1N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzM4NjU4MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFN0YXRpYyBOYXR1cmUgb2YgQ29yZSBWWExBTiBEYXRhIFN0cnVjdHVyZXMqKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBzdGF0aWMgZWxlbWVudHMgaGVyZS4gSSdtIGZvY3VzaW5nIG9uIHRoZSBWWExBTiB0cmFuc21pc3Npb24gbWVjaGFuaXNtcyDigJMgc3BlY2lmaWNhbGx5IGB2eGxhbl94bWl0X25oYCwgYHZ4bGFuX3htaXRfbmhpZGAsIGFuZCBob3cgdGhlc2UgcmVsYXRlIHRvIHRoZSBicm9hZGVyIHJvdXRpbmcgdGFibGUgbWFuYWdlbWVudCwgaW5jbHVkaW5nIGBydG1fbmV3X25leHRob3BgLCBgcnRtX3RvX25oX2NvbmZpZ2AsIGBuZXh0aG9wX2NyZWF0ZWAsIGFuZCBgbmhfZmlsbF9ub2RlYC4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIHRoYXQgdGhleSAqYXJlKiBzdGF0aWMuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoYXQgYHJ0bV90b19uaF9jb25maWdgIGlzIHN0YXRpYy4gSXQncyBhIGtleSBmdW5jdGlvbiBpbiB0cmFuc2xhdGluZyByb3V0aW5nIG1lc3NhZ2VzIGludG8gbmV4dC1ob3AgY29uZmlndXJhdGlvbnMsIHNvIGl0cyBiZWhhdmlvciBiZWluZyBzdGF0aWMgb3Igbm90IGlzIGdvaW5nIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB3ZSBjYW4gYXBwbHkgYW55IGR5bmFtaWMgcnVsZXMgdG8gaXRzIGJlaGF2aW9yLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBnZXQgYSBkZWZpbml0aXZlIGFuc3dlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5OTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxODo1OC43Mzk0NzY3NDhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTY5OTI4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydG1fdG9fbmhfY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25leHRob3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmM9MzAzOD1zdGF0aWMgaW50IHJ0bV9uaF9nZXRfdGltZXIoc3RydWN0IG5sYXR0ciAqYXR0ciwgdW5zaWduZWQgbG9uZyBmYWxsYmFjayxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0zMDYyLVxcbm5ldC9pcHY0L25leHRob3AuYzozMDYzOnN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZ19ncnBfcmVzKHN0cnVjdCBubGF0dHIgKnJlcywgc3RydWN0IG5oX2NvbmZpZyAqY2ZnLFxcbm5ldC9pcHY0L25leHRob3AuYy0zMDY0LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzEwMS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzEwMjpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY0L25leHRob3AuYy0zMTAzLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMxODktXFx0XFx0aWYgKGNmZy1cXHUwMDNlbmhfZ3JwX3R5cGUgPT0gTkVYVEhPUF9HUlBfVFlQRV9SRVMpXFxubmV0L2lwdjQvbmV4dGhvcC5jOjMxOTA6XFx0XFx0XFx0ZXJyID0gcnRtX3RvX25oX2NvbmZpZ19ncnBfcmVzKHRiW05IQV9SRVNfR1JPVVBdLFxcbm5ldC9pcHY0L25leHRob3AuYy0zMTkxLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBjZmcsIGV4dGFjayk7XFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzI3Ny1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzI3ODpzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWdfcnRubChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzI3OS1cXHRcXHRcXHRcXHQgc3RydWN0IG5oX2NvbmZpZyAqY2ZnLFxcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jPTMzMTA9c3RhdGljIGludCBydG1fbmV3X25leHRob3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMyNC1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzMyNTpcXHRlcnIgPSBydG1fdG9fbmhfY29uZmlnKG5ldCwgc2tiLCBubGgsIHRiLCBcXHUwMDI2Y2ZnLCBleHRhY2spO1xcbm5ldC9pcHY0L25leHRob3AuYy0zMzI2LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMzNi1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzMzNzpcXHRlcnIgPSBydG1fdG9fbmhfY29uZmlnX3J0bmwobmV0LCB0YiwgXFx1MDAyNmNmZywgZXh0YWNrKTtcXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzMzOC1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxODo1OC44NTkxODA3M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjY0MzY2NTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZYTEFOIERlc3RpbmF0aW9uIFBvcnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGFib3V0IGFkZGluZyBkZXN0aW5hdGlvbiBwb3J0IHNwZWNpZmljYXRpb24gdG8gRm9yd2FyZGluZyBEYXRhYmFzZSAoRkRCKSBuZXh0aG9wcywgc3BlY2lmaWNhbGx5IGZvciBWWExBTi4gVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIGFiaWxpdHkgdG8gY29uZmlndXJlIGEgZGVzdGluYXRpb24gcG9ydCwgYG5oX2RzdF9wb3J0YCwgZGlyZWN0bHkgb24gYSBWWExBTiBuZXh0aG9wLiBJIHNlZSB0aGUgY2hhbmdlcyB0b3VjaCB0aGUgbmV0bGluayBBUEkgdG8gcGFyc2UgYE5IQV9EU1RfUE9SVGAsIHdoaWNoIGlzIHRoZW4gc3RvcmVkIHdpdGhpbiB0aGUgbmV4dGhvcCBjb25maWd1cmF0aW9uIGl0c2VsZi4gVGhpcyBjb25maWd1cmF0aW9uIGlzIHN1YnNlcXVlbnRseSB1dGlsaXplZCBkdXJpbmcgdGhlIFZYTEFOIHRyYW5zbWlzc2lvbiBwYXRoIHNlbGVjdGlvbiBwcm9jZXNzLlxuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaXTigJlzIGEgbW9kaWZpY2F0aW9uIGRlZXAgd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHRoZSBWWExBTiBkcml2ZXIuIFRoYXQncyBnb29kIGZyb20gbXkgcGVyc3BlY3RpdmU6IGl0J3MgcmVhY2hhYmxlIGNvZGUgYW5kIHRoZXJlZm9yZSB2ZXJ5IGZ1enphYmxlLiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gZGVtb25zdHJhdGUgdGhhdCB0aGlzIGlzIHdvcmtpbmcgZnJvbSBhbiBvcGVyYXRpb25hbCBwZXJzcGVjdGl2ZSAtIHRoZXJlIGNhbid0IGJlIGEgZGlzY29ubmVjdCBmcm9tIHRoZSBjb25maWd1cmF0aW9uIHRvIHRoZSBleGVjdXRpb24uXG5cbkkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2Ugc3ltYm9sczogYHJ0bV9uZXdfbmV4dGhvcGAsIGBydG1fdG9fbmhfY29uZmlnYCwgYG5leHRob3BfY3JlYXRlYCwgYG5oX2ZpbGxfbm9kZWAsIGB2eGxhbl94bWl0X25oYCwgYW5kIGB2eGxhbl94bWl0X25oaWRgLiBUaGVzZSBhcmUgZ29pbmcgdG8gYmUgdGhlIGtleSBhcmVhcyB3aGVyZSB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgaXMgaW50cm9kdWNlZCBhbmQgd2hlcmUgdGhlIGludGVncmF0aW9uIHdpdGggdGhlIGV4aXN0aW5nIFZYTEFOIHBhdGggaGFwcGVucy5cblxuSSdtIHRoaW5raW5nIHdlIG5lZWQgdG8gc2V0IHRoaXMgdXAgc28gd2UgY2FuIGdldCBtZWFuaW5nZnVsIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzOTY0LCJPdXRwdXRUb2tlbnMiOjE4NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwMzoxOTowNC41MjM1NTA1NjNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA3MDAzOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZYTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRtX25ld19uZXh0aG9wXCIsXG4gICAgXCJydG1fdG9fbmhfY29uZmlnXCIsXG4gICAgXCJuZXh0aG9wX2NyZWF0ZVwiLFxuICAgIFwibmhfZmlsbF9ub2RlXCIsXG4gICAgXCJ2eGxhbl94bWl0X25oXCIsXG4gICAgXCJ2eGxhbl94bWl0X25oaWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYSBkZXN0aW5hdGlvbiBwb3J0IChuaF9kc3RfcG9ydCkgb24gZmRiIG5leHRob3BzIChlLmcuLCBWWExBTikuIEl0IG1vZGlmaWVzIHRoZSBuZXRsaW5rIEFQSSB0byBwYXJzZSBOSEFfRFNUX1BPUlQsIHN0b3JlcyBpdCBpbiB0aGUgbmV4dGhvcCBjb25maWd1cmF0aW9uLCBhbmQgdXNlcyBpdCBkdXJpbmcgVlhMQU4gdHJhbnNtaXQgcGF0aCBzZWxlY3Rpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIGFuZCBWWExBTiBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV9uZXdfbmV4dGhvcFwiLFxuICAgIFwicnRtX3RvX25oX2NvbmZpZ1wiLFxuICAgIFwibmV4dGhvcF9jcmVhdGVcIixcbiAgICBcIm5oX2ZpbGxfbm9kZVwiLFxuICAgIFwidnhsYW5feG1pdF9uaFwiLFxuICAgIFwidnhsYW5feG1pdF9uaGlkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGEgZGVzdGluYXRpb24gcG9ydCAobmhfZHN0X3BvcnQpIG9uIGZkYiBuZXh0aG9wcyAoZS5nLiwgVlhMQU4pLiBJdCBtb2RpZmllcyB0aGUgbmV0bGluayBBUEkgdG8gcGFyc2UgTkhBX0RTVF9QT1JULCBzdG9yZXMgaXQgaW4gdGhlIG5leHRob3AgY29uZmlndXJhdGlvbiwgYW5kIHVzZXMgaXQgZHVyaW5nIFZYTEFOIHRyYW5zbWl0IHBhdGggc2VsZWN0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgVlhMQU4gZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbzxdr[1] Phase: Succeeded StartedAt: 2026-07-24 03:20:17 +0000 UTC FinishedAt: 2026-07-24 03:20:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-24 03:20:17 +0000 UTC FinishedAt: 2026-07-24 03:20:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2] Phase: Succeeded StartedAt: 2026-07-24 03:20:17 +0000 UTC FinishedAt: 2026-07-24 07:48:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-24 03:20:17 +0000 UTC FinishedAt: 2026-07-24 07:48:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-24 03:20:17 +0000 UTC FinishedAt: 2026-07-24 03:20:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-24 03:20:17 +0000 UTC FinishedAt: 2026-07-24 03:20:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbzxdr/series-workflowbzxdr-convert-artifact-469581605/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-24 03:20:39 +0000 UTC FinishedAt: 2026-07-24 03:55:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-24 03:20:39 +0000 UTC FinishedAt: 2026-07-24 03:55:20 +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:*b9cdec53-0dc4-4ead-aa57-9161015dd928,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-workflowbzxdr/series-workflowbzxdr-convert-artifact-469581605/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": "9da72874-0024-4dc9-a2ef-d1c0bfc66717", "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-workflowbzxdr/series-workflowbzxdr-build-action-202447691/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-24 03:20:39 +0000 UTC FinishedAt: 2026-07-24 03:55:09 +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:*b9cdec53-0dc4-4ead-aa57-9161015dd928,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-workflowbzxdr/series-workflowbzxdr-convert-artifact-469581605/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": "9da72874-0024-4dc9-a2ef-d1c0bfc66717", "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-workflowbzxdr/series-workflowbzxdr-build-action-202447691/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-24 03:55:20 +0000 UTC FinishedAt: 2026-07-24 03:55:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-24 03:55:20 +0000 UTC FinishedAt: 2026-07-24 03:55:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-24 03:55:20 +0000 UTC FinishedAt: 2026-07-24 03:55:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-24 03:55:20 +0000 UTC FinishedAt: 2026-07-24 03:55:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbzxdr/series-workflowbzxdr-convert-artifact-172914176/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-24 03:55:55 +0000 UTC FinishedAt: 2026-07-24 03:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-24 03:55:55 +0000 UTC FinishedAt: 2026-07-24 03:57:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9da72874-0024-4dc9-a2ef-d1c0bfc66717,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-workflowbzxdr/series-workflowbzxdr-build-action-202447691/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-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-24 03:57:55 +0000 UTC FinishedAt: 2026-07-24 03:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-24 03:57:55 +0000 UTC FinishedAt: 2026-07-24 03:57:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-24 03:57:55 +0000 UTC FinishedAt: 2026-07-24 04:43:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-24 03:57:55 +0000 UTC FinishedAt: 2026-07-24 04:43:01 +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:*b9cdec53-0dc4-4ead-aa57-9161015dd928,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-workflowbzxdr/series-workflowbzxdr-convert-artifact-172914176/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": "85d523d2-de15-4ad6-9a11-1c211b3f6a2d", "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-workflowbzxdr/series-workflowbzxdr-build-action-2218550204/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-24 03:57:56 +0000 UTC FinishedAt: 2026-07-24 04:42:51 +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:*b9cdec53-0dc4-4ead-aa57-9161015dd928,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-workflowbzxdr/series-workflowbzxdr-convert-artifact-172914176/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": "85d523d2-de15-4ad6-9a11-1c211b3f6a2d", "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-workflowbzxdr/series-workflowbzxdr-build-action-2218550204/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-24 04:43:01 +0000 UTC FinishedAt: 2026-07-24 04:43:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-24 04:43:01 +0000 UTC FinishedAt: 2026-07-24 04:43:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-24 04:43:01 +0000 UTC FinishedAt: 2026-07-24 04:45:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-24 04:43:01 +0000 UTC FinishedAt: 2026-07-24 04:44:53 +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:*85d523d2-de15-4ad6-9a11-1c211b3f6a2d,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-workflowbzxdr/series-workflowbzxdr-build-action-2218550204/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-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-24 04:45:03 +0000 UTC FinishedAt: 2026-07-24 07:48:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-24 04:45:03 +0000 UTC FinishedAt: 2026-07-24 07:48:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"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:*9da72874-0024-4dc9-a2ef-d1c0bfc66717,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*85d523d2-de15-4ad6-9a11-1c211b3f6a2d,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-workflowbzxdr/series-workflowbzxdr-build-action-202447691/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-workflowbzxdr/series-workflowbzxdr-build-action-2218550204/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-24 04:45:03 +0000 UTC FinishedAt: 2026-07-24 04:45:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-24 04:45:03 +0000 UTC FinishedAt: 2026-07-24 04:45:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"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-workflowbzxdr/series-workflowbzxdr-convert-artifact-3798682457/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-24 04:45:03 +0000 UTC FinishedAt: 2026-07-24 04:45:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-24 04:45:03 +0000 UTC FinishedAt: 2026-07-24 04:45:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-24 04:45:03 +0000 UTC FinishedAt: 2026-07-24 04:45:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-24 04:45:24 +0000 UTC FinishedAt: 2026-07-24 07:48:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzxdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_new_nexthop","rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"f8da41d0-bd0b-47e1-9457-180e305ed408","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-24 04:45:24 +0000 UTC FinishedAt: 2026-07-24 07:48:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9da72874-0024-4dc9-a2ef-d1c0bfc66717,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*85d523d2-de15-4ad6-9a11-1c211b3f6a2d,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-workflowbzxdr/series-workflowbzxdr-build-action-202447691/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-workflowbzxdr/series-workflowbzxdr-build-action-2218550204/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-workflowbzxdr/series-workflowbzxdr-convert-artifact-3798682457/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,}