Name: series-workflow8bwmh Phase: Succeeded StartedAt: 2026-07-23 04:28:10 +0000 UTC FinishedAt: 2026-07-23 09:17:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[0] Phase: Succeeded StartedAt: 2026-07-23 04:28:10 +0000 UTC FinishedAt: 2026-07-23 04:45:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 04:28:10 +0000 UTC FinishedAt: 2026-07-23 04:45:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f43ee0c0730d6191629b5ee1ceae27b1ebfdc047", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f43ee0c0730d6191629b5ee1ceae27b1ebfdc047", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS" ], "series_id": "49ebe234-50ac-43ca-ac47-016745dfbc24" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "xsk_skb_metadata", "__xsk_sendmsg", "xsk_sendmsg", "__xsk_generic_xmit", "xsk_build_skb", "xsk_build_skb_zerocopy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX3NrYl9tZXRhZGF0YSYjMzQ7LAogICAgJiMzNDtfX3hza19zZW5kbXNnJiMzNDssCiAgICAmIzM0O3hza19zZW5kbXNnJiMzNDssCiAgICAmIzM0O19feHNrX2dlbmVyaWNfeG1pdCYjMzQ7LAogICAgJiMzNDt4c2tfYnVpbGRfc2tiJiMzNDssCiAgICAmIzM0O3hza19idWlsZF9za2JfemVyb2NvcHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gb2YgVFggbWV0YWRhdGEgaW4gQUZfWERQIHNvY2tldHMgKGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWApLCBhZGRpbmcgY2hlY2tzIGZvciB0aGUgbWV0YWRhdGEgbGVuZ3RoIGFnYWluc3QgdGhlIHBvb2wgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgKGUuZy4sIGB4c2tfc2VuZG1zZ2AsIGBfX3hza19nZW5lcmljX3htaXRgKSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgbGVuZ3RoIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3Mzk4OGZjOWZiMjExMTI2YzQ4ODc3OGYzNWEzMDcyOTdjNWViMzExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDQ6NDQ6MjUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmggYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxuaW5kZXggNDY3OTc2NDVhMGMyNDEuLjVjNTRjNzQ2MmM0NWUzIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXG5AQCAtMjYwLDkgJiM0MzsyNjAsMjIgQEAgeHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuIFx0MClcbiBcbiBzdGF0aWMgaW5saW5lIGJvb2xcbi14c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKVxuJiM0Mzt4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiYjNDM7XHRcdFx0ICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSlcbiB7XG4tXHRyZXR1cm4gIShtZXRhLVx1MDAzZWZsYWdzIFx1MDAyNiB+WERQX1RYTURfRkxBR1NfVkFMSUQpO1xuJiM0MztcdC8qIGNvdmVycyBmbGFncywgWERQX1RYTURfRkxBR1NfQ0hFQ0tTVU0gXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX1RJTUVTVEFNUCAqL1xuJiM0MztcdGlmICh1bmxpa2VseShwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbiBcdTAwM2MgMTYpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRpZiAodW5saWtlbHkobWV0YS1cdTAwM2VmbGFncyBcdTAwMjYgflhEUF9UWE1EX0ZMQUdTX1ZBTElEKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0aWYgKG1ldGEtXHUwMDNlZmxhZ3MgXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FKVxuJiM0MztcdFx0aWYgKHVubGlrZWx5KHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIFx1MDAzY1xuJiM0MztcdFx0XHQgICAgIG9mZnNldG9mZW5kKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEsIHJlcXVlc3QubGF1bmNoX3RpbWUpKSlcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbkBAIC0yNzQsNyAmIzQzOzI4Nyw3IEBAIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdG1ldGEgPSBkYXRhIC0gcG9vbC1cdTAwM2V0eF9tZXRhZGF0YV9sZW47XG4tXHRpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKG1ldGEpKSlcbiYjNDM7XHRpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKHBvb2wsIG1ldGEpKSlcbiBcdFx0cmV0dXJuIE5VTEw7IC8qIG5vIHdheSB0byBzaWduYWwgdGhlIGVycm9yIHRvIHRoZSB1c2VyICovXG4gXG4gXHRyZXR1cm4gbWV0YTtcbkBAIC00NjksNyAmIzQzOzQ4Miw4IEBAIHhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbiBcdHJldHVybiAoc3RydWN0IHhkcF9kZXNjX2N0eCl7IH07XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgYm9vbCB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKVxuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG4mIzQzO1x0XHRcdFx0XHQgICAgICBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKVxuIHtcbiBcdHJldHVybiBmYWxzZTtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2suYyBiL25ldC94ZHAveHNrLmNcbmluZGV4IGI5NzBmMzBlYTliOWQ4Li43NWIyYzk3ZTQxZTQ4ZSAxMDA2NDRcbi0tLSBhL25ldC94ZHAveHNrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZHAveHNrLmNcbkBAIC04MDksNyAmIzQzOzgwOSw3IEBAIHN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0bWV0YSA9IGJ1ZmZlciAtIHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuO1xuLVx0aWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShtZXRhKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShwb29sLCBtZXRhKSkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0aWYgKG1ldGEtXHUwMDNlZmxhZ3MgXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX3NrYl9tZXRhZGF0YSYjMzQ7LAogICAgJiMzNDtfX3hza19zZW5kbXNnJiMzNDssCiAgICAmIzM0O3hza19zZW5kbXNnJiMzNDssCiAgICAmIzM0O19feHNrX2dlbmVyaWNfeG1pdCYjMzQ7LAogICAgJiMzNDt4c2tfYnVpbGRfc2tiJiMzNDssCiAgICAmIzM0O3hza19idWlsZF9za2JfemVyb2NvcHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gb2YgVFggbWV0YWRhdGEgaW4gQUZfWERQIHNvY2tldHMgKGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWApLCBhZGRpbmcgY2hlY2tzIGZvciB0aGUgbWV0YWRhdGEgbGVuZ3RoIGFnYWluc3QgdGhlIHBvb2wgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgKGUuZy4sIGB4c2tfc2VuZG1zZ2AsIGBfX3hza19nZW5lcmljX3htaXRgKSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgbGVuZ3RoIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDczOTg4ZmM5ZmIyMTExMjZjNDg4Nzc4ZjM1YTMwNzI5N2M1ZWIzMTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyMyAwNDo0NDoyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgKaW5kZXggNDY3OTc2NDVhMGMyNDEuLjVjNTRjNzQ2MmM0NWUzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaApAQCAtMjYwLDkgJiM0MzsyNjAsMjIgQEAgeHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKQogCTApCiAKIHN0YXRpYyBpbmxpbmUgYm9vbAoteHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSkKJiM0Mzt4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwKJiM0MzsJCQkgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKQogewotCXJldHVybiAhKG1ldGEtJmd0O2ZsYWdzICZhbXA7IH5YRFBfVFhNRF9GTEFHU19WQUxJRCk7CiYjNDM7CS8qIGNvdmVycyBmbGFncywgWERQX1RYTURfRkxBR1NfQ0hFQ0tTVU0gJmFtcDsgWERQX1RYTURfRkxBR1NfVElNRVNUQU1QICovCiYjNDM7CWlmICh1bmxpa2VseShwb29sLSZndDt0eF9tZXRhZGF0YV9sZW4gJmx0OyAxNikpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWlmICh1bmxpa2VseShtZXRhLSZndDtmbGFncyAmYW1wOyB+WERQX1RYTURfRkxBR1NfVkFMSUQpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlpZiAobWV0YS0mZ3Q7ZmxhZ3MgJmFtcDsgWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUpCiYjNDM7CQlpZiAodW5saWtlbHkocG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuICZsdDsKJiM0MzsJCQkgICAgIG9mZnNldG9mZW5kKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEsIHJlcXVlc3QubGF1bmNoX3RpbWUpKSkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKgpAQCAtMjc0LDcgJiM0MzsyODcsNyBAQCBfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSkKIAkJcmV0dXJuIE5VTEw7CiAKIAltZXRhID0gZGF0YSAtIHBvb2wtJmd0O3R4X21ldGFkYXRhX2xlbjsKLQlpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKG1ldGEpKSkKJiM0MzsJaWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShwb29sLCBtZXRhKSkpCiAJCXJldHVybiBOVUxMOyAvKiBubyB3YXkgdG8gc2lnbmFsIHRoZSBlcnJvciB0byB0aGUgdXNlciAqLwogCiAJcmV0dXJuIG1ldGE7CkBAIC00NjksNyAmIzQzOzQ4Miw4IEBAIHhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKIAlyZXR1cm4gKHN0cnVjdCB4ZHBfZGVzY19jdHgpeyB9OwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSkKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsCiYjNDM7CQkJCQkgICAgICBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKQogewogCXJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrLmMgYi9uZXQveGRwL3hzay5jCmluZGV4IGI5NzBmMzBlYTliOWQ4Li43NWIyYzk3ZTQxZTQ4ZSAxMDA2NDQKLS0tIGEvbmV0L3hkcC94c2suYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hzay5jCkBAIC04MDksNyAmIzQzOzgwOSw3IEBAIHN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsCiAJCXJldHVybiAtRUlOVkFMOwogCiAJbWV0YSA9IGJ1ZmZlciAtIHBvb2wtJmd0O3R4X21ldGFkYXRhX2xlbjsKLQlpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKG1ldGEpKSkKJiM0MzsJaWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShwb29sLCBtZXRhKSkpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJaWYgKG1ldGEtJmd0O2ZsYWdzICZhbXA7IFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgQUZfWERQIFRYIE1ldGFkYXRhIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBsb29rcyBsaWtlIGl0JiMzOTtzIHR3ZWFraW5nIHRoZSBBRl9YRFAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBYRFAgc29ja2V0cy4gSXQmIzM5O3MgbW9kaWZ5aW5nIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAgYW5kIGBuZXQveGRwL3hzay5jYCwgd2hpY2ggdGVsbHMgbWUgdGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUuIFRoZSBtYWluIGNoYW5nZSBzZWVtcyB0byBiZSBpbiBgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgLCB3aGVyZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGBwb29sYCBhcmd1bWVudCBhbmQgYXJlIG5vdyBjaGVja2luZyBgcG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuYC4gU2luY2UgdGhpcyBpbnZvbHZlcyBtZXRhZGF0YSBoYW5kbGluZyBpbiBBRl9YRFAsIG15IGd1dCBmZWVsaW5nIHNheXMgdGhpcyBpcyBwcmltZSBmb3IgZnV6emluZy4gV2UgcmVhbGx5IG5lZWQgdG8gbWFrZSBzdXJlIHdlIHNoYWtlIHRoaXMgY29kZSBkb3duLgoKTm93LCBsZXQmIzM5O3MgZmlndXJlIG91dCB0aGUgY2FsbCBjaGFpbiBhbmQgaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIG5ldyBjb2RlIGlzIGJlaW5nIHVzZWQuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYC4gSSBrbm93IGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgYW5kIGB4c2tfc2tiX21ldGFkYXRhYC4gYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpdHNlbGYgaXMgbGlrZWx5IGNhbGxlZCBmcm9tIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhX3NrYmDigKZ0aGF0JiMzOTtzIHRoZSBsaWtlbHkgY2FsbGdyYXBoLgoKSSYjMzk7bGwgY2hlY2sgYG5ldC94ZHAveHNrLmNgIGFuZCBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgIHRvIGNvbmZpcm0gdGhlIGZ1bmN0aW9ucy4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBsZXZlcmFnZSBgZ3JlcHBlcmAgdG8gcXVpY2tseSB0cmFjayBkb3duIHRoZSBleGFjdCBsb2NhdGlvbnMgd2hlcmUgYHhza19za2JfbWV0YWRhdGFgIGFuZCBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFyZSB1c2VkLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGNvbnRleHQgYW5kIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX3NrYl9tZXRhZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jPTc5NT1zdGF0aWMgdm9pZCB4c2tfZHJvcF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGRwL3hzay5jLTgwMC1cbm5ldC94ZHAveHNrLmM6ODAxOnN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG5uZXQveGRwL3hzay5jLTgwMi1cdFx0XHQgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbi0tXG5uZXQveGRwL3hzay5jPTg0Mz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2JfemVyb2NvcHkoc3RydWN0IHhkcF9zb2NrICp4cyxcbi0tXG5uZXQveGRwL3hzay5jLTg2NS1cdFx0aWYgKGRlc2MtXHUwMDNlb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSB7XG5uZXQveGRwL3hzay5jOjg2NjpcdFx0XHRlcnIgPSB4c2tfc2tiX21ldGFkYXRhKHNrYiwgYnVmZmVyLCBkZXNjLCBwb29sLCBocik7XG5uZXQveGRwL3hzay5jLTg2Ny1cdFx0XHRpZiAodW5saWtlbHkoZXJyKSkge1xuLS1cbm5ldC94ZHAveHNrLmM9OTE5PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYihzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxuLS1cbm5ldC94ZHAveHNrLmMtOTU0LVx0XHRcdGlmIChkZXNjLVx1MDAzZW9wdGlvbnMgXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkge1xubmV0L3hkcC94c2suYzo5NTU6XHRcdFx0XHRlcnIgPSB4c2tfc2tiX21ldGFkYXRhKHNrYiwgYnVmZmVyLCBkZXNjLFxubmV0L3hkcC94c2suYy05NTYtXHRcdFx0XHRcdFx0ICAgICAgIHhzLVx1MDAzZXBvb2wsIGhyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjU5CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgQ2FsbGVycyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHBpbnBvaW50aW5nIHRoZSBjYWxsZXJzIG9mIHRoZSBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1dGlsaXplZCB3aXRoaW4gdGhlIFhEUC9BRl9YRFAgZWNvc3lzdGVtIGlzIGNydWNpYWwgZm9yIGEgbnVtYmVyIG9mIHJlYXNvbnMuIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gcGFja2V0IHByb2Nlc3NpbmcgYW5kIHRoZSBlZmZpY2llbnQgcmV0cmlldmFsIG9mIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCBYU0sgYnVmZmVycy4gSSB3YW50IHRvIHRyYWNlIHRoZSBkYXRhIGZsb3cuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHBhcnRzIG9mIHRoZSBzeXN0ZW0gYXJlICpyZWx5aW5nKiBvbiB0aGlzIGZ1bmN0aW9uLCB3aGljaCBwcm92aWRlcyBjcml0aWNhbCBjbHVlcyBhYm91dCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBwb3NzaWJsZSBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIGNlbnRyYWwgcG9pbnQgd2hlcmUgbXVsdGlwbGUgcGF0aHMgY29udmVyZ2UsIG9yIGlzIGl0IG1vcmUgc3ByZWFkIG91dD8gV2hhdCBzcGVjaWZpYyBjb250ZXh0cyBhcmUgY2FsbGluZyBpdD8gQXJlIHdlIGluIGFuIGludGVycnVwdCBoYW5kbGVyPyBUaGUgZHJpdmVyPyBVc2VyIHNwYWNlPwoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcGF0dGVybnMuIERvZXMgaXQgb25seSBnZXQgY2FsbGVkIGZyb20gY2VydGFpbiBwYXRocz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGNhbmRpZGF0ZXMgdGhhdCBhcmUgY2FsbGluZyBpdCBpbmVmZmljaWVudGx5PyBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlIGFuZCBpZiB0aGVyZSBhcmUgYW55IGFyZWFzIG9mIG9wcG9ydHVuaXR5IGZvciBpbXByb3ZlZCBlZmZpY2llbmN5IG9yIHNlY3VyaXR5LiBJcyB0aGlzIGEgcG90ZW50aWFsIGhvdHNwb3Q/IElzIHRoaXMgdGhlIHBsYWNlIHdlIHNob3VsZCBiZSBwcm9maWxpbmcsIG9yIGxvb2tpbmcgYXQgdG8gaW1wcm92ZSB0aGUgb3ZlcmFsbCBwZXJmb3JtYW5jZT8gVGhpcyBpbmZvcm1hdGlvbiwgaW4gdHVybiwgd2lsbCBwcm92aWRlIGluc2lnaHQgaW50byBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zIGFuZCBvdmVyYWxsIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgWERQIHN0YWNrLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X194c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjgxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyODI6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yODMte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI5Nz14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjk4LXtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI5OTpcdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzAwLX1cbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD00OTE9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjQ5MjpfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTQ5My17XG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM9NzY5PXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc3NS1cdHJldC5kbWEgPSBfX3hwX3Jhd19nZXRfZG1hKHBvb2wsIGFkZHIpO1xubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6Nzc2Olx0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7XG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ4NQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipYRFAgQnVmZmVyIE1ldGFkYXRhIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBkYXRhIGZsb3cgZm9yIFhEUCBidWZmZXIgbWV0YWRhdGEsIGFuZCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZ290IHNvIGZhci4gSXQgbG9va3MgbGlrZSBib3RoIGB4c2tfYnVpbGRfc2tiX3plcm9jb3B5YCBhbmQgYHhza19idWlsZF9za2JgIHVsdGltYXRlbHkgZnVubmVsIGludG8gYHhza19za2JfbWV0YWRhdGFgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBzdHVmZiBsaWtlbHkgaGFwcGVucy4gRGlnZ2luZyBkZWVwZXIsIEkgc2VlIHRoYXQgYHhwX3Jhd19nZXRfY3R4YCBjYWxscyBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgLCBhbmQgdGhlbiwgaXQgc2VlbXMgdGhhdCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCAqYWxzbyogY2FsbHMgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYC4gV2hpY2ggbWVhbnMgdGhlcmUgaXMgc29tZSBwb3RlbnRpYWwgcmVkdW5kYW5jeSBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2h5IHRoZSBgX19gIHZlcnNpb24gaXMgY2FsbGVkIGluIG11bHRpcGxlIHBsYWNlcy4gSXQgaXMgcHJvYmFibHkgdGhlIGNvcmUgb2YgdGhlIG1ldGFkYXRhIHJldHJpZXZhbC4KCk5vdywgSSByZWFsbHkgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBzaXRlcyBvZiB0aG9zZSBpbml0aWFsIGZ1bmN0aW9ucywgYHhza19idWlsZF9za2JgIGFuZCBgeHNrX2J1aWxkX3NrYl96ZXJvY29weWAuIEtub3dpbmcgKndobyogaXMgY2FsbGluZyB0aGVtIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgaG93IHRoaXMgbWV0YWRhdGEgaXMgYmVpbmcgdXNlZC4gSXQmIzM5O3MgdGltZSB0byBmb2xsb3cgdGhlIHRyYWNlcyBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVpbGRfc2tiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmM9ODAxPXN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG4tLVxubmV0L3hkcC94c2suYy04NDItXG5uZXQveGRwL3hzay5jOjg0MzpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2JfemVyb2NvcHkoc3RydWN0IHhkcF9zb2NrICp4cyxcbm5ldC94ZHAveHNrLmMtODQ0LVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpXG4tLVxubmV0L3hkcC94c2suYy05MTgtXG5uZXQveGRwL3hzay5jOjkxOTpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0IHhkcF9zb2NrICp4cyxcbm5ldC94ZHAveHNrLmMtOTIwLVx0XHRcdFx0ICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpXG4tLVxubmV0L3hkcC94c2suYy05MjYtXHRpZiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9UWF9TS0JfTk9fTElORUFSKSB7XG5uZXQveGRwL3hzay5jOjkyNzpcdFx0c2tiID0geHNrX2J1aWxkX3NrYl96ZXJvY29weSh4cywgZGVzYyk7XG5uZXQveGRwL3hzay5jLTkyOC1cdFx0aWYgKElTX0VSUihza2IpKSB7XG4tLVxubmV0L3hkcC94c2suYz0xMDI1PXN0YXRpYyBpbnQgX194c2tfZ2VuZXJpY194bWl0KHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQveGRwL3hzay5jLTEwNjItXG5uZXQveGRwL3hzay5jOjEwNjM6XHRcdHNrYiA9IHhza19idWlsZF9za2IoeHMsIFx1MDAyNmRlc2MpO1xubmV0L3hkcC94c2suYy0xMDY0LVx0XHRpZiAoSVNfRVJSKHNrYikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzAwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFhEUCBTb2NrZXQgVHJhbnNtaXNzaW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBgX194c2tfZ2VuZXJpY194bWl0YCwgdGhlIGNvcmUgZW50cnkgcG9pbnQgZm9yIGdlbmVyaWMgWERQIHNvY2tldCB0cmFuc21pc3Npb24uIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIGhvdyB3ZSBnZXQgZGF0YSBvdXQgb2YgdGhlc2Ugc29ja2V0cy4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCBhbmQgdG8gZG8gdGhhdCwgSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZSBjYWxsZXJzIG9mIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgLiBLbm93aW5nIHdobyBpcyByZXF1ZXN0aW5nIGJ1ZmZlciBtZXRhZGF0YSBmcm9tIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIGNyaXRpY2FsLCBiZWNhdXNlIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSB3b3JraW5nIHdpdGggZGF0YSBmcm9tIG91ciBzb2NrZXRzLiBVbmRlcnN0YW5kaW5nIHdoZXJlIHRoZSBtZXRhZGF0YSBpcyBiZWluZyByZXF1ZXN0ZWQgaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSB3aG8mIzM5O3MgdXRpbGl6aW5nIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2J1ZmZfZ2V0X21ldGFkYXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTMwMzc9c3RhdGljIHZvaWQgaWdjX3hkcF94bWl0X3pjKHN0cnVjdCBpZ2NfcmluZyAqcmluZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDc2LVx0XHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwNzc6XHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDc4LVx0XHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jPTY2PWJvb2wgbWx4NWVfeHNrX3R4KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHVuc2lnbmVkIGludCBidWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTEwMS1cdFx0eGRwdHhkLmxlbiA9IGRlc2MubGVuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jOjEwMjpcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTEwMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI2OTQ9c3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjczOC1cdFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjczOTpcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjc0MC1cdFx0eHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hX2FkZHIsIHhkcF9kZXNjLmxlbik7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjgxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyODI6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yODMte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI5Nj1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjk3Onhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yOTgte1xuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjk5Olx0cmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7XG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMDAtfVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTQ5MT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NDkyOl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNDkzLXtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD00OTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjQ5ODp4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNDk5LXtcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03Njk9c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzc1LVx0cmV0LmRtYSA9IF9feHBfcmF3X2dldF9kbWEocG9vbCwgYWRkcik7XG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3NzY6XHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc3Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjczOAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipYRFAgVHJhbnNtaXNzaW9uIFBhdGggQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBhIGtleSBmdW5jdGlvbiB1c2VkIGFjcm9zcyBzZXZlcmFsIGltcG9ydGFudCBuZXR3b3JrIGRyaXZlcnMgbGlrZSBpZ2MsIG1seDUsIGFuZCBzdG1tYWMuIEFuZCB0aGVuLCBgX194c2tfZ2VuZXJpY194bWl0YCBhcHBlYXJzIHRvIGxldmVyYWdlIGB4c2tfc2tiX21ldGFkYXRhYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGdlbmVyaWMgWERQIHRyYW5zbWlzc2lvbiBwYXRoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGBfX3hza19nZW5lcmljX3htaXRgLgoKVGhpcyBkZWZpbml0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gVGhlIGZsb3cgc2VlbXMgd2VsbC1kZWZpbmVkLCBzdWdnZXN0aW5nIHRoaXMgaXMgYSBwb3RlbnRpYWwgYXJlYSB0byBzY3J1dGluaXplIHdpdGggZnV6emluZy4gTXkgZ3V0IHNheXMgdGhlcmUgY291bGQgYmUgc29tZSBpbnRlcmVzdGluZywgcG9zc2libHkgZXhwbG9pdGFibGUsIHNjZW5hcmlvcyBoZXJlLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBmb3IgdGhpcyBYRFAgdHJhbnNtaXNzaW9uIHBhdGguIEkmIzM5O20gcmVjYWxsaW5nIFhEUCBzb2NrZXRzIGFyZSBlbmFibGVkIGJ5IGBDT05GSUdfWERQX1NPQ0tFVFNgLiBJJiMzOTtsbCB3YW50IHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfWERQX1NPQ0tFVFNgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIGl0ZW0uIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIHRlc3RpbmcgdGhlIHJpZ2h0IHRoaW5ncywgYW5kIHRoaXMgZmVlbHMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRFBfU09DS0VUUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC94ZHAvS2NvbmZpZzoyOmNvbmZpZyBYRFBfU09DS0VUU1xubmV0L3hkcC9LY29uZmlnLTMtXHRib29sIFwmIzM0O1hEUCBzb2NrZXRzXCYjMzQ7XG4tLVxubmV0L3hkcC9LY29uZmlnLTktXG5uZXQveGRwL0tjb25maWc6MTA6Y29uZmlnIFhEUF9TT0NLRVRTX0RJQUdcbm5ldC94ZHAvS2NvbmZpZy0xMS1cdHRyaXN0YXRlIFwmIzM0O1hEUCBzb2NrZXRzOiBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjM3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlhEUCBTb2NrZXRzIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgWERQIHNvY2tldCBzdHVmZi4gUmlnaHQsIGZpcnN0IHRoaW5nIHRvIGNvbmZpcm0gaXMgdGhhdCBgWERQX1NPQ0tFVFNgIGlzIGluZGVlZCB0aGUgY29uZmlndXJhdGlvbiBpdGVtIEkgbmVlZCB0byBsb29rIGF0LiBOb3csIHdoZXJlIGRvIEkgc3RhcnQgbXkgZGVlcGVyIGludmVzdGlnYXRpb24/IEkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBtYXAgaGVyZSwgYW5kIGEgZ29vZCBzZXQgb2YgZm9jdXMgc3ltYm9scyB3aWxsIGhlbHAgbWUuIExldCYjMzk7cyBzZWUuLi4KCkkgc2hvdWxkIGNvbmNlbnRyYXRlIG9uIGEgZmV3IGtleSB0aGluZ3M6IGB4c2tfc2tiX21ldGFkYXRhYCwgYHhza19idWlsZF9za2JgLCBgeHNrX2J1aWxkX3NrYl96ZXJvY29weWAsIGFuZCBgX194c2tfZ2VuZXJpY194bWl0YC4gTGV0JiMzOTtzIHRlc3QgYHhza19za2JfbWV0YWRhdGFgIGFzIGEgc3RhcnRpbmcgcG9pbnQsIHJpZ2h0PyBZdXAsIEkgc2VlIGl0JiMzOTtzIGEgYHN0YXRpY2AgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBsb2NhdGVkIGluIGBuZXQveGRwL3hzay5jYC4gVGhlIHNhbWUgZ29lcyBmb3IgYHhza19idWlsZF9za2JgLCB0aGF0IG9uZSYjMzk7cyBhbHNvIHN0YXRpYywgYWxzbyBpbiBgbmV0L3hkcC94c2suY2AuIEFuZCBgX194c2tfZ2VuZXJpY194bWl0YD8gSXQmIzM5O3MgdGhlIHNhbWUgZGVhbCAtIGBzdGF0aWNgIGluIGBuZXQveGRwL3hzay5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgYWxsIGNvbm5lY3RlZC4gTm93LCBgeHNrX3NlbmRtc2dgLi4uICp0aGF0KiBsb29rcyBsaWtlIHRoZSBzeXNjYWxsIGVudHJ5IHBvaW50LCBkb2VzbiYjMzk7dCBpdD8gT2theSwgSSB0aGluayBJIGhhdmUgYSBnb29kIGZyYW1ld29yayBoZXJlLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBhbmQgc2VlIGhvdyB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfc2VuZG1zZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jPTExMzg9c3RhdGljIGludCB4c2tfY2hlY2tfY29tbW9uKHN0cnVjdCB4ZHBfc29jayAqeHMpXG4tLVxubmV0L3hkcC94c2suYy0xMTQ3LVxubmV0L3hkcC94c2suYzoxMTQ4OnN0YXRpYyBpbnQgX194c2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgdG90YWxfbGVuKVxubmV0L3hkcC94c2suYy0xMTQ5LXtcbi0tXG5uZXQveGRwL3hzay5jLTExNzgtXG5uZXQveGRwL3hzay5jOjExNzk6c3RhdGljIGludCB4c2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgdG90YWxfbGVuKVxubmV0L3hkcC94c2suYy0xMTgwLXtcbi0tXG5uZXQveGRwL3hzay5jLTExODMtXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQveGRwL3hzay5jOjExODQ6XHRyZXQgPSBfX3hza19zZW5kbXNnKHNvY2ssIG0sIHRvdGFsX2xlbik7XG5uZXQveGRwL3hzay5jLTExODUtXHRyY3VfcmVhZF91bmxvY2soKTtcbi0tXG5uZXQveGRwL3hzay5jPTE5Mzk9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgeHNrX3Byb3RvX29wcyA9IHtcbi0tXG5uZXQveGRwL3hzay5jLTE5NTMtXHQuZ2V0c29ja29wdF9pdGVyID0geHNrX2dldHNvY2tvcHQsXG5uZXQveGRwL3hzay5jOjE5NTQ6XHQuc2VuZG1zZ1x0PSB4c2tfc2VuZG1zZyxcbm5ldC94ZHAveHNrLmMtMTk1NS1cdC5yZWN2bXNnXHQ9IHhza19yZWN2bXNnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTQzCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIFhEUCBTb2NrZXQgVFggUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiB0aGUgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aC4gSXQgc2VlbXMgbGlrZSBgeHNrX3NlbmRtc2dgIGFuZCBgX194c2tfc2VuZG1zZ2AgYXJlIGdvb2QgZW50cnkgcG9pbnRzIHRvIHN0YXJ0IHdpdGguIFRob3NlIGFyZSBkZWZpbml0ZWx5IGtleSBzeW1ib2xzLiBBbmQgYmFzZWQgb24gdGhlIG1vZGlmaWNhdGlvbnMsIGB4c2tfc2tiX21ldGFkYXRhYCBsb29rcyB0byBiZSB0aGUgZnVuY3Rpb24gdGhhdCB3YXMgbW9zdCBkaXJlY3RseSBpbnZvbHZlZCDigJMgb3IgYXQgbGVhc3QgaW5kaXJlY3RseSBpbnZvbHZlZCB2aWEgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYC4gSSBzaG91bGQgZGVmaW5pdGVseSBhZGQgdGhhdCB0byB0aGUgbGlzdC4gSSYjMzk7bGwgaW5jbHVkZSBgX194c2tfc2VuZG1zZ2AsIGB4c2tfc2VuZG1zZ2AsIGBfX3hza19nZW5lcmljX3htaXRgLCBgeHNrX2J1aWxkX3NrYmAsIGFuZCBgeHNrX2J1aWxkX3NrYl96ZXJvY29weWAsIHRvby4KCldhaXQgYSBzZWNvbmTigKYgSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYCBpcyBhY3R1YWxseSBhbiBpbmxpbmUgZnVuY3Rpb24gZGVmaW5lZCByaWdodCB0aGVyZSBpbiBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLiBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LiBJdCBpcyBjYWxsZWQgYnkgYm90aCBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHNrX3NrYl9tZXRhZGF0YWAuIFNvLCB5ZWFoLCB0aGF0IHNvbGlkaWZpZXMgYHhza19za2JfbWV0YWRhdGFgIGFzIGEgcHJpbWFyeSBmb2N1cyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGlzIGNoYW5nZS4KCk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwLCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIHJlbGV2YW50LiBJcyBgWERQX1NPQ0tFVFNgIHN1ZmZpY2llbnQsIG9yIGlzIHRoZXJlIHNvbWV0aGluZyBlbHNlIGF0IHBsYXk/IFRpbWUgdG8gY2hlY2sgdGhlIGBuZXQveGRwL01ha2VmaWxlYCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3JpdGljYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza1xcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX0ZTTF9EUEFBMl9TV0lUQ0gpXHRcdCYjNDM7PSBmc2wtZHBhYTItc3dpdGNoLm8gZnNsLWRwYWEyLW1hYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvTWFrZWZpbGUtOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9NYWtlZmlsZToxMDpmc2wtZHBhYTItZXRoLW9ianNcdDo9IGRwYWEyLWV0aC5vIGRwYWEyLWV0aHRvb2wubyBkcG5pLm8gZHBhYTItZXRoLWRldmxpbmsubyBkcGFhMi14c2sub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL01ha2VmaWxlLTExLWZzbC1kcGFhMi1ldGgtJHtDT05GSUdfRlNMX0RQQUEyX0VUSF9EQ0J9ICYjNDM7PSBkcGFhMi1ldGgtZGNiLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL01ha2VmaWxlPTEzPWk0MGUteSA6PSBpNDBlX21haW4ubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvTWFrZWZpbGUtMjYtXHRpNDBlX3ZpcnRjaG5sX3BmLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvTWFrZWZpbGU6Mjc6XHRpNDBlX3hzay5vXHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9NYWtlZmlsZS0yOC1cdGk0MGVfZGV2bGluay5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL01ha2VmaWxlPTU5PWljZS0kKENPTkZJR19SRlNfQUNDRUwpICYjNDM7PSBpY2VfYXJmcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvTWFrZWZpbGU6NjA6aWNlLSQoQ09ORklHX1hEUF9TT0NLRVRTKSAmIzQzOz0gaWNlX3hzay5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvTWFrZWZpbGUtNjEtaWNlLSQoQ09ORklHX0lDRV9TV0lUQ0hERVYpICYjNDM7PSBpY2VfZXN3aXRjaC5vIGljZV9lc3dpdGNoX2JyLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlPTI1PWlkcGYteVx0XHRcdFx0JiM0Mzs9IHhkcC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjI2OmlkcGYteVx0XHRcdFx0JiM0Mzs9IHhzay5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL01ha2VmaWxlPTk9aWdiLXkgOj0gaWdiX21haW4ubyBpZ2JfZXRodG9vbC5vIGUxMDAwXzgyNTc1Lm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9NYWtlZmlsZS0xMC1cdCBlMTAwMF9tYWMubyBlMTAwMF9udm0ubyBlMTAwMF9waHkubyBlMTAwMF9tYngubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL01ha2VmaWxlOjExOlx0IGUxMDAwX2kyMTAubyBpZ2JfcHRwLm8gaWdiX2h3bW9uLm8gaWdiX3hzay5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvTWFrZWZpbGU9MTA9aXhnYmUteSA6PSBpeGdiZV9tYWluLm8gaXhnYmVfY29tbW9uLm8gaXhnYmVfZXRodG9vbC5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvTWFrZWZpbGUtMTItICAgICAgICAgICBpeGdiZV9tYngubyBpeGdiZV94NTQwLm8gaXhnYmVfeDU1MC5vIGl4Z2JlX2xpYi5vIGl4Z2JlX3B0cC5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9NYWtlZmlsZToxMzogICAgICAgICAgIGl4Z2JlX3hzay5vIGl4Z2JlX2U2MTAubyBkZXZsaW5rL2RldmxpbmsubyBpeGdiZV9md191cGRhdGUubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvTWFrZWZpbGUtMTQtXHQgICBkZXZsaW5rL3JlZ2lvbi5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL01ha2VmaWxlPTExPWxpYmV0aF94ZHAteVx0XHRcdCYjNDM7PSB4ZHAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL01ha2VmaWxlOjEyOmxpYmV0aF94ZHAteVx0XHRcdCYjNDM7PSB4c2sub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZT0xMD1ydnVfbmljcGYteSA6PSBvdHgyX3BmLm8gb3R4Ml9jb21tb24ubyBvdHgyX3R4cngubyBvdHgyX2V0aHRvb2wubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTExLSAgICAgICAgICAgICAgIG90eDJfZmxvd3MubyBvdHgyX3RjLm8gY24xMGsubyBjbjIway5vIG90eDJfZG1hY19mbHQubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjEyOiAgICAgICAgICAgICAgIG90eDJfZGV2bGluay5vIHFvc19zcS5vIHFvcy5vIG90eDJfeHNrLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS0xMy1ydnVfbmljdmYteSA6PSBvdHgyX3ZmLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlPTQ9bmZwLW9ianMgOj0gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlLTI0LVx0ICAgIG5mZDMvcmluZ3MubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9NYWtlZmlsZToyNTpcdCAgICBuZmQzL3hzay5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlLTI2LVx0ICAgIG5mZGsvZHAubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGUtNDAtXHQgICAgbmZwX25ldF9zcmlvdi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlOjQxOlx0ICAgIG5mcF9uZXRfeHNrLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGUtNDItXHQgICAgbmZwX25ldHZmX21haW4ubyBcXFxuLS1cbm5ldC94ZHAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC94ZHAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfWERQX1NPQ0tFVFMpICYjNDM7PSB4c2subyB4ZHBfdW1lbS5vIHhza19xdWV1ZS5vIHhza21hcC5vXG5uZXQveGRwL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX1hEUF9TT0NLRVRTKSAmIzQzOz0geHNrX2J1ZmZfcG9vbC5vXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlPTM0Nj0kKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogJChURVNUSU5HX0hFTFBFUlMpICQoQ0FQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGU6MzQ3OiQoT1VUUFVUKS94c2subzogJChCUEZPQkopXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUtMzQ4LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZT05Mzg9RVhUUkFfU1JDIDo9ICQoVE9PTFNESVIpL2xpYi9maW5kX2JpdC5jIHByb2dfdGVzdHMvdGVzdF94c2suYyBwcm9nX3Rlc3RzL3Rlc3RfeHNrLmhcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZTo5Mzk6JChPVVRQVVQpL3hza3hjZWl2ZXI6ICQoRVhUUkFfU1JDKSB4c2t4Y2VpdmVyLmMgeHNreGNlaXZlci5oICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hza194ZHBfcHJvZ3Muc2tlbC5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLTk0MC1cdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUtOTQyLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlOjk0MzokKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhOiB4ZHBfaHdfbWV0YWRhdGEuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGEuc2tlbC5oIHwgJChPVVRQVVQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUtOTQ0LVx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU5NQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLCBteSBpbml0aWFsIGZvY3VzIGlzIG9uIGBDT05GSUdfWERQX1NPQ0tFVFNgLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaXRlbSBJIG5lZWQgdG8gaW52ZXN0aWdhdGUuCgpOb3csIGxldCBtZSBicm9hZGVuIG15IHNjb3BlIGEgYml0LiBBcmUgdGhlcmUgYW55ICpvdGhlciogcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gTGV0IG1lIHRoaW5rLi4uIHRoaXMgcGF0Y2ggcmVmZXJlbmNlcyBzcGVjaWZpYyBYRFAgbWV0YWRhdGEgZmxhZ3M6IGBYRFBfVFhNRF9GTEFHU19WQUxJRGAsIGBYRFBfVFhNRF9GTEFHU19DSEVDS1NVTWAsIGBYRFBfVFhNRF9GTEFHU19USU1FU1RBTVBgLCBhbmQgYFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FYC4gQWxsIG9mIHRoZXNlIHJlbGF0ZSB0byB0aGUgWERQIHRyYW5zbWlzc2lvbiBtZXRhZGF0YSwgc3BlY2lmaWNhbGx5LiBHaXZlbiB0aGVzZSBmbGFncywgaXQgbWFrZXMgc2Vuc2UgdG8gY29uZmlybSBpZiB0aGVyZSBpcyBhIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRpcmVjdGx5IHRpZWQgdG8gdGhlIFhEUCBtZXRhZGF0YSBpdHNlbGYuIEkgbmVlZCB0byBrbm93IGlmIGl0JiMzOTtzIGNvbmZpZ3VyYWJsZSBvciBwZXJoYXBzIGltcGxpY2l0bHkgZW5hYmxlZCBiYXNlZCBvbiB0aGUgdXNlIG9mIG90aGVyIFhEUCBmZWF0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7WERQX1RYTURfRkxBR1NfVkFMSUQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTktXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTA6LyogYGBYRFBfVFhNRF9GTEFHU19WQUxJRGBgIGlzIGRlZmluZWQgb25seSB1bmRlciBgYENPTkZJR19YRFBfU09DS0VUU2BgICovXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTE6I2lmZGVmIFhEUF9UWE1EX0ZMQUdTX1ZBTElEXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTI6c3RhdGljX2Fzc2VydChYRFBfVFhNRF9GTEFHU19WQUxJRCBcdTAwM2M9IExJQkVUSF9YRFBfVFhfWFNLTUQpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTEzLSNlbmRpZlxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI1MT14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjU1LVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjU2OiNkZWZpbmUgWERQX1RYTURfRkxBR1NfVkFMSUQgKCBcXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjU3LVx0XHRYRFBfVFhNRF9GTEFHU19USU1FU1RBTVAgfCBcXFxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI2Mz14c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNjktXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNzA6XHRpZiAodW5saWtlbHkobWV0YS1cdTAwM2VmbGFncyBcdTAwMjYgflhEUF9UWE1EX0ZMQUdTX1ZBTElEKSlcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI3MS1cdFx0cmV0dXJuIGZhbHNlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTMwMQoJCQkJCQkJb3V0cHV0OiAxOTUKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEFGX1hEUCBTb2NrZXQgVFggTWV0YWRhdGEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiB3aGVyZSB0aGUgcmVsZXZhbnQgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIGFyZSBkZWZpbmVkLCBuYW1lbHkgYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgSSBjYW4gc2VlIHRoYXQgYENPTkZJR19YRFBfU09DS0VUU2AgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBuZWVkZWQgdG8gZW5hYmxlIHRoZSBjb2RlIGJlaW5nIG1vZGlmaWVkLiBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzOyBpdCBnaXZlcyB1cyBhIGNsZWFyIGRlcGVuZGVuY3kuCgpOb3csIGxldCYjMzk7cyBicmVhayBkb3duIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LiBXZSYjMzk7cmUgY29uY2VybmVkIHdpdGggdmFsaWRhdGluZyBUWCBtZXRhZGF0YSB3aXRoaW4gdGhlIEFGX1hEUCBzb2NrZXQgaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYC4gIFRoZSBwYXRjaCYjMzk7cyBtb2RpZmljYXRpb25zIGFyZSBhZGRpbmcgbGVuZ3RoIGNoZWNrcyBhZ2FpbnN0IHRoZSBwb29sIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgY3JpdGljYWwgbmV0d29yayBjb2RlLCBhbmQgd2UgKmFic29sdXRlbHkqIG5lZWQgdG8gZnV6eiB0aGlzLiBJdCYjMzk7cyByZWFjaGVkIHRocm91Z2ggdGhlIHRyYW5zbWlzc2lvbiBwYXRocywgc28gZnVuY3Rpb25zIGxpa2UgYHhza19zZW5kbXNnYCBhbmQgYF9feHNrX2dlbmVyaWNfeG1pdGAgYXJlIGNsZWFybHkgaW4gc2NvcGUsIGFzIGFyZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gYnVpbGRpbmcgdGhlIFNLQnM6IGB4c2tfc2tiX21ldGFkYXRhYCwgYHhza19idWlsZF9za2JgLCBhbmQgYHhza19idWlsZF9za2JfemVyb2NvcHlgLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXNlIG5ldyBsZW5ndGggY2hlY2tzIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIGFsbG93IGZvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiBUaGVyZWZvcmUsIHRoZSBmdXp6IHRhcmdldHMgd2lsbCBiZSB0aGUgb25lcyBsaXN0ZWQgaW4gJiMzNDtGb2N1c1N5bWJvbHMmIzM0OyBpbiB0aGUgdGV4dC4gSSBhbSBhbHNvIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAsIGFuZCBzZXQgYEVuYWJsZUNvbmZpZ3NgIHRvIGp1c3QgYFhEUF9TT0NLRVRTYC4KCkluIGVzc2VuY2UsIHRoaXMgaXMgYSBtb2RpZmljYXRpb24gdG8gYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBBRl9YRFAgc29ja2V0IGZ1bmN0aW9uYWxpdHkuIFRoaXMgbmVjZXNzaXRhdGVzIHRob3JvdWdoIGZ1enppbmcuIFdlJiMzOTtyZSBsb29raW5nIGZvciBtZW1vcnkgY29ycnVwdGlvbiBvciBvdGhlciBsb2dpYyBlcnJvcnMgaW50cm9kdWNlZCBieSB0aGUgYWRkaXRpb25hbCBjaGVja3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hza19za2JfbWV0YWRhdGEmIzM0OywKICAgICYjMzQ7X194c2tfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDt4c2tfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtfX3hza19nZW5lcmljX3htaXQmIzM0OywKICAgICYjMzQ7eHNrX2J1aWxkX3NrYiYjMzQ7LAogICAgJiMzNDt4c2tfYnVpbGRfc2tiX3plcm9jb3B5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIG9mIFRYIG1ldGFkYXRhIGluIEFGX1hEUCBzb2NrZXRzIChgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgKSwgYWRkaW5nIGNoZWNrcyBmb3IgdGhlIG1ldGFkYXRhIGxlbmd0aCBhZ2FpbnN0IHRoZSBwb29sIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG5ldHdvcmtpbmcgY29kZSByZWFjaGFibGUgdmlhIFhEUCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIChlLmcuLCBgeHNrX3NlbmRtc2dgLCBgX194c2tfZ2VuZXJpY194bWl0YCksIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGxlbmd0aCBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hza19za2JfbWV0YWRhdGEmIzM0OywKICAgICYjMzQ7X194c2tfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDt4c2tfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtfX3hza19nZW5lcmljX3htaXQmIzM0OywKICAgICYjMzQ7eHNrX2J1aWxkX3NrYiYjMzQ7LAogICAgJiMzNDt4c2tfYnVpbGRfc2tiX3plcm9jb3B5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIG9mIFRYIG1ldGFkYXRhIGluIEFGX1hEUCBzb2NrZXRzIChgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgKSwgYWRkaW5nIGNoZWNrcyBmb3IgdGhlIG1ldGFkYXRhIGxlbmd0aCBhZ2FpbnN0IHRoZSBwb29sIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG5ldHdvcmtpbmcgY29kZSByZWFjaGFibGUgdmlhIFhEUCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIChlLmcuLCBgeHNrX3NlbmRtc2dgLCBgX194c2tfZ2VuZXJpY194bWl0YCksIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGxlbmd0aCBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDQ6MjYuOTc3Mzc5Mzg4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMyNzY4MTkyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2tfc2tiX21ldGFkYXRhXCIsXG4gICAgXCJfX3hza19zZW5kbXNnXCIsXG4gICAgXCJ4c2tfc2VuZG1zZ1wiLFxuICAgIFwiX194c2tfZ2VuZXJpY194bWl0XCIsXG4gICAgXCJ4c2tfYnVpbGRfc2tiXCIsXG4gICAgXCJ4c2tfYnVpbGRfc2tiX3plcm9jb3B5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gb2YgVFggbWV0YWRhdGEgaW4gQUZfWERQIHNvY2tldHMgKGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWApLCBhZGRpbmcgY2hlY2tzIGZvciB0aGUgbWV0YWRhdGEgbGVuZ3RoIGFnYWluc3QgdGhlIHBvb2wgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgKGUuZy4sIGB4c2tfc2VuZG1zZ2AsIGBfX3hza19nZW5lcmljX3htaXRgKSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgbGVuZ3RoIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjI2Ljk3NzM4NDI4OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQyMjY1OTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzM5ODhmYzlmYjIxMTEyNmM0ODg3NzhmMzVhMzA3Mjk3YzVlYjMxMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAwNDo0NDoyNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaCBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXFxuaW5kZXggNDY3OTc2NDVhMGMyNDEuLjVjNTRjNzQ2MmM0NWUzIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXFxuKysrIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcXG5AQCAtMjYwLDkgKzI2MCwyMiBAQCB4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuIFxcdDApXFxuIFxcbiBzdGF0aWMgaW5saW5lIGJvb2xcXG4teHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSlcXG4reHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuK1xcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEpXFxuIHtcXG4tXFx0cmV0dXJuICEobWV0YS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiB+WERQX1RYTURfRkxBR1NfVkFMSUQpO1xcbitcXHQvKiBjb3ZlcnMgZmxhZ3MsIFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNIFxcdTAwMjYgWERQX1RYTURfRkxBR1NfVElNRVNUQU1QICovXFxuK1xcdGlmICh1bmxpa2VseShwb29sLVxcdTAwM2V0eF9tZXRhZGF0YV9sZW4gXFx1MDAzYyAxNikpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmICh1bmxpa2VseShtZXRhLVxcdTAwM2VmbGFncyBcXHUwMDI2IH5YRFBfVFhNRF9GTEFHU19WQUxJRCkpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmIChtZXRhLVxcdTAwM2VmbGFncyBcXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FKVxcbitcXHRcXHRpZiAodW5saWtlbHkocG9vbC1cXHUwMDNldHhfbWV0YWRhdGFfbGVuIFxcdTAwM2NcXG4rXFx0XFx0XFx0ICAgICBvZmZzZXRvZmVuZChzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhLCByZXF1ZXN0LmxhdW5jaF90aW1lKSkpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbkBAIC0yNzQsNyArMjg3LDcgQEAgX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0bWV0YSA9IGRhdGEgLSBwb29sLVxcdTAwM2V0eF9tZXRhZGF0YV9sZW47XFxuLVxcdGlmICh1bmxpa2VseSgheHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEobWV0YSkpKVxcbitcXHRpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKHBvb2wsIG1ldGEpKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7IC8qIG5vIHdheSB0byBzaWduYWwgdGhlIGVycm9yIHRvIHRoZSB1c2VyICovXFxuIFxcbiBcXHRyZXR1cm4gbWV0YTtcXG5AQCAtNDY5LDcgKzQ4Miw4IEBAIHhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4gXFx0cmV0dXJuIChzdHJ1Y3QgeGRwX2Rlc2NfY3R4KXsgfTtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBib29sIHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEpXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSlcXG4ge1xcbiBcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2suYyBiL25ldC94ZHAveHNrLmNcXG5pbmRleCBiOTcwZjMwZWE5YjlkOC4uNzViMmM5N2U0MWU0OGUgMTAwNjQ0XFxuLS0tIGEvbmV0L3hkcC94c2suY1xcbisrKyBiL25ldC94ZHAveHNrLmNcXG5AQCAtODA5LDcgKzgwOSw3IEBAIHN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0bWV0YSA9IGJ1ZmZlciAtIHBvb2wtXFx1MDAzZXR4X21ldGFkYXRhX2xlbjtcXG4tXFx0aWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShtZXRhKSkpXFxuK1xcdGlmICh1bmxpa2VseSgheHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEocG9vbCwgbWV0YSkpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuIFxcdGlmIChtZXRhLVxcdTAwM2VmbGFncyBcXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjI3LjMyMDI3Mzk2N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUyOTMzOTE1MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhEUF9TT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieHNrX3NrYl9tZXRhZGF0YVwiLFxuICAgIFwiX194c2tfc2VuZG1zZ1wiLFxuICAgIFwieHNrX3NlbmRtc2dcIixcbiAgICBcIl9feHNrX2dlbmVyaWNfeG1pdFwiLFxuICAgIFwieHNrX2J1aWxkX3NrYlwiLFxuICAgIFwieHNrX2J1aWxkX3NrYl96ZXJvY29weVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIG9mIFRYIG1ldGFkYXRhIGluIEFGX1hEUCBzb2NrZXRzIChgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgKSwgYWRkaW5nIGNoZWNrcyBmb3IgdGhlIG1ldGFkYXRhIGxlbmd0aCBhZ2FpbnN0IHRoZSBwb29sIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG5ldHdvcmtpbmcgY29kZSByZWFjaGFibGUgdmlhIFhEUCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIChlLmcuLCBgeHNrX3NlbmRtc2dgLCBgX194c2tfZ2VuZXJpY194bWl0YCksIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGxlbmd0aCBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDczOTg4ZmM5ZmIyMTExMjZjNDg4Nzc4ZjM1YTMwNzI5N2M1ZWIzMTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAwNDo0NDoyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbmluZGV4IDQ2Nzk3NjQ1YTBjMjQxLi41YzU0Yzc0NjJjNDVlMyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXG4rKysgYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxuQEAgLTI2MCw5ICsyNjAsMjIgQEAgeHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuIFx0MClcbiBcbiBzdGF0aWMgaW5saW5lIGJvb2xcbi14c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKVxuK3hza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuK1x0XHRcdCAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEpXG4ge1xuLVx0cmV0dXJuICEobWV0YS1cdTAwM2VmbGFncyBcdTAwMjYgflhEUF9UWE1EX0ZMQUdTX1ZBTElEKTtcbitcdC8qIGNvdmVycyBmbGFncywgWERQX1RYTURfRkxBR1NfQ0hFQ0tTVU0gXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX1RJTUVTVEFNUCAqL1xuK1x0aWYgKHVubGlrZWx5KHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIFx1MDAzYyAxNikpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGlmICh1bmxpa2VseShtZXRhLVx1MDAzZWZsYWdzIFx1MDAyNiB+WERQX1RYTURfRkxBR1NfVkFMSUQpKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRpZiAobWV0YS1cdTAwM2VmbGFncyBcdTAwMjYgWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUpXG4rXHRcdGlmICh1bmxpa2VseShwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbiBcdTAwM2NcbitcdFx0XHQgICAgIG9mZnNldG9mZW5kKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEsIHJlcXVlc3QubGF1bmNoX3RpbWUpKSlcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbkBAIC0yNzQsNyArMjg3LDcgQEAgX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0bWV0YSA9IGRhdGEgLSBwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbjtcbi1cdGlmICh1bmxpa2VseSgheHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEobWV0YSkpKVxuK1x0aWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShwb29sLCBtZXRhKSkpXG4gXHRcdHJldHVybiBOVUxMOyAvKiBubyB3YXkgdG8gc2lnbmFsIHRoZSBlcnJvciB0byB0aGUgdXNlciAqL1xuIFxuIFx0cmV0dXJuIG1ldGE7XG5AQCAtNDY5LDcgKzQ4Miw4IEBAIHhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbiBcdHJldHVybiAoc3RydWN0IHhkcF9kZXNjX2N0eCl7IH07XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgYm9vbCB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKVxuK3N0YXRpYyBpbmxpbmUgYm9vbCB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbitcdFx0XHRcdFx0ICAgICAgc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSlcbiB7XG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrLmMgYi9uZXQveGRwL3hzay5jXG5pbmRleCBiOTcwZjMwZWE5YjlkOC4uNzViMmM5N2U0MWU0OGUgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hzay5jXG4rKysgYi9uZXQveGRwL3hzay5jXG5AQCAtODA5LDcgKzgwOSw3IEBAIHN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0bWV0YSA9IGJ1ZmZlciAtIHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuO1xuLVx0aWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShtZXRhKSkpXG4rXHRpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKHBvb2wsIG1ldGEpKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRpZiAobWV0YS1cdTAwM2VmbGFncyBcdTAwMjYgWERQX1RYTURfRkxBR1NfQ0hFQ0tTVU0pIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjI3LjMyMDI3NTI4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwOTU3NjY1MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgQUZfWERQIFRYIE1ldGFkYXRhIEhhbmRsaW5nKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgbG9va3MgbGlrZSBpdCdzIHR3ZWFraW5nIHRoZSBBRl9YRFAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBYRFAgc29ja2V0cy4gSXQncyBtb2RpZnlpbmcgYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCBhbmQgYG5ldC94ZHAveHNrLmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGZ1bmN0aW9uYWwgY29kZS4gVGhlIG1haW4gY2hhbmdlIHNlZW1zIHRvIGJlIGluIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAsIHdoZXJlIHRoZXkndmUgYWRkZWQgYSBgcG9vbGAgYXJndW1lbnQgYW5kIGFyZSBub3cgY2hlY2tpbmcgYHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuYC4gU2luY2UgdGhpcyBpbnZvbHZlcyBtZXRhZGF0YSBoYW5kbGluZyBpbiBBRl9YRFAsIG15IGd1dCBmZWVsaW5nIHNheXMgdGhpcyBpcyBwcmltZSBmb3IgZnV6emluZy4gV2UgcmVhbGx5IG5lZWQgdG8gbWFrZSBzdXJlIHdlIHNoYWtlIHRoaXMgY29kZSBkb3duLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgdGhlIGNhbGwgY2hhaW4gYW5kIGlkZW50aWZ5IHRoZSBrZXkgc3ltYm9scy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBuZXcgY29kZSBpcyBiZWluZyB1c2VkLiBSaWdodCBvZmYgdGhlIGJhdCwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAuIEkga25vdyBpdCdzIGNhbGxlZCBmcm9tIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgYW5kIGB4c2tfc2tiX21ldGFkYXRhYC4gYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpdHNlbGYgaXMgbGlrZWx5IGNhbGxlZCBmcm9tIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhX3NrYmDigKZ0aGF0J3MgdGhlIGxpa2VseSBjYWxsZ3JhcGguXG5cbkknbGwgY2hlY2sgYG5ldC94ZHAveHNrLmNgIGFuZCBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgIHRvIGNvbmZpcm0gdGhlIGZ1bmN0aW9ucy4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2xsIGxldmVyYWdlIGBncmVwcGVyYCB0byBxdWlja2x5IHRyYWNrIGRvd24gdGhlIGV4YWN0IGxvY2F0aW9ucyB3aGVyZSBgeHNrX3NrYl9tZXRhZGF0YWAgYW5kIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgYXJlIHVzZWQuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY29udGV4dCBhbmQgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU5OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjMyLjQxNjA0NDUwMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzU2NjE3MTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19za2JfbWV0YWRhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz03OTU9c3RhdGljIHZvaWQgeHNrX2Ryb3Bfc2tiKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQveGRwL3hzay5jLTgwMC1cXG5uZXQveGRwL3hzay5jOjgwMTpzdGF0aWMgaW50IHhza19za2JfbWV0YWRhdGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdm9pZCAqYnVmZmVyLFxcbm5ldC94ZHAveHNrLmMtODAyLVxcdFxcdFxcdCAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbi0tXFxubmV0L3hkcC94c2suYz04NDM9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHN0cnVjdCB4ZHBfc29jayAqeHMsXFxuLS1cXG5uZXQveGRwL3hzay5jLTg2NS1cXHRcXHRpZiAoZGVzYy1cXHUwMDNlb3B0aW9ucyBcXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkge1xcbm5ldC94ZHAveHNrLmM6ODY2OlxcdFxcdFxcdGVyciA9IHhza19za2JfbWV0YWRhdGEoc2tiLCBidWZmZXIsIGRlc2MsIHBvb2wsIGhyKTtcXG5uZXQveGRwL3hzay5jLTg2Ny1cXHRcXHRcXHRpZiAodW5saWtlbHkoZXJyKSkge1xcbi0tXFxubmV0L3hkcC94c2suYz05MTk9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiKHN0cnVjdCB4ZHBfc29jayAqeHMsXFxuLS1cXG5uZXQveGRwL3hzay5jLTk1NC1cXHRcXHRcXHRpZiAoZGVzYy1cXHUwMDNlb3B0aW9ucyBcXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkge1xcbm5ldC94ZHAveHNrLmM6OTU1OlxcdFxcdFxcdFxcdGVyciA9IHhza19za2JfbWV0YWRhdGEoc2tiLCBidWZmZXIsIGRlc2MsXFxubmV0L3hkcC94c2suYy05NTYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHhzLVxcdTAwM2Vwb29sLCBocik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjM0LjE3MjY2OTU3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTcyODc3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIENhbGxlcnMqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHBpbnBvaW50aW5nIHRoZSBjYWxsZXJzIG9mIHRoZSBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1dGlsaXplZCB3aXRoaW4gdGhlIFhEUC9BRl9YRFAgZWNvc3lzdGVtIGlzIGNydWNpYWwgZm9yIGEgbnVtYmVyIG9mIHJlYXNvbnMuIEknbSB0aGlua2luZywgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgdGhlIGVmZmljaWVudCByZXRyaWV2YWwgb2YgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIFhTSyBidWZmZXJzLiBJIHdhbnQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdy5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFyZSAqcmVseWluZyogb24gdGhpcyBmdW5jdGlvbiwgd2hpY2ggcHJvdmlkZXMgY3JpdGljYWwgY2x1ZXMgYWJvdXQgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgcG9zc2libGUgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBjZW50cmFsIHBvaW50IHdoZXJlIG11bHRpcGxlIHBhdGhzIGNvbnZlcmdlLCBvciBpcyBpdCBtb3JlIHNwcmVhZCBvdXQ/IFdoYXQgc3BlY2lmaWMgY29udGV4dHMgYXJlIGNhbGxpbmcgaXQ/IEFyZSB3ZSBpbiBhbiBpbnRlcnJ1cHQgaGFuZGxlcj8gVGhlIGRyaXZlcj8gVXNlciBzcGFjZT9cblxuSSdsbCBiZSBsb29raW5nIGZvciBwYXR0ZXJucy4gRG9lcyBpdCBvbmx5IGdldCBjYWxsZWQgZnJvbSBjZXJ0YWluIHBhdGhzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgY2FuZGlkYXRlcyB0aGF0IGFyZSBjYWxsaW5nIGl0IGluZWZmaWNpZW50bHk/IEknbSBob3BpbmcgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBhbmQgaWYgdGhlcmUgYXJlIGFueSBhcmVhcyBvZiBvcHBvcnR1bml0eSBmb3IgaW1wcm92ZWQgZWZmaWNpZW5jeSBvciBzZWN1cml0eS4gSXMgdGhpcyBhIHBvdGVudGlhbCBob3RzcG90PyBJcyB0aGlzIHRoZSBwbGFjZSB3ZSBzaG91bGQgYmUgcHJvZmlsaW5nLCBvciBsb29raW5nIGF0IHRvIGltcHJvdmUgdGhlIG92ZXJhbGwgcGVyZm9ybWFuY2U/IFRoaXMgaW5mb3JtYXRpb24sIGluIHR1cm4sIHdpbGwgcHJvdmlkZSBpbnNpZ2h0IGludG8gbWVtb3J5IGFjY2VzcyBwYXR0ZXJucyBhbmQgb3ZlcmFsbCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIFhEUCBzdGFjay4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NTksIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0NDozOC4zNjk5NTk0MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3MjA4MDc3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3hza19idWZmX2dldF9tZXRhZGF0YVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yODE9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyODI6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjgzLXtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI5Nz14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI5OC17XFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjk5OlxcdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMwMC19XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD00OTE9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo0OTI6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNDkzLXtcXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jPTc2OT1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc3NS1cXHRyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTtcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3NzY6XFx0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7XFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzc3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0NDo0MC4yNDIwNDQ1MTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI0NTgyMzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlhEUCBCdWZmZXIgTWV0YWRhdGEgRmxvdyoqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBkYXRhIGZsb3cgZm9yIFhEUCBidWZmZXIgbWV0YWRhdGEsIGFuZCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdCBzbyBmYXIuIEl0IGxvb2tzIGxpa2UgYm90aCBgeHNrX2J1aWxkX3NrYl96ZXJvY29weWAgYW5kIGB4c2tfYnVpbGRfc2tiYCB1bHRpbWF0ZWx5IGZ1bm5lbCBpbnRvIGB4c2tfc2tiX21ldGFkYXRhYC4gVGhhdCdzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBzdHVmZiBsaWtlbHkgaGFwcGVucy4gRGlnZ2luZyBkZWVwZXIsIEkgc2VlIHRoYXQgYHhwX3Jhd19nZXRfY3R4YCBjYWxscyBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgLCBhbmQgdGhlbiwgaXQgc2VlbXMgdGhhdCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCAqYWxzbyogY2FsbHMgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYC4gV2hpY2ggbWVhbnMgdGhlcmUgaXMgc29tZSBwb3RlbnRpYWwgcmVkdW5kYW5jeSBoZXJlLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhlIGBfX2AgdmVyc2lvbiBpcyBjYWxsZWQgaW4gbXVsdGlwbGUgcGxhY2VzLiBJdCBpcyBwcm9iYWJseSB0aGUgY29yZSBvZiB0aGUgbWV0YWRhdGEgcmV0cmlldmFsLlxuXG5Ob3csIEkgcmVhbGx5IG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgc2l0ZXMgb2YgdGhvc2UgaW5pdGlhbCBmdW5jdGlvbnMsIGB4c2tfYnVpbGRfc2tiYCBhbmQgYHhza19idWlsZF9za2JfemVyb2NvcHlgLiBLbm93aW5nICp3aG8qIGlzIGNhbGxpbmcgdGhlbSB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGlzIG1ldGFkYXRhIGlzIGJlaW5nIHVzZWQuIEl0J3MgdGltZSB0byBmb2xsb3cgdGhlIHRyYWNlcyBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDg1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjQ0LjA2NjYyOTI0NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE0NDIwOTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19idWlsZF9za2JcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz04MDE9c3RhdGljIGludCB4c2tfc2tiX21ldGFkYXRhKHN0cnVjdCBza19idWZmICpza2IsIHZvaWQgKmJ1ZmZlcixcXG4tLVxcbm5ldC94ZHAveHNrLmMtODQyLVxcbm5ldC94ZHAveHNrLmM6ODQzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYl96ZXJvY29weShzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxcbm5ldC94ZHAveHNrLmMtODQ0LVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB4ZHBfZGVzYyAqZGVzYylcXG4tLVxcbm5ldC94ZHAveHNrLmMtOTE4LVxcbm5ldC94ZHAveHNrLmM6OTE5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYihzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxcbm5ldC94ZHAveHNrLmMtOTIwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjKVxcbi0tXFxubmV0L3hkcC94c2suYy05MjYtXFx0aWYgKGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9UWF9TS0JfTk9fTElORUFSKSB7XFxubmV0L3hkcC94c2suYzo5Mjc6XFx0XFx0c2tiID0geHNrX2J1aWxkX3NrYl96ZXJvY29weSh4cywgZGVzYyk7XFxubmV0L3hkcC94c2suYy05MjgtXFx0XFx0aWYgKElTX0VSUihza2IpKSB7XFxuLS1cXG5uZXQveGRwL3hzay5jPTEwMjU9c3RhdGljIGludCBfX3hza19nZW5lcmljX3htaXQoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L3hkcC94c2suYy0xMDYyLVxcbm5ldC94ZHAveHNrLmM6MTA2MzpcXHRcXHRza2IgPSB4c2tfYnVpbGRfc2tiKHhzLCBcXHUwMDI2ZGVzYyk7XFxubmV0L3hkcC94c2suYy0xMDY0LVxcdFxcdGlmIChJU19FUlIoc2tiKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0NDo0NS42ODEwNTQyOTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODgyNzk1NTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgWERQIFNvY2tldCBUcmFuc21pc3Npb24gUGF0aCoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiBgX194c2tfZ2VuZXJpY194bWl0YCwgdGhlIGNvcmUgZW50cnkgcG9pbnQgZm9yIGdlbmVyaWMgWERQIHNvY2tldCB0cmFuc21pc3Npb24uIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIGhvdyB3ZSBnZXQgZGF0YSBvdXQgb2YgdGhlc2Ugc29ja2V0cy4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCBhbmQgdG8gZG8gdGhhdCwgSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhlIGNhbGxlcnMgb2YgYHhza19idWZmX2dldF9tZXRhZGF0YWAuIEtub3dpbmcgd2hvIGlzIHJlcXVlc3RpbmcgYnVmZmVyIG1ldGFkYXRhIGZyb20gYHhza19idWZmX2dldF9tZXRhZGF0YWAgaXMgY3JpdGljYWwsIGJlY2F1c2UgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCB3aWxsIGJlIHdvcmtpbmcgd2l0aCBkYXRhIGZyb20gb3VyIHNvY2tldHMuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlIG1ldGFkYXRhIGlzIGJlaW5nIHJlcXVlc3RlZCBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBMZXQncyBzZWUgd2hvJ3MgdXRpbGl6aW5nIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMwMCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjQ4LjU2Mzg1MTg3OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyODQwOTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9nZXRfbWV0YWRhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzNz1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA3Ni1cXHRcXHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDc3OlxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA3OC1cXHRcXHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmM9NjY9Ym9vbCBtbHg1ZV94c2tfdHgoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgdW5zaWduZWQgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMDEtXFx0XFx0eGRwdHhkLmxlbiA9IGRlc2MubGVuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzoxMDI6XFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMDMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI2OTQ9c3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzM4LVxcdFxcdGRtYV9hZGRyID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNzM5OlxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzQwLVxcdFxcdHhza19idWZmX3Jhd19kbWFfc3luY19mb3JfZGV2aWNlKHBvb2wsIGRtYV9hZGRyLCB4ZHBfZGVzYy5sZW4pO1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjgxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjgyOl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI4My17XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yOTY9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyOTc6eHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yOTgte1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI5OTpcXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMDAtfVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NDkxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NDkyOl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTQ5My17XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD00OTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo0OTg6eHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC00OTkte1xcbi0tXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM9NzY5PXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbi0tXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzc1LVxcdHJldC5kbWEgPSBfX3hwX3Jhd19nZXRfZG1hKHBvb2wsIGFkZHIpO1xcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc3NjpcXHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjUwLjE5MjI2OTEyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTIyNDc1NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlhEUCBUcmFuc21pc3Npb24gUGF0aCBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBhIGtleSBmdW5jdGlvbiB1c2VkIGFjcm9zcyBzZXZlcmFsIGltcG9ydGFudCBuZXR3b3JrIGRyaXZlcnMgbGlrZSBpZ2MsIG1seDUsIGFuZCBzdG1tYWMuIEFuZCB0aGVuLCBgX194c2tfZ2VuZXJpY194bWl0YCBhcHBlYXJzIHRvIGxldmVyYWdlIGB4c2tfc2tiX21ldGFkYXRhYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgZ2VuZXJpYyBYRFAgdHJhbnNtaXNzaW9uIHBhdGggaXMgcmVhY2hhYmxlIHRocm91Z2ggYF9feHNrX2dlbmVyaWNfeG1pdGAuXG5cblRoaXMgZGVmaW5pdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFRoZSBmbG93IHNlZW1zIHdlbGwtZGVmaW5lZCwgc3VnZ2VzdGluZyB0aGlzIGlzIGEgcG90ZW50aWFsIGFyZWEgdG8gc2NydXRpbml6ZSB3aXRoIGZ1enppbmcuIE15IGd1dCBzYXlzIHRoZXJlIGNvdWxkIGJlIHNvbWUgaW50ZXJlc3RpbmcsIHBvc3NpYmx5IGV4cGxvaXRhYmxlLCBzY2VuYXJpb3MgaGVyZS5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGZvciB0aGlzIFhEUCB0cmFuc21pc3Npb24gcGF0aC4gSSdtIHJlY2FsbGluZyBYRFAgc29ja2V0cyBhcmUgZW5hYmxlZCBieSBgQ09ORklHX1hEUF9TT0NLRVRTYC4gSSdsbCB3YW50IHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfWERQX1NPQ0tFVFNgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIGl0ZW0uIEdvdHRhIG1ha2Ugc3VyZSBJJ20gdGVzdGluZyB0aGUgcmlnaHQgdGhpbmdzLCBhbmQgdGhpcyBmZWVscyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjczOCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0NDo1NC4xMTQ3NDczNDhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTMyNTA1MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhEUF9TT0NLRVRTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC94ZHAvS2NvbmZpZzoyOmNvbmZpZyBYRFBfU09DS0VUU1xcbm5ldC94ZHAvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIlhEUCBzb2NrZXRzXFxcIlxcbi0tXFxubmV0L3hkcC9LY29uZmlnLTktXFxubmV0L3hkcC9LY29uZmlnOjEwOmNvbmZpZyBYRFBfU09DS0VUU19ESUFHXFxubmV0L3hkcC9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjU1Ljc2ODAwMjYyN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjYyNjkwNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlhEUCBTb2NrZXRzIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIFhEUCBzb2NrZXQgc3R1ZmYuIFJpZ2h0LCBmaXJzdCB0aGluZyB0byBjb25maXJtIGlzIHRoYXQgYFhEUF9TT0NLRVRTYCBpcyBpbmRlZWQgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBJIG5lZWQgdG8gbG9vayBhdC4gTm93LCB3aGVyZSBkbyBJIHN0YXJ0IG15IGRlZXBlciBpbnZlc3RpZ2F0aW9uPyBJIG5lZWQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIGhlcmUsIGFuZCBhIGdvb2Qgc2V0IG9mIGZvY3VzIHN5bWJvbHMgd2lsbCBoZWxwIG1lLiBMZXQncyBzZWUuLi5cblxuSSBzaG91bGQgY29uY2VudHJhdGUgb24gYSBmZXcga2V5IHRoaW5nczogYHhza19za2JfbWV0YWRhdGFgLCBgeHNrX2J1aWxkX3NrYmAsIGB4c2tfYnVpbGRfc2tiX3plcm9jb3B5YCwgYW5kIGBfX3hza19nZW5lcmljX3htaXRgLiBMZXQncyB0ZXN0IGB4c2tfc2tiX21ldGFkYXRhYCBhcyBhIHN0YXJ0aW5nIHBvaW50LCByaWdodD8gWXVwLCBJIHNlZSBpdCdzIGEgYHN0YXRpY2AgZnVuY3Rpb24sIGFuZCBpdCdzIGxvY2F0ZWQgaW4gYG5ldC94ZHAveHNrLmNgLiBUaGUgc2FtZSBnb2VzIGZvciBgeHNrX2J1aWxkX3NrYmAsIHRoYXQgb25lJ3MgYWxzbyBzdGF0aWMsIGFsc28gaW4gYG5ldC94ZHAveHNrLmNgLiBBbmQgYF9feHNrX2dlbmVyaWNfeG1pdGA/IEl0J3MgdGhlIHNhbWUgZGVhbCAtIGBzdGF0aWNgIGluIGBuZXQveGRwL3hzay5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgYWxsIGNvbm5lY3RlZC4gTm93LCBgeHNrX3NlbmRtc2dgLi4uICp0aGF0KiBsb29rcyBsaWtlIHRoZSBzeXNjYWxsIGVudHJ5IHBvaW50LCBkb2Vzbid0IGl0PyBPa2F5LCBJIHRoaW5rIEkgaGF2ZSBhIGdvb2QgZnJhbWV3b3JrIGhlcmUuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgaG93IHRoZXNlIHBpZWNlcyBmaXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMzcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDU6MDAuMDMwNjk1NjM3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjIzMjg1NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19zZW5kbXNnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAveHNrLmM9MTEzOD1zdGF0aWMgaW50IHhza19jaGVja19jb21tb24oc3RydWN0IHhkcF9zb2NrICp4cylcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTE0Ny1cXG5uZXQveGRwL3hzay5jOjExNDg6c3RhdGljIGludCBfX3hza19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCB0b3RhbF9sZW4pXFxubmV0L3hkcC94c2suYy0xMTQ5LXtcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTE3OC1cXG5uZXQveGRwL3hzay5jOjExNzk6c3RhdGljIGludCB4c2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgdG90YWxfbGVuKVxcbm5ldC94ZHAveHNrLmMtMTE4MC17XFxuLS1cXG5uZXQveGRwL3hzay5jLTExODMtXFx0cmN1X3JlYWRfbG9jaygpO1xcbm5ldC94ZHAveHNrLmM6MTE4NDpcXHRyZXQgPSBfX3hza19zZW5kbXNnKHNvY2ssIG0sIHRvdGFsX2xlbik7XFxubmV0L3hkcC94c2suYy0xMTg1LVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxubmV0L3hkcC94c2suYz0xOTM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHhza19wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQveGRwL3hzay5jLTE5NTMtXFx0LmdldHNvY2tvcHRfaXRlciA9IHhza19nZXRzb2Nrb3B0LFxcbm5ldC94ZHAveHNrLmM6MTk1NDpcXHQuc2VuZG1zZ1xcdD0geHNrX3NlbmRtc2csXFxubmV0L3hkcC94c2suYy0xOTU1LVxcdC5yZWN2bXNnXFx0PSB4c2tfcmVjdm1zZyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDU6MDEuNjUzOTg3MDY3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjE0MjU0NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gWERQIFNvY2tldCBUWCBQYXRoKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiB0aGUgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aC4gSXQgc2VlbXMgbGlrZSBgeHNrX3NlbmRtc2dgIGFuZCBgX194c2tfc2VuZG1zZ2AgYXJlIGdvb2QgZW50cnkgcG9pbnRzIHRvIHN0YXJ0IHdpdGguIFRob3NlIGFyZSBkZWZpbml0ZWx5IGtleSBzeW1ib2xzLiBBbmQgYmFzZWQgb24gdGhlIG1vZGlmaWNhdGlvbnMsIGB4c2tfc2tiX21ldGFkYXRhYCBsb29rcyB0byBiZSB0aGUgZnVuY3Rpb24gdGhhdCB3YXMgbW9zdCBkaXJlY3RseSBpbnZvbHZlZCDigJMgb3IgYXQgbGVhc3QgaW5kaXJlY3RseSBpbnZvbHZlZCB2aWEgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYC4gSSBzaG91bGQgZGVmaW5pdGVseSBhZGQgdGhhdCB0byB0aGUgbGlzdC4gSSdsbCBpbmNsdWRlIGBfX3hza19zZW5kbXNnYCwgYHhza19zZW5kbXNnYCwgYF9feHNrX2dlbmVyaWNfeG1pdGAsIGB4c2tfYnVpbGRfc2tiYCwgYW5kIGB4c2tfYnVpbGRfc2tiX3plcm9jb3B5YCwgdG9vLlxuXG5XYWl0IGEgc2Vjb25k4oCmIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAgaXMgYWN0dWFsbHkgYW4gaW5saW5lIGZ1bmN0aW9uIGRlZmluZWQgcmlnaHQgdGhlcmUgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYC4gVGhhdCBjaGFuZ2VzIHRoaW5ncyBhIGJpdC4gSXQgaXMgY2FsbGVkIGJ5IGJvdGggYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBhbmQgYHhza19za2JfbWV0YWRhdGFgLiBTbywgeWVhaCwgdGhhdCBzb2xpZGlmaWVzIGB4c2tfc2tiX21ldGFkYXRhYCBhcyBhIHByaW1hcnkgZm9jdXMgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhpcyBjaGFuZ2UuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwLCBsZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQuIElzIGBYRFBfU09DS0VUU2Agc3VmZmljaWVudCwgb3IgaXMgdGhlcmUgc29tZXRoaW5nIGVsc2UgYXQgcGxheT8gVGltZSB0byBjaGVjayB0aGUgYG5ldC94ZHAvTWFrZWZpbGVgIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGNyaXRpY2FsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTQzLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ1OjA2LjMxNTQxNDU0NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2NTU2MTk5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX0ZTTF9EUEFBMl9TV0lUQ0gpXFx0XFx0Kz0gZnNsLWRwYWEyLXN3aXRjaC5vIGZzbC1kcGFhMi1tYWMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9NYWtlZmlsZS05LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9NYWtlZmlsZToxMDpmc2wtZHBhYTItZXRoLW9ianNcXHQ6PSBkcGFhMi1ldGgubyBkcGFhMi1ldGh0b29sLm8gZHBuaS5vIGRwYWEyLWV0aC1kZXZsaW5rLm8gZHBhYTIteHNrLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvTWFrZWZpbGUtMTEtZnNsLWRwYWEyLWV0aC0ke0NPTkZJR19GU0xfRFBBQTJfRVRIX0RDQn0gKz0gZHBhYTItZXRoLWRjYi5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL01ha2VmaWxlPTEzPWk0MGUteSA6PSBpNDBlX21haW4ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL01ha2VmaWxlLTI2LVxcdGk0MGVfdmlydGNobmxfcGYubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9NYWtlZmlsZToyNzpcXHRpNDBlX3hzay5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvTWFrZWZpbGUtMjgtXFx0aTQwZV9kZXZsaW5rLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9NYWtlZmlsZT01OT1pY2UtJChDT05GSUdfUkZTX0FDQ0VMKSArPSBpY2VfYXJmcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL01ha2VmaWxlOjYwOmljZS0kKENPTkZJR19YRFBfU09DS0VUUykgKz0gaWNlX3hzay5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL01ha2VmaWxlLTYxLWljZS0kKENPTkZJR19JQ0VfU1dJVENIREVWKSArPSBpY2VfZXN3aXRjaC5vIGljZV9lc3dpdGNoX2JyLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU9MjU9aWRwZi15XFx0XFx0XFx0XFx0Kz0geGRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjI2OmlkcGYteVxcdFxcdFxcdFxcdCs9IHhzay5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvTWFrZWZpbGU9OT1pZ2IteSA6PSBpZ2JfbWFpbi5vIGlnYl9ldGh0b29sLm8gZTEwMDBfODI1NzUubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL01ha2VmaWxlLTEwLVxcdCBlMTAwMF9tYWMubyBlMTAwMF9udm0ubyBlMTAwMF9waHkubyBlMTAwMF9tYngubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL01ha2VmaWxlOjExOlxcdCBlMTAwMF9pMjEwLm8gaWdiX3B0cC5vIGlnYl9od21vbi5vIGlnYl94c2sub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvTWFrZWZpbGU9MTA9aXhnYmUteSA6PSBpeGdiZV9tYWluLm8gaXhnYmVfY29tbW9uLm8gaXhnYmVfZXRodG9vbC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL01ha2VmaWxlLTEyLSAgICAgICAgICAgaXhnYmVfbWJ4Lm8gaXhnYmVfeDU0MC5vIGl4Z2JlX3g1NTAubyBpeGdiZV9saWIubyBpeGdiZV9wdHAubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvTWFrZWZpbGU6MTM6ICAgICAgICAgICBpeGdiZV94c2subyBpeGdiZV9lNjEwLm8gZGV2bGluay9kZXZsaW5rLm8gaXhnYmVfZndfdXBkYXRlLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL01ha2VmaWxlLTE0LVxcdCAgIGRldmxpbmsvcmVnaW9uLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9NYWtlZmlsZT0xMT1saWJldGhfeGRwLXlcXHRcXHRcXHQrPSB4ZHAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9NYWtlZmlsZToxMjpsaWJldGhfeGRwLXlcXHRcXHRcXHQrPSB4c2sub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlPTEwPXJ2dV9uaWNwZi15IDo9IG90eDJfcGYubyBvdHgyX2NvbW1vbi5vIG90eDJfdHhyeC5vIG90eDJfZXRodG9vbC5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtMTEtICAgICAgICAgICAgICAgb3R4Ml9mbG93cy5vIG90eDJfdGMubyBjbjEway5vIGNuMjBrLm8gb3R4Ml9kbWFjX2ZsdC5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU6MTI6ICAgICAgICAgICAgICAgb3R4Ml9kZXZsaW5rLm8gcW9zX3NxLm8gcW9zLm8gb3R4Ml94c2sub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS0xMy1ydnVfbmljdmYteSA6PSBvdHgyX3ZmLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGU9ND1uZnAtb2JqcyA6PSBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlLTI0LVxcdCAgICBuZmQzL3JpbmdzLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGU6MjU6XFx0ICAgIG5mZDMveHNrLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGUtMjYtXFx0ICAgIG5mZGsvZHAubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlLTQwLVxcdCAgICBuZnBfbmV0X3NyaW92Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGU6NDE6XFx0ICAgIG5mcF9uZXRfeHNrLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGUtNDItXFx0ICAgIG5mcF9uZXR2Zl9tYWluLm8gXFxcXFxcbi0tXFxubmV0L3hkcC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC94ZHAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfWERQX1NPQ0tFVFMpICs9IHhzay5vIHhkcF91bWVtLm8geHNrX3F1ZXVlLm8geHNrbWFwLm9cXG5uZXQveGRwL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX1hEUF9TT0NLRVRTKSArPSB4c2tfYnVmZl9wb29sLm9cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZT0zNDY9JChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6ICQoVEVTVElOR19IRUxQRVJTKSAkKENBUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZTozNDc6JChPVVRQVVQpL3hzay5vOiAkKEJQRk9CSilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUtMzQ4LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlPTkzOD1FWFRSQV9TUkMgOj0gJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmMgcHJvZ190ZXN0cy90ZXN0X3hzay5jIHByb2dfdGVzdHMvdGVzdF94c2suaFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZTo5Mzk6JChPVVRQVVQpL3hza3hjZWl2ZXI6ICQoRVhUUkFfU1JDKSB4c2t4Y2VpdmVyLmMgeHNreGNlaXZlci5oICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hza194ZHBfcHJvZ3Muc2tlbC5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS05NDAtXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLTk0Mi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGU6OTQzOiQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmggfCAkKE9VVFBVVClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUtOTQ0LVxcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDU6MDguMjgwOTgxMjU1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODYwNDA1ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSwgbXkgaW5pdGlhbCBmb2N1cyBpcyBvbiBgQ09ORklHX1hEUF9TT0NLRVRTYC4gVGhhdCdzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaXRlbSBJIG5lZWQgdG8gaW52ZXN0aWdhdGUuXG5cbk5vdywgbGV0IG1lIGJyb2FkZW4gbXkgc2NvcGUgYSBiaXQuIEFyZSB0aGVyZSBhbnkgKm90aGVyKiByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGhpbmsuLi4gdGhpcyBwYXRjaCByZWZlcmVuY2VzIHNwZWNpZmljIFhEUCBtZXRhZGF0YSBmbGFnczogYFhEUF9UWE1EX0ZMQUdTX1ZBTElEYCwgYFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNYCwgYFhEUF9UWE1EX0ZMQUdTX1RJTUVTVEFNUGAsIGFuZCBgWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUVgLiBBbGwgb2YgdGhlc2UgcmVsYXRlIHRvIHRoZSBYRFAgdHJhbnNtaXNzaW9uIG1ldGFkYXRhLCBzcGVjaWZpY2FsbHkuIEdpdmVuIHRoZXNlIGZsYWdzLCBpdCBtYWtlcyBzZW5zZSB0byBjb25maXJtIGlmIHRoZXJlIGlzIGEgc2VwYXJhdGUgY29uZmlndXJhdGlvbiBvcHRpb24gZGlyZWN0bHkgdGllZCB0byB0aGUgWERQIG1ldGFkYXRhIGl0c2VsZi4gSSBuZWVkIHRvIGtub3cgaWYgaXQncyBjb25maWd1cmFibGUgb3IgcGVyaGFwcyBpbXBsaWNpdGx5IGVuYWJsZWQgYmFzZWQgb24gdGhlIHVzZSBvZiBvdGhlciBYRFAgZmVhdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTk1LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDU6MTEuOTY3MDI0MTEyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI5MjM5MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlhEUF9UWE1EX0ZMQUdTX1ZBTElEXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC05LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxMDovKiBgYFhEUF9UWE1EX0ZMQUdTX1ZBTElEYGAgaXMgZGVmaW5lZCBvbmx5IHVuZGVyIGBgQ09ORklHX1hEUF9TT0NLRVRTYGAgKi9cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTE6I2lmZGVmIFhEUF9UWE1EX0ZMQUdTX1ZBTElEXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjEyOnN0YXRpY19hc3NlcnQoWERQX1RYTURfRkxBR1NfVkFMSUQgXFx1MDAzYz0gTElCRVRIX1hEUF9UWF9YU0tNRCk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTEzLSNlbmRpZlxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjUxPXhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI1NS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNTY6I2RlZmluZSBYRFBfVFhNRF9GTEFHU19WQUxJRCAoIFxcXFxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTctXFx0XFx0WERQX1RYTURfRkxBR1NfVElNRVNUQU1QIHwgXFxcXFxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjYzPXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjY5LVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI3MDpcXHRpZiAodW5saWtlbHkobWV0YS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiB+WERQX1RYTURfRkxBR1NfVkFMSUQpKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI3MS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ1OjEzLjU5NjI3MDc0MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTc4MDgxODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBBRl9YRFAgU29ja2V0IFRYIE1ldGFkYXRhIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIGJhc2VkIG9uIHdoZXJlIHRoZSByZWxldmFudCBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMgYXJlIGRlZmluZWQsIG5hbWVseSBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLCBJIGNhbiBzZWUgdGhhdCBgQ09ORklHX1hEUF9TT0NLRVRTYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIG5lZWRlZCB0byBlbmFibGUgdGhlIGNvZGUgYmVpbmcgbW9kaWZpZWQuIFRoaXMgc2ltcGxpZmllcyB0aGluZ3M7IGl0IGdpdmVzIHVzIGEgY2xlYXIgZGVwZW5kZW5jeS5cblxuTm93LCBsZXQncyBicmVhayBkb3duIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LiBXZSdyZSBjb25jZXJuZWQgd2l0aCB2YWxpZGF0aW5nIFRYIG1ldGFkYXRhIHdpdGhpbiB0aGUgQUZfWERQIHNvY2tldCBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGFyb3VuZCBgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgLiAgVGhlIHBhdGNoJ3MgbW9kaWZpY2F0aW9ucyBhcmUgYWRkaW5nIGxlbmd0aCBjaGVja3MgYWdhaW5zdCB0aGUgcG9vbCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGNyaXRpY2FsIG5ldHdvcmsgY29kZSwgYW5kIHdlICphYnNvbHV0ZWx5KiBuZWVkIHRvIGZ1enogdGhpcy4gSXQncyByZWFjaGVkIHRocm91Z2ggdGhlIHRyYW5zbWlzc2lvbiBwYXRocywgc28gZnVuY3Rpb25zIGxpa2UgYHhza19zZW5kbXNnYCBhbmQgYF9feHNrX2dlbmVyaWNfeG1pdGAgYXJlIGNsZWFybHkgaW4gc2NvcGUsIGFzIGFyZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gYnVpbGRpbmcgdGhlIFNLQnM6IGB4c2tfc2tiX21ldGFkYXRhYCwgYHhza19idWlsZF9za2JgLCBhbmQgYHhza19idWlsZF9za2JfemVyb2NvcHlgLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXNlIG5ldyBsZW5ndGggY2hlY2tzIGRvbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgYWxsb3cgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuIFRoZXJlZm9yZSwgdGhlIGZ1enogdGFyZ2V0cyB3aWxsIGJlIHRoZSBvbmVzIGxpc3RlZCBpbiBcIkZvY3VzU3ltYm9sc1wiIGluIHRoZSB0ZXh0LiBJIGFtIGFsc28gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYCwgYW5kIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8ganVzdCBgWERQX1NPQ0tFVFNgLlxuXG5JbiBlc3NlbmNlLCB0aGlzIGlzIGEgbW9kaWZpY2F0aW9uIHRvIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgQUZfWERQIHNvY2tldCBmdW5jdGlvbmFsaXR5LiBUaGlzIG5lY2Vzc2l0YXRlcyB0aG9yb3VnaCBmdXp6aW5nLiBXZSdyZSBsb29raW5nIGZvciBtZW1vcnkgY29ycnVwdGlvbiBvciBvdGhlciBsb2dpYyBlcnJvcnMgaW50cm9kdWNlZCBieSB0aGUgYWRkaXRpb25hbCBjaGVja3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzAxLCJPdXRwdXRUb2tlbnMiOjE5NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0NToyMC4xNzQzNTY1NjFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTgyOTIyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2tfc2tiX21ldGFkYXRhXCIsXG4gICAgXCJfX3hza19zZW5kbXNnXCIsXG4gICAgXCJ4c2tfc2VuZG1zZ1wiLFxuICAgIFwiX194c2tfZ2VuZXJpY194bWl0XCIsXG4gICAgXCJ4c2tfYnVpbGRfc2tiXCIsXG4gICAgXCJ4c2tfYnVpbGRfc2tiX3plcm9jb3B5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gb2YgVFggbWV0YWRhdGEgaW4gQUZfWERQIHNvY2tldHMgKGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWApLCBhZGRpbmcgY2hlY2tzIGZvciB0aGUgbWV0YWRhdGEgbGVuZ3RoIGFnYWluc3QgdGhlIHBvb2wgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgKGUuZy4sIGB4c2tfc2VuZG1zZ2AsIGBfX3hza19nZW5lcmljX3htaXRgKSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgbGVuZ3RoIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2tfc2tiX21ldGFkYXRhXCIsXG4gICAgXCJfX3hza19zZW5kbXNnXCIsXG4gICAgXCJ4c2tfc2VuZG1zZ1wiLFxuICAgIFwiX194c2tfZ2VuZXJpY194bWl0XCIsXG4gICAgXCJ4c2tfYnVpbGRfc2tiXCIsXG4gICAgXCJ4c2tfYnVpbGRfc2tiX3plcm9jb3B5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gb2YgVFggbWV0YWRhdGEgaW4gQUZfWERQIHNvY2tldHMgKGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWApLCBhZGRpbmcgY2hlY2tzIGZvciB0aGUgbWV0YWRhdGEgbGVuZ3RoIGFnYWluc3QgdGhlIHBvb2wgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgKGUuZy4sIGB4c2tfc2VuZG1zZ2AsIGBfX3hza19nZW5lcmljX3htaXRgKSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgbGVuZ3RoIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow8bwmh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 04:28:10 +0000 UTC FinishedAt: 2026-07-23 04:45:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f43ee0c0730d6191629b5ee1ceae27b1ebfdc047", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f43ee0c0730d6191629b5ee1ceae27b1ebfdc047", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS" ], "series_id": "49ebe234-50ac-43ca-ac47-016745dfbc24" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "xsk_skb_metadata", "__xsk_sendmsg", "xsk_sendmsg", "__xsk_generic_xmit", "xsk_build_skb", "xsk_build_skb_zerocopy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX3NrYl9tZXRhZGF0YSYjMzQ7LAogICAgJiMzNDtfX3hza19zZW5kbXNnJiMzNDssCiAgICAmIzM0O3hza19zZW5kbXNnJiMzNDssCiAgICAmIzM0O19feHNrX2dlbmVyaWNfeG1pdCYjMzQ7LAogICAgJiMzNDt4c2tfYnVpbGRfc2tiJiMzNDssCiAgICAmIzM0O3hza19idWlsZF9za2JfemVyb2NvcHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gb2YgVFggbWV0YWRhdGEgaW4gQUZfWERQIHNvY2tldHMgKGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWApLCBhZGRpbmcgY2hlY2tzIGZvciB0aGUgbWV0YWRhdGEgbGVuZ3RoIGFnYWluc3QgdGhlIHBvb2wgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgKGUuZy4sIGB4c2tfc2VuZG1zZ2AsIGBfX3hza19nZW5lcmljX3htaXRgKSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgbGVuZ3RoIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3Mzk4OGZjOWZiMjExMTI2YzQ4ODc3OGYzNWEzMDcyOTdjNWViMzExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDQ6NDQ6MjUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmggYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxuaW5kZXggNDY3OTc2NDVhMGMyNDEuLjVjNTRjNzQ2MmM0NWUzIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXG5AQCAtMjYwLDkgJiM0MzsyNjAsMjIgQEAgeHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuIFx0MClcbiBcbiBzdGF0aWMgaW5saW5lIGJvb2xcbi14c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKVxuJiM0Mzt4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbiYjNDM7XHRcdFx0ICAgY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSlcbiB7XG4tXHRyZXR1cm4gIShtZXRhLVx1MDAzZWZsYWdzIFx1MDAyNiB+WERQX1RYTURfRkxBR1NfVkFMSUQpO1xuJiM0MztcdC8qIGNvdmVycyBmbGFncywgWERQX1RYTURfRkxBR1NfQ0hFQ0tTVU0gXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX1RJTUVTVEFNUCAqL1xuJiM0MztcdGlmICh1bmxpa2VseShwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbiBcdTAwM2MgMTYpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRpZiAodW5saWtlbHkobWV0YS1cdTAwM2VmbGFncyBcdTAwMjYgflhEUF9UWE1EX0ZMQUdTX1ZBTElEKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0aWYgKG1ldGEtXHUwMDNlZmxhZ3MgXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FKVxuJiM0MztcdFx0aWYgKHVubGlrZWx5KHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIFx1MDAzY1xuJiM0MztcdFx0XHQgICAgIG9mZnNldG9mZW5kKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEsIHJlcXVlc3QubGF1bmNoX3RpbWUpKSlcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbkBAIC0yNzQsNyAmIzQzOzI4Nyw3IEBAIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdG1ldGEgPSBkYXRhIC0gcG9vbC1cdTAwM2V0eF9tZXRhZGF0YV9sZW47XG4tXHRpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKG1ldGEpKSlcbiYjNDM7XHRpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKHBvb2wsIG1ldGEpKSlcbiBcdFx0cmV0dXJuIE5VTEw7IC8qIG5vIHdheSB0byBzaWduYWwgdGhlIGVycm9yIHRvIHRoZSB1c2VyICovXG4gXG4gXHRyZXR1cm4gbWV0YTtcbkBAIC00NjksNyAmIzQzOzQ4Miw4IEBAIHhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbiBcdHJldHVybiAoc3RydWN0IHhkcF9kZXNjX2N0eCl7IH07XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgYm9vbCB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKVxuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG4mIzQzO1x0XHRcdFx0XHQgICAgICBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKVxuIHtcbiBcdHJldHVybiBmYWxzZTtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2suYyBiL25ldC94ZHAveHNrLmNcbmluZGV4IGI5NzBmMzBlYTliOWQ4Li43NWIyYzk3ZTQxZTQ4ZSAxMDA2NDRcbi0tLSBhL25ldC94ZHAveHNrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZHAveHNrLmNcbkBAIC04MDksNyAmIzQzOzgwOSw3IEBAIHN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0bWV0YSA9IGJ1ZmZlciAtIHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuO1xuLVx0aWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShtZXRhKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShwb29sLCBtZXRhKSkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0aWYgKG1ldGEtXHUwMDNlZmxhZ3MgXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX3NrYl9tZXRhZGF0YSYjMzQ7LAogICAgJiMzNDtfX3hza19zZW5kbXNnJiMzNDssCiAgICAmIzM0O3hza19zZW5kbXNnJiMzNDssCiAgICAmIzM0O19feHNrX2dlbmVyaWNfeG1pdCYjMzQ7LAogICAgJiMzNDt4c2tfYnVpbGRfc2tiJiMzNDssCiAgICAmIzM0O3hza19idWlsZF9za2JfemVyb2NvcHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gb2YgVFggbWV0YWRhdGEgaW4gQUZfWERQIHNvY2tldHMgKGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWApLCBhZGRpbmcgY2hlY2tzIGZvciB0aGUgbWV0YWRhdGEgbGVuZ3RoIGFnYWluc3QgdGhlIHBvb2wgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgKGUuZy4sIGB4c2tfc2VuZG1zZ2AsIGBfX3hza19nZW5lcmljX3htaXRgKSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgbGVuZ3RoIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDczOTg4ZmM5ZmIyMTExMjZjNDg4Nzc4ZjM1YTMwNzI5N2M1ZWIzMTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyMyAwNDo0NDoyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgKaW5kZXggNDY3OTc2NDVhMGMyNDEuLjVjNTRjNzQ2MmM0NWUzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaApAQCAtMjYwLDkgJiM0MzsyNjAsMjIgQEAgeHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKQogCTApCiAKIHN0YXRpYyBpbmxpbmUgYm9vbAoteHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSkKJiM0Mzt4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwKJiM0MzsJCQkgICBjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKQogewotCXJldHVybiAhKG1ldGEtJmd0O2ZsYWdzICZhbXA7IH5YRFBfVFhNRF9GTEFHU19WQUxJRCk7CiYjNDM7CS8qIGNvdmVycyBmbGFncywgWERQX1RYTURfRkxBR1NfQ0hFQ0tTVU0gJmFtcDsgWERQX1RYTURfRkxBR1NfVElNRVNUQU1QICovCiYjNDM7CWlmICh1bmxpa2VseShwb29sLSZndDt0eF9tZXRhZGF0YV9sZW4gJmx0OyAxNikpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWlmICh1bmxpa2VseShtZXRhLSZndDtmbGFncyAmYW1wOyB+WERQX1RYTURfRkxBR1NfVkFMSUQpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlpZiAobWV0YS0mZ3Q7ZmxhZ3MgJmFtcDsgWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUpCiYjNDM7CQlpZiAodW5saWtlbHkocG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuICZsdDsKJiM0MzsJCQkgICAgIG9mZnNldG9mZW5kKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEsIHJlcXVlc3QubGF1bmNoX3RpbWUpKSkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKgpAQCAtMjc0LDcgJiM0MzsyODcsNyBAQCBfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSkKIAkJcmV0dXJuIE5VTEw7CiAKIAltZXRhID0gZGF0YSAtIHBvb2wtJmd0O3R4X21ldGFkYXRhX2xlbjsKLQlpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKG1ldGEpKSkKJiM0MzsJaWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShwb29sLCBtZXRhKSkpCiAJCXJldHVybiBOVUxMOyAvKiBubyB3YXkgdG8gc2lnbmFsIHRoZSBlcnJvciB0byB0aGUgdXNlciAqLwogCiAJcmV0dXJuIG1ldGE7CkBAIC00NjksNyAmIzQzOzQ4Miw4IEBAIHhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcikKIAlyZXR1cm4gKHN0cnVjdCB4ZHBfZGVzY19jdHgpeyB9OwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSkKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsCiYjNDM7CQkJCQkgICAgICBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKQogewogCXJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrLmMgYi9uZXQveGRwL3hzay5jCmluZGV4IGI5NzBmMzBlYTliOWQ4Li43NWIyYzk3ZTQxZTQ4ZSAxMDA2NDQKLS0tIGEvbmV0L3hkcC94c2suYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hzay5jCkBAIC04MDksNyAmIzQzOzgwOSw3IEBAIHN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsCiAJCXJldHVybiAtRUlOVkFMOwogCiAJbWV0YSA9IGJ1ZmZlciAtIHBvb2wtJmd0O3R4X21ldGFkYXRhX2xlbjsKLQlpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKG1ldGEpKSkKJiM0MzsJaWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShwb29sLCBtZXRhKSkpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJaWYgKG1ldGEtJmd0O2ZsYWdzICZhbXA7IFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgQUZfWERQIFRYIE1ldGFkYXRhIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBsb29rcyBsaWtlIGl0JiMzOTtzIHR3ZWFraW5nIHRoZSBBRl9YRFAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBYRFAgc29ja2V0cy4gSXQmIzM5O3MgbW9kaWZ5aW5nIGBpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaGAgYW5kIGBuZXQveGRwL3hzay5jYCwgd2hpY2ggdGVsbHMgbWUgdGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUuIFRoZSBtYWluIGNoYW5nZSBzZWVtcyB0byBiZSBpbiBgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgLCB3aGVyZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGBwb29sYCBhcmd1bWVudCBhbmQgYXJlIG5vdyBjaGVja2luZyBgcG9vbC0mZ3Q7dHhfbWV0YWRhdGFfbGVuYC4gU2luY2UgdGhpcyBpbnZvbHZlcyBtZXRhZGF0YSBoYW5kbGluZyBpbiBBRl9YRFAsIG15IGd1dCBmZWVsaW5nIHNheXMgdGhpcyBpcyBwcmltZSBmb3IgZnV6emluZy4gV2UgcmVhbGx5IG5lZWQgdG8gbWFrZSBzdXJlIHdlIHNoYWtlIHRoaXMgY29kZSBkb3duLgoKTm93LCBsZXQmIzM5O3MgZmlndXJlIG91dCB0aGUgY2FsbCBjaGFpbiBhbmQgaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIG5ldyBjb2RlIGlzIGJlaW5nIHVzZWQuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYC4gSSBrbm93IGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgYW5kIGB4c2tfc2tiX21ldGFkYXRhYC4gYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpdHNlbGYgaXMgbGlrZWx5IGNhbGxlZCBmcm9tIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhX3NrYmDigKZ0aGF0JiMzOTtzIHRoZSBsaWtlbHkgY2FsbGdyYXBoLgoKSSYjMzk7bGwgY2hlY2sgYG5ldC94ZHAveHNrLmNgIGFuZCBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgIHRvIGNvbmZpcm0gdGhlIGZ1bmN0aW9ucy4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBsZXZlcmFnZSBgZ3JlcHBlcmAgdG8gcXVpY2tseSB0cmFjayBkb3duIHRoZSBleGFjdCBsb2NhdGlvbnMgd2hlcmUgYHhza19za2JfbWV0YWRhdGFgIGFuZCBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFyZSB1c2VkLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGNvbnRleHQgYW5kIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX3NrYl9tZXRhZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jPTc5NT1zdGF0aWMgdm9pZCB4c2tfZHJvcF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGRwL3hzay5jLTgwMC1cbm5ldC94ZHAveHNrLmM6ODAxOnN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG5uZXQveGRwL3hzay5jLTgwMi1cdFx0XHQgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjLCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbi0tXG5uZXQveGRwL3hzay5jPTg0Mz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2JfemVyb2NvcHkoc3RydWN0IHhkcF9zb2NrICp4cyxcbi0tXG5uZXQveGRwL3hzay5jLTg2NS1cdFx0aWYgKGRlc2MtXHUwMDNlb3B0aW9ucyBcdTAwMjYgWERQX1RYX01FVEFEQVRBKSB7XG5uZXQveGRwL3hzay5jOjg2NjpcdFx0XHRlcnIgPSB4c2tfc2tiX21ldGFkYXRhKHNrYiwgYnVmZmVyLCBkZXNjLCBwb29sLCBocik7XG5uZXQveGRwL3hzay5jLTg2Ny1cdFx0XHRpZiAodW5saWtlbHkoZXJyKSkge1xuLS1cbm5ldC94ZHAveHNrLmM9OTE5PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYihzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxuLS1cbm5ldC94ZHAveHNrLmMtOTU0LVx0XHRcdGlmIChkZXNjLVx1MDAzZW9wdGlvbnMgXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkge1xubmV0L3hkcC94c2suYzo5NTU6XHRcdFx0XHRlcnIgPSB4c2tfc2tiX21ldGFkYXRhKHNrYiwgYnVmZmVyLCBkZXNjLFxubmV0L3hkcC94c2suYy05NTYtXHRcdFx0XHRcdFx0ICAgICAgIHhzLVx1MDAzZXBvb2wsIGhyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjU5CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgQ2FsbGVycyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHBpbnBvaW50aW5nIHRoZSBjYWxsZXJzIG9mIHRoZSBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1dGlsaXplZCB3aXRoaW4gdGhlIFhEUC9BRl9YRFAgZWNvc3lzdGVtIGlzIGNydWNpYWwgZm9yIGEgbnVtYmVyIG9mIHJlYXNvbnMuIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gcGFja2V0IHByb2Nlc3NpbmcgYW5kIHRoZSBlZmZpY2llbnQgcmV0cmlldmFsIG9mIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCBYU0sgYnVmZmVycy4gSSB3YW50IHRvIHRyYWNlIHRoZSBkYXRhIGZsb3cuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHBhcnRzIG9mIHRoZSBzeXN0ZW0gYXJlICpyZWx5aW5nKiBvbiB0aGlzIGZ1bmN0aW9uLCB3aGljaCBwcm92aWRlcyBjcml0aWNhbCBjbHVlcyBhYm91dCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBwb3NzaWJsZSBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIGNlbnRyYWwgcG9pbnQgd2hlcmUgbXVsdGlwbGUgcGF0aHMgY29udmVyZ2UsIG9yIGlzIGl0IG1vcmUgc3ByZWFkIG91dD8gV2hhdCBzcGVjaWZpYyBjb250ZXh0cyBhcmUgY2FsbGluZyBpdD8gQXJlIHdlIGluIGFuIGludGVycnVwdCBoYW5kbGVyPyBUaGUgZHJpdmVyPyBVc2VyIHNwYWNlPwoKSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcGF0dGVybnMuIERvZXMgaXQgb25seSBnZXQgY2FsbGVkIGZyb20gY2VydGFpbiBwYXRocz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGNhbmRpZGF0ZXMgdGhhdCBhcmUgY2FsbGluZyBpdCBpbmVmZmljaWVudGx5PyBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlIGFuZCBpZiB0aGVyZSBhcmUgYW55IGFyZWFzIG9mIG9wcG9ydHVuaXR5IGZvciBpbXByb3ZlZCBlZmZpY2llbmN5IG9yIHNlY3VyaXR5LiBJcyB0aGlzIGEgcG90ZW50aWFsIGhvdHNwb3Q/IElzIHRoaXMgdGhlIHBsYWNlIHdlIHNob3VsZCBiZSBwcm9maWxpbmcsIG9yIGxvb2tpbmcgYXQgdG8gaW1wcm92ZSB0aGUgb3ZlcmFsbCBwZXJmb3JtYW5jZT8gVGhpcyBpbmZvcm1hdGlvbiwgaW4gdHVybiwgd2lsbCBwcm92aWRlIGluc2lnaHQgaW50byBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zIGFuZCBvdmVyYWxsIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgWERQIHN0YWNrLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X194c2tfYnVmZl9nZXRfbWV0YWRhdGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjgxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyODI6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yODMte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI5Nz14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjk4LXtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI5OTpcdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMzAwLX1cbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD00OTE9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjQ5MjpfX3hza19idWZmX2dldF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdm9pZCAqZGF0YSlcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTQ5My17XG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM9NzY5PXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc3NS1cdHJldC5kbWEgPSBfX3hwX3Jhd19nZXRfZG1hKHBvb2wsIGFkZHIpO1xubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6Nzc2Olx0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7XG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ4NQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipYRFAgQnVmZmVyIE1ldGFkYXRhIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBkYXRhIGZsb3cgZm9yIFhEUCBidWZmZXIgbWV0YWRhdGEsIGFuZCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZ290IHNvIGZhci4gSXQgbG9va3MgbGlrZSBib3RoIGB4c2tfYnVpbGRfc2tiX3plcm9jb3B5YCBhbmQgYHhza19idWlsZF9za2JgIHVsdGltYXRlbHkgZnVubmVsIGludG8gYHhza19za2JfbWV0YWRhdGFgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBzdHVmZiBsaWtlbHkgaGFwcGVucy4gRGlnZ2luZyBkZWVwZXIsIEkgc2VlIHRoYXQgYHhwX3Jhd19nZXRfY3R4YCBjYWxscyBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgLCBhbmQgdGhlbiwgaXQgc2VlbXMgdGhhdCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCAqYWxzbyogY2FsbHMgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYC4gV2hpY2ggbWVhbnMgdGhlcmUgaXMgc29tZSBwb3RlbnRpYWwgcmVkdW5kYW5jeSBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2h5IHRoZSBgX19gIHZlcnNpb24gaXMgY2FsbGVkIGluIG11bHRpcGxlIHBsYWNlcy4gSXQgaXMgcHJvYmFibHkgdGhlIGNvcmUgb2YgdGhlIG1ldGFkYXRhIHJldHJpZXZhbC4KCk5vdywgSSByZWFsbHkgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBzaXRlcyBvZiB0aG9zZSBpbml0aWFsIGZ1bmN0aW9ucywgYHhza19idWlsZF9za2JgIGFuZCBgeHNrX2J1aWxkX3NrYl96ZXJvY29weWAuIEtub3dpbmcgKndobyogaXMgY2FsbGluZyB0aGVtIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgaG93IHRoaXMgbWV0YWRhdGEgaXMgYmVpbmcgdXNlZC4gSXQmIzM5O3MgdGltZSB0byBmb2xsb3cgdGhlIHRyYWNlcyBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfYnVpbGRfc2tiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmM9ODAxPXN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG4tLVxubmV0L3hkcC94c2suYy04NDItXG5uZXQveGRwL3hzay5jOjg0MzpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2JfemVyb2NvcHkoc3RydWN0IHhkcF9zb2NrICp4cyxcbm5ldC94ZHAveHNrLmMtODQ0LVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpXG4tLVxubmV0L3hkcC94c2suYy05MTgtXG5uZXQveGRwL3hzay5jOjkxOTpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0IHhkcF9zb2NrICp4cyxcbm5ldC94ZHAveHNrLmMtOTIwLVx0XHRcdFx0ICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpXG4tLVxubmV0L3hkcC94c2suYy05MjYtXHRpZiAoZGV2LVx1MDAzZXByaXZfZmxhZ3MgXHUwMDI2IElGRl9UWF9TS0JfTk9fTElORUFSKSB7XG5uZXQveGRwL3hzay5jOjkyNzpcdFx0c2tiID0geHNrX2J1aWxkX3NrYl96ZXJvY29weSh4cywgZGVzYyk7XG5uZXQveGRwL3hzay5jLTkyOC1cdFx0aWYgKElTX0VSUihza2IpKSB7XG4tLVxubmV0L3hkcC94c2suYz0xMDI1PXN0YXRpYyBpbnQgX194c2tfZ2VuZXJpY194bWl0KHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQveGRwL3hzay5jLTEwNjItXG5uZXQveGRwL3hzay5jOjEwNjM6XHRcdHNrYiA9IHhza19idWlsZF9za2IoeHMsIFx1MDAyNmRlc2MpO1xubmV0L3hkcC94c2suYy0xMDY0LVx0XHRpZiAoSVNfRVJSKHNrYikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzAwCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFhEUCBTb2NrZXQgVHJhbnNtaXNzaW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBgX194c2tfZ2VuZXJpY194bWl0YCwgdGhlIGNvcmUgZW50cnkgcG9pbnQgZm9yIGdlbmVyaWMgWERQIHNvY2tldCB0cmFuc21pc3Npb24uIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIGhvdyB3ZSBnZXQgZGF0YSBvdXQgb2YgdGhlc2Ugc29ja2V0cy4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCBhbmQgdG8gZG8gdGhhdCwgSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZSBjYWxsZXJzIG9mIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgLiBLbm93aW5nIHdobyBpcyByZXF1ZXN0aW5nIGJ1ZmZlciBtZXRhZGF0YSBmcm9tIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGlzIGNyaXRpY2FsLCBiZWNhdXNlIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSB3b3JraW5nIHdpdGggZGF0YSBmcm9tIG91ciBzb2NrZXRzLiBVbmRlcnN0YW5kaW5nIHdoZXJlIHRoZSBtZXRhZGF0YSBpcyBiZWluZyByZXF1ZXN0ZWQgaXMgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSB3aG8mIzM5O3MgdXRpbGl6aW5nIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2J1ZmZfZ2V0X21ldGFkYXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTMwMzc9c3RhdGljIHZvaWQgaWdjX3hkcF94bWl0X3pjKHN0cnVjdCBpZ2NfcmluZyAqcmluZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDc2LVx0XHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjMwNzc6XHRcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy0zMDc4LVx0XHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jPTY2PWJvb2wgbWx4NWVfeHNrX3R4KHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EsIHVuc2lnbmVkIGludCBidWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTEwMS1cdFx0eGRwdHhkLmxlbiA9IGRlc2MubGVuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jOjEwMjpcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay90eC5jLTEwMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI2OTQ9c3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjczOC1cdFx0ZG1hX2FkZHIgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MjczOTpcdFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMjc0MC1cdFx0eHNrX2J1ZmZfcmF3X2RtYV9zeW5jX2Zvcl9kZXZpY2UocG9vbCwgZG1hX2FkZHIsIHhkcF9kZXNjLmxlbik7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjgxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyODI6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yODMte1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI5Nj1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjk3Onhza19idWZmX2dldF9tZXRhZGF0YShzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yOTgte1xuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjk5Olx0cmV0dXJuIF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIHhwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7XG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMDAtfVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTQ5MT1zdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NDkyOl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNDkzLXtcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD00OTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjQ5ODp4c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNDk5LXtcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYz03Njk9c3RydWN0IHhkcF9kZXNjX2N0eCB4cF9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4tLVxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzc1LVx0cmV0LmRtYSA9IF9feHBfcmF3X2dldF9kbWEocG9vbCwgYWRkcik7XG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3NzY6XHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc3Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjczOAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipYRFAgVHJhbnNtaXNzaW9uIFBhdGggQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBhIGtleSBmdW5jdGlvbiB1c2VkIGFjcm9zcyBzZXZlcmFsIGltcG9ydGFudCBuZXR3b3JrIGRyaXZlcnMgbGlrZSBpZ2MsIG1seDUsIGFuZCBzdG1tYWMuIEFuZCB0aGVuLCBgX194c2tfZ2VuZXJpY194bWl0YCBhcHBlYXJzIHRvIGxldmVyYWdlIGB4c2tfc2tiX21ldGFkYXRhYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGdlbmVyaWMgWERQIHRyYW5zbWlzc2lvbiBwYXRoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGBfX3hza19nZW5lcmljX3htaXRgLgoKVGhpcyBkZWZpbml0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gVGhlIGZsb3cgc2VlbXMgd2VsbC1kZWZpbmVkLCBzdWdnZXN0aW5nIHRoaXMgaXMgYSBwb3RlbnRpYWwgYXJlYSB0byBzY3J1dGluaXplIHdpdGggZnV6emluZy4gTXkgZ3V0IHNheXMgdGhlcmUgY291bGQgYmUgc29tZSBpbnRlcmVzdGluZywgcG9zc2libHkgZXhwbG9pdGFibGUsIHNjZW5hcmlvcyBoZXJlLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBmb3IgdGhpcyBYRFAgdHJhbnNtaXNzaW9uIHBhdGguIEkmIzM5O20gcmVjYWxsaW5nIFhEUCBzb2NrZXRzIGFyZSBlbmFibGVkIGJ5IGBDT05GSUdfWERQX1NPQ0tFVFNgLiBJJiMzOTtsbCB3YW50IHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfWERQX1NPQ0tFVFNgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIGl0ZW0uIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIHRlc3RpbmcgdGhlIHJpZ2h0IHRoaW5ncywgYW5kIHRoaXMgZmVlbHMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRFBfU09DS0VUUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC94ZHAvS2NvbmZpZzoyOmNvbmZpZyBYRFBfU09DS0VUU1xubmV0L3hkcC9LY29uZmlnLTMtXHRib29sIFwmIzM0O1hEUCBzb2NrZXRzXCYjMzQ7XG4tLVxubmV0L3hkcC9LY29uZmlnLTktXG5uZXQveGRwL0tjb25maWc6MTA6Y29uZmlnIFhEUF9TT0NLRVRTX0RJQUdcbm5ldC94ZHAvS2NvbmZpZy0xMS1cdHRyaXN0YXRlIFwmIzM0O1hEUCBzb2NrZXRzOiBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjM3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlhEUCBTb2NrZXRzIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgWERQIHNvY2tldCBzdHVmZi4gUmlnaHQsIGZpcnN0IHRoaW5nIHRvIGNvbmZpcm0gaXMgdGhhdCBgWERQX1NPQ0tFVFNgIGlzIGluZGVlZCB0aGUgY29uZmlndXJhdGlvbiBpdGVtIEkgbmVlZCB0byBsb29rIGF0LiBOb3csIHdoZXJlIGRvIEkgc3RhcnQgbXkgZGVlcGVyIGludmVzdGlnYXRpb24/IEkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBtYXAgaGVyZSwgYW5kIGEgZ29vZCBzZXQgb2YgZm9jdXMgc3ltYm9scyB3aWxsIGhlbHAgbWUuIExldCYjMzk7cyBzZWUuLi4KCkkgc2hvdWxkIGNvbmNlbnRyYXRlIG9uIGEgZmV3IGtleSB0aGluZ3M6IGB4c2tfc2tiX21ldGFkYXRhYCwgYHhza19idWlsZF9za2JgLCBgeHNrX2J1aWxkX3NrYl96ZXJvY29weWAsIGFuZCBgX194c2tfZ2VuZXJpY194bWl0YC4gTGV0JiMzOTtzIHRlc3QgYHhza19za2JfbWV0YWRhdGFgIGFzIGEgc3RhcnRpbmcgcG9pbnQsIHJpZ2h0PyBZdXAsIEkgc2VlIGl0JiMzOTtzIGEgYHN0YXRpY2AgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBsb2NhdGVkIGluIGBuZXQveGRwL3hzay5jYC4gVGhlIHNhbWUgZ29lcyBmb3IgYHhza19idWlsZF9za2JgLCB0aGF0IG9uZSYjMzk7cyBhbHNvIHN0YXRpYywgYWxzbyBpbiBgbmV0L3hkcC94c2suY2AuIEFuZCBgX194c2tfZ2VuZXJpY194bWl0YD8gSXQmIzM5O3MgdGhlIHNhbWUgZGVhbCAtIGBzdGF0aWNgIGluIGBuZXQveGRwL3hzay5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgYWxsIGNvbm5lY3RlZC4gTm93LCBgeHNrX3NlbmRtc2dgLi4uICp0aGF0KiBsb29rcyBsaWtlIHRoZSBzeXNjYWxsIGVudHJ5IHBvaW50LCBkb2VzbiYjMzk7dCBpdD8gT2theSwgSSB0aGluayBJIGhhdmUgYSBnb29kIGZyYW1ld29yayBoZXJlLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBhbmQgc2VlIGhvdyB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfc2VuZG1zZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jPTExMzg9c3RhdGljIGludCB4c2tfY2hlY2tfY29tbW9uKHN0cnVjdCB4ZHBfc29jayAqeHMpXG4tLVxubmV0L3hkcC94c2suYy0xMTQ3LVxubmV0L3hkcC94c2suYzoxMTQ4OnN0YXRpYyBpbnQgX194c2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgdG90YWxfbGVuKVxubmV0L3hkcC94c2suYy0xMTQ5LXtcbi0tXG5uZXQveGRwL3hzay5jLTExNzgtXG5uZXQveGRwL3hzay5jOjExNzk6c3RhdGljIGludCB4c2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgdG90YWxfbGVuKVxubmV0L3hkcC94c2suYy0xMTgwLXtcbi0tXG5uZXQveGRwL3hzay5jLTExODMtXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQveGRwL3hzay5jOjExODQ6XHRyZXQgPSBfX3hza19zZW5kbXNnKHNvY2ssIG0sIHRvdGFsX2xlbik7XG5uZXQveGRwL3hzay5jLTExODUtXHRyY3VfcmVhZF91bmxvY2soKTtcbi0tXG5uZXQveGRwL3hzay5jPTE5Mzk9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgeHNrX3Byb3RvX29wcyA9IHtcbi0tXG5uZXQveGRwL3hzay5jLTE5NTMtXHQuZ2V0c29ja29wdF9pdGVyID0geHNrX2dldHNvY2tvcHQsXG5uZXQveGRwL3hzay5jOjE5NTQ6XHQuc2VuZG1zZ1x0PSB4c2tfc2VuZG1zZyxcbm5ldC94ZHAveHNrLmMtMTk1NS1cdC5yZWN2bXNnXHQ9IHhza19yZWN2bXNnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTQzCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIFhEUCBTb2NrZXQgVFggUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiB0aGUgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aC4gSXQgc2VlbXMgbGlrZSBgeHNrX3NlbmRtc2dgIGFuZCBgX194c2tfc2VuZG1zZ2AgYXJlIGdvb2QgZW50cnkgcG9pbnRzIHRvIHN0YXJ0IHdpdGguIFRob3NlIGFyZSBkZWZpbml0ZWx5IGtleSBzeW1ib2xzLiBBbmQgYmFzZWQgb24gdGhlIG1vZGlmaWNhdGlvbnMsIGB4c2tfc2tiX21ldGFkYXRhYCBsb29rcyB0byBiZSB0aGUgZnVuY3Rpb24gdGhhdCB3YXMgbW9zdCBkaXJlY3RseSBpbnZvbHZlZCDigJMgb3IgYXQgbGVhc3QgaW5kaXJlY3RseSBpbnZvbHZlZCB2aWEgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYC4gSSBzaG91bGQgZGVmaW5pdGVseSBhZGQgdGhhdCB0byB0aGUgbGlzdC4gSSYjMzk7bGwgaW5jbHVkZSBgX194c2tfc2VuZG1zZ2AsIGB4c2tfc2VuZG1zZ2AsIGBfX3hza19nZW5lcmljX3htaXRgLCBgeHNrX2J1aWxkX3NrYmAsIGFuZCBgeHNrX2J1aWxkX3NrYl96ZXJvY29weWAsIHRvby4KCldhaXQgYSBzZWNvbmTigKYgSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYCBpcyBhY3R1YWxseSBhbiBpbmxpbmUgZnVuY3Rpb24gZGVmaW5lZCByaWdodCB0aGVyZSBpbiBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLiBUaGF0IGNoYW5nZXMgdGhpbmdzIGEgYml0LiBJdCBpcyBjYWxsZWQgYnkgYm90aCBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHNrX3NrYl9tZXRhZGF0YWAuIFNvLCB5ZWFoLCB0aGF0IHNvbGlkaWZpZXMgYHhza19za2JfbWV0YWRhdGFgIGFzIGEgcHJpbWFyeSBmb2N1cyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGlzIGNoYW5nZS4KCk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwLCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIHJlbGV2YW50LiBJcyBgWERQX1NPQ0tFVFNgIHN1ZmZpY2llbnQsIG9yIGlzIHRoZXJlIHNvbWV0aGluZyBlbHNlIGF0IHBsYXk/IFRpbWUgdG8gY2hlY2sgdGhlIGBuZXQveGRwL01ha2VmaWxlYCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3JpdGljYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza1xcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX0ZTTF9EUEFBMl9TV0lUQ0gpXHRcdCYjNDM7PSBmc2wtZHBhYTItc3dpdGNoLm8gZnNsLWRwYWEyLW1hYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvTWFrZWZpbGUtOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9NYWtlZmlsZToxMDpmc2wtZHBhYTItZXRoLW9ianNcdDo9IGRwYWEyLWV0aC5vIGRwYWEyLWV0aHRvb2wubyBkcG5pLm8gZHBhYTItZXRoLWRldmxpbmsubyBkcGFhMi14c2sub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL01ha2VmaWxlLTExLWZzbC1kcGFhMi1ldGgtJHtDT05GSUdfRlNMX0RQQUEyX0VUSF9EQ0J9ICYjNDM7PSBkcGFhMi1ldGgtZGNiLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL01ha2VmaWxlPTEzPWk0MGUteSA6PSBpNDBlX21haW4ubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvTWFrZWZpbGUtMjYtXHRpNDBlX3ZpcnRjaG5sX3BmLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvTWFrZWZpbGU6Mjc6XHRpNDBlX3hzay5vXHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9NYWtlZmlsZS0yOC1cdGk0MGVfZGV2bGluay5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL01ha2VmaWxlPTU5PWljZS0kKENPTkZJR19SRlNfQUNDRUwpICYjNDM7PSBpY2VfYXJmcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvTWFrZWZpbGU6NjA6aWNlLSQoQ09ORklHX1hEUF9TT0NLRVRTKSAmIzQzOz0gaWNlX3hzay5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvTWFrZWZpbGUtNjEtaWNlLSQoQ09ORklHX0lDRV9TV0lUQ0hERVYpICYjNDM7PSBpY2VfZXN3aXRjaC5vIGljZV9lc3dpdGNoX2JyLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlPTI1PWlkcGYteVx0XHRcdFx0JiM0Mzs9IHhkcC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjI2OmlkcGYteVx0XHRcdFx0JiM0Mzs9IHhzay5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL01ha2VmaWxlPTk9aWdiLXkgOj0gaWdiX21haW4ubyBpZ2JfZXRodG9vbC5vIGUxMDAwXzgyNTc1Lm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9NYWtlZmlsZS0xMC1cdCBlMTAwMF9tYWMubyBlMTAwMF9udm0ubyBlMTAwMF9waHkubyBlMTAwMF9tYngubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL01ha2VmaWxlOjExOlx0IGUxMDAwX2kyMTAubyBpZ2JfcHRwLm8gaWdiX2h3bW9uLm8gaWdiX3hzay5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvTWFrZWZpbGU9MTA9aXhnYmUteSA6PSBpeGdiZV9tYWluLm8gaXhnYmVfY29tbW9uLm8gaXhnYmVfZXRodG9vbC5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvTWFrZWZpbGUtMTItICAgICAgICAgICBpeGdiZV9tYngubyBpeGdiZV94NTQwLm8gaXhnYmVfeDU1MC5vIGl4Z2JlX2xpYi5vIGl4Z2JlX3B0cC5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9NYWtlZmlsZToxMzogICAgICAgICAgIGl4Z2JlX3hzay5vIGl4Z2JlX2U2MTAubyBkZXZsaW5rL2RldmxpbmsubyBpeGdiZV9md191cGRhdGUubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvTWFrZWZpbGUtMTQtXHQgICBkZXZsaW5rL3JlZ2lvbi5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL01ha2VmaWxlPTExPWxpYmV0aF94ZHAteVx0XHRcdCYjNDM7PSB4ZHAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL01ha2VmaWxlOjEyOmxpYmV0aF94ZHAteVx0XHRcdCYjNDM7PSB4c2sub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZT0xMD1ydnVfbmljcGYteSA6PSBvdHgyX3BmLm8gb3R4Ml9jb21tb24ubyBvdHgyX3R4cngubyBvdHgyX2V0aHRvb2wubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTExLSAgICAgICAgICAgICAgIG90eDJfZmxvd3MubyBvdHgyX3RjLm8gY24xMGsubyBjbjIway5vIG90eDJfZG1hY19mbHQubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjEyOiAgICAgICAgICAgICAgIG90eDJfZGV2bGluay5vIHFvc19zcS5vIHFvcy5vIG90eDJfeHNrLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS0xMy1ydnVfbmljdmYteSA6PSBvdHgyX3ZmLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlPTQ9bmZwLW9ianMgOj0gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlLTI0LVx0ICAgIG5mZDMvcmluZ3MubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9NYWtlZmlsZToyNTpcdCAgICBuZmQzL3hzay5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlLTI2LVx0ICAgIG5mZGsvZHAubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGUtNDAtXHQgICAgbmZwX25ldF9zcmlvdi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlOjQxOlx0ICAgIG5mcF9uZXRfeHNrLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGUtNDItXHQgICAgbmZwX25ldHZmX21haW4ubyBcXFxuLS1cbm5ldC94ZHAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC94ZHAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfWERQX1NPQ0tFVFMpICYjNDM7PSB4c2subyB4ZHBfdW1lbS5vIHhza19xdWV1ZS5vIHhza21hcC5vXG5uZXQveGRwL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX1hEUF9TT0NLRVRTKSAmIzQzOz0geHNrX2J1ZmZfcG9vbC5vXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlPTM0Nj0kKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogJChURVNUSU5HX0hFTFBFUlMpICQoQ0FQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGU6MzQ3OiQoT1VUUFVUKS94c2subzogJChCUEZPQkopXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUtMzQ4LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZT05Mzg9RVhUUkFfU1JDIDo9ICQoVE9PTFNESVIpL2xpYi9maW5kX2JpdC5jIHByb2dfdGVzdHMvdGVzdF94c2suYyBwcm9nX3Rlc3RzL3Rlc3RfeHNrLmhcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZTo5Mzk6JChPVVRQVVQpL3hza3hjZWl2ZXI6ICQoRVhUUkFfU1JDKSB4c2t4Y2VpdmVyLmMgeHNreGNlaXZlci5oICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hza194ZHBfcHJvZ3Muc2tlbC5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLTk0MC1cdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUtOTQyLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlOjk0MzokKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhOiB4ZHBfaHdfbWV0YWRhdGEuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGEuc2tlbC5oIHwgJChPVVRQVVQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUtOTQ0LVx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU5NQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLCBteSBpbml0aWFsIGZvY3VzIGlzIG9uIGBDT05GSUdfWERQX1NPQ0tFVFNgLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaXRlbSBJIG5lZWQgdG8gaW52ZXN0aWdhdGUuCgpOb3csIGxldCBtZSBicm9hZGVuIG15IHNjb3BlIGEgYml0LiBBcmUgdGhlcmUgYW55ICpvdGhlciogcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gTGV0IG1lIHRoaW5rLi4uIHRoaXMgcGF0Y2ggcmVmZXJlbmNlcyBzcGVjaWZpYyBYRFAgbWV0YWRhdGEgZmxhZ3M6IGBYRFBfVFhNRF9GTEFHU19WQUxJRGAsIGBYRFBfVFhNRF9GTEFHU19DSEVDS1NVTWAsIGBYRFBfVFhNRF9GTEFHU19USU1FU1RBTVBgLCBhbmQgYFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FYC4gQWxsIG9mIHRoZXNlIHJlbGF0ZSB0byB0aGUgWERQIHRyYW5zbWlzc2lvbiBtZXRhZGF0YSwgc3BlY2lmaWNhbGx5LiBHaXZlbiB0aGVzZSBmbGFncywgaXQgbWFrZXMgc2Vuc2UgdG8gY29uZmlybSBpZiB0aGVyZSBpcyBhIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRpcmVjdGx5IHRpZWQgdG8gdGhlIFhEUCBtZXRhZGF0YSBpdHNlbGYuIEkgbmVlZCB0byBrbm93IGlmIGl0JiMzOTtzIGNvbmZpZ3VyYWJsZSBvciBwZXJoYXBzIGltcGxpY2l0bHkgZW5hYmxlZCBiYXNlZCBvbiB0aGUgdXNlIG9mIG90aGVyIFhEUCBmZWF0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDQ6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7WERQX1RYTURfRkxBR1NfVkFMSUQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTktXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTA6LyogYGBYRFBfVFhNRF9GTEFHU19WQUxJRGBgIGlzIGRlZmluZWQgb25seSB1bmRlciBgYENPTkZJR19YRFBfU09DS0VUU2BgICovXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTE6I2lmZGVmIFhEUF9UWE1EX0ZMQUdTX1ZBTElEXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTI6c3RhdGljX2Fzc2VydChYRFBfVFhNRF9GTEFHU19WQUxJRCBcdTAwM2M9IExJQkVUSF9YRFBfVFhfWFNLTUQpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTEzLSNlbmRpZlxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI1MT14c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjU1LVxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjU2OiNkZWZpbmUgWERQX1RYTURfRkxBR1NfVkFMSUQgKCBcXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjU3LVx0XHRYRFBfVFhNRF9GTEFHU19USU1FU1RBTVAgfCBcXFxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI2Mz14c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbi0tXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNjktXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNzA6XHRpZiAodW5saWtlbHkobWV0YS1cdTAwM2VmbGFncyBcdTAwMjYgflhEUF9UWE1EX0ZMQUdTX1ZBTElEKSlcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI3MS1cdFx0cmV0dXJuIGZhbHNlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTMwMQoJCQkJCQkJb3V0cHV0OiAxOTUKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEFGX1hEUCBTb2NrZXQgVFggTWV0YWRhdGEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiB3aGVyZSB0aGUgcmVsZXZhbnQgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIGFyZSBkZWZpbmVkLCBuYW1lbHkgYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCwgSSBjYW4gc2VlIHRoYXQgYENPTkZJR19YRFBfU09DS0VUU2AgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBuZWVkZWQgdG8gZW5hYmxlIHRoZSBjb2RlIGJlaW5nIG1vZGlmaWVkLiBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzOyBpdCBnaXZlcyB1cyBhIGNsZWFyIGRlcGVuZGVuY3kuCgpOb3csIGxldCYjMzk7cyBicmVhayBkb3duIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LiBXZSYjMzk7cmUgY29uY2VybmVkIHdpdGggdmFsaWRhdGluZyBUWCBtZXRhZGF0YSB3aXRoaW4gdGhlIEFGX1hEUCBzb2NrZXQgaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYC4gIFRoZSBwYXRjaCYjMzk7cyBtb2RpZmljYXRpb25zIGFyZSBhZGRpbmcgbGVuZ3RoIGNoZWNrcyBhZ2FpbnN0IHRoZSBwb29sIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgY3JpdGljYWwgbmV0d29yayBjb2RlLCBhbmQgd2UgKmFic29sdXRlbHkqIG5lZWQgdG8gZnV6eiB0aGlzLiBJdCYjMzk7cyByZWFjaGVkIHRocm91Z2ggdGhlIHRyYW5zbWlzc2lvbiBwYXRocywgc28gZnVuY3Rpb25zIGxpa2UgYHhza19zZW5kbXNnYCBhbmQgYF9feHNrX2dlbmVyaWNfeG1pdGAgYXJlIGNsZWFybHkgaW4gc2NvcGUsIGFzIGFyZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gYnVpbGRpbmcgdGhlIFNLQnM6IGB4c2tfc2tiX21ldGFkYXRhYCwgYHhza19idWlsZF9za2JgLCBhbmQgYHhza19idWlsZF9za2JfemVyb2NvcHlgLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXNlIG5ldyBsZW5ndGggY2hlY2tzIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIG9yIGFsbG93IGZvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiBUaGVyZWZvcmUsIHRoZSBmdXp6IHRhcmdldHMgd2lsbCBiZSB0aGUgb25lcyBsaXN0ZWQgaW4gJiMzNDtGb2N1c1N5bWJvbHMmIzM0OyBpbiB0aGUgdGV4dC4gSSBhbSBhbHNvIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAsIGFuZCBzZXQgYEVuYWJsZUNvbmZpZ3NgIHRvIGp1c3QgYFhEUF9TT0NLRVRTYC4KCkluIGVzc2VuY2UsIHRoaXMgaXMgYSBtb2RpZmljYXRpb24gdG8gYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBBRl9YRFAgc29ja2V0IGZ1bmN0aW9uYWxpdHkuIFRoaXMgbmVjZXNzaXRhdGVzIHRob3JvdWdoIGZ1enppbmcuIFdlJiMzOTtyZSBsb29raW5nIGZvciBtZW1vcnkgY29ycnVwdGlvbiBvciBvdGhlciBsb2dpYyBlcnJvcnMgaW50cm9kdWNlZCBieSB0aGUgYWRkaXRpb25hbCBjaGVja3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA0OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hza19za2JfbWV0YWRhdGEmIzM0OywKICAgICYjMzQ7X194c2tfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDt4c2tfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtfX3hza19nZW5lcmljX3htaXQmIzM0OywKICAgICYjMzQ7eHNrX2J1aWxkX3NrYiYjMzQ7LAogICAgJiMzNDt4c2tfYnVpbGRfc2tiX3plcm9jb3B5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIG9mIFRYIG1ldGFkYXRhIGluIEFGX1hEUCBzb2NrZXRzIChgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgKSwgYWRkaW5nIGNoZWNrcyBmb3IgdGhlIG1ldGFkYXRhIGxlbmd0aCBhZ2FpbnN0IHRoZSBwb29sIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG5ldHdvcmtpbmcgY29kZSByZWFjaGFibGUgdmlhIFhEUCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIChlLmcuLCBgeHNrX3NlbmRtc2dgLCBgX194c2tfZ2VuZXJpY194bWl0YCksIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGxlbmd0aCBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hza19za2JfbWV0YWRhdGEmIzM0OywKICAgICYjMzQ7X194c2tfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDt4c2tfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtfX3hza19nZW5lcmljX3htaXQmIzM0OywKICAgICYjMzQ7eHNrX2J1aWxkX3NrYiYjMzQ7LAogICAgJiMzNDt4c2tfYnVpbGRfc2tiX3plcm9jb3B5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIG9mIFRYIG1ldGFkYXRhIGluIEFGX1hEUCBzb2NrZXRzIChgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgKSwgYWRkaW5nIGNoZWNrcyBmb3IgdGhlIG1ldGFkYXRhIGxlbmd0aCBhZ2FpbnN0IHRoZSBwb29sIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG5ldHdvcmtpbmcgY29kZSByZWFjaGFibGUgdmlhIFhEUCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIChlLmcuLCBgeHNrX3NlbmRtc2dgLCBgX194c2tfZ2VuZXJpY194bWl0YCksIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGxlbmd0aCBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDQ6MjYuOTc3Mzc5Mzg4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMyNzY4MTkyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2tfc2tiX21ldGFkYXRhXCIsXG4gICAgXCJfX3hza19zZW5kbXNnXCIsXG4gICAgXCJ4c2tfc2VuZG1zZ1wiLFxuICAgIFwiX194c2tfZ2VuZXJpY194bWl0XCIsXG4gICAgXCJ4c2tfYnVpbGRfc2tiXCIsXG4gICAgXCJ4c2tfYnVpbGRfc2tiX3plcm9jb3B5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gb2YgVFggbWV0YWRhdGEgaW4gQUZfWERQIHNvY2tldHMgKGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWApLCBhZGRpbmcgY2hlY2tzIGZvciB0aGUgbWV0YWRhdGEgbGVuZ3RoIGFnYWluc3QgdGhlIHBvb2wgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgKGUuZy4sIGB4c2tfc2VuZG1zZ2AsIGBfX3hza19nZW5lcmljX3htaXRgKSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgbGVuZ3RoIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjI2Ljk3NzM4NDI4OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQyMjY1OTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzM5ODhmYzlmYjIxMTEyNmM0ODg3NzhmMzVhMzA3Mjk3YzVlYjMxMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAwNDo0NDoyNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaCBiL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXFxuaW5kZXggNDY3OTc2NDVhMGMyNDEuLjVjNTRjNzQ2MmM0NWUzIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXFxuKysrIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcXG5AQCAtMjYwLDkgKzI2MCwyMiBAQCB4c2tfYnVmZl9yYXdfZ2V0X2N0eChjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTY0IGFkZHIpXFxuIFxcdDApXFxuIFxcbiBzdGF0aWMgaW5saW5lIGJvb2xcXG4teHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSlcXG4reHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuK1xcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEpXFxuIHtcXG4tXFx0cmV0dXJuICEobWV0YS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiB+WERQX1RYTURfRkxBR1NfVkFMSUQpO1xcbitcXHQvKiBjb3ZlcnMgZmxhZ3MsIFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNIFxcdTAwMjYgWERQX1RYTURfRkxBR1NfVElNRVNUQU1QICovXFxuK1xcdGlmICh1bmxpa2VseShwb29sLVxcdTAwM2V0eF9tZXRhZGF0YV9sZW4gXFx1MDAzYyAxNikpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmICh1bmxpa2VseShtZXRhLVxcdTAwM2VmbGFncyBcXHUwMDI2IH5YRFBfVFhNRF9GTEFHU19WQUxJRCkpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmIChtZXRhLVxcdTAwM2VmbGFncyBcXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0xBVU5DSF9USU1FKVxcbitcXHRcXHRpZiAodW5saWtlbHkocG9vbC1cXHUwMDNldHhfbWV0YWRhdGFfbGVuIFxcdTAwM2NcXG4rXFx0XFx0XFx0ICAgICBvZmZzZXRvZmVuZChzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhLCByZXF1ZXN0LmxhdW5jaF90aW1lKSkpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKlxcbkBAIC0yNzQsNyArMjg3LDcgQEAgX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0bWV0YSA9IGRhdGEgLSBwb29sLVxcdTAwM2V0eF9tZXRhZGF0YV9sZW47XFxuLVxcdGlmICh1bmxpa2VseSgheHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEobWV0YSkpKVxcbitcXHRpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKHBvb2wsIG1ldGEpKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7IC8qIG5vIHdheSB0byBzaWduYWwgdGhlIGVycm9yIHRvIHRoZSB1c2VyICovXFxuIFxcbiBcXHRyZXR1cm4gbWV0YTtcXG5AQCAtNDY5LDcgKzQ4Miw4IEBAIHhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4gXFx0cmV0dXJuIChzdHJ1Y3QgeGRwX2Rlc2NfY3R4KXsgfTtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBib29sIHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEpXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSlcXG4ge1xcbiBcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2suYyBiL25ldC94ZHAveHNrLmNcXG5pbmRleCBiOTcwZjMwZWE5YjlkOC4uNzViMmM5N2U0MWU0OGUgMTAwNjQ0XFxuLS0tIGEvbmV0L3hkcC94c2suY1xcbisrKyBiL25ldC94ZHAveHNrLmNcXG5AQCAtODA5LDcgKzgwOSw3IEBAIHN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0bWV0YSA9IGJ1ZmZlciAtIHBvb2wtXFx1MDAzZXR4X21ldGFkYXRhX2xlbjtcXG4tXFx0aWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShtZXRhKSkpXFxuK1xcdGlmICh1bmxpa2VseSgheHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEocG9vbCwgbWV0YSkpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuIFxcdGlmIChtZXRhLVxcdTAwM2VmbGFncyBcXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjI3LjMyMDI3Mzk2N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUyOTMzOTE1MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhEUF9TT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieHNrX3NrYl9tZXRhZGF0YVwiLFxuICAgIFwiX194c2tfc2VuZG1zZ1wiLFxuICAgIFwieHNrX3NlbmRtc2dcIixcbiAgICBcIl9feHNrX2dlbmVyaWNfeG1pdFwiLFxuICAgIFwieHNrX2J1aWxkX3NrYlwiLFxuICAgIFwieHNrX2J1aWxkX3NrYl96ZXJvY29weVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIG9mIFRYIG1ldGFkYXRhIGluIEFGX1hEUCBzb2NrZXRzIChgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgKSwgYWRkaW5nIGNoZWNrcyBmb3IgdGhlIG1ldGFkYXRhIGxlbmd0aCBhZ2FpbnN0IHRoZSBwb29sIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIG5ldHdvcmtpbmcgY29kZSByZWFjaGFibGUgdmlhIFhEUCBzb2NrZXQgdHJhbnNtaXNzaW9uIHBhdGhzIChlLmcuLCBgeHNrX3NlbmRtc2dgLCBgX194c2tfZ2VuZXJpY194bWl0YCksIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGxlbmd0aCBjaGVja3MgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDczOTg4ZmM5ZmIyMTExMjZjNDg4Nzc4ZjM1YTMwNzI5N2M1ZWIzMTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAwNDo0NDoyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oIGIvaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhcbmluZGV4IDQ2Nzk3NjQ1YTBjMjQxLi41YzU0Yzc0NjJjNDVlMyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oXG4rKysgYi9pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaFxuQEAgLTI2MCw5ICsyNjAsMjIgQEAgeHNrX2J1ZmZfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxuIFx0MClcbiBcbiBzdGF0aWMgaW5saW5lIGJvb2xcbi14c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKVxuK3hza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuK1x0XHRcdCAgIGNvbnN0IHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEgKm1ldGEpXG4ge1xuLVx0cmV0dXJuICEobWV0YS1cdTAwM2VmbGFncyBcdTAwMjYgflhEUF9UWE1EX0ZMQUdTX1ZBTElEKTtcbitcdC8qIGNvdmVycyBmbGFncywgWERQX1RYTURfRkxBR1NfQ0hFQ0tTVU0gXHUwMDI2IFhEUF9UWE1EX0ZMQUdTX1RJTUVTVEFNUCAqL1xuK1x0aWYgKHVubGlrZWx5KHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuIFx1MDAzYyAxNikpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGlmICh1bmxpa2VseShtZXRhLVx1MDAzZWZsYWdzIFx1MDAyNiB+WERQX1RYTURfRkxBR1NfVkFMSUQpKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRpZiAobWV0YS1cdTAwM2VmbGFncyBcdTAwMjYgWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUUpXG4rXHRcdGlmICh1bmxpa2VseShwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbiBcdTAwM2NcbitcdFx0XHQgICAgIG9mZnNldG9mZW5kKHN0cnVjdCB4c2tfdHhfbWV0YWRhdGEsIHJlcXVlc3QubGF1bmNoX3RpbWUpKSlcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcbkBAIC0yNzQsNyArMjg3LDcgQEAgX194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0bWV0YSA9IGRhdGEgLSBwb29sLVx1MDAzZXR4X21ldGFkYXRhX2xlbjtcbi1cdGlmICh1bmxpa2VseSgheHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGEobWV0YSkpKVxuK1x0aWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShwb29sLCBtZXRhKSkpXG4gXHRcdHJldHVybiBOVUxMOyAvKiBubyB3YXkgdG8gc2lnbmFsIHRoZSBlcnJvciB0byB0aGUgdXNlciAqL1xuIFxuIFx0cmV0dXJuIG1ldGE7XG5AQCAtNDY5LDcgKzQ4Miw4IEBAIHhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcbiBcdHJldHVybiAoc3RydWN0IHhkcF9kZXNjX2N0eCl7IH07XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgYm9vbCB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICptZXRhKVxuK3N0YXRpYyBpbmxpbmUgYm9vbCB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShjb25zdCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbitcdFx0XHRcdFx0ICAgICAgc3RydWN0IHhza190eF9tZXRhZGF0YSAqbWV0YSlcbiB7XG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrLmMgYi9uZXQveGRwL3hzay5jXG5pbmRleCBiOTcwZjMwZWE5YjlkOC4uNzViMmM5N2U0MWU0OGUgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hzay5jXG4rKysgYi9uZXQveGRwL3hzay5jXG5AQCAtODA5LDcgKzgwOSw3IEBAIHN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0bWV0YSA9IGJ1ZmZlciAtIHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuO1xuLVx0aWYgKHVubGlrZWx5KCF4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YShtZXRhKSkpXG4rXHRpZiAodW5saWtlbHkoIXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKHBvb2wsIG1ldGEpKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRpZiAobWV0YS1cdTAwM2VmbGFncyBcdTAwMjYgWERQX1RYTURfRkxBR1NfQ0hFQ0tTVU0pIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjI3LjMyMDI3NTI4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwOTU3NjY1MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgQUZfWERQIFRYIE1ldGFkYXRhIEhhbmRsaW5nKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgbG9va3MgbGlrZSBpdCdzIHR3ZWFraW5nIHRoZSBBRl9YRFAgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBYRFAgc29ja2V0cy4gSXQncyBtb2RpZnlpbmcgYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYCBhbmQgYG5ldC94ZHAveHNrLmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGZ1bmN0aW9uYWwgY29kZS4gVGhlIG1haW4gY2hhbmdlIHNlZW1zIHRvIGJlIGluIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAsIHdoZXJlIHRoZXkndmUgYWRkZWQgYSBgcG9vbGAgYXJndW1lbnQgYW5kIGFyZSBub3cgY2hlY2tpbmcgYHBvb2wtXHUwMDNldHhfbWV0YWRhdGFfbGVuYC4gU2luY2UgdGhpcyBpbnZvbHZlcyBtZXRhZGF0YSBoYW5kbGluZyBpbiBBRl9YRFAsIG15IGd1dCBmZWVsaW5nIHNheXMgdGhpcyBpcyBwcmltZSBmb3IgZnV6emluZy4gV2UgcmVhbGx5IG5lZWQgdG8gbWFrZSBzdXJlIHdlIHNoYWtlIHRoaXMgY29kZSBkb3duLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgdGhlIGNhbGwgY2hhaW4gYW5kIGlkZW50aWZ5IHRoZSBrZXkgc3ltYm9scy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBuZXcgY29kZSBpcyBiZWluZyB1c2VkLiBSaWdodCBvZmYgdGhlIGJhdCwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAuIEkga25vdyBpdCdzIGNhbGxlZCBmcm9tIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgYW5kIGB4c2tfc2tiX21ldGFkYXRhYC4gYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpdHNlbGYgaXMgbGlrZWx5IGNhbGxlZCBmcm9tIGB4c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGFuZCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhX3NrYmDigKZ0aGF0J3MgdGhlIGxpa2VseSBjYWxsZ3JhcGguXG5cbkknbGwgY2hlY2sgYG5ldC94ZHAveHNrLmNgIGFuZCBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgIHRvIGNvbmZpcm0gdGhlIGZ1bmN0aW9ucy4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2xsIGxldmVyYWdlIGBncmVwcGVyYCB0byBxdWlja2x5IHRyYWNrIGRvd24gdGhlIGV4YWN0IGxvY2F0aW9ucyB3aGVyZSBgeHNrX3NrYl9tZXRhZGF0YWAgYW5kIGBfX3hza19idWZmX2dldF9tZXRhZGF0YWAgYXJlIHVzZWQuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY29udGV4dCBhbmQgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU5OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjMyLjQxNjA0NDUwMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzU2NjE3MTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19za2JfbWV0YWRhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz03OTU9c3RhdGljIHZvaWQgeHNrX2Ryb3Bfc2tiKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQveGRwL3hzay5jLTgwMC1cXG5uZXQveGRwL3hzay5jOjgwMTpzdGF0aWMgaW50IHhza19za2JfbWV0YWRhdGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdm9pZCAqYnVmZmVyLFxcbm5ldC94ZHAveHNrLmMtODAyLVxcdFxcdFxcdCAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbi0tXFxubmV0L3hkcC94c2suYz04NDM9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHN0cnVjdCB4ZHBfc29jayAqeHMsXFxuLS1cXG5uZXQveGRwL3hzay5jLTg2NS1cXHRcXHRpZiAoZGVzYy1cXHUwMDNlb3B0aW9ucyBcXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkge1xcbm5ldC94ZHAveHNrLmM6ODY2OlxcdFxcdFxcdGVyciA9IHhza19za2JfbWV0YWRhdGEoc2tiLCBidWZmZXIsIGRlc2MsIHBvb2wsIGhyKTtcXG5uZXQveGRwL3hzay5jLTg2Ny1cXHRcXHRcXHRpZiAodW5saWtlbHkoZXJyKSkge1xcbi0tXFxubmV0L3hkcC94c2suYz05MTk9c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiKHN0cnVjdCB4ZHBfc29jayAqeHMsXFxuLS1cXG5uZXQveGRwL3hzay5jLTk1NC1cXHRcXHRcXHRpZiAoZGVzYy1cXHUwMDNlb3B0aW9ucyBcXHUwMDI2IFhEUF9UWF9NRVRBREFUQSkge1xcbm5ldC94ZHAveHNrLmM6OTU1OlxcdFxcdFxcdFxcdGVyciA9IHhza19za2JfbWV0YWRhdGEoc2tiLCBidWZmZXIsIGRlc2MsXFxubmV0L3hkcC94c2suYy05NTYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHhzLVxcdTAwM2Vwb29sLCBocik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjM0LjE3MjY2OTU3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTcyODc3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIENhbGxlcnMqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHBpbnBvaW50aW5nIHRoZSBjYWxsZXJzIG9mIHRoZSBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1dGlsaXplZCB3aXRoaW4gdGhlIFhEUC9BRl9YRFAgZWNvc3lzdGVtIGlzIGNydWNpYWwgZm9yIGEgbnVtYmVyIG9mIHJlYXNvbnMuIEknbSB0aGlua2luZywgdGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgdGhlIGVmZmljaWVudCByZXRyaWV2YWwgb2YgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIFhTSyBidWZmZXJzLiBJIHdhbnQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdy5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwYXJ0cyBvZiB0aGUgc3lzdGVtIGFyZSAqcmVseWluZyogb24gdGhpcyBmdW5jdGlvbiwgd2hpY2ggcHJvdmlkZXMgY3JpdGljYWwgY2x1ZXMgYWJvdXQgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgcG9zc2libGUgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBjZW50cmFsIHBvaW50IHdoZXJlIG11bHRpcGxlIHBhdGhzIGNvbnZlcmdlLCBvciBpcyBpdCBtb3JlIHNwcmVhZCBvdXQ/IFdoYXQgc3BlY2lmaWMgY29udGV4dHMgYXJlIGNhbGxpbmcgaXQ/IEFyZSB3ZSBpbiBhbiBpbnRlcnJ1cHQgaGFuZGxlcj8gVGhlIGRyaXZlcj8gVXNlciBzcGFjZT9cblxuSSdsbCBiZSBsb29raW5nIGZvciBwYXR0ZXJucy4gRG9lcyBpdCBvbmx5IGdldCBjYWxsZWQgZnJvbSBjZXJ0YWluIHBhdGhzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgY2FuZGlkYXRlcyB0aGF0IGFyZSBjYWxsaW5nIGl0IGluZWZmaWNpZW50bHk/IEknbSBob3BpbmcgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgcm9sZSBhbmQgaWYgdGhlcmUgYXJlIGFueSBhcmVhcyBvZiBvcHBvcnR1bml0eSBmb3IgaW1wcm92ZWQgZWZmaWNpZW5jeSBvciBzZWN1cml0eS4gSXMgdGhpcyBhIHBvdGVudGlhbCBob3RzcG90PyBJcyB0aGlzIHRoZSBwbGFjZSB3ZSBzaG91bGQgYmUgcHJvZmlsaW5nLCBvciBsb29raW5nIGF0IHRvIGltcHJvdmUgdGhlIG92ZXJhbGwgcGVyZm9ybWFuY2U/IFRoaXMgaW5mb3JtYXRpb24sIGluIHR1cm4sIHdpbGwgcHJvdmlkZSBpbnNpZ2h0IGludG8gbWVtb3J5IGFjY2VzcyBwYXR0ZXJucyBhbmQgb3ZlcmFsbCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIFhEUCBzdGFjay4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NTksIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0NDozOC4zNjk5NTk0MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3MjA4MDc3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3hza19idWZmX2dldF9tZXRhZGF0YVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yODE9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyODI6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjgzLXtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oPTI5Nz14c2tfYnVmZl9nZXRfbWV0YWRhdGEoc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI5OC17XFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6Mjk5OlxcdHJldHVybiBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCB4cF9yYXdfZ2V0X2RhdGEocG9vbCwgYWRkcikpO1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTMwMC19XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD00OTE9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo0OTI6X194c2tfYnVmZl9nZXRfbWV0YWRhdGEoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHZvaWQgKmRhdGEpXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtNDkzLXtcXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jPTc2OT1zdHJ1Y3QgeGRwX2Rlc2NfY3R4IHhwX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTc3NS1cXHRyZXQuZG1hID0gX194cF9yYXdfZ2V0X2RtYShwb29sLCBhZGRyKTtcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzo3NzY6XFx0cmV0Lm1ldGEgPSBfX3hza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBfX3hwX3Jhd19nZXRfZGF0YShwb29sLCBhZGRyKSk7XFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzc3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0NDo0MC4yNDIwNDQ1MTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI0NTgyMzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlhEUCBCdWZmZXIgTWV0YWRhdGEgRmxvdyoqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRoZSBkYXRhIGZsb3cgZm9yIFhEUCBidWZmZXIgbWV0YWRhdGEsIGFuZCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdCBzbyBmYXIuIEl0IGxvb2tzIGxpa2UgYm90aCBgeHNrX2J1aWxkX3NrYl96ZXJvY29weWAgYW5kIGB4c2tfYnVpbGRfc2tiYCB1bHRpbWF0ZWx5IGZ1bm5lbCBpbnRvIGB4c2tfc2tiX21ldGFkYXRhYC4gVGhhdCdzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBzdHVmZiBsaWtlbHkgaGFwcGVucy4gRGlnZ2luZyBkZWVwZXIsIEkgc2VlIHRoYXQgYHhwX3Jhd19nZXRfY3R4YCBjYWxscyBgX194c2tfYnVmZl9nZXRfbWV0YWRhdGFgLCBhbmQgdGhlbiwgaXQgc2VlbXMgdGhhdCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCAqYWxzbyogY2FsbHMgYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYC4gV2hpY2ggbWVhbnMgdGhlcmUgaXMgc29tZSBwb3RlbnRpYWwgcmVkdW5kYW5jeSBoZXJlLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhlIGBfX2AgdmVyc2lvbiBpcyBjYWxsZWQgaW4gbXVsdGlwbGUgcGxhY2VzLiBJdCBpcyBwcm9iYWJseSB0aGUgY29yZSBvZiB0aGUgbWV0YWRhdGEgcmV0cmlldmFsLlxuXG5Ob3csIEkgcmVhbGx5IG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgc2l0ZXMgb2YgdGhvc2UgaW5pdGlhbCBmdW5jdGlvbnMsIGB4c2tfYnVpbGRfc2tiYCBhbmQgYHhza19idWlsZF9za2JfemVyb2NvcHlgLiBLbm93aW5nICp3aG8qIGlzIGNhbGxpbmcgdGhlbSB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGlzIG1ldGFkYXRhIGlzIGJlaW5nIHVzZWQuIEl0J3MgdGltZSB0byBmb2xsb3cgdGhlIHRyYWNlcyBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDg1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjQ0LjA2NjYyOTI0NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE0NDIwOTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19idWlsZF9za2JcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz04MDE9c3RhdGljIGludCB4c2tfc2tiX21ldGFkYXRhKHN0cnVjdCBza19idWZmICpza2IsIHZvaWQgKmJ1ZmZlcixcXG4tLVxcbm5ldC94ZHAveHNrLmMtODQyLVxcbm5ldC94ZHAveHNrLmM6ODQzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYl96ZXJvY29weShzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxcbm5ldC94ZHAveHNrLmMtODQ0LVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB4ZHBfZGVzYyAqZGVzYylcXG4tLVxcbm5ldC94ZHAveHNrLmMtOTE4LVxcbm5ldC94ZHAveHNrLmM6OTE5OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYihzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxcbm5ldC94ZHAveHNrLmMtOTIwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjKVxcbi0tXFxubmV0L3hkcC94c2suYy05MjYtXFx0aWYgKGRldi1cXHUwMDNlcHJpdl9mbGFncyBcXHUwMDI2IElGRl9UWF9TS0JfTk9fTElORUFSKSB7XFxubmV0L3hkcC94c2suYzo5Mjc6XFx0XFx0c2tiID0geHNrX2J1aWxkX3NrYl96ZXJvY29weSh4cywgZGVzYyk7XFxubmV0L3hkcC94c2suYy05MjgtXFx0XFx0aWYgKElTX0VSUihza2IpKSB7XFxuLS1cXG5uZXQveGRwL3hzay5jPTEwMjU9c3RhdGljIGludCBfX3hza19nZW5lcmljX3htaXQoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L3hkcC94c2suYy0xMDYyLVxcbm5ldC94ZHAveHNrLmM6MTA2MzpcXHRcXHRza2IgPSB4c2tfYnVpbGRfc2tiKHhzLCBcXHUwMDI2ZGVzYyk7XFxubmV0L3hkcC94c2suYy0xMDY0LVxcdFxcdGlmIChJU19FUlIoc2tiKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0NDo0NS42ODEwNTQyOTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODgyNzk1NTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgWERQIFNvY2tldCBUcmFuc21pc3Npb24gUGF0aCoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiBgX194c2tfZ2VuZXJpY194bWl0YCwgdGhlIGNvcmUgZW50cnkgcG9pbnQgZm9yIGdlbmVyaWMgWERQIHNvY2tldCB0cmFuc21pc3Npb24uIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIGhvdyB3ZSBnZXQgZGF0YSBvdXQgb2YgdGhlc2Ugc29ja2V0cy4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCBhbmQgdG8gZG8gdGhhdCwgSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhlIGNhbGxlcnMgb2YgYHhza19idWZmX2dldF9tZXRhZGF0YWAuIEtub3dpbmcgd2hvIGlzIHJlcXVlc3RpbmcgYnVmZmVyIG1ldGFkYXRhIGZyb20gYHhza19idWZmX2dldF9tZXRhZGF0YWAgaXMgY3JpdGljYWwsIGJlY2F1c2UgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCB3aWxsIGJlIHdvcmtpbmcgd2l0aCBkYXRhIGZyb20gb3VyIHNvY2tldHMuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhlIG1ldGFkYXRhIGlzIGJlaW5nIHJlcXVlc3RlZCBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBMZXQncyBzZWUgd2hvJ3MgdXRpbGl6aW5nIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMwMCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjQ4LjU2Mzg1MTg3OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyODQwOTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfYnVmZl9nZXRfbWV0YWRhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9MzAzNz1zdGF0aWMgdm9pZCBpZ2NfeGRwX3htaXRfemMoc3RydWN0IGlnY19yaW5nICpyaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA3Ni1cXHRcXHRkbWEgPSB4c2tfYnVmZl9yYXdfZ2V0X2RtYShwb29sLCB4ZHBfZGVzYy5hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzozMDc3OlxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtMzA3OC1cXHRcXHR4c2tfYnVmZl9yYXdfZG1hX3N5bmNfZm9yX2RldmljZShwb29sLCBkbWEsIHhkcF9kZXNjLmxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3R4LmM9NjY9Ym9vbCBtbHg1ZV94c2tfdHgoc3RydWN0IG1seDVlX3hkcHNxICpzcSwgdW5zaWduZWQgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMDEtXFx0XFx0eGRwdHhkLmxlbiA9IGRlc2MubGVuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYzoxMDI6XFx0XFx0bWV0YSA9IHhza19idWZmX2dldF9tZXRhZGF0YShwb29sLCBkZXNjLmFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2svdHguYy0xMDMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTI2OTQ9c3RhdGljIGJvb2wgc3RtbWFjX3hkcF94bWl0X3pjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlLCB1MzIgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzM4LVxcdFxcdGRtYV9hZGRyID0geHNrX2J1ZmZfcmF3X2dldF9kbWEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoyNzM5OlxcdFxcdG1ldGEgPSB4c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeGRwX2Rlc2MuYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0yNzQwLVxcdFxcdHhza19idWZmX3Jhd19kbWFfc3luY19mb3JfZGV2aWNlKHBvb2wsIGRtYV9hZGRyLCB4ZHBfZGVzYy5sZW4pO1xcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjgxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6MjgyOl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI4My17XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD0yOTY9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyOTc6eHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yOTgte1xcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI5OTpcXHRyZXR1cm4gX194c2tfYnVmZl9nZXRfbWV0YWRhdGEocG9vbCwgeHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0zMDAtfVxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9NDkxPXN0YXRpYyBpbmxpbmUgc3RydWN0IHhza190eF9tZXRhZGF0YSAqXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg6NDkyOl9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB2b2lkICpkYXRhKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTQ5My17XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaD00OTc9c3RhdGljIGlubGluZSBzdHJ1Y3QgeHNrX3R4X21ldGFkYXRhICpcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDo0OTg6eHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC00OTkte1xcbi0tXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmM9NzY5PXN0cnVjdCB4ZHBfZGVzY19jdHggeHBfcmF3X2dldF9jdHgoY29uc3Qgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHU2NCBhZGRyKVxcbi0tXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtNzc1LVxcdHJldC5kbWEgPSBfX3hwX3Jhd19nZXRfZG1hKHBvb2wsIGFkZHIpO1xcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjc3NjpcXHRyZXQubWV0YSA9IF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhKHBvb2wsIF9feHBfcmF3X2dldF9kYXRhKHBvb2wsIGFkZHIpKTtcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy03NzctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjUwLjE5MjI2OTEyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTIyNDc1NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlhEUCBUcmFuc21pc3Npb24gUGF0aCBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCBgeHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBpcyBhIGtleSBmdW5jdGlvbiB1c2VkIGFjcm9zcyBzZXZlcmFsIGltcG9ydGFudCBuZXR3b3JrIGRyaXZlcnMgbGlrZSBpZ2MsIG1seDUsIGFuZCBzdG1tYWMuIEFuZCB0aGVuLCBgX194c2tfZ2VuZXJpY194bWl0YCBhcHBlYXJzIHRvIGxldmVyYWdlIGB4c2tfc2tiX21ldGFkYXRhYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgZ2VuZXJpYyBYRFAgdHJhbnNtaXNzaW9uIHBhdGggaXMgcmVhY2hhYmxlIHRocm91Z2ggYF9feHNrX2dlbmVyaWNfeG1pdGAuXG5cblRoaXMgZGVmaW5pdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFRoZSBmbG93IHNlZW1zIHdlbGwtZGVmaW5lZCwgc3VnZ2VzdGluZyB0aGlzIGlzIGEgcG90ZW50aWFsIGFyZWEgdG8gc2NydXRpbml6ZSB3aXRoIGZ1enppbmcuIE15IGd1dCBzYXlzIHRoZXJlIGNvdWxkIGJlIHNvbWUgaW50ZXJlc3RpbmcsIHBvc3NpYmx5IGV4cGxvaXRhYmxlLCBzY2VuYXJpb3MgaGVyZS5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGZvciB0aGlzIFhEUCB0cmFuc21pc3Npb24gcGF0aC4gSSdtIHJlY2FsbGluZyBYRFAgc29ja2V0cyBhcmUgZW5hYmxlZCBieSBgQ09ORklHX1hEUF9TT0NLRVRTYC4gSSdsbCB3YW50IHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfWERQX1NPQ0tFVFNgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIGl0ZW0uIEdvdHRhIG1ha2Ugc3VyZSBJJ20gdGVzdGluZyB0aGUgcmlnaHQgdGhpbmdzLCBhbmQgdGhpcyBmZWVscyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjczOCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0NDo1NC4xMTQ3NDczNDhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTMyNTA1MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhEUF9TT0NLRVRTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC94ZHAvS2NvbmZpZzoyOmNvbmZpZyBYRFBfU09DS0VUU1xcbm5ldC94ZHAvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIlhEUCBzb2NrZXRzXFxcIlxcbi0tXFxubmV0L3hkcC9LY29uZmlnLTktXFxubmV0L3hkcC9LY29uZmlnOjEwOmNvbmZpZyBYRFBfU09DS0VUU19ESUFHXFxubmV0L3hkcC9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ0OjU1Ljc2ODAwMjYyN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjYyNjkwNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlhEUCBTb2NrZXRzIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIFhEUCBzb2NrZXQgc3R1ZmYuIFJpZ2h0LCBmaXJzdCB0aGluZyB0byBjb25maXJtIGlzIHRoYXQgYFhEUF9TT0NLRVRTYCBpcyBpbmRlZWQgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBJIG5lZWQgdG8gbG9vayBhdC4gTm93LCB3aGVyZSBkbyBJIHN0YXJ0IG15IGRlZXBlciBpbnZlc3RpZ2F0aW9uPyBJIG5lZWQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIGhlcmUsIGFuZCBhIGdvb2Qgc2V0IG9mIGZvY3VzIHN5bWJvbHMgd2lsbCBoZWxwIG1lLiBMZXQncyBzZWUuLi5cblxuSSBzaG91bGQgY29uY2VudHJhdGUgb24gYSBmZXcga2V5IHRoaW5nczogYHhza19za2JfbWV0YWRhdGFgLCBgeHNrX2J1aWxkX3NrYmAsIGB4c2tfYnVpbGRfc2tiX3plcm9jb3B5YCwgYW5kIGBfX3hza19nZW5lcmljX3htaXRgLiBMZXQncyB0ZXN0IGB4c2tfc2tiX21ldGFkYXRhYCBhcyBhIHN0YXJ0aW5nIHBvaW50LCByaWdodD8gWXVwLCBJIHNlZSBpdCdzIGEgYHN0YXRpY2AgZnVuY3Rpb24sIGFuZCBpdCdzIGxvY2F0ZWQgaW4gYG5ldC94ZHAveHNrLmNgLiBUaGUgc2FtZSBnb2VzIGZvciBgeHNrX2J1aWxkX3NrYmAsIHRoYXQgb25lJ3MgYWxzbyBzdGF0aWMsIGFsc28gaW4gYG5ldC94ZHAveHNrLmNgLiBBbmQgYF9feHNrX2dlbmVyaWNfeG1pdGA/IEl0J3MgdGhlIHNhbWUgZGVhbCAtIGBzdGF0aWNgIGluIGBuZXQveGRwL3hzay5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgYWxsIGNvbm5lY3RlZC4gTm93LCBgeHNrX3NlbmRtc2dgLi4uICp0aGF0KiBsb29rcyBsaWtlIHRoZSBzeXNjYWxsIGVudHJ5IHBvaW50LCBkb2Vzbid0IGl0PyBPa2F5LCBJIHRoaW5rIEkgaGF2ZSBhIGdvb2QgZnJhbWV3b3JrIGhlcmUuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBjb2RlIGFuZCBzZWUgaG93IHRoZXNlIHBpZWNlcyBmaXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMzcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDU6MDAuMDMwNjk1NjM3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjIzMjg1NDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19zZW5kbXNnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAveHNrLmM9MTEzOD1zdGF0aWMgaW50IHhza19jaGVja19jb21tb24oc3RydWN0IHhkcF9zb2NrICp4cylcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTE0Ny1cXG5uZXQveGRwL3hzay5jOjExNDg6c3RhdGljIGludCBfX3hza19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIHNpemVfdCB0b3RhbF9sZW4pXFxubmV0L3hkcC94c2suYy0xMTQ5LXtcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTE3OC1cXG5uZXQveGRwL3hzay5jOjExNzk6c3RhdGljIGludCB4c2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBzaXplX3QgdG90YWxfbGVuKVxcbm5ldC94ZHAveHNrLmMtMTE4MC17XFxuLS1cXG5uZXQveGRwL3hzay5jLTExODMtXFx0cmN1X3JlYWRfbG9jaygpO1xcbm5ldC94ZHAveHNrLmM6MTE4NDpcXHRyZXQgPSBfX3hza19zZW5kbXNnKHNvY2ssIG0sIHRvdGFsX2xlbik7XFxubmV0L3hkcC94c2suYy0xMTg1LVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxubmV0L3hkcC94c2suYz0xOTM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHhza19wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQveGRwL3hzay5jLTE5NTMtXFx0LmdldHNvY2tvcHRfaXRlciA9IHhza19nZXRzb2Nrb3B0LFxcbm5ldC94ZHAveHNrLmM6MTk1NDpcXHQuc2VuZG1zZ1xcdD0geHNrX3NlbmRtc2csXFxubmV0L3hkcC94c2suYy0xOTU1LVxcdC5yZWN2bXNnXFx0PSB4c2tfcmVjdm1zZyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDU6MDEuNjUzOTg3MDY3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjE0MjU0NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gWERQIFNvY2tldCBUWCBQYXRoKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiB0aGUgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aC4gSXQgc2VlbXMgbGlrZSBgeHNrX3NlbmRtc2dgIGFuZCBgX194c2tfc2VuZG1zZ2AgYXJlIGdvb2QgZW50cnkgcG9pbnRzIHRvIHN0YXJ0IHdpdGguIFRob3NlIGFyZSBkZWZpbml0ZWx5IGtleSBzeW1ib2xzLiBBbmQgYmFzZWQgb24gdGhlIG1vZGlmaWNhdGlvbnMsIGB4c2tfc2tiX21ldGFkYXRhYCBsb29rcyB0byBiZSB0aGUgZnVuY3Rpb24gdGhhdCB3YXMgbW9zdCBkaXJlY3RseSBpbnZvbHZlZCDigJMgb3IgYXQgbGVhc3QgaW5kaXJlY3RseSBpbnZvbHZlZCB2aWEgYHhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhYC4gSSBzaG91bGQgZGVmaW5pdGVseSBhZGQgdGhhdCB0byB0aGUgbGlzdC4gSSdsbCBpbmNsdWRlIGBfX3hza19zZW5kbXNnYCwgYHhza19zZW5kbXNnYCwgYF9feHNrX2dlbmVyaWNfeG1pdGAsIGB4c2tfYnVpbGRfc2tiYCwgYW5kIGB4c2tfYnVpbGRfc2tiX3plcm9jb3B5YCwgdG9vLlxuXG5XYWl0IGEgc2Vjb25k4oCmIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWAgaXMgYWN0dWFsbHkgYW4gaW5saW5lIGZ1bmN0aW9uIGRlZmluZWQgcmlnaHQgdGhlcmUgaW4gYGluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oYC4gVGhhdCBjaGFuZ2VzIHRoaW5ncyBhIGJpdC4gSXQgaXMgY2FsbGVkIGJ5IGJvdGggYF9feHNrX2J1ZmZfZ2V0X21ldGFkYXRhYCBhbmQgYHhza19za2JfbWV0YWRhdGFgLiBTbywgeWVhaCwgdGhhdCBzb2xpZGlmaWVzIGB4c2tfc2tiX21ldGFkYXRhYCBhcyBhIHByaW1hcnkgZm9jdXMgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhpcyBjaGFuZ2UuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGluIHRvbyBkZWVwLCBsZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQuIElzIGBYRFBfU09DS0VUU2Agc3VmZmljaWVudCwgb3IgaXMgdGhlcmUgc29tZXRoaW5nIGVsc2UgYXQgcGxheT8gVGltZSB0byBjaGVjayB0aGUgYG5ldC94ZHAvTWFrZWZpbGVgIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGNyaXRpY2FsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTQzLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ1OjA2LjMxNTQxNDU0NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2NTU2MTk5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX0ZTTF9EUEFBMl9TV0lUQ0gpXFx0XFx0Kz0gZnNsLWRwYWEyLXN3aXRjaC5vIGZzbC1kcGFhMi1tYWMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9NYWtlZmlsZS05LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9NYWtlZmlsZToxMDpmc2wtZHBhYTItZXRoLW9ianNcXHQ6PSBkcGFhMi1ldGgubyBkcGFhMi1ldGh0b29sLm8gZHBuaS5vIGRwYWEyLWV0aC1kZXZsaW5rLm8gZHBhYTIteHNrLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvTWFrZWZpbGUtMTEtZnNsLWRwYWEyLWV0aC0ke0NPTkZJR19GU0xfRFBBQTJfRVRIX0RDQn0gKz0gZHBhYTItZXRoLWRjYi5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL01ha2VmaWxlPTEzPWk0MGUteSA6PSBpNDBlX21haW4ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL01ha2VmaWxlLTI2LVxcdGk0MGVfdmlydGNobmxfcGYubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9NYWtlZmlsZToyNzpcXHRpNDBlX3hzay5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvTWFrZWZpbGUtMjgtXFx0aTQwZV9kZXZsaW5rLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9NYWtlZmlsZT01OT1pY2UtJChDT05GSUdfUkZTX0FDQ0VMKSArPSBpY2VfYXJmcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL01ha2VmaWxlOjYwOmljZS0kKENPTkZJR19YRFBfU09DS0VUUykgKz0gaWNlX3hzay5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL01ha2VmaWxlLTYxLWljZS0kKENPTkZJR19JQ0VfU1dJVENIREVWKSArPSBpY2VfZXN3aXRjaC5vIGljZV9lc3dpdGNoX2JyLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU9MjU9aWRwZi15XFx0XFx0XFx0XFx0Kz0geGRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjI2OmlkcGYteVxcdFxcdFxcdFxcdCs9IHhzay5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvTWFrZWZpbGU9OT1pZ2IteSA6PSBpZ2JfbWFpbi5vIGlnYl9ldGh0b29sLm8gZTEwMDBfODI1NzUubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL01ha2VmaWxlLTEwLVxcdCBlMTAwMF9tYWMubyBlMTAwMF9udm0ubyBlMTAwMF9waHkubyBlMTAwMF9tYngubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL01ha2VmaWxlOjExOlxcdCBlMTAwMF9pMjEwLm8gaWdiX3B0cC5vIGlnYl9od21vbi5vIGlnYl94c2sub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvTWFrZWZpbGU9MTA9aXhnYmUteSA6PSBpeGdiZV9tYWluLm8gaXhnYmVfY29tbW9uLm8gaXhnYmVfZXRodG9vbC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL01ha2VmaWxlLTEyLSAgICAgICAgICAgaXhnYmVfbWJ4Lm8gaXhnYmVfeDU0MC5vIGl4Z2JlX3g1NTAubyBpeGdiZV9saWIubyBpeGdiZV9wdHAubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvTWFrZWZpbGU6MTM6ICAgICAgICAgICBpeGdiZV94c2subyBpeGdiZV9lNjEwLm8gZGV2bGluay9kZXZsaW5rLm8gaXhnYmVfZndfdXBkYXRlLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL01ha2VmaWxlLTE0LVxcdCAgIGRldmxpbmsvcmVnaW9uLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9NYWtlZmlsZT0xMT1saWJldGhfeGRwLXlcXHRcXHRcXHQrPSB4ZHAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9NYWtlZmlsZToxMjpsaWJldGhfeGRwLXlcXHRcXHRcXHQrPSB4c2sub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlPTEwPXJ2dV9uaWNwZi15IDo9IG90eDJfcGYubyBvdHgyX2NvbW1vbi5vIG90eDJfdHhyeC5vIG90eDJfZXRodG9vbC5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtMTEtICAgICAgICAgICAgICAgb3R4Ml9mbG93cy5vIG90eDJfdGMubyBjbjEway5vIGNuMjBrLm8gb3R4Ml9kbWFjX2ZsdC5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU6MTI6ICAgICAgICAgICAgICAgb3R4Ml9kZXZsaW5rLm8gcW9zX3NxLm8gcW9zLm8gb3R4Ml94c2sub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS0xMy1ydnVfbmljdmYteSA6PSBvdHgyX3ZmLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGU9ND1uZnAtb2JqcyA6PSBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlLTI0LVxcdCAgICBuZmQzL3JpbmdzLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGU6MjU6XFx0ICAgIG5mZDMveHNrLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGUtMjYtXFx0ICAgIG5mZGsvZHAubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL01ha2VmaWxlLTQwLVxcdCAgICBuZnBfbmV0X3NyaW92Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGU6NDE6XFx0ICAgIG5mcF9uZXRfeHNrLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvTWFrZWZpbGUtNDItXFx0ICAgIG5mcF9uZXR2Zl9tYWluLm8gXFxcXFxcbi0tXFxubmV0L3hkcC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC94ZHAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfWERQX1NPQ0tFVFMpICs9IHhzay5vIHhkcF91bWVtLm8geHNrX3F1ZXVlLm8geHNrbWFwLm9cXG5uZXQveGRwL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX1hEUF9TT0NLRVRTKSArPSB4c2tfYnVmZl9wb29sLm9cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZT0zNDY9JChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6ICQoVEVTVElOR19IRUxQRVJTKSAkKENBUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZTozNDc6JChPVVRQVVQpL3hzay5vOiAkKEJQRk9CSilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUtMzQ4LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlPTkzOD1FWFRSQV9TUkMgOj0gJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmMgcHJvZ190ZXN0cy90ZXN0X3hzay5jIHByb2dfdGVzdHMvdGVzdF94c2suaFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZTo5Mzk6JChPVVRQVVQpL3hza3hjZWl2ZXI6ICQoRVhUUkFfU1JDKSB4c2t4Y2VpdmVyLmMgeHNreGNlaXZlci5oICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hza194ZHBfcHJvZ3Muc2tlbC5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS05NDAtXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLTk0Mi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGU6OTQzOiQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmggfCAkKE9VVFBVVClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUtOTQ0LVxcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDU6MDguMjgwOTgxMjU1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODYwNDA1ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSwgbXkgaW5pdGlhbCBmb2N1cyBpcyBvbiBgQ09ORklHX1hEUF9TT0NLRVRTYC4gVGhhdCdzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaXRlbSBJIG5lZWQgdG8gaW52ZXN0aWdhdGUuXG5cbk5vdywgbGV0IG1lIGJyb2FkZW4gbXkgc2NvcGUgYSBiaXQuIEFyZSB0aGVyZSBhbnkgKm90aGVyKiByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGhpbmsuLi4gdGhpcyBwYXRjaCByZWZlcmVuY2VzIHNwZWNpZmljIFhEUCBtZXRhZGF0YSBmbGFnczogYFhEUF9UWE1EX0ZMQUdTX1ZBTElEYCwgYFhEUF9UWE1EX0ZMQUdTX0NIRUNLU1VNYCwgYFhEUF9UWE1EX0ZMQUdTX1RJTUVTVEFNUGAsIGFuZCBgWERQX1RYTURfRkxBR1NfTEFVTkNIX1RJTUVgLiBBbGwgb2YgdGhlc2UgcmVsYXRlIHRvIHRoZSBYRFAgdHJhbnNtaXNzaW9uIG1ldGFkYXRhLCBzcGVjaWZpY2FsbHkuIEdpdmVuIHRoZXNlIGZsYWdzLCBpdCBtYWtlcyBzZW5zZSB0byBjb25maXJtIGlmIHRoZXJlIGlzIGEgc2VwYXJhdGUgY29uZmlndXJhdGlvbiBvcHRpb24gZGlyZWN0bHkgdGllZCB0byB0aGUgWERQIG1ldGFkYXRhIGl0c2VsZi4gSSBuZWVkIHRvIGtub3cgaWYgaXQncyBjb25maWd1cmFibGUgb3IgcGVyaGFwcyBpbXBsaWNpdGx5IGVuYWJsZWQgYmFzZWQgb24gdGhlIHVzZSBvZiBvdGhlciBYRFAgZmVhdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTk1LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDQ6NDU6MTEuOTY3MDI0MTEyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI5MjM5MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlhEUF9UWE1EX0ZMQUdTX1ZBTElEXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2xpYmV0aC94c2suaC05LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94c2suaDoxMDovKiBgYFhEUF9UWE1EX0ZMQUdTX1ZBTElEYGAgaXMgZGVmaW5lZCBvbmx5IHVuZGVyIGBgQ09ORklHX1hEUF9TT0NLRVRTYGAgKi9cXG5pbmNsdWRlL25ldC9saWJldGgveHNrLmg6MTE6I2lmZGVmIFhEUF9UWE1EX0ZMQUdTX1ZBTElEXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oOjEyOnN0YXRpY19hc3NlcnQoWERQX1RYTURfRkxBR1NfVkFMSUQgXFx1MDAzYz0gTElCRVRIX1hEUF9UWF9YU0tNRCk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hzay5oLTEzLSNlbmRpZlxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjUxPXhza19idWZmX3Jhd19nZXRfY3R4KGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1NjQgYWRkcilcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI1NS1cXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaDoyNTY6I2RlZmluZSBYRFBfVFhNRF9GTEFHU19WQUxJRCAoIFxcXFxcXG5pbmNsdWRlL25ldC94ZHBfc29ja19kcnYuaC0yNTctXFx0XFx0WERQX1RYTURfRkxBR1NfVElNRVNUQU1QIHwgXFxcXFxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2Lmg9MjYzPXhza19idWZmX3ZhbGlkX3R4X21ldGFkYXRhKGNvbnN0IHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxcbi0tXFxuaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmgtMjY5LVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oOjI3MDpcXHRpZiAodW5saWtlbHkobWV0YS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiB+WERQX1RYTURfRkxBR1NfVkFMSUQpKVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrX2Rydi5oLTI3MS1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA0OjQ1OjEzLjU5NjI3MDc0MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTc4MDgxODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBBRl9YRFAgU29ja2V0IFRYIE1ldGFkYXRhIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIGJhc2VkIG9uIHdoZXJlIHRoZSByZWxldmFudCBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMgYXJlIGRlZmluZWQsIG5hbWVseSBgaW5jbHVkZS9uZXQveGRwX3NvY2tfZHJ2LmhgLCBJIGNhbiBzZWUgdGhhdCBgQ09ORklHX1hEUF9TT0NLRVRTYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIG5lZWRlZCB0byBlbmFibGUgdGhlIGNvZGUgYmVpbmcgbW9kaWZpZWQuIFRoaXMgc2ltcGxpZmllcyB0aGluZ3M7IGl0IGdpdmVzIHVzIGEgY2xlYXIgZGVwZW5kZW5jeS5cblxuTm93LCBsZXQncyBicmVhayBkb3duIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LiBXZSdyZSBjb25jZXJuZWQgd2l0aCB2YWxpZGF0aW5nIFRYIG1ldGFkYXRhIHdpdGhpbiB0aGUgQUZfWERQIHNvY2tldCBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGFyb3VuZCBgeHNrX2J1ZmZfdmFsaWRfdHhfbWV0YWRhdGFgLiAgVGhlIHBhdGNoJ3MgbW9kaWZpY2F0aW9ucyBhcmUgYWRkaW5nIGxlbmd0aCBjaGVja3MgYWdhaW5zdCB0aGUgcG9vbCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGNyaXRpY2FsIG5ldHdvcmsgY29kZSwgYW5kIHdlICphYnNvbHV0ZWx5KiBuZWVkIHRvIGZ1enogdGhpcy4gSXQncyByZWFjaGVkIHRocm91Z2ggdGhlIHRyYW5zbWlzc2lvbiBwYXRocywgc28gZnVuY3Rpb25zIGxpa2UgYHhza19zZW5kbXNnYCBhbmQgYF9feHNrX2dlbmVyaWNfeG1pdGAgYXJlIGNsZWFybHkgaW4gc2NvcGUsIGFzIGFyZSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gYnVpbGRpbmcgdGhlIFNLQnM6IGB4c2tfc2tiX21ldGFkYXRhYCwgYHhza19idWlsZF9za2JgLCBhbmQgYHhza19idWlsZF9za2JfemVyb2NvcHlgLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXNlIG5ldyBsZW5ndGggY2hlY2tzIGRvbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgYWxsb3cgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuIFRoZXJlZm9yZSwgdGhlIGZ1enogdGFyZ2V0cyB3aWxsIGJlIHRoZSBvbmVzIGxpc3RlZCBpbiBcIkZvY3VzU3ltYm9sc1wiIGluIHRoZSB0ZXh0LiBJIGFtIGFsc28gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYCwgYW5kIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8ganVzdCBgWERQX1NPQ0tFVFNgLlxuXG5JbiBlc3NlbmNlLCB0aGlzIGlzIGEgbW9kaWZpY2F0aW9uIHRvIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgQUZfWERQIHNvY2tldCBmdW5jdGlvbmFsaXR5LiBUaGlzIG5lY2Vzc2l0YXRlcyB0aG9yb3VnaCBmdXp6aW5nLiBXZSdyZSBsb29raW5nIGZvciBtZW1vcnkgY29ycnVwdGlvbiBvciBvdGhlciBsb2dpYyBlcnJvcnMgaW50cm9kdWNlZCBieSB0aGUgYWRkaXRpb25hbCBjaGVja3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzAxLCJPdXRwdXRUb2tlbnMiOjE5NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNDo0NToyMC4xNzQzNTY1NjFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTgyOTIyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2tfc2tiX21ldGFkYXRhXCIsXG4gICAgXCJfX3hza19zZW5kbXNnXCIsXG4gICAgXCJ4c2tfc2VuZG1zZ1wiLFxuICAgIFwiX194c2tfZ2VuZXJpY194bWl0XCIsXG4gICAgXCJ4c2tfYnVpbGRfc2tiXCIsXG4gICAgXCJ4c2tfYnVpbGRfc2tiX3plcm9jb3B5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gb2YgVFggbWV0YWRhdGEgaW4gQUZfWERQIHNvY2tldHMgKGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWApLCBhZGRpbmcgY2hlY2tzIGZvciB0aGUgbWV0YWRhdGEgbGVuZ3RoIGFnYWluc3QgdGhlIHBvb2wgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgKGUuZy4sIGB4c2tfc2VuZG1zZ2AsIGBfX3hza19nZW5lcmljX3htaXRgKSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgbGVuZ3RoIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2tfc2tiX21ldGFkYXRhXCIsXG4gICAgXCJfX3hza19zZW5kbXNnXCIsXG4gICAgXCJ4c2tfc2VuZG1zZ1wiLFxuICAgIFwiX194c2tfZ2VuZXJpY194bWl0XCIsXG4gICAgXCJ4c2tfYnVpbGRfc2tiXCIsXG4gICAgXCJ4c2tfYnVpbGRfc2tiX3plcm9jb3B5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHZhbGlkYXRpb24gb2YgVFggbWV0YWRhdGEgaW4gQUZfWERQIHNvY2tldHMgKGB4c2tfYnVmZl92YWxpZF90eF9tZXRhZGF0YWApLCBhZGRpbmcgY2hlY2tzIGZvciB0aGUgbWV0YWRhdGEgbGVuZ3RoIGFnYWluc3QgdGhlIHBvb2wgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgbmV0d29ya2luZyBjb2RlIHJlYWNoYWJsZSB2aWEgWERQIHNvY2tldCB0cmFuc21pc3Npb24gcGF0aHMgKGUuZy4sIGB4c2tfc2VuZG1zZ2AsIGBfX3hza19nZW5lcmljX3htaXRgKSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgbGVuZ3RoIGNoZWNrcyBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow8bwmh[1] Phase: Succeeded StartedAt: 2026-07-23 04:45:31 +0000 UTC FinishedAt: 2026-07-23 04:45:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-23 04:45:31 +0000 UTC FinishedAt: 2026-07-23 04:45:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2] Phase: Succeeded StartedAt: 2026-07-23 04:45:31 +0000 UTC FinishedAt: 2026-07-23 09:17:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-23 04:45:31 +0000 UTC FinishedAt: 2026-07-23 09:17:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-23 04:45:31 +0000 UTC FinishedAt: 2026-07-23 04:45:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-23 04:45:31 +0000 UTC FinishedAt: 2026-07-23 04:45:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8bwmh/series-workflow8bwmh-convert-artifact-2907920044/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-23 04:45:41 +0000 UTC FinishedAt: 2026-07-23 05:24:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-23 04:45:41 +0000 UTC FinishedAt: 2026-07-23 05:24:34 +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:*aa7d14fa-77ca-4e2e-8c3a-04a981a7b5c0,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-workflow8bwmh/series-workflow8bwmh-convert-artifact-2907920044/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": "c319558c-1c70-41d9-b50c-cd5979c5c5cd", "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-workflow8bwmh/series-workflow8bwmh-build-action-1997954266/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-23 04:45:41 +0000 UTC FinishedAt: 2026-07-23 05:24:24 +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:*aa7d14fa-77ca-4e2e-8c3a-04a981a7b5c0,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-workflow8bwmh/series-workflow8bwmh-convert-artifact-2907920044/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": "c319558c-1c70-41d9-b50c-cd5979c5c5cd", "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-workflow8bwmh/series-workflow8bwmh-build-action-1997954266/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-23 05:24:34 +0000 UTC FinishedAt: 2026-07-23 05:24:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-23 05:24:34 +0000 UTC FinishedAt: 2026-07-23 05:24:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-23 05:24:34 +0000 UTC FinishedAt: 2026-07-23 05:24:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-23 05:24:34 +0000 UTC FinishedAt: 2026-07-23 05:24:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow8bwmh/series-workflow8bwmh-convert-artifact-2996499563/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-23 05:24:45 +0000 UTC FinishedAt: 2026-07-23 05:27:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-23 05:24:45 +0000 UTC FinishedAt: 2026-07-23 05:26:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c319558c-1c70-41d9-b50c-cd5979c5c5cd,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-workflow8bwmh/series-workflow8bwmh-build-action-1997954266/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-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-23 05:27:01 +0000 UTC FinishedAt: 2026-07-23 05:27:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-23 05:27:01 +0000 UTC FinishedAt: 2026-07-23 05:27:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-23 05:27:01 +0000 UTC FinishedAt: 2026-07-23 06:11:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-23 05:27:01 +0000 UTC FinishedAt: 2026-07-23 06:11:29 +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:*aa7d14fa-77ca-4e2e-8c3a-04a981a7b5c0,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-workflow8bwmh/series-workflow8bwmh-convert-artifact-2996499563/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": "2dca5c67-84d5-445d-87f2-a5c95ed1c85d", "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-workflow8bwmh/series-workflow8bwmh-build-action-282079631/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-23 05:27:01 +0000 UTC FinishedAt: 2026-07-23 06:11:19 +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:*aa7d14fa-77ca-4e2e-8c3a-04a981a7b5c0,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-workflow8bwmh/series-workflow8bwmh-convert-artifact-2996499563/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": "2dca5c67-84d5-445d-87f2-a5c95ed1c85d", "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-workflow8bwmh/series-workflow8bwmh-build-action-282079631/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-23 06:11:29 +0000 UTC FinishedAt: 2026-07-23 06:11:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-23 06:11:29 +0000 UTC FinishedAt: 2026-07-23 06:11:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-23 06:11:29 +0000 UTC FinishedAt: 2026-07-23 06:13:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-23 06:11:29 +0000 UTC FinishedAt: 2026-07-23 06:13:24 +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:*2dca5c67-84d5-445d-87f2-a5c95ed1c85d,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-workflow8bwmh/series-workflow8bwmh-build-action-282079631/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-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-23 06:13:33 +0000 UTC FinishedAt: 2026-07-23 09:17:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-23 06:13:33 +0000 UTC FinishedAt: 2026-07-23 09:17:01 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"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:*c319558c-1c70-41d9-b50c-cd5979c5c5cd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2dca5c67-84d5-445d-87f2-a5c95ed1c85d,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-workflow8bwmh/series-workflow8bwmh-build-action-1997954266/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-workflow8bwmh/series-workflow8bwmh-build-action-282079631/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-23 06:13:33 +0000 UTC FinishedAt: 2026-07-23 06:13:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-23 06:13:33 +0000 UTC FinishedAt: 2026-07-23 06:13:40 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"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-workflow8bwmh/series-workflow8bwmh-convert-artifact-4061830532/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-23 06:13:33 +0000 UTC FinishedAt: 2026-07-23 06:13:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-23 06:13:33 +0000 UTC FinishedAt: 2026-07-23 06:13:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-23 06:13:33 +0000 UTC FinishedAt: 2026-07-23 06:13:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-23 06:13:43 +0000 UTC FinishedAt: 2026-07-23 09:17:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8bwmh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_skb_metadata","__xsk_sendmsg","xsk_sendmsg","__xsk_generic_xmit","xsk_build_skb","xsk_build_skb_zerocopy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"49ebe234-50ac-43ca-ac47-016745dfbc24","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-23 06:13:43 +0000 UTC FinishedAt: 2026-07-23 09:16:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c319558c-1c70-41d9-b50c-cd5979c5c5cd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2dca5c67-84d5-445d-87f2-a5c95ed1c85d,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-workflow8bwmh/series-workflow8bwmh-build-action-1997954266/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-workflow8bwmh/series-workflow8bwmh-build-action-282079631/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-workflow8bwmh/series-workflow8bwmh-convert-artifact-4061830532/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,}