Name: series-workflowwngfc Phase: Succeeded StartedAt: 2026-07-02 04:01:07 +0000 UTC FinishedAt: 2026-07-02 08:12:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[0] Phase: Succeeded StartedAt: 2026-07-02 04:01:07 +0000 UTC FinishedAt: 2026-07-02 04:09:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 04:01:07 +0000 UTC FinishedAt: 2026-07-02 04:09:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "0469d460a598d03fc85ebd97f99640e6c579e2a2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_FLOW_TABLE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "0469d460a598d03fc85ebd97f99640e6c579e2a2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_FLOW_TABLE" ], "series_id": "2e71f0df-3c62-47c2-b42c-7df6506337b4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "flow_offload_fill_route", "nf_flow_tunnel_ipip_push", "nf_flow_tunnel_ip6ip6_push", "nf_flow_offload_unsupported" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbG93X29mZmxvYWRfZmlsbF9yb3V0ZSYjMzQ7LAogICAgJiMzNDtuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gmIzM0OywKICAgICYjMzQ7bmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2gmIzM0OywKICAgICYjMzQ7bmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG5ldGZpbHRlciBmbG93IHRhYmxlIGxvZ2ljLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRzdF9jYWNoZSBhbmQgZHN0X2Nvb2tpZSBhcmUgc3RvcmVkIGFuZCBoYW5kbGVkIGZvciB0dW5uZWxzLiBJdCBhbHNvIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGhhcmR3YXJlIG9mZmxvYWQgZm9yIHVuc3VwcG9ydGVkIHR1bm5lbCBmbG93cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY2NTVkZDcyZGQ5YWE1ZWI4ZmExMjgyODE3YjU1OTA4N2I4YzMxZjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDA0OjA5OjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmggYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oXG5pbmRleCA3YjIzYjI0NWE1YTg2YS4uMzY5ZjZhNzE3ODExNGMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oXG5AQCAtMTU1LDExICYjNDM7MTU1LDExIEBAIHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUge1xuIFx0XHRcdFx0XHR0dW5fbnVtOjIsXG4gXHRcdFx0XHRcdGluX3ZsYW5faW5ncmVzczoyO1xuIFx0dTE2XHRcdFx0XHRtdHU7XG4mIzQzO1x0c3RydWN0IGRzdF9lbnRyeVx0XHQqZHN0X2NhY2hlO1xuJiM0MztcdHUzMlx0XHRcdFx0ZHN0X2Nvb2tpZTtcbiBcdHVuaW9uIHtcbiBcdFx0c3RydWN0IHtcbi1cdFx0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2FjaGU7XG4gXHRcdFx0dTMyXHRcdGlmaWR4O1xuLVx0XHRcdHUzMlx0XHRkc3RfY29va2llO1xuIFx0XHR9O1xuIFx0XHRzdHJ1Y3Qge1xuIFx0XHRcdHUzMlx0XHRpZmlkeDtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuY1xuaW5kZXggOTljNWI5ZDY3MWEwY2EuLjZmMTk1Y2NmMjIyYTkzIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuY1xuQEAgLTEyNywxMiAmIzQzOzEyNywyMSBAQCBzdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXG4gXG4gXHRzd2l0Y2ggKHJvdXRlLVx1MDAzZXR1cGxlW2Rpcl0ueG1pdF90eXBlKSB7XG4gXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDpcbiYjNDM7XHRcdGlmIChmbG93X3R1cGxlLVx1MDAzZXR1bl9udW0pIHtcbiYjNDM7XHRcdFx0Zmxvd190dXBsZS1cdTAwM2Vkc3RfY2FjaGUgPSBkc3Q7XG4mIzQzO1x0XHRcdGZsb3dfdHVwbGUtXHUwMDNlZHN0X2Nvb2tpZSA9XG4mIzQzO1x0XHRcdFx0Zmxvd19vZmZsb2FkX2RzdF9jb29raWUoZmxvd190dXBsZSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jYWNoZSA9IE5VTEw7XG4mIzQzO1x0XHRcdGZsb3dfdHVwbGUtXHUwMDNlZHN0X2Nvb2tpZSA9IDA7XG4mIzQzO1x0XHR9XG4gXHRcdG1lbWNweShmbG93X3R1cGxlLVx1MDAzZW91dC5oX2Rlc3QsIHJvdXRlLVx1MDAzZXR1cGxlW2Rpcl0ub3V0LmhfZGVzdCxcbiBcdFx0ICAgICAgIEVUSF9BTEVOKTtcbiBcdFx0bWVtY3B5KGZsb3dfdHVwbGUtXHUwMDNlb3V0Lmhfc291cmNlLCByb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLm91dC5oX3NvdXJjZSxcbiBcdFx0ICAgICAgIEVUSF9BTEVOKTtcbiBcdFx0Zmxvd190dXBsZS1cdTAwM2VvdXQuaWZpZHggPSByb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLm91dC5pZmluZGV4O1xuLVx0XHRkc3RfcmVsZWFzZShkc3QpO1xuJiM0MztcdFx0aWYgKCFmbG93X3R1cGxlLVx1MDAzZXR1bl9udW0pXG4mIzQzO1x0XHRcdGRzdF9yZWxlYXNlKGRzdCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9YRlJNOlxuIFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ORUlHSDpcbkBAIC0xNTIsOSAmIzQzOzE2MSw3IEBAIHN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcbiBzdGF0aWMgdm9pZCBuZnRfZmxvd19kc3RfcmVsZWFzZShzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LFxuIFx0XHRcdFx0IGVudW0gZmxvd19vZmZsb2FkX3R1cGxlX2RpciBkaXIpXG4ge1xuLVx0aWYgKGZsb3ctXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGUueG1pdF90eXBlID09IEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIIHx8XG4tXHQgICAgZmxvdy1cdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS54bWl0X3R5cGUgPT0gRkxPV19PRkZMT0FEX1hNSVRfWEZSTSlcbi1cdFx0ZHN0X3JlbGVhc2UoZmxvdy1cdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS5kc3RfY2FjaGUpO1xuJiM0MztcdGRzdF9yZWxlYXNlKGZsb3ctXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGUuZHN0X2NhY2hlKTtcbiB9XG4gXG4gdm9pZCBmbG93X29mZmxvYWRfcm91dGVfaW5pdChzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmNcbmluZGV4IDI5ZTkzYWMxZTJlNDAwLi4wYjc4ZGVjY2U4YTliZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuY1xuQEAgLTI5OSw4ICYjNDM7Mjk5LDcgQEAgc3RhdGljIGJvb2wgbmZfZmxvd19leGNlZWRzX210dShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbXR1KVxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBuZl9mbG93X2RzdF9jaGVjayhzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSlcbiB7XG4tXHRpZiAodHVwbGUtXHUwMDNleG1pdF90eXBlICE9IEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHR1cGxlLVx1MDAzZXhtaXRfdHlwZSAhPSBGTE9XX09GRkxPQURfWE1JVF9YRlJNKVxuJiM0MztcdGlmICghdHVwbGUtXHUwMDNlZHN0X2NhY2hlKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbiBcdHJldHVybiBkc3RfY2hlY2sodHVwbGUtXHUwMDNlZHN0X2NhY2hlLCB0dXBsZS1cdTAwM2Vkc3RfY29va2llKTtcbkBAIC01OTAsMTAgJiM0Mzs1ODksMTAgQEAgc3RhdGljIGludCBuZl9mbG93X3BwcG9lX3B1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IGlkLFxuIFxuIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfaXBpcF9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSxcbi1cdFx0XHRcdCAgICBfX2JlMzIgKmlwX2RhZGRyKVxuJiM0MztcdFx0XHRcdCAgICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIF9fYmUzMiAqaXBfZGFkZHIpXG4ge1xuIFx0c3RydWN0IGlwaGRyICppcGggPSAoc3RydWN0IGlwaGRyICopc2tiX25ldHdvcmtfaGVhZGVyKHNrYik7XG4tXHRzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUodHVwbGUtXHUwMDNlZHN0X2NhY2hlKTtcbiYjNDM7XHRzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUoZHN0KTtcbiBcdHU4IHRvcyA9IGlwaC1cdTAwM2V0b3MsIHR0bCA9IGlwaC1cdTAwM2V0dGw7XG4gXHRfX2JlMTYgZnJhZ19vZmYgPSBpcGgtXHUwMDNlZnJhZ19vZmY7XG4gXHR1MzIgaGVhZHJvb20gPSBzaXplb2YoKmlwaCk7XG5AQCAtNjM2LDIxICYjNDM7NjM1LDIyIEBAIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfaXBpcF9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX3Y0X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSxcbi1cdFx0XHRcdCAgX19iZTMyICppcF9kYWRkcilcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCBkc3RfZW50cnkgKmRzdCwgIF9fYmUzMiAqaXBfZGFkZHIpXG4ge1xuIFx0aWYgKHR1cGxlLVx1MDAzZXR1bl9udW0pXG4tXHRcdHJldHVybiBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gobmV0LCBza2IsIHR1cGxlLCBpcF9kYWRkcik7XG4mIzQzO1x0XHRyZXR1cm4gbmZfZmxvd190dW5uZWxfaXBpcF9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgZHN0LCBpcF9kYWRkcik7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBuZl9mbG93X3R1bm5lbF9pcDZpcDZfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICAgICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSxcbiYjNDM7XHRcdFx0XHQgICAgICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXG4gXHRcdFx0XHQgICAgICBzdHJ1Y3QgaW42X2FkZHIgKippcDZfZGFkZHIpXG4ge1xuIFx0c3RydWN0IGlwdjZoZHIgKmlwNmggPSAoc3RydWN0IGlwdjZoZHIgKilza2JfbmV0d29ya19oZWFkZXIoc2tiKTtcbi1cdHN0cnVjdCBydGFibGUgKnJ0ID0gZHN0X3J0YWJsZSh0dXBsZS1cdTAwM2Vkc3RfY2FjaGUpO1xuIFx0X191OCBkc2ZpZWxkID0gaXB2Nl9nZXRfZHNmaWVsZChpcDZoKTtcbiYjNDM7XHRzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUoZHN0KTtcbiBcdHN0cnVjdCBmbG93aTYgZmw2ID0ge1xuIFx0XHQuZGFkZHIgPSB0dXBsZS1cdTAwM2V0dW4uc3JjX3Y2LFxuIFx0XHQuc2FkZHIgPSB0dXBsZS1cdTAwM2V0dW4uZHN0X3Y2LFxuQEAgLTY5NiwxMCAmIzQzOzY5NiwxMSBAQCBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX3Y2X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSxcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCBkc3RfZW50cnkgKmRzdCxcbiBcdFx0XHRcdCAgc3RydWN0IGluNl9hZGRyICoqaXA2X2RhZGRyKVxuIHtcbiBcdGlmICh0dXBsZS1cdTAwM2V0dW5fbnVtKVxuLVx0XHRyZXR1cm4gbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2gobmV0LCBza2IsIHR1cGxlLCBpcDZfZGFkZHIpO1xuJiM0MztcdFx0cmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgZHN0LCBpcDZfZGFkZHIpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTg0Miw3ICYjNDM7ODQzLDggQEAgbmZfZmxvd19vZmZsb2FkX2lwX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdG90aGVyX3R1cGxlID0gXHUwMDI2Zmxvdy1cdTAwM2V0dXBsZWhhc2hbIWRpcl0udHVwbGU7XG4gXHRpcF9kYWRkciA9IG90aGVyX3R1cGxlLVx1MDAzZXNyY192NC5zX2FkZHI7XG4gXG4tXHRpZiAobmZfZmxvd190dW5uZWxfdjRfcHVzaChzdGF0ZS1cdTAwM2VuZXQsIHNrYiwgb3RoZXJfdHVwbGUsIFx1MDAyNmlwX2RhZGRyKSBcdTAwM2MgMClcbiYjNDM7XHRpZiAobmZfZmxvd190dW5uZWxfdjRfcHVzaChzdGF0ZS1cdTAwM2VuZXQsIHNrYiwgb3RoZXJfdHVwbGUsXG4mIzQzO1x0XHRcdFx0ICAgdHVwbGVoYXNoLVx1MDAzZXR1cGxlLmRzdF9jYWNoZSwgXHUwMDI2aXBfZGFkZHIpIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcbiBcdHN3aXRjaCAodHVwbGVoYXNoLVx1MDAzZXR1cGxlLnhtaXRfdHlwZSkge1xuQEAgLTExNTgsNiAmIzQzOzExNjAsNyBAQCBuZl9mbG93X29mZmxvYWRfaXB2Nl9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpcDZfZGFkZHIgPSBcdTAwMjZvdGhlcl90dXBsZS1cdTAwM2VzcmNfdjY7XG4gXG4gXHRpZiAobmZfZmxvd190dW5uZWxfdjZfcHVzaChzdGF0ZS1cdTAwM2VuZXQsIHNrYiwgb3RoZXJfdHVwbGUsXG4mIzQzO1x0XHRcdFx0ICAgdHVwbGVoYXNoLVx1MDAzZXR1cGxlLmRzdF9jYWNoZSxcbiBcdFx0XHRcdCAgIFx1MDAyNmlwNl9kYWRkcikgXHUwMDNjIDApXG4gXHRcdHJldHVybiBORl9EUk9QO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jXG5pbmRleCAwMDJlYzE1ZDk4OGJkYi4uM2U4NzExN2U3MjRiM2YgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jXG5AQCAtMTEwMSwxMiAmIzQzOzExMDEsMjMgQEAgbmZfZmxvd19vZmZsb2FkX3dvcmtfYWxsb2Moc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLFxuIFx0cmV0dXJuIG9mZmxvYWQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWQoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdylcbiYjNDM7e1xuJiM0MztcdGlmIChmbG93LVx1MDAzZXR1cGxlaGFzaFtGTE9XX09GRkxPQURfRElSX09SSUdJTkFMXS50dXBsZS50dW5fbnVtIHx8XG4mIzQzO1x0ICAgIGZsb3ctXHUwMDNldHVwbGVoYXNoW0ZMT1dfT0ZGTE9BRF9ESVJfUkVQTFldLnR1cGxlLnR1bl9udW0pXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuJiM0Mzt9XG4gXG4gdm9pZCBuZl9mbG93X29mZmxvYWRfYWRkKHN0cnVjdCBuZl9mbG93dGFibGUgKmZsb3d0YWJsZSxcbiBcdFx0XHQgc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdylcbiB7XG4gXHRzdHJ1Y3QgZmxvd19vZmZsb2FkX3dvcmsgKm9mZmxvYWQ7XG4gXG4mIzQzO1x0aWYgKG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChmbG93KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRvZmZsb2FkID0gbmZfZmxvd19vZmZsb2FkX3dvcmtfYWxsb2MoZmxvd3RhYmxlLCBmbG93LCBGTE9XX0NMU19SRVBMQUNFKTtcbiBcdGlmICghb2ZmbG9hZClcbiBcdFx0cmV0dXJuO1xuQEAgLTExMTksNiAmIzQzOzExMzAsOSBAQCB2b2lkIG5mX2Zsb3dfb2ZmbG9hZF9kZWwoc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLFxuIHtcbiBcdHN0cnVjdCBmbG93X29mZmxvYWRfd29yayAqb2ZmbG9hZDtcbiBcbiYjNDM7XHRpZiAobmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkKGZsb3cpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdG9mZmxvYWQgPSBuZl9mbG93X29mZmxvYWRfd29ya19hbGxvYyhmbG93dGFibGUsIGZsb3csIEZMT1dfQ0xTX0RFU1RST1kpO1xuIFx0aWYgKCFvZmZsb2FkKVxuIFx0XHRyZXR1cm47XG5AQCAtMTEzMyw2ICYjNDM7MTE0Nyw5IEBAIHZvaWQgbmZfZmxvd19vZmZsb2FkX3N0YXRzKHN0cnVjdCBuZl9mbG93dGFibGUgKmZsb3d0YWJsZSxcbiBcdHN0cnVjdCBmbG93X29mZmxvYWRfd29yayAqb2ZmbG9hZDtcbiBcdF9fczMyIGRlbHRhO1xuIFxuJiM0MztcdGlmIChuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWQoZmxvdykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0ZGVsdGEgPSBuZl9mbG93X3RpbWVvdXRfZGVsdGEoZmxvdy1cdTAwM2V0aW1lb3V0KTtcbiBcdGlmICgoZGVsdGEgXHUwMDNlPSAoOSAqIGZsb3dfb2ZmbG9hZF9nZXRfdGltZW91dChmbG93KSkgLyAxMCkpXG4gXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDowOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zmxvd19vZmZsb2FkX2ZpbGxfcm91dGUmIzM0OywKICAgICYjMzQ7bmZfZmxvd190dW5uZWxfaXBpcF9wdXNoJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBuZXRmaWx0ZXIgZmxvdyB0YWJsZSBsb2dpYywgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBkc3RfY2FjaGUgYW5kIGRzdF9jb29raWUgYXJlIHN0b3JlZCBhbmQgaGFuZGxlZCBmb3IgdHVubmVscy4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBoYXJkd2FyZSBvZmZsb2FkIGZvciB1bnN1cHBvcnRlZCB0dW5uZWwgZmxvd3MuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGY2NTVkZDcyZGQ5YWE1ZWI4ZmExMjgyODE3YjU1OTA4N2I4YzMxZjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyIDA0OjA5OjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmgKaW5kZXggN2IyM2IyNDVhNWE4NmEuLjM2OWY2YTcxNzgxMTRjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmgKQEAgLTE1NSwxMSAmIzQzOzE1NSwxMSBAQCBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlIHsKIAkJCQkJdHVuX251bToyLAogCQkJCQlpbl92bGFuX2luZ3Jlc3M6MjsKIAl1MTYJCQkJbXR1OwomIzQzOwlzdHJ1Y3QgZHN0X2VudHJ5CQkqZHN0X2NhY2hlOwomIzQzOwl1MzIJCQkJZHN0X2Nvb2tpZTsKIAl1bmlvbiB7CiAJCXN0cnVjdCB7Ci0JCQlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2FjaGU7CiAJCQl1MzIJCWlmaWR4OwotCQkJdTMyCQlkc3RfY29va2llOwogCQl9OwogCQlzdHJ1Y3QgewogCQkJdTMyCQlpZmlkeDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jCmluZGV4IDk5YzViOWQ2NzFhMGNhLi42ZjE5NWNjZjIyMmE5MyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jCkBAIC0xMjcsMTIgJiM0MzsxMjcsMjEgQEAgc3RhdGljIGludCBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZShzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LAogCiAJc3dpdGNoIChyb3V0ZS0mZ3Q7dHVwbGVbZGlyXS54bWl0X3R5cGUpIHsKIAljYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDoKJiM0MzsJCWlmIChmbG93X3R1cGxlLSZndDt0dW5fbnVtKSB7CiYjNDM7CQkJZmxvd190dXBsZS0mZ3Q7ZHN0X2NhY2hlID0gZHN0OwomIzQzOwkJCWZsb3dfdHVwbGUtJmd0O2RzdF9jb29raWUgPQomIzQzOwkJCQlmbG93X29mZmxvYWRfZHN0X2Nvb2tpZShmbG93X3R1cGxlKTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJZmxvd190dXBsZS0mZ3Q7ZHN0X2NhY2hlID0gTlVMTDsKJiM0MzsJCQlmbG93X3R1cGxlLSZndDtkc3RfY29va2llID0gMDsKJiM0MzsJCX0KIAkJbWVtY3B5KGZsb3dfdHVwbGUtJmd0O291dC5oX2Rlc3QsIHJvdXRlLSZndDt0dXBsZVtkaXJdLm91dC5oX2Rlc3QsCiAJCSAgICAgICBFVEhfQUxFTik7CiAJCW1lbWNweShmbG93X3R1cGxlLSZndDtvdXQuaF9zb3VyY2UsIHJvdXRlLSZndDt0dXBsZVtkaXJdLm91dC5oX3NvdXJjZSwKIAkJICAgICAgIEVUSF9BTEVOKTsKIAkJZmxvd190dXBsZS0mZ3Q7b3V0LmlmaWR4ID0gcm91dGUtJmd0O3R1cGxlW2Rpcl0ub3V0LmlmaW5kZXg7Ci0JCWRzdF9yZWxlYXNlKGRzdCk7CiYjNDM7CQlpZiAoIWZsb3dfdHVwbGUtJmd0O3R1bl9udW0pCiYjNDM7CQkJZHN0X3JlbGVhc2UoZHN0KTsKIAkJYnJlYWs7CiAJY2FzZSBGTE9XX09GRkxPQURfWE1JVF9YRlJNOgogCWNhc2UgRkxPV19PRkZMT0FEX1hNSVRfTkVJR0g6CkBAIC0xNTIsOSAmIzQzOzE2MSw3IEBAIHN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdywKIHN0YXRpYyB2b2lkIG5mdF9mbG93X2RzdF9yZWxlYXNlKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csCiAJCQkJIGVudW0gZmxvd19vZmZsb2FkX3R1cGxlX2RpciBkaXIpCiB7Ci0JaWYgKGZsb3ctJmd0O3R1cGxlaGFzaFtkaXJdLnR1cGxlLnhtaXRfdHlwZSA9PSBGTE9XX09GRkxPQURfWE1JVF9ORUlHSCB8fAotCSAgICBmbG93LSZndDt0dXBsZWhhc2hbZGlyXS50dXBsZS54bWl0X3R5cGUgPT0gRkxPV19PRkZMT0FEX1hNSVRfWEZSTSkKLQkJZHN0X3JlbGVhc2UoZmxvdy0mZ3Q7dHVwbGVoYXNoW2Rpcl0udHVwbGUuZHN0X2NhY2hlKTsKJiM0MzsJZHN0X3JlbGVhc2UoZmxvdy0mZ3Q7dHVwbGVoYXNoW2Rpcl0udHVwbGUuZHN0X2NhY2hlKTsKIH0KIAogdm9pZCBmbG93X29mZmxvYWRfcm91dGVfaW5pdChzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuYwppbmRleCAyOWU5M2FjMWUyZTQwMC4uMGI3OGRlY2NlOGE5YmQgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jCkBAIC0yOTksOCAmIzQzOzI5OSw3IEBAIHN0YXRpYyBib29sIG5mX2Zsb3dfZXhjZWVkc19tdHUoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IG10dSkKIAogc3RhdGljIGlubGluZSBib29sIG5mX2Zsb3dfZHN0X2NoZWNrKHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUgKnR1cGxlKQogewotCWlmICh0dXBsZS0mZ3Q7eG1pdF90eXBlICE9IEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIICZhbXA7JmFtcDsKLQkgICAgdHVwbGUtJmd0O3htaXRfdHlwZSAhPSBGTE9XX09GRkxPQURfWE1JVF9YRlJNKQomIzQzOwlpZiAoIXR1cGxlLSZndDtkc3RfY2FjaGUpCiAJCXJldHVybiB0cnVlOwogCiAJcmV0dXJuIGRzdF9jaGVjayh0dXBsZS0mZ3Q7ZHN0X2NhY2hlLCB0dXBsZS0mZ3Q7ZHN0X2Nvb2tpZSk7CkBAIC01OTAsMTAgJiM0Mzs1ODksMTAgQEAgc3RhdGljIGludCBuZl9mbG93X3BwcG9lX3B1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IGlkLAogCiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJICAgIHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUgKnR1cGxlLAotCQkJCSAgICBfX2JlMzIgKmlwX2RhZGRyKQomIzQzOwkJCQkgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0LCBfX2JlMzIgKmlwX2RhZGRyKQogewogCXN0cnVjdCBpcGhkciAqaXBoID0gKHN0cnVjdCBpcGhkciAqKXNrYl9uZXR3b3JrX2hlYWRlcihza2IpOwotCXN0cnVjdCBydGFibGUgKnJ0ID0gZHN0X3J0YWJsZSh0dXBsZS0mZ3Q7ZHN0X2NhY2hlKTsKJiM0MzsJc3RydWN0IHJ0YWJsZSAqcnQgPSBkc3RfcnRhYmxlKGRzdCk7CiAJdTggdG9zID0gaXBoLSZndDt0b3MsIHR0bCA9IGlwaC0mZ3Q7dHRsOwogCV9fYmUxNiBmcmFnX29mZiA9IGlwaC0mZ3Q7ZnJhZ19vZmY7CiAJdTMyIGhlYWRyb29tID0gc2l6ZW9mKCppcGgpOwpAQCAtNjM2LDIxICYjNDM7NjM1LDIyIEBAIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfaXBpcF9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogc3RhdGljIGludCBuZl9mbG93X3R1bm5lbF92NF9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgIHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUgKnR1cGxlLAotCQkJCSAgX19iZTMyICppcF9kYWRkcikKJiM0MzsJCQkJICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsICBfX2JlMzIgKmlwX2RhZGRyKQogewogCWlmICh0dXBsZS0mZ3Q7dHVuX251bSkKLQkJcmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaChuZXQsIHNrYiwgdHVwbGUsIGlwX2RhZGRyKTsKJiM0MzsJCXJldHVybiBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gobmV0LCBza2IsIHR1cGxlLCBkc3QsIGlwX2RhZGRyKTsKIAogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgICAgICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSwKJiM0MzsJCQkJICAgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0LAogCQkJCSAgICAgIHN0cnVjdCBpbjZfYWRkciAqKmlwNl9kYWRkcikKIHsKIAlzdHJ1Y3QgaXB2NmhkciAqaXA2aCA9IChzdHJ1Y3QgaXB2NmhkciAqKXNrYl9uZXR3b3JrX2hlYWRlcihza2IpOwotCXN0cnVjdCBydGFibGUgKnJ0ID0gZHN0X3J0YWJsZSh0dXBsZS0mZ3Q7ZHN0X2NhY2hlKTsKIAlfX3U4IGRzZmllbGQgPSBpcHY2X2dldF9kc2ZpZWxkKGlwNmgpOwomIzQzOwlzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUoZHN0KTsKIAlzdHJ1Y3QgZmxvd2k2IGZsNiA9IHsKIAkJLmRhZGRyID0gdHVwbGUtJmd0O3R1bi5zcmNfdjYsCiAJCS5zYWRkciA9IHR1cGxlLSZndDt0dW4uZHN0X3Y2LApAQCAtNjk2LDEwICYjNDM7Njk2LDExIEBAIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX3Y2X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZSAqdHVwbGUsCiYjNDM7CQkJCSAgc3RydWN0IGRzdF9lbnRyeSAqZHN0LAogCQkJCSAgc3RydWN0IGluNl9hZGRyICoqaXA2X2RhZGRyKQogewogCWlmICh0dXBsZS0mZ3Q7dHVuX251bSkKLQkJcmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgaXA2X2RhZGRyKTsKJiM0MzsJCXJldHVybiBuZl9mbG93X3R1bm5lbF9pcDZpcDZfcHVzaChuZXQsIHNrYiwgdHVwbGUsIGRzdCwgaXA2X2RhZGRyKTsKIAogCXJldHVybiAwOwogfQpAQCAtODQyLDcgJiM0Mzs4NDMsOCBAQCBuZl9mbG93X29mZmxvYWRfaXBfaG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCW90aGVyX3R1cGxlID0gJmFtcDtmbG93LSZndDt0dXBsZWhhc2hbIWRpcl0udHVwbGU7CiAJaXBfZGFkZHIgPSBvdGhlcl90dXBsZS0mZ3Q7c3JjX3Y0LnNfYWRkcjsKIAotCWlmIChuZl9mbG93X3R1bm5lbF92NF9wdXNoKHN0YXRlLSZndDtuZXQsIHNrYiwgb3RoZXJfdHVwbGUsICZhbXA7aXBfZGFkZHIpICZsdDsgMCkKJiM0MzsJaWYgKG5mX2Zsb3dfdHVubmVsX3Y0X3B1c2goc3RhdGUtJmd0O25ldCwgc2tiLCBvdGhlcl90dXBsZSwKJiM0MzsJCQkJICAgdHVwbGVoYXNoLSZndDt0dXBsZS5kc3RfY2FjaGUsICZhbXA7aXBfZGFkZHIpICZsdDsgMCkKIAkJcmV0dXJuIE5GX0RST1A7CiAKIAlzd2l0Y2ggKHR1cGxlaGFzaC0mZ3Q7dHVwbGUueG1pdF90eXBlKSB7CkBAIC0xMTU4LDYgJiM0MzsxMTYwLDcgQEAgbmZfZmxvd19vZmZsb2FkX2lwdjZfaG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWlwNl9kYWRkciA9ICZhbXA7b3RoZXJfdHVwbGUtJmd0O3NyY192NjsKIAogCWlmIChuZl9mbG93X3R1bm5lbF92Nl9wdXNoKHN0YXRlLSZndDtuZXQsIHNrYiwgb3RoZXJfdHVwbGUsCiYjNDM7CQkJCSAgIHR1cGxlaGFzaC0mZ3Q7dHVwbGUuZHN0X2NhY2hlLAogCQkJCSAgICZhbXA7aXA2X2RhZGRyKSAmbHQ7IDApCiAJCXJldHVybiBORl9EUk9QOwogCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYwppbmRleCAwMDJlYzE1ZDk4OGJkYi4uM2U4NzExN2U3MjRiM2YgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYwpAQCAtMTEwMSwxMiAmIzQzOzExMDEsMjMgQEAgbmZfZmxvd19vZmZsb2FkX3dvcmtfYWxsb2Moc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLAogCXJldHVybiBvZmZsb2FkOwogfQogCiYjNDM7c3RhdGljIGJvb2wgbmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3cpCiYjNDM7ewomIzQzOwlpZiAoZmxvdy0mZ3Q7dHVwbGVoYXNoW0ZMT1dfT0ZGTE9BRF9ESVJfT1JJR0lOQUxdLnR1cGxlLnR1bl9udW0gfHwKJiM0MzsJICAgIGZsb3ctJmd0O3R1cGxlaGFzaFtGTE9XX09GRkxPQURfRElSX1JFUExZXS50dXBsZS50dW5fbnVtKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7CXJldHVybiBmYWxzZTsKJiM0Mzt9CiAKIHZvaWQgbmZfZmxvd19vZmZsb2FkX2FkZChzdHJ1Y3QgbmZfZmxvd3RhYmxlICpmbG93dGFibGUsCiAJCQkgc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdykKIHsKIAlzdHJ1Y3QgZmxvd19vZmZsb2FkX3dvcmsgKm9mZmxvYWQ7CiAKJiM0MzsJaWYgKG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChmbG93KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlvZmZsb2FkID0gbmZfZmxvd19vZmZsb2FkX3dvcmtfYWxsb2MoZmxvd3RhYmxlLCBmbG93LCBGTE9XX0NMU19SRVBMQUNFKTsKIAlpZiAoIW9mZmxvYWQpCiAJCXJldHVybjsKQEAgLTExMTksNiAmIzQzOzExMzAsOSBAQCB2b2lkIG5mX2Zsb3dfb2ZmbG9hZF9kZWwoc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLAogewogCXN0cnVjdCBmbG93X29mZmxvYWRfd29yayAqb2ZmbG9hZDsKIAomIzQzOwlpZiAobmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkKGZsb3cpKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCW9mZmxvYWQgPSBuZl9mbG93X29mZmxvYWRfd29ya19hbGxvYyhmbG93dGFibGUsIGZsb3csIEZMT1dfQ0xTX0RFU1RST1kpOwogCWlmICghb2ZmbG9hZCkKIAkJcmV0dXJuOwpAQCAtMTEzMyw2ICYjNDM7MTE0Nyw5IEBAIHZvaWQgbmZfZmxvd19vZmZsb2FkX3N0YXRzKHN0cnVjdCBuZl9mbG93dGFibGUgKmZsb3d0YWJsZSwKIAlzdHJ1Y3QgZmxvd19vZmZsb2FkX3dvcmsgKm9mZmxvYWQ7CiAJX19zMzIgZGVsdGE7CiAKJiM0MzsJaWYgKG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChmbG93KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlkZWx0YSA9IG5mX2Zsb3dfdGltZW91dF9kZWx0YShmbG93LSZndDt0aW1lb3V0KTsKIAlpZiAoKGRlbHRhICZndDs9ICg5ICogZmxvd19vZmZsb2FkX2dldF90aW1lb3V0KGZsb3cpKSAvIDEwKSkKIAkJcmV0dXJuOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIEZsb3cgVGFibGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHBva2luZyBhcm91bmQgaW4gdGhlIG5ldGZpbHRlciBmbG93IHRhYmxlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgdGhlIGBkc3RfY2FjaGVgIGFuZCBgZHN0X2Nvb2tpZWAgd2l0aGluIHRoZSBgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZWAuIFRoaXMgc2VlbXMgcHJldHR5IHNpZ25pZmljYW50IOKAkyB0aGV5JiMzOTtyZSBtb3ZpbmcgdGhlbSBvdXQgb2YgdGhlIHVuaW9uLCBzbyB0aGV5JiMzOTtyZSBhbHdheXMgcHJlc2VudC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiBob3cgdGhlIHRhYmxlIHJlcHJlc2VudHMgdGhlc2UgZGVzdGluYXRpb24tcmVsYXRlZCBhdHRyaWJ1dGVzLCBzdWdnZXN0aW5nIHBvdGVudGlhbGx5IGJyb2FkZXIgcGVyZm9ybWFuY2Ugb3IgY29ycmVjdG5lc3MgaW1wbGljYXRpb25zLCBlc3BlY2lhbGx5IHdpdGggY29uY3VycmVudCBhY2Nlc3Mgb3Igc3RhdGUgbWFuYWdlbWVudC4KClRoZSBjb3JlIG9mIGl0IGlzIHRoZSBtYW5pcHVsYXRpb24gb2YgdGhlIGBkc3RfY2FjaGVgIGFuZCBgZHN0X2Nvb2tpZWAgcG9pbnRlcnMuIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAgaXMgYmVpbmcgbW9kaWZpZWQgdG8gc2V0IHRoZW0gZXZlbiBmb3IgYEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVGAsIHdoZW4gdGhlIHR1bm5lbCBudW1iZXIgaXMgbm9uLXplcm8uIFRoZSBjaGFuZ2UgYWxzbyBtb2RpZmllcyB0aGUgYG5mdF9mbG93X2RzdF9yZWxlYXNlYCBmdW5jdGlvbiBzbyB0aGF0IGl0ICphbHdheXMqIHJlbGVhc2VzIHRoZSBgZHN0X2NhY2hlYCB1c2luZyBgZHN0X3JlbGVhc2VgLCByZWdhcmRsZXNzIG9mIG90aGVyIGNvbmRpdGlvbnMuIEFsc28sIGBuZl9mbG93X2RzdF9jaGVja2AgaXMgYmVpbmcgYWRqdXN0ZWQgdG8gY2hlY2sgZm9yIHRoZSBhYnNlbmNlIG9mIGB0dXBsZS0mZ3Q7ZHN0X2NhY2hlYCBhcyBpdHMgcHJpbWFyeSBjb25kaXRpb24sIGluc3RlYWQgb2YgYW4gb2xkZXIgYHhtaXRfdHlwZWAgY29uZGl0aW9uLgoKT24gdG9wIG9mIHRoaXMsIHR1bm5lbCBoYW5kbGluZyBpcyBiZWluZyByZXdvcmtlZC4gVGhlIGBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2hgIGFuZCBgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hgIGZ1bmN0aW9ucyBhcmUgbm93IHJlY2VpdmluZyBhIGBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RgIGFzIGFuIGFyZ3VtZW50IGluc3RlYWQgb2YgcmV0cmlldmluZyB0aGUgZGVzdGluYXRpb24gZnJvbSB0aGUgdHVwbGUgY2FjaGUuIFRoaXMgbGlrZWx5IG1lYW5zIHNvbWUgcmVmYWN0b3JpbmcgdG8gaW1wcm92ZSBjb2RlIGNsYXJpdHkgb3IgaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSB0dXBsZSBkb2VzbiYjMzk7dCBoYXZlIHRoZSBjYWNoZWQgZGVzdGluYXRpb24uIEFuZCBmaW5hbGx5LCBzb21lIG9mIHRoZSBmbG93IG9mZmxvYWQgZnVuY3Rpb25zIChgbmZfZmxvd19vZmZsb2FkX2FkZGAsIGBuZl9mbG93X29mZmxvYWRfZGVsYCwgYW5kIGBuZl9mbG93X29mZmxvYWRfc3RhdHNgKSBoYXZlIGFuIGVhcmx5IGV4aXQgY29uZGl0aW9uLCBiYXNlZCBvbiB0aGUgbmV3IGBuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWRgIGNoZWNrICh3aGljaCBjb25zaWRlcnMgYSBub24temVybyB0dW5uZWwgbnVtYmVyIGluIGVpdGhlciBkaXJlY3Rpb24pLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0JiMzOTtzIHRvdWNoaW5nIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBJUC9JUHY2IHR1bm5lbHMgYXJlIHJlcHJlc2VudGVkIGFuZCBoYW5kbGVkIHdpdGhpbiB0aGUgZmxvdyB0YWJsZS4gVGhhdCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgZ2l2ZW4gdGhhdCB0dW5uZWwgaGFuZGxpbmcgaXMgYSBjb21wbGV4IGFyZWEgd2l0aCBwbGVudHkgb2YgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGludGVyYWN0aW9ucy4KClRvIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgZm9jdXNlZCwgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0IGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQgb3IgYWZmZWN0ZWQuIEkgY2FuIHNlZSB0aGUgbGlzdDogYGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlYCwgYG5mdF9mbG93X2RzdF9yZWxlYXNlYCwgYG5mX2Zsb3dfZHN0X2NoZWNrYCwgYG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaGAsIGBuZl9mbG93X3R1bm5lbF92NF9wdXNoYCwgYG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoYCwgYG5mX2Zsb3dfdHVubmVsX3Y2X3B1c2hgLCBgbmZfZmxvd19vZmZsb2FkX2lwX2hvb2tgLCBgbmZfZmxvd19vZmZsb2FkX2lwdjZfaG9va2AsIGBuZl9mbG93X29mZmxvYWRfd29ya19hbGxvY2AsIGBuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWRgLCBgbmZfZmxvd19vZmZsb2FkX2FkZGAsIGBuZl9mbG93X29mZmxvYWRfZGVsYCwgYW5kIGBuZl9mbG93X29mZmxvYWRfc3RhdHNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYnV0IHdlIG5lZWQgdG8gcHJpb3JpdGl6ZS4KCkJhc2VkIG9uIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIGZvY3VzaW5nIG9uIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAsIGBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2hgLCBgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hgLCBhbmQgYG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZGAgc2VlbXMgbGlrZSB0aGUgc21hcnRlc3QgbW92ZSByaWdodCBub3cuIFRob3NlIGFyZSB0aGUgb25lcyB3aGVyZSB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZSAoYW5kIGl0cyByZWxhdGlvbiB0byB0dW5uZWxzKSBpcyBiZWluZyB1cGRhdGVkLgoKTm93LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBhbmQgbWFrZSBzdXJlIHRoaXMgY29kZSBpcyBiZWluZyBidWlsdCBjb3JyZWN0bHkuIEkgc2hvdWxkIGxvb2sgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jYCwgYG5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jYCwgYW5kIGBuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jYCBzb3VyY2UgZmlsZXMuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCBgbmZfZmxvd190YWJsZV9jb3JlLm9gIGlzIGluZGVlZCBiZWluZyBjb21waWxlZCwgYW5kIHRoYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Zsb3dfdGFibGVfY29yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT0xNDI9b2JqLSQoQ09ORklHX05GX0ZMT1dfVEFCTEUpXHQmIzQzOz0gbmZfZmxvd190YWJsZS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0MzpuZl9mbG93X3RhYmxlLW9ianNcdFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NC1cdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIyNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9uOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgZm9jdXMgaXMgYENPTkZJR19ORl9GTE9XX1RBQkxFYC4gVGhhdCYjMzk7cyBhIGtleSByZXF1aXJlbWVudCwgbm8gZG91YnQuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGRlcGVuZGVuY2llcyBvciBjby1yZXF1aXNpdGVzLiBBaGEsIG9rYXksIEkgc2VlIGBuZl9mbG93X3RhYmxlX29mZmxvYWQuY2AgaXMgZmxhZ2dlZCBhcyBiZWluZyBtb2RpZmllZCBhcyB3ZWxsLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgZmxvdyB0YWJsZSBvZmZsb2FkIGNhcGFiaWxpdGllcyBhcmUgaGVhdmlseSBpbnRlcnR3aW5lZCB3aXRoIHRoZSBiYXNlIGZsb3cgdGFibGUgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIHRoaXMgaW4gbWluZCBhcyBJIGRlbHZlIGZ1cnRoZXIgaW50byB0aGUgc3BlY2lmaWMgY2hhbmdlcywgYW5kIGxvb2sgYXQgdGhlIGludGVyYWN0aW9uIG9mIHRob3NlIGZpbGVzIHRvIHNlZSBob3cgdGhvc2UgYXJlIHRpZWQgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfZmxvd190YWJsZV9vZmZsb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mz1uZl9mbG93X3RhYmxlLW9ianNcdFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NC1cdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NTpcdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfb2ZmbG9hZC5vIG5mX2Zsb3dfdGFibGVfeGRwLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQ2LW5mX2Zsb3dfdGFibGUtJChDT05GSUdfTkZfRkxPV19UQUJMRV9QUk9DRlMpICYjNDM7PSBuZl9mbG93X3RhYmxlX3Byb2Nmcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYwMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgTmV0ZmlsdGVyIEZsb3cgVGFibGUgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBmdW5jdGlvbmFsaXR5IGxpdmVzIHdpdGhpbiB0aGUgYG5mX2Zsb3dfdGFibGUtb2Jqc2Agb2JqZWN0LiBTbywgaW1tZWRpYXRlbHksIHRoYXQgc2NyZWFtcyBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGFzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24ga25vYiBJIHNob3VsZCBiZSBjb25jZXJuZWQgd2l0aC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgYG5mX2Zsb3dfdGFibGVfaXAuY2AgaXMgYWxzbyBpbiB0aGUgbWl4LiBTbywgdGhhdCBzdWdnZXN0cyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG1pZ2h0IGJlIHNwbGl0LCBvciBwZXJoYXBzIHRoZXJlIGFyZSBJUC1zcGVjaWZpYyBhc3BlY3RzIGludm9sdmVkLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuCgpOb3cgSSYjMzk7bSB3b25kZXJpbmcsIGFyZSB0aGVyZSAqb3RoZXIqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc29tZSBtb3JlIGdyYW51bGFyIHNldHRpbmdzLCB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJIGNhbiYjMzk7dCBqdXN0IGFzc3VtZSBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGlzIHRoZSAqb25seSogdGhpbmcuIEJlc3QgdG8gY2hlY2sgdGhlIHNvdXJjZS4gSSYjMzk7bGwgbmVlZCB0byBnbyB0byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBhbmQgbG9vayBmb3IgdGhlIGRlZmluaXRpb24gb2YgYE5GX0ZMT1dfVEFCTEVgLiBUaGF0JiMzOTtzIHdoZXJlIEkgY2FuIGZpbmQgYWxsIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGZvciB0aGlzIGZsb3cgdGFibGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfRkxPV19UQUJMRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzAxPWVuZGlmICMgTkZfVEFCTEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzAyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjcwMzpjb25maWcgTkZfRkxPV19UQUJMRV9JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzA0LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGZsb3cgdGFibGUgbWl4ZWQgSVB2NC9JUHY2IG1vZHVsZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzExOmNvbmZpZyBORl9GTE9XX1RBQkxFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEyLVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MjE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfUFJPQ0ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzIyLVx0Ym9vbCBcJiMzNDtTdXBwbHkgZmxvdyB0YWJsZSBzdGF0aXN0aWNzIGluIHByb2Nmc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipORl9GTE9XX1RBQkxFIERlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBraWNrcyBpbiwgYW5kIEkgaW1tZWRpYXRlbHkgc3RhcnQgdG8gbWVudGFsbHkgbWFwIG91dCB0aGUgaW1wbGljYXRpb25zIG9mICYjMzQ7TkZfRkxPV19UQUJMRSYjMzQ7IGRlcGVuZGVuY2llcy4gTXkgYnJhaW4ganVtcHMgcmlnaHQgdG8gZGVwZW5kZW5jeSBhbmFseXNpcy4gSSYjMzk7bSBlc3NlbnRpYWxseSBydW5uaW5nIHRocm91Z2ggdGhlIGxpa2VseSBjb25zdW1lcnMgYW5kIHByb3ZpZGVycyBvZiB0aGlzIHRhYmxlIGluIG15IGhlYWQuIFdoYXQgYXJlIHRoZSBjb3JlIG1vZHVsZXMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGlzIGRhdGEgc3RydWN0dXJlPyBJcyBpdCBwcmltYXJpbHkgd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29udGV4dCwgb3IgYXJlIHdlIGJyYW5jaGluZyBvdXQ/IEFyZSB0aGVyZSBleHRlcm5hbCB1c2VycyB0aGF0IGhhdmUgZGV2ZWxvcGVkIHBsdWdpbnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoaXMgdGFibGU/IFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcywgb2YgY291cnNlLCBhYnNvbHV0ZWx5IGNydWNpYWwgYmVmb3JlIG1ha2luZyBhbnkgbW9kaWZpY2F0aW9ucyBvciBldmVuIGRpYWdub3NpbmcgcGVyZm9ybWFuY2UgaXNzdWVzLiBJdCBkaWN0YXRlcyB0aGUgcG90ZW50aWFsIGJsYXN0IHJhZGl1cyBvZiBhbnkgY2hhbmdlcy4gSSBuZWVkIHRvIGJlIHRoaW5raW5nIGFib3V0IHZlcnNpb25pbmcsIEFQSSBzdGFiaWxpdHksIGFuZCBwb3RlbnRpYWwgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZXMgcmlnaHQgZnJvbSB0aGUgc3RhcnQsIGFzIEkgY2FuIGFzc3VtZSB0aGUgdXNlciBoYXMgYSBmYWlybHkgbWF0dXJlIGNvZGViYXNlLiBJIGFsc28gc3RhcnQgdGhpbmtpbmcgYWJvdXQgdGhlIGtlcm5lbCBzdWJzeXN0ZW1zIGRpcmVjdGx5IGFjY2Vzc2luZyB0aGUgdGFibGUuIElzIHRoaXMgYWxsIGNvbnRhaW5lZCwgb3IgaXMgdGhlcmUgYW55IHVzZXIgc3BhY2UgaW50ZXJhY3Rpb24/IEhvdyBpcyBzeW5jaHJvbml6YXRpb24gaGFuZGxlZD8gTG9ja3MsIGF0b21pYyBvcGVyYXRpb25zLCB3aGF0JiMzOTtzIHRoZSBzdG9yeSB0aGVyZT8gSSBzdGFydCB0byB0aGluayBhYm91dCB0aGUgcG9zc2libGUgZmFpbHVyZSBwb2ludHMgb2YgdGhlIHN5c3RlbS4gSSBhbHNvIHRoaW5rIGFib3V0IGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIHdpdGggb3RoZXIgdGhpbmdzLCBzdWNoIGFzIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3Igcm91dGluZy4gQW5kIHRoZW4gYWxzbyB3aGVyZSBpdCBoYXMgdXBzdHJlYW0vZG93bnN0cmVhbSBkZXBlbmRlbmNpZXMuIEZpbmFsbHksIHRoZSB0aG91Z2h0IG9mIHdoYXQgdG9vbHMgSSBoYXZlIHRvIHBlcmZvcm0gdGhlc2UgaW52ZXN0aWdhdGlvbnMgYWxzbyBwb3BzIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfRkxPV19UQUJMRSQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTcwMz1jb25maWcgTkZfRkxPV19UQUJMRV9JTkVUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MTE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MTItXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtb2R1bGVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYwOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gTmV0ZmlsdGVyJiMzOTtzIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHNvbWV0aGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiwgc28gSSYjMzk7bSBoZWFkaW5nIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgbGlmZWJsb29kIG9mIExpbnV4IGNvbmZpZ3VyYXRpb24sIGFuZCBJJiMzOTttIGhvbWluZyBpbiBvbiBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBhcm91bmQgbGluZSA3MTEuIFRoYXQgbGluZSwgZ2l2ZSBvciB0YWtlIGEgZmV3LCBsaWtlbHkgaG9sZHMgdGhlIGtleSB0byB0aGUgc2V0dGluZyBJJiMzOTttIHRyeWluZyB0byBkZWNpcGhlciBvciBtb2RpZnkuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGRlZmluaXRpb24sIHBvdGVudGlhbGx5IHNvbWUgZGVwZW5kZW5jaWVzLCBtYXliZSBldmVuIGEgaGVscCB0ZXh0IHRoYXQmIzM5O3Mgd29ydGggYSBxdWljayBzY2FuLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBmZWF0dXJlIGxpdmVzLCBhbmQgdW5kZXJzdGFuZGluZyB0aGlzIHNlY3Rpb24gaXMgY3JpdGljYWwuIEkmIzM5O20gYnJhY2luZyBteXNlbGYgZm9yIHRoZSB1c3VhbCBLY29uZmlnIHN5bnRheCDigJMgdGhlIGBjb25maWdgIGtleXdvcmQsIHRoZSB0eXBlIGRlY2xhcmF0aW9uLCBtYXliZSBzb21lIGBkZXBlbmRzIG9uYCBjbGF1c2VzLCBhbmQgaG9wZWZ1bGx5IHNvbWUgY2xlYXIsIGNvbmNpc2UgZG9jdW1lbnRhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRyZWFzdXJlcyBhd2FpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDcwNTpcdFx0ZGVwZW5kcyBvbiBORl9GTE9XX1RBQkxFXG4gNzA2Olx0XHRoZWxwXG4gNzA3Olx0XHQgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIGZsb3cgdGFibGUgbWl4ZWQgSVB2NC9JUHY2IHN1cHBvcnQuXG4gNzA4Olx0XG4gNzA5Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gNzEwOlx0XG4gNzExOlx0Y29uZmlnIE5GX0ZMT1dfVEFCTEVcbiA3MTI6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBmbG93IHRhYmxlIG1vZHVsZVwmIzM0O1xuIDcxMzpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfSU5HUkVTU1xuIDcxNDpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcbiA3MTU6XHRcdGRlcGVuZHMgb24gTkZfVEFCTEVTXG4gNzE2Olx0XHRoZWxwXG4gNzE3Olx0XHQgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIGZsb3cgdGFibGUgY29yZSBpbmZyYXN0cnVjdHVyZS5cbiA3MTg6XHRcbiA3MTk6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiA3MjA6XHRcbiA3MjE6XHRjb25maWcgTkZfRkxPV19UQUJMRV9QUk9DRlNcbiA3MjI6XHRcdGJvb2wgXCYjMzQ7U3VwcGx5IGZsb3cgdGFibGUgc3RhdGlzdGljcyBpbiBwcm9jZnNcJiMzNDtcbiA3MjM6XHRcdGRlcGVuZHMgb24gTkZfRkxPV19UQUJMRVxuIDcyNDpcdFx0ZGVwZW5kcyBvbiBQUk9DX0ZTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNTIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSBgTkZfRkxPV19UQUJMRWAgaXMgdGhlIHByaW1hcnkgc3dpdGNoIGZvciB0aGUgZmxvdyB0YWJsZSBmdW5jdGlvbmFsaXR5LiBJbnRlcmVzdGluZywgSSBzaG91bGQgcHJvYmFibHkgZW5hYmxlIGBORl9GTE9XX1RBQkxFX0lORVRgIHRvbywgaWYgSSB3YW50IHRvIGhhbmRsZSBtaXhlZCBJUHY0L0lQdjYgdHJhZmZpYyDigJMgdGhhdCBjb3VsZCBiZSBpbXBvcnRhbnQuIFNpbmNlIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgaW4gYG5mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jYCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgYW55IGhhcmR3YXJlIG9mZmxvYWQgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQuIE5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIGJhc2VkIG9uIHRoZSBrZXJuZWwgY29kZSwgYG5mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jYCBpcyBhY3R1YWxseSBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkgYXMgbG9uZyBhcyBgTkZfRkxPV19UQUJMRWAgaXMgZW5hYmxlZC4gSXQgc2VlbXMgSSBtYWRlIGEgYmFkIGFzc3VtcHRpb24uIE9rYXksIGJldHRlciBkb3VibGUgY2hlY2sgdGhlIE1ha2VmaWxlIGluIGBuZXQvbmV0ZmlsdGVyL2AgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfZmxvd190YWJsZV9vZmZsb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mz1uZl9mbG93X3RhYmxlLW9ianNcdFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NC1cdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NTpcdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfb2ZmbG9hZC5vIG5mX2Zsb3dfdGFibGVfeGRwLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQ2LW5mX2Zsb3dfdGFibGUtJChDT05GSUdfTkZfRkxPV19UQUJMRV9QUk9DRlMpICYjNDM7PSBuZl9mbG93X3RhYmxlX3Byb2Nmcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MzAKCQkJCQkJCW91dHB1dDogMTQyCgkJCQkJCQl0aG91Z2h0czogMTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjoKCioqQW5hbHlzaXMgb2YgTmV0ZmlsdGVyIEZsb3cgVGFibGUgT2ZmbG9hZCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRlZmluaXRpdmVseSB1bmNvbmRpdGlvbmFsbHkgY29tcGlsZWQg4oCTIHRoYXQgc2ltcGxpZmllcyB0aGluZ3MhIFRoZSBwcmVzZW5jZSBvZiBgTkZfRkxPV19UQUJMRWAgaXMgZW5vdWdoIHRvIGNvbmZpcm0gdGhhdC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGVzZSBmb2N1cyBzeW1ib2xzIHdlIGhhdmUuIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAsIGBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2hgLCBgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hgLCBhbmQgYG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZGDigKYgWXVwLCB0aG9zZSBhcmUgYWxsIHNvbGlkIGluZGljYXRvcnMgb2YgdGhlIHBhdGNoJiMzOTtzIHNjb3BlLiBUaGV5IGRpcmVjdGx5IHJlbGF0ZSB0byB0aGUgZmxvdyB0YWJsZSYjMzk7cyBoYW5kbGluZyBvZiB0dW5uZWxzIGFuZCBoYXJkd2FyZSBvZmZsb2FkLCBhbmQgdGhleSBnaXZlIGEgY2xlYXIgaW5kaWNhdGlvbiBvZiBmdW5jdGlvbmFsaXR5IGJlaW5nIHRvdWNoZWQuCgpUaGUgcGF0Y2ggYXBwZWFycyB0byBtb2RpZnkgY29yZSBuZXRmaWx0ZXIgZmxvdyB0YWJsZSBsb2dpYy4gVGhpcyBpcyBpbiBsaW5lIHdpdGggdGhlIGRlc2NyaXB0aW9ucywgYW5kIGNvbmZpcm1zIHRoZSByZWxldmFuY2Ugb2YgdGhlIHN5bWJvbHMuIEl0JiMzOTtzIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdHVubmVsIGhhbmRsaW5nIGFuZCBoYXJkd2FyZSBvZmZsb2FkIHBhdGhzLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLiBJdCBzZWVtcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCB3ZSB3YW50LgoKSSB0aGluayB3ZSBjYW4gc2V0IHRoZSByZXN1bHRzOyBpdCBsb29rcyBnb29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfRkxPV19UQUJMRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Zsb3dfb2ZmbG9hZF9maWxsX3JvdXRlJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaCYjMzQ7LAogICAgJiMzNDtuZl9mbG93X3R1bm5lbF9pcDZpcDZfcHVzaCYjMzQ7LAogICAgJiMzNDtuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbmV0ZmlsdGVyIGZsb3cgdGFibGUgbG9naWMsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgZHN0X2NhY2hlIGFuZCBkc3RfY29va2llIGFyZSBzdG9yZWQgYW5kIGhhbmRsZWQgZm9yIHR1bm5lbHMuIEl0IGFsc28gYWRkcyBhIGNoZWNrIHRvIHByZXZlbnQgaGFyZHdhcmUgb2ZmbG9hZCBmb3IgdW5zdXBwb3J0ZWQgdHVubmVsIGZsb3dzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zmxvd19vZmZsb2FkX2ZpbGxfcm91dGUmIzM0OywKICAgICYjMzQ7bmZfZmxvd190dW5uZWxfaXBpcF9wdXNoJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBuZXRmaWx0ZXIgZmxvdyB0YWJsZSBsb2dpYywgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBkc3RfY2FjaGUgYW5kIGRzdF9jb29raWUgYXJlIHN0b3JlZCBhbmQgaGFuZGxlZCBmb3IgdHVubmVscy4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBoYXJkd2FyZSBvZmZsb2FkIGZvciB1bnN1cHBvcnRlZCB0dW5uZWwgZmxvd3MuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDowOTowMS4wMDQxNTUxNjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODcxNzUyMjE4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9GTE9XX1RBQkxFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmxvd19vZmZsb2FkX2ZpbGxfcm91dGVcIixcbiAgICBcIm5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaFwiLFxuICAgIFwibmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hcIixcbiAgICBcIm5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG5ldGZpbHRlciBmbG93IHRhYmxlIGxvZ2ljLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRzdF9jYWNoZSBhbmQgZHN0X2Nvb2tpZSBhcmUgc3RvcmVkIGFuZCBoYW5kbGVkIGZvciB0dW5uZWxzLiBJdCBhbHNvIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGhhcmR3YXJlIG9mZmxvYWQgZm9yIHVuc3VwcG9ydGVkIHR1bm5lbCBmbG93cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MDEuMDA0MTU5ODQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQ4ODU1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmNjU1ZGQ3MmRkOWFhNWViOGZhMTI4MjgxN2I1NTkwODdiOGMzMWY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMDQ6MDk6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmhcXG5pbmRleCA3YjIzYjI0NWE1YTg2YS4uMzY5ZjZhNzE3ODExNGMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaFxcbisrKyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmhcXG5AQCAtMTU1LDExICsxNTUsMTEgQEAgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZSB7XFxuIFxcdFxcdFxcdFxcdFxcdHR1bl9udW06MixcXG4gXFx0XFx0XFx0XFx0XFx0aW5fdmxhbl9pbmdyZXNzOjI7XFxuIFxcdHUxNlxcdFxcdFxcdFxcdG10dTtcXG4rXFx0c3RydWN0IGRzdF9lbnRyeVxcdFxcdCpkc3RfY2FjaGU7XFxuK1xcdHUzMlxcdFxcdFxcdFxcdGRzdF9jb29raWU7XFxuIFxcdHVuaW9uIHtcXG4gXFx0XFx0c3RydWN0IHtcXG4tXFx0XFx0XFx0c3RydWN0IGRzdF9lbnRyeSAqZHN0X2NhY2hlO1xcbiBcXHRcXHRcXHR1MzJcXHRcXHRpZmlkeDtcXG4tXFx0XFx0XFx0dTMyXFx0XFx0ZHN0X2Nvb2tpZTtcXG4gXFx0XFx0fTtcXG4gXFx0XFx0c3RydWN0IHtcXG4gXFx0XFx0XFx0dTMyXFx0XFx0aWZpZHg7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXFxuaW5kZXggOTljNWI5ZDY3MWEwY2EuLjZmMTk1Y2NmMjIyYTkzIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXFxuQEAgLTEyNywxMiArMTI3LDIxIEBAIHN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG4gXFxuIFxcdHN3aXRjaCAocm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ueG1pdF90eXBlKSB7XFxuIFxcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUOlxcbitcXHRcXHRpZiAoZmxvd190dXBsZS1cXHUwMDNldHVuX251bSkge1xcbitcXHRcXHRcXHRmbG93X3R1cGxlLVxcdTAwM2Vkc3RfY2FjaGUgPSBkc3Q7XFxuK1xcdFxcdFxcdGZsb3dfdHVwbGUtXFx1MDAzZWRzdF9jb29raWUgPVxcbitcXHRcXHRcXHRcXHRmbG93X29mZmxvYWRfZHN0X2Nvb2tpZShmbG93X3R1cGxlKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0Zmxvd190dXBsZS1cXHUwMDNlZHN0X2NhY2hlID0gTlVMTDtcXG4rXFx0XFx0XFx0Zmxvd190dXBsZS1cXHUwMDNlZHN0X2Nvb2tpZSA9IDA7XFxuK1xcdFxcdH1cXG4gXFx0XFx0bWVtY3B5KGZsb3dfdHVwbGUtXFx1MDAzZW91dC5oX2Rlc3QsIHJvdXRlLVxcdTAwM2V0dXBsZVtkaXJdLm91dC5oX2Rlc3QsXFxuIFxcdFxcdCAgICAgICBFVEhfQUxFTik7XFxuIFxcdFxcdG1lbWNweShmbG93X3R1cGxlLVxcdTAwM2VvdXQuaF9zb3VyY2UsIHJvdXRlLVxcdTAwM2V0dXBsZVtkaXJdLm91dC5oX3NvdXJjZSxcXG4gXFx0XFx0ICAgICAgIEVUSF9BTEVOKTtcXG4gXFx0XFx0Zmxvd190dXBsZS1cXHUwMDNlb3V0LmlmaWR4ID0gcm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ub3V0LmlmaW5kZXg7XFxuLVxcdFxcdGRzdF9yZWxlYXNlKGRzdCk7XFxuK1xcdFxcdGlmICghZmxvd190dXBsZS1cXHUwMDNldHVuX251bSlcXG4rXFx0XFx0XFx0ZHN0X3JlbGVhc2UoZHN0KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfWEZSTTpcXG4gXFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ORUlHSDpcXG5AQCAtMTUyLDkgKzE2MSw3IEBAIHN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG4gc3RhdGljIHZvaWQgbmZ0X2Zsb3dfZHN0X3JlbGVhc2Uoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG4gXFx0XFx0XFx0XFx0IGVudW0gZmxvd19vZmZsb2FkX3R1cGxlX2RpciBkaXIpXFxuIHtcXG4tXFx0aWYgKGZsb3ctXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLnhtaXRfdHlwZSA9PSBGTE9XX09GRkxPQURfWE1JVF9ORUlHSCB8fFxcbi1cXHQgICAgZmxvdy1cXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGUueG1pdF90eXBlID09IEZMT1dfT0ZGTE9BRF9YTUlUX1hGUk0pXFxuLVxcdFxcdGRzdF9yZWxlYXNlKGZsb3ctXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLmRzdF9jYWNoZSk7XFxuK1xcdGRzdF9yZWxlYXNlKGZsb3ctXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLmRzdF9jYWNoZSk7XFxuIH1cXG4gXFxuIHZvaWQgZmxvd19vZmZsb2FkX3JvdXRlX2luaXQoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuY1xcbmluZGV4IDI5ZTkzYWMxZTJlNDAwLi4wYjc4ZGVjY2U4YTliZCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jXFxuQEAgLTI5OSw4ICsyOTksNyBAQCBzdGF0aWMgYm9vbCBuZl9mbG93X2V4Y2VlZHNfbXR1KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBtdHUpXFxuIFxcbiBzdGF0aWMgaW5saW5lIGJvb2wgbmZfZmxvd19kc3RfY2hlY2soc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZSAqdHVwbGUpXFxuIHtcXG4tXFx0aWYgKHR1cGxlLVxcdTAwM2V4bWl0X3R5cGUgIT0gRkxPV19PRkZMT0FEX1hNSVRfTkVJR0ggXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIHR1cGxlLVxcdTAwM2V4bWl0X3R5cGUgIT0gRkxPV19PRkZMT0FEX1hNSVRfWEZSTSlcXG4rXFx0aWYgKCF0dXBsZS1cXHUwMDNlZHN0X2NhY2hlKVxcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFxuIFxcdHJldHVybiBkc3RfY2hlY2sodHVwbGUtXFx1MDAzZWRzdF9jYWNoZSwgdHVwbGUtXFx1MDAzZWRzdF9jb29raWUpO1xcbkBAIC01OTAsMTAgKzU4OSwxMCBAQCBzdGF0aWMgaW50IG5mX2Zsb3dfcHBwb2VfcHVzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgaWQsXFxuIFxcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSxcXG4tXFx0XFx0XFx0XFx0ICAgIF9fYmUzMiAqaXBfZGFkZHIpXFxuK1xcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIF9fYmUzMiAqaXBfZGFkZHIpXFxuIHtcXG4gXFx0c3RydWN0IGlwaGRyICppcGggPSAoc3RydWN0IGlwaGRyICopc2tiX25ldHdvcmtfaGVhZGVyKHNrYik7XFxuLVxcdHN0cnVjdCBydGFibGUgKnJ0ID0gZHN0X3J0YWJsZSh0dXBsZS1cXHUwMDNlZHN0X2NhY2hlKTtcXG4rXFx0c3RydWN0IHJ0YWJsZSAqcnQgPSBkc3RfcnRhYmxlKGRzdCk7XFxuIFxcdHU4IHRvcyA9IGlwaC1cXHUwMDNldG9zLCB0dGwgPSBpcGgtXFx1MDAzZXR0bDtcXG4gXFx0X19iZTE2IGZyYWdfb2ZmID0gaXBoLVxcdTAwM2VmcmFnX29mZjtcXG4gXFx0dTMyIGhlYWRyb29tID0gc2l6ZW9mKCppcGgpO1xcbkBAIC02MzYsMjEgKzYzNSwyMiBAQCBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX3Y0X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUgKnR1cGxlLFxcbi1cXHRcXHRcXHRcXHQgIF9fYmUzMiAqaXBfZGFkZHIpXFxuK1xcdFxcdFxcdFxcdCAgc3RydWN0IGRzdF9lbnRyeSAqZHN0LCAgX19iZTMyICppcF9kYWRkcilcXG4ge1xcbiBcXHRpZiAodHVwbGUtXFx1MDAzZXR1bl9udW0pXFxuLVxcdFxcdHJldHVybiBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gobmV0LCBza2IsIHR1cGxlLCBpcF9kYWRkcik7XFxuK1xcdFxcdHJldHVybiBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gobmV0LCBza2IsIHR1cGxlLCBkc3QsIGlwX2RhZGRyKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZSAqdHVwbGUsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkc3RfZW50cnkgKmRzdCxcXG4gXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGluNl9hZGRyICoqaXA2X2RhZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBpcHY2aGRyICppcDZoID0gKHN0cnVjdCBpcHY2aGRyICopc2tiX25ldHdvcmtfaGVhZGVyKHNrYik7XFxuLVxcdHN0cnVjdCBydGFibGUgKnJ0ID0gZHN0X3J0YWJsZSh0dXBsZS1cXHUwMDNlZHN0X2NhY2hlKTtcXG4gXFx0X191OCBkc2ZpZWxkID0gaXB2Nl9nZXRfZHNmaWVsZChpcDZoKTtcXG4rXFx0c3RydWN0IHJ0YWJsZSAqcnQgPSBkc3RfcnRhYmxlKGRzdCk7XFxuIFxcdHN0cnVjdCBmbG93aTYgZmw2ID0ge1xcbiBcXHRcXHQuZGFkZHIgPSB0dXBsZS1cXHUwMDNldHVuLnNyY192NixcXG4gXFx0XFx0LnNhZGRyID0gdHVwbGUtXFx1MDAzZXR1bi5kc3RfdjYsXFxuQEAgLTY5NiwxMCArNjk2LDExIEBAIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gc3RhdGljIGludCBuZl9mbG93X3R1bm5lbF92Nl9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IGluNl9hZGRyICoqaXA2X2RhZGRyKVxcbiB7XFxuIFxcdGlmICh0dXBsZS1cXHUwMDNldHVuX251bSlcXG4tXFx0XFx0cmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgaXA2X2RhZGRyKTtcXG4rXFx0XFx0cmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgZHN0LCBpcDZfZGFkZHIpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtODQyLDcgKzg0Myw4IEBAIG5mX2Zsb3dfb2ZmbG9hZF9pcF9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdG90aGVyX3R1cGxlID0gXFx1MDAyNmZsb3ctXFx1MDAzZXR1cGxlaGFzaFshZGlyXS50dXBsZTtcXG4gXFx0aXBfZGFkZHIgPSBvdGhlcl90dXBsZS1cXHUwMDNlc3JjX3Y0LnNfYWRkcjtcXG4gXFxuLVxcdGlmIChuZl9mbG93X3R1bm5lbF92NF9wdXNoKHN0YXRlLVxcdTAwM2VuZXQsIHNrYiwgb3RoZXJfdHVwbGUsIFxcdTAwMjZpcF9kYWRkcikgXFx1MDAzYyAwKVxcbitcXHRpZiAobmZfZmxvd190dW5uZWxfdjRfcHVzaChzdGF0ZS1cXHUwMDNlbmV0LCBza2IsIG90aGVyX3R1cGxlLFxcbitcXHRcXHRcXHRcXHQgICB0dXBsZWhhc2gtXFx1MDAzZXR1cGxlLmRzdF9jYWNoZSwgXFx1MDAyNmlwX2RhZGRyKSBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBORl9EUk9QO1xcbiBcXG4gXFx0c3dpdGNoICh0dXBsZWhhc2gtXFx1MDAzZXR1cGxlLnhtaXRfdHlwZSkge1xcbkBAIC0xMTU4LDYgKzExNjAsNyBAQCBuZl9mbG93X29mZmxvYWRfaXB2Nl9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGlwNl9kYWRkciA9IFxcdTAwMjZvdGhlcl90dXBsZS1cXHUwMDNlc3JjX3Y2O1xcbiBcXG4gXFx0aWYgKG5mX2Zsb3dfdHVubmVsX3Y2X3B1c2goc3RhdGUtXFx1MDAzZW5ldCwgc2tiLCBvdGhlcl90dXBsZSxcXG4rXFx0XFx0XFx0XFx0ICAgdHVwbGVoYXNoLVxcdTAwM2V0dXBsZS5kc3RfY2FjaGUsXFxuIFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZpcDZfZGFkZHIpIFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIE5GX0RST1A7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuY1xcbmluZGV4IDAwMmVjMTVkOTg4YmRiLi4zZTg3MTE3ZTcyNGIzZiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuY1xcbkBAIC0xMTAxLDEyICsxMTAxLDIzIEBAIG5mX2Zsb3dfb2ZmbG9hZF93b3JrX2FsbG9jKHN0cnVjdCBuZl9mbG93dGFibGUgKmZsb3d0YWJsZSxcXG4gXFx0cmV0dXJuIG9mZmxvYWQ7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93KVxcbit7XFxuK1xcdGlmIChmbG93LVxcdTAwM2V0dXBsZWhhc2hbRkxPV19PRkZMT0FEX0RJUl9PUklHSU5BTF0udHVwbGUudHVuX251bSB8fFxcbitcXHQgICAgZmxvdy1cXHUwMDNldHVwbGVoYXNoW0ZMT1dfT0ZGTE9BRF9ESVJfUkVQTFldLnR1cGxlLnR1bl9udW0pXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbit9XFxuIFxcbiB2b2lkIG5mX2Zsb3dfb2ZmbG9hZF9hZGQoc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLFxcbiBcXHRcXHRcXHQgc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdylcXG4ge1xcbiBcXHRzdHJ1Y3QgZmxvd19vZmZsb2FkX3dvcmsgKm9mZmxvYWQ7XFxuIFxcbitcXHRpZiAobmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkKGZsb3cpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRvZmZsb2FkID0gbmZfZmxvd19vZmZsb2FkX3dvcmtfYWxsb2MoZmxvd3RhYmxlLCBmbG93LCBGTE9XX0NMU19SRVBMQUNFKTtcXG4gXFx0aWYgKCFvZmZsb2FkKVxcbiBcXHRcXHRyZXR1cm47XFxuQEAgLTExMTksNiArMTEzMCw5IEBAIHZvaWQgbmZfZmxvd19vZmZsb2FkX2RlbChzdHJ1Y3QgbmZfZmxvd3RhYmxlICpmbG93dGFibGUsXFxuIHtcXG4gXFx0c3RydWN0IGZsb3dfb2ZmbG9hZF93b3JrICpvZmZsb2FkO1xcbiBcXG4rXFx0aWYgKG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChmbG93KSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0b2ZmbG9hZCA9IG5mX2Zsb3dfb2ZmbG9hZF93b3JrX2FsbG9jKGZsb3d0YWJsZSwgZmxvdywgRkxPV19DTFNfREVTVFJPWSk7XFxuIFxcdGlmICghb2ZmbG9hZClcXG4gXFx0XFx0cmV0dXJuO1xcbkBAIC0xMTMzLDYgKzExNDcsOSBAQCB2b2lkIG5mX2Zsb3dfb2ZmbG9hZF9zdGF0cyhzdHJ1Y3QgbmZfZmxvd3RhYmxlICpmbG93dGFibGUsXFxuIFxcdHN0cnVjdCBmbG93X29mZmxvYWRfd29yayAqb2ZmbG9hZDtcXG4gXFx0X19zMzIgZGVsdGE7XFxuIFxcbitcXHRpZiAobmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkKGZsb3cpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRkZWx0YSA9IG5mX2Zsb3dfdGltZW91dF9kZWx0YShmbG93LVxcdTAwM2V0aW1lb3V0KTtcXG4gXFx0aWYgKChkZWx0YSBcXHUwMDNlPSAoOSAqIGZsb3dfb2ZmbG9hZF9nZXRfdGltZW91dChmbG93KSkgLyAxMCkpXFxuIFxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MDEuMjc5ODMxNDlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDQxODMyNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmbG93X29mZmxvYWRfZmlsbF9yb3V0ZVwiLFxuICAgIFwibmZfZmxvd190dW5uZWxfaXBpcF9wdXNoXCIsXG4gICAgXCJuZl9mbG93X3R1bm5lbF9pcDZpcDZfcHVzaFwiLFxuICAgIFwibmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbmV0ZmlsdGVyIGZsb3cgdGFibGUgbG9naWMsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgZHN0X2NhY2hlIGFuZCBkc3RfY29va2llIGFyZSBzdG9yZWQgYW5kIGhhbmRsZWQgZm9yIHR1bm5lbHMuIEl0IGFsc28gYWRkcyBhIGNoZWNrIHRvIHByZXZlbnQgaGFyZHdhcmUgb2ZmbG9hZCBmb3IgdW5zdXBwb3J0ZWQgdHVubmVsIGZsb3dzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGY2NTVkZDcyZGQ5YWE1ZWI4ZmExMjgyODE3YjU1OTA4N2I4YzMxZjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDA0OjA5OjAwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmhcbmluZGV4IDdiMjNiMjQ1YTVhODZhLi4zNjlmNmE3MTc4MTE0YyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmhcbisrKyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmhcbkBAIC0xNTUsMTEgKzE1NSwxMSBAQCBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlIHtcbiBcdFx0XHRcdFx0dHVuX251bToyLFxuIFx0XHRcdFx0XHRpbl92bGFuX2luZ3Jlc3M6MjtcbiBcdHUxNlx0XHRcdFx0bXR1O1xuK1x0c3RydWN0IGRzdF9lbnRyeVx0XHQqZHN0X2NhY2hlO1xuK1x0dTMyXHRcdFx0XHRkc3RfY29va2llO1xuIFx0dW5pb24ge1xuIFx0XHRzdHJ1Y3Qge1xuLVx0XHRcdHN0cnVjdCBkc3RfZW50cnkgKmRzdF9jYWNoZTtcbiBcdFx0XHR1MzJcdFx0aWZpZHg7XG4tXHRcdFx0dTMyXHRcdGRzdF9jb29raWU7XG4gXHRcdH07XG4gXHRcdHN0cnVjdCB7XG4gXHRcdFx0dTMyXHRcdGlmaWR4O1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXG5pbmRleCA5OWM1YjlkNjcxYTBjYS4uNmYxOTVjY2YyMjJhOTMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXG5AQCAtMTI3LDEyICsxMjcsMjEgQEAgc3RhdGljIGludCBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZShzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LFxuIFxuIFx0c3dpdGNoIChyb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLnhtaXRfdHlwZSkge1xuIFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XG4rXHRcdGlmIChmbG93X3R1cGxlLVx1MDAzZXR1bl9udW0pIHtcbitcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jYWNoZSA9IGRzdDtcbitcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jb29raWUgPVxuK1x0XHRcdFx0Zmxvd19vZmZsb2FkX2RzdF9jb29raWUoZmxvd190dXBsZSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0Zmxvd190dXBsZS1cdTAwM2Vkc3RfY2FjaGUgPSBOVUxMO1xuK1x0XHRcdGZsb3dfdHVwbGUtXHUwMDNlZHN0X2Nvb2tpZSA9IDA7XG4rXHRcdH1cbiBcdFx0bWVtY3B5KGZsb3dfdHVwbGUtXHUwMDNlb3V0LmhfZGVzdCwgcm91dGUtXHUwMDNldHVwbGVbZGlyXS5vdXQuaF9kZXN0LFxuIFx0XHQgICAgICAgRVRIX0FMRU4pO1xuIFx0XHRtZW1jcHkoZmxvd190dXBsZS1cdTAwM2VvdXQuaF9zb3VyY2UsIHJvdXRlLVx1MDAzZXR1cGxlW2Rpcl0ub3V0Lmhfc291cmNlLFxuIFx0XHQgICAgICAgRVRIX0FMRU4pO1xuIFx0XHRmbG93X3R1cGxlLVx1MDAzZW91dC5pZmlkeCA9IHJvdXRlLVx1MDAzZXR1cGxlW2Rpcl0ub3V0LmlmaW5kZXg7XG4tXHRcdGRzdF9yZWxlYXNlKGRzdCk7XG4rXHRcdGlmICghZmxvd190dXBsZS1cdTAwM2V0dW5fbnVtKVxuK1x0XHRcdGRzdF9yZWxlYXNlKGRzdCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9YRlJNOlxuIFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ORUlHSDpcbkBAIC0xNTIsOSArMTYxLDcgQEAgc3RhdGljIGludCBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZShzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LFxuIHN0YXRpYyB2b2lkIG5mdF9mbG93X2RzdF9yZWxlYXNlKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXG4gXHRcdFx0XHQgZW51bSBmbG93X29mZmxvYWRfdHVwbGVfZGlyIGRpcilcbiB7XG4tXHRpZiAoZmxvdy1cdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS54bWl0X3R5cGUgPT0gRkxPV19PRkZMT0FEX1hNSVRfTkVJR0ggfHxcbi1cdCAgICBmbG93LVx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLnhtaXRfdHlwZSA9PSBGTE9XX09GRkxPQURfWE1JVF9YRlJNKVxuLVx0XHRkc3RfcmVsZWFzZShmbG93LVx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLmRzdF9jYWNoZSk7XG4rXHRkc3RfcmVsZWFzZShmbG93LVx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLmRzdF9jYWNoZSk7XG4gfVxuIFxuIHZvaWQgZmxvd19vZmZsb2FkX3JvdXRlX2luaXQoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jXG5pbmRleCAyOWU5M2FjMWUyZTQwMC4uMGI3OGRlY2NlOGE5YmQgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmNcbkBAIC0yOTksOCArMjk5LDcgQEAgc3RhdGljIGJvb2wgbmZfZmxvd19leGNlZWRzX210dShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbXR1KVxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBuZl9mbG93X2RzdF9jaGVjayhzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSlcbiB7XG4tXHRpZiAodHVwbGUtXHUwMDNleG1pdF90eXBlICE9IEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHR1cGxlLVx1MDAzZXhtaXRfdHlwZSAhPSBGTE9XX09GRkxPQURfWE1JVF9YRlJNKVxuK1x0aWYgKCF0dXBsZS1cdTAwM2Vkc3RfY2FjaGUpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuIFx0cmV0dXJuIGRzdF9jaGVjayh0dXBsZS1cdTAwM2Vkc3RfY2FjaGUsIHR1cGxlLVx1MDAzZWRzdF9jb29raWUpO1xuQEAgLTU5MCwxMCArNTg5LDEwIEBAIHN0YXRpYyBpbnQgbmZfZmxvd19wcHBvZV9wdXNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiBpZCxcbiBcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICAgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZSAqdHVwbGUsXG4tXHRcdFx0XHQgICAgX19iZTMyICppcF9kYWRkcilcbitcdFx0XHRcdCAgICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIF9fYmUzMiAqaXBfZGFkZHIpXG4ge1xuIFx0c3RydWN0IGlwaGRyICppcGggPSAoc3RydWN0IGlwaGRyICopc2tiX25ldHdvcmtfaGVhZGVyKHNrYik7XG4tXHRzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUodHVwbGUtXHUwMDNlZHN0X2NhY2hlKTtcbitcdHN0cnVjdCBydGFibGUgKnJ0ID0gZHN0X3J0YWJsZShkc3QpO1xuIFx0dTggdG9zID0gaXBoLVx1MDAzZXRvcywgdHRsID0gaXBoLVx1MDAzZXR0bDtcbiBcdF9fYmUxNiBmcmFnX29mZiA9IGlwaC1cdTAwM2VmcmFnX29mZjtcbiBcdHUzMiBoZWFkcm9vbSA9IHNpemVvZigqaXBoKTtcbkBAIC02MzYsMjEgKzYzNSwyMiBAQCBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gc3RhdGljIGludCBuZl9mbG93X3R1bm5lbF92NF9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZSAqdHVwbGUsXG4tXHRcdFx0XHQgIF9fYmUzMiAqaXBfZGFkZHIpXG4rXHRcdFx0XHQgIHN0cnVjdCBkc3RfZW50cnkgKmRzdCwgIF9fYmUzMiAqaXBfZGFkZHIpXG4ge1xuIFx0aWYgKHR1cGxlLVx1MDAzZXR1bl9udW0pXG4tXHRcdHJldHVybiBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gobmV0LCBza2IsIHR1cGxlLCBpcF9kYWRkcik7XG4rXHRcdHJldHVybiBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gobmV0LCBza2IsIHR1cGxlLCBkc3QsIGlwX2RhZGRyKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUgKnR1cGxlLFxuK1x0XHRcdFx0ICAgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IGluNl9hZGRyICoqaXA2X2RhZGRyKVxuIHtcbiBcdHN0cnVjdCBpcHY2aGRyICppcDZoID0gKHN0cnVjdCBpcHY2aGRyICopc2tiX25ldHdvcmtfaGVhZGVyKHNrYik7XG4tXHRzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUodHVwbGUtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdF9fdTggZHNmaWVsZCA9IGlwdjZfZ2V0X2RzZmllbGQoaXA2aCk7XG4rXHRzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUoZHN0KTtcbiBcdHN0cnVjdCBmbG93aTYgZmw2ID0ge1xuIFx0XHQuZGFkZHIgPSB0dXBsZS1cdTAwM2V0dW4uc3JjX3Y2LFxuIFx0XHQuc2FkZHIgPSB0dXBsZS1cdTAwM2V0dW4uZHN0X3Y2LFxuQEAgLTY5NiwxMCArNjk2LDExIEBAIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfdjZfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgIHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUgKnR1cGxlLFxuK1x0XHRcdFx0ICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXG4gXHRcdFx0XHQgIHN0cnVjdCBpbjZfYWRkciAqKmlwNl9kYWRkcilcbiB7XG4gXHRpZiAodHVwbGUtXHUwMDNldHVuX251bSlcbi1cdFx0cmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgaXA2X2RhZGRyKTtcbitcdFx0cmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgZHN0LCBpcDZfZGFkZHIpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTg0Miw3ICs4NDMsOCBAQCBuZl9mbG93X29mZmxvYWRfaXBfaG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0b3RoZXJfdHVwbGUgPSBcdTAwMjZmbG93LVx1MDAzZXR1cGxlaGFzaFshZGlyXS50dXBsZTtcbiBcdGlwX2RhZGRyID0gb3RoZXJfdHVwbGUtXHUwMDNlc3JjX3Y0LnNfYWRkcjtcbiBcbi1cdGlmIChuZl9mbG93X3R1bm5lbF92NF9wdXNoKHN0YXRlLVx1MDAzZW5ldCwgc2tiLCBvdGhlcl90dXBsZSwgXHUwMDI2aXBfZGFkZHIpIFx1MDAzYyAwKVxuK1x0aWYgKG5mX2Zsb3dfdHVubmVsX3Y0X3B1c2goc3RhdGUtXHUwMDNlbmV0LCBza2IsIG90aGVyX3R1cGxlLFxuK1x0XHRcdFx0ICAgdHVwbGVoYXNoLVx1MDAzZXR1cGxlLmRzdF9jYWNoZSwgXHUwMDI2aXBfZGFkZHIpIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcbiBcdHN3aXRjaCAodHVwbGVoYXNoLVx1MDAzZXR1cGxlLnhtaXRfdHlwZSkge1xuQEAgLTExNTgsNiArMTE2MCw3IEBAIG5mX2Zsb3dfb2ZmbG9hZF9pcHY2X2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlwNl9kYWRkciA9IFx1MDAyNm90aGVyX3R1cGxlLVx1MDAzZXNyY192NjtcbiBcbiBcdGlmIChuZl9mbG93X3R1bm5lbF92Nl9wdXNoKHN0YXRlLVx1MDAzZW5ldCwgc2tiLCBvdGhlcl90dXBsZSxcbitcdFx0XHRcdCAgIHR1cGxlaGFzaC1cdTAwM2V0dXBsZS5kc3RfY2FjaGUsXG4gXHRcdFx0XHQgICBcdTAwMjZpcDZfZGFkZHIpIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuY1xuaW5kZXggMDAyZWMxNWQ5ODhiZGIuLjNlODcxMTdlNzI0YjNmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuY1xuQEAgLTExMDEsMTIgKzExMDEsMjMgQEAgbmZfZmxvd19vZmZsb2FkX3dvcmtfYWxsb2Moc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLFxuIFx0cmV0dXJuIG9mZmxvYWQ7XG4gfVxuIFxuK3N0YXRpYyBib29sIG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93KVxuK3tcbitcdGlmIChmbG93LVx1MDAzZXR1cGxlaGFzaFtGTE9XX09GRkxPQURfRElSX09SSUdJTkFMXS50dXBsZS50dW5fbnVtIHx8XG4rXHQgICAgZmxvdy1cdTAwM2V0dXBsZWhhc2hbRkxPV19PRkZMT0FEX0RJUl9SRVBMWV0udHVwbGUudHVuX251bSlcbitcdFx0cmV0dXJuIHRydWU7XG4rXG4rXHRyZXR1cm4gZmFsc2U7XG4rfVxuIFxuIHZvaWQgbmZfZmxvd19vZmZsb2FkX2FkZChzdHJ1Y3QgbmZfZmxvd3RhYmxlICpmbG93dGFibGUsXG4gXHRcdFx0IHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3cpXG4ge1xuIFx0c3RydWN0IGZsb3dfb2ZmbG9hZF93b3JrICpvZmZsb2FkO1xuIFxuK1x0aWYgKG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChmbG93KSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0b2ZmbG9hZCA9IG5mX2Zsb3dfb2ZmbG9hZF93b3JrX2FsbG9jKGZsb3d0YWJsZSwgZmxvdywgRkxPV19DTFNfUkVQTEFDRSk7XG4gXHRpZiAoIW9mZmxvYWQpXG4gXHRcdHJldHVybjtcbkBAIC0xMTE5LDYgKzExMzAsOSBAQCB2b2lkIG5mX2Zsb3dfb2ZmbG9hZF9kZWwoc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLFxuIHtcbiBcdHN0cnVjdCBmbG93X29mZmxvYWRfd29yayAqb2ZmbG9hZDtcbiBcbitcdGlmIChuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWQoZmxvdykpXG4rXHRcdHJldHVybjtcbitcbiBcdG9mZmxvYWQgPSBuZl9mbG93X29mZmxvYWRfd29ya19hbGxvYyhmbG93dGFibGUsIGZsb3csIEZMT1dfQ0xTX0RFU1RST1kpO1xuIFx0aWYgKCFvZmZsb2FkKVxuIFx0XHRyZXR1cm47XG5AQCAtMTEzMyw2ICsxMTQ3LDkgQEAgdm9pZCBuZl9mbG93X29mZmxvYWRfc3RhdHMoc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLFxuIFx0c3RydWN0IGZsb3dfb2ZmbG9hZF93b3JrICpvZmZsb2FkO1xuIFx0X19zMzIgZGVsdGE7XG4gXG4rXHRpZiAobmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkKGZsb3cpKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRkZWx0YSA9IG5mX2Zsb3dfdGltZW91dF9kZWx0YShmbG93LVx1MDAzZXRpbWVvdXQpO1xuIFx0aWYgKChkZWx0YSBcdTAwM2U9ICg5ICogZmxvd19vZmZsb2FkX2dldF90aW1lb3V0KGZsb3cpKSAvIDEwKSlcbiBcdFx0cmV0dXJuO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MDEuMjc5ODMyODdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTMzNzM1NjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIEZsb3cgVGFibGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHBva2luZyBhcm91bmQgaW4gdGhlIG5ldGZpbHRlciBmbG93IHRhYmxlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgdGhlIGBkc3RfY2FjaGVgIGFuZCBgZHN0X2Nvb2tpZWAgd2l0aGluIHRoZSBgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZWAuIFRoaXMgc2VlbXMgcHJldHR5IHNpZ25pZmljYW50IOKAkyB0aGV5J3JlIG1vdmluZyB0aGVtIG91dCBvZiB0aGUgdW5pb24sIHNvIHRoZXkncmUgYWx3YXlzIHByZXNlbnQuIFRoYXQncyBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiBob3cgdGhlIHRhYmxlIHJlcHJlc2VudHMgdGhlc2UgZGVzdGluYXRpb24tcmVsYXRlZCBhdHRyaWJ1dGVzLCBzdWdnZXN0aW5nIHBvdGVudGlhbGx5IGJyb2FkZXIgcGVyZm9ybWFuY2Ugb3IgY29ycmVjdG5lc3MgaW1wbGljYXRpb25zLCBlc3BlY2lhbGx5IHdpdGggY29uY3VycmVudCBhY2Nlc3Mgb3Igc3RhdGUgbWFuYWdlbWVudC5cblxuVGhlIGNvcmUgb2YgaXQgaXMgdGhlIG1hbmlwdWxhdGlvbiBvZiB0aGUgYGRzdF9jYWNoZWAgYW5kIGBkc3RfY29va2llYCBwb2ludGVycy4gYGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlYCBpcyBiZWluZyBtb2RpZmllZCB0byBzZXQgdGhlbSBldmVuIGZvciBgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUYCwgd2hlbiB0aGUgdHVubmVsIG51bWJlciBpcyBub24temVyby4gVGhlIGNoYW5nZSBhbHNvIG1vZGlmaWVzIHRoZSBgbmZ0X2Zsb3dfZHN0X3JlbGVhc2VgIGZ1bmN0aW9uIHNvIHRoYXQgaXQgKmFsd2F5cyogcmVsZWFzZXMgdGhlIGBkc3RfY2FjaGVgIHVzaW5nIGBkc3RfcmVsZWFzZWAsIHJlZ2FyZGxlc3Mgb2Ygb3RoZXIgY29uZGl0aW9ucy4gQWxzbywgYG5mX2Zsb3dfZHN0X2NoZWNrYCBpcyBiZWluZyBhZGp1c3RlZCB0byBjaGVjayBmb3IgdGhlIGFic2VuY2Ugb2YgYHR1cGxlLVx1MDAzZWRzdF9jYWNoZWAgYXMgaXRzIHByaW1hcnkgY29uZGl0aW9uLCBpbnN0ZWFkIG9mIGFuIG9sZGVyIGB4bWl0X3R5cGVgIGNvbmRpdGlvbi5cblxuT24gdG9wIG9mIHRoaXMsIHR1bm5lbCBoYW5kbGluZyBpcyBiZWluZyByZXdvcmtlZC4gVGhlIGBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2hgIGFuZCBgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hgIGZ1bmN0aW9ucyBhcmUgbm93IHJlY2VpdmluZyBhIGBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RgIGFzIGFuIGFyZ3VtZW50IGluc3RlYWQgb2YgcmV0cmlldmluZyB0aGUgZGVzdGluYXRpb24gZnJvbSB0aGUgdHVwbGUgY2FjaGUuIFRoaXMgbGlrZWx5IG1lYW5zIHNvbWUgcmVmYWN0b3JpbmcgdG8gaW1wcm92ZSBjb2RlIGNsYXJpdHkgb3IgaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSB0dXBsZSBkb2Vzbid0IGhhdmUgdGhlIGNhY2hlZCBkZXN0aW5hdGlvbi4gQW5kIGZpbmFsbHksIHNvbWUgb2YgdGhlIGZsb3cgb2ZmbG9hZCBmdW5jdGlvbnMgKGBuZl9mbG93X29mZmxvYWRfYWRkYCwgYG5mX2Zsb3dfb2ZmbG9hZF9kZWxgLCBhbmQgYG5mX2Zsb3dfb2ZmbG9hZF9zdGF0c2ApIGhhdmUgYW4gZWFybHkgZXhpdCBjb25kaXRpb24sIGJhc2VkIG9uIHRoZSBuZXcgYG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZGAgY2hlY2sgKHdoaWNoIGNvbnNpZGVycyBhIG5vbi16ZXJvIHR1bm5lbCBudW1iZXIgaW4gZWl0aGVyIGRpcmVjdGlvbikuXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBpdCdzIHRvdWNoaW5nIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBJUC9JUHY2IHR1bm5lbHMgYXJlIHJlcHJlc2VudGVkIGFuZCBoYW5kbGVkIHdpdGhpbiB0aGUgZmxvdyB0YWJsZS4gVGhhdCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgZ2l2ZW4gdGhhdCB0dW5uZWwgaGFuZGxpbmcgaXMgYSBjb21wbGV4IGFyZWEgd2l0aCBwbGVudHkgb2YgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGludGVyYWN0aW9ucy5cblxuVG8gbWFrZSBzdXJlIHdlJ3JlIGZvY3VzZWQsIGxldCdzIG5haWwgZG93biB3aGF0IGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQgb3IgYWZmZWN0ZWQuIEkgY2FuIHNlZSB0aGUgbGlzdDogYGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlYCwgYG5mdF9mbG93X2RzdF9yZWxlYXNlYCwgYG5mX2Zsb3dfZHN0X2NoZWNrYCwgYG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaGAsIGBuZl9mbG93X3R1bm5lbF92NF9wdXNoYCwgYG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoYCwgYG5mX2Zsb3dfdHVubmVsX3Y2X3B1c2hgLCBgbmZfZmxvd19vZmZsb2FkX2lwX2hvb2tgLCBgbmZfZmxvd19vZmZsb2FkX2lwdjZfaG9va2AsIGBuZl9mbG93X29mZmxvYWRfd29ya19hbGxvY2AsIGBuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWRgLCBgbmZfZmxvd19vZmZsb2FkX2FkZGAsIGBuZl9mbG93X29mZmxvYWRfZGVsYCwgYW5kIGBuZl9mbG93X29mZmxvYWRfc3RhdHNgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBidXQgd2UgbmVlZCB0byBwcmlvcml0aXplLlxuXG5CYXNlZCBvbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzLCBmb2N1c2luZyBvbiBgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGVgLCBgbmZfZmxvd190dW5uZWxfaXBpcF9wdXNoYCwgYG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoYCwgYW5kIGBuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWRgIHNlZW1zIGxpa2UgdGhlIHNtYXJ0ZXN0IG1vdmUgcmlnaHQgbm93LiBUaG9zZSBhcmUgdGhlIG9uZXMgd2hlcmUgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmUgKGFuZCBpdHMgcmVsYXRpb24gdG8gdHVubmVscykgaXMgYmVpbmcgdXBkYXRlZC5cblxuTm93LCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGFuZCBtYWtlIHN1cmUgdGhpcyBjb2RlIGlzIGJlaW5nIGJ1aWx0IGNvcnJlY3RseS4gSSBzaG91bGQgbG9vayBpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmNgLCBgbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmNgLCBhbmQgYG5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmNgIHNvdXJjZSBmaWxlcy4gTGV0J3MgbWFrZSBzdXJlIHRoYXQgYG5mX2Zsb3dfdGFibGVfY29yZS5vYCBpcyBpbmRlZWQgYmVpbmcgY29tcGlsZWQsIGFuZCB0aGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUyOSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjA5OjEwLjIxMzU3MDMzNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTI0MjI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9mbG93X3RhYmxlX2NvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mj1vYmotJChDT05GSUdfTkZfRkxPV19UQUJMRSlcXHQrPSBuZl9mbG93X3RhYmxlLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0MzpuZl9mbG93X3RhYmxlLW9ianNcXHRcXHQ6PSBuZl9mbG93X3RhYmxlX2NvcmUubyBuZl9mbG93X3RhYmxlX2lwLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQ0LVxcdFxcdFxcdFxcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MTAuMjcyODE4NzcyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1OTgyNjE2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9uOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRoZSBpbml0aWFsIGZvY3VzIGlzIGBDT05GSUdfTkZfRkxPV19UQUJMRWAuIFRoYXQncyBhIGtleSByZXF1aXJlbWVudCwgbm8gZG91YnQuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGRlcGVuZGVuY2llcyBvciBjby1yZXF1aXNpdGVzLiBBaGEsIG9rYXksIEkgc2VlIGBuZl9mbG93X3RhYmxlX29mZmxvYWQuY2AgaXMgZmxhZ2dlZCBhcyBiZWluZyBtb2RpZmllZCBhcyB3ZWxsLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgZmxvdyB0YWJsZSBvZmZsb2FkIGNhcGFiaWxpdGllcyBhcmUgaGVhdmlseSBpbnRlcnR3aW5lZCB3aXRoIHRoZSBiYXNlIGZsb3cgdGFibGUgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIGtlZXAgdGhpcyBpbiBtaW5kIGFzIEkgZGVsdmUgZnVydGhlciBpbnRvIHRoZSBzcGVjaWZpYyBjaGFuZ2VzLCBhbmQgbG9vayBhdCB0aGUgaW50ZXJhY3Rpb24gb2YgdGhvc2UgZmlsZXMgdG8gc2VlIGhvdyB0aG9zZSBhcmUgdGllZCB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIyNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjA5OjEzLjIzMjY0NzA2N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTc0NDA3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9mbG93X3RhYmxlX29mZmxvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mz1uZl9mbG93X3RhYmxlLW9ianNcXHRcXHQ6PSBuZl9mbG93X3RhYmxlX2NvcmUubyBuZl9mbG93X3RhYmxlX2lwLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQ0LVxcdFxcdFxcdFxcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NTpcXHRcXHRcXHRcXHQgICBuZl9mbG93X3RhYmxlX29mZmxvYWQubyBuZl9mbG93X3RhYmxlX3hkcC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNDYtbmZfZmxvd190YWJsZS0kKENPTkZJR19ORl9GTE9XX1RBQkxFX1BST0NGUykgKz0gbmZfZmxvd190YWJsZV9wcm9jZnMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDowOToxMy4yODgzOTY0MzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzgzNDA5MTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRGl2aW5nIGludG8gdGhlIE5ldGZpbHRlciBGbG93IFRhYmxlIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBJJ20gbG9va2luZyBhdCB0aGlzIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uYWxpdHkgbGl2ZXMgd2l0aGluIHRoZSBgbmZfZmxvd190YWJsZS1vYmpzYCBvYmplY3QuIFNvLCBpbW1lZGlhdGVseSwgdGhhdCBzY3JlYW1zIGBDT05GSUdfTkZfRkxPV19UQUJMRWAgYXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBrbm9iIEkgc2hvdWxkIGJlIGNvbmNlcm5lZCB3aXRoLiBUaGF0J3MgdGhlIGJhc2VsaW5lLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgYG5mX2Zsb3dfdGFibGVfaXAuY2AgaXMgYWxzbyBpbiB0aGUgbWl4LiBTbywgdGhhdCBzdWdnZXN0cyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG1pZ2h0IGJlIHNwbGl0LCBvciBwZXJoYXBzIHRoZXJlIGFyZSBJUC1zcGVjaWZpYyBhc3BlY3RzIGludm9sdmVkLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuXG5cbk5vdyBJJ20gd29uZGVyaW5nLCBhcmUgdGhlcmUgKm90aGVyKiBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNvbWUgbW9yZSBncmFudWxhciBzZXR0aW5ncywgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSBjYW4ndCBqdXN0IGFzc3VtZSBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGlzIHRoZSAqb25seSogdGhpbmcuIEJlc3QgdG8gY2hlY2sgdGhlIHNvdXJjZS4gSSdsbCBuZWVkIHRvIGdvIHRvIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFuZCBsb29rIGZvciB0aGUgZGVmaW5pdGlvbiBvZiBgTkZfRkxPV19UQUJMRWAuIFRoYXQncyB3aGVyZSBJIGNhbiBmaW5kIGFsbCByZWxldmFudCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBmbG93IHRhYmxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MDIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDowOToxNi42NzE4MDc2NjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUxMjE5MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0ZMT1dfVEFCTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MDE9ZW5kaWYgIyBORl9UQUJMRVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzAyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MDM6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfSU5FVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MDQtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBmbG93IHRhYmxlIG1peGVkIElQdjQvSVB2NiBtb2R1bGVcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MTE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEyLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtb2R1bGVcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzIwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MjE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfUFJPQ0ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMi1cXHRib29sIFxcXCJTdXBwbHkgZmxvdyB0YWJsZSBzdGF0aXN0aWNzIGluIHByb2Nmc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MTYuNzI2OTQxMjg2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1NDUyOTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTkZfRkxPV19UQUJMRSBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBraWNrcyBpbiwgYW5kIEkgaW1tZWRpYXRlbHkgc3RhcnQgdG8gbWVudGFsbHkgbWFwIG91dCB0aGUgaW1wbGljYXRpb25zIG9mIFwiTkZfRkxPV19UQUJMRVwiIGRlcGVuZGVuY2llcy4gTXkgYnJhaW4ganVtcHMgcmlnaHQgdG8gZGVwZW5kZW5jeSBhbmFseXNpcy4gSSdtIGVzc2VudGlhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgbGlrZWx5IGNvbnN1bWVycyBhbmQgcHJvdmlkZXJzIG9mIHRoaXMgdGFibGUgaW4gbXkgaGVhZC4gV2hhdCBhcmUgdGhlIGNvcmUgbW9kdWxlcyB0aGF0IGFyZSBnb2luZyB0byBiZSBpbnRlcmFjdGluZyB3aXRoIHRoaXMgZGF0YSBzdHJ1Y3R1cmU/IElzIGl0IHByaW1hcmlseSB3aXRoaW4gdGhlIE5ldGZpbHRlciBjb250ZXh0LCBvciBhcmUgd2UgYnJhbmNoaW5nIG91dD8gQXJlIHRoZXJlIGV4dGVybmFsIHVzZXJzIHRoYXQgaGF2ZSBkZXZlbG9wZWQgcGx1Z2lucyB0aGF0IGludGVyYWN0IHdpdGggdGhpcyB0YWJsZT8gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzLCBvZiBjb3Vyc2UsIGFic29sdXRlbHkgY3J1Y2lhbCBiZWZvcmUgbWFraW5nIGFueSBtb2RpZmljYXRpb25zIG9yIGV2ZW4gZGlhZ25vc2luZyBwZXJmb3JtYW5jZSBpc3N1ZXMuIEl0IGRpY3RhdGVzIHRoZSBwb3RlbnRpYWwgYmxhc3QgcmFkaXVzIG9mIGFueSBjaGFuZ2VzLiBJIG5lZWQgdG8gYmUgdGhpbmtpbmcgYWJvdXQgdmVyc2lvbmluZywgQVBJIHN0YWJpbGl0eSwgYW5kIHBvdGVudGlhbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlcyByaWdodCBmcm9tIHRoZSBzdGFydCwgYXMgSSBjYW4gYXNzdW1lIHRoZSB1c2VyIGhhcyBhIGZhaXJseSBtYXR1cmUgY29kZWJhc2UuIEkgYWxzbyBzdGFydCB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIHN1YnN5c3RlbXMgZGlyZWN0bHkgYWNjZXNzaW5nIHRoZSB0YWJsZS4gSXMgdGhpcyBhbGwgY29udGFpbmVkLCBvciBpcyB0aGVyZSBhbnkgdXNlciBzcGFjZSBpbnRlcmFjdGlvbj8gSG93IGlzIHN5bmNocm9uaXphdGlvbiBoYW5kbGVkPyBMb2NrcywgYXRvbWljIG9wZXJhdGlvbnMsIHdoYXQncyB0aGUgc3RvcnkgdGhlcmU/IEkgc3RhcnQgdG8gdGhpbmsgYWJvdXQgdGhlIHBvc3NpYmxlIGZhaWx1cmUgcG9pbnRzIG9mIHRoZSBzeXN0ZW0uIEkgYWxzbyB0aGluayBhYm91dCBob3cgaXQncyBpbnRlZ3JhdGVkIHdpdGggb3RoZXIgdGhpbmdzLCBzdWNoIGFzIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3Igcm91dGluZy4gQW5kIHRoZW4gYWxzbyB3aGVyZSBpdCBoYXMgdXBzdHJlYW0vZG93bnN0cmVhbSBkZXBlbmRlbmNpZXMuIEZpbmFsbHksIHRoZSB0aG91Z2h0IG9mIHdoYXQgdG9vbHMgSSBoYXZlIHRvIHBlcmZvcm0gdGhlc2UgaW52ZXN0aWdhdGlvbnMgYWxzbyBwb3BzIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTcyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MjAuMTgxNDc0Mjk1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzgxNDk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfRkxPV19UQUJMRSRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MDM9Y29uZmlnIE5GX0ZMT1dfVEFCTEVfSU5FVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzExOmNvbmZpZyBORl9GTE9XX1RBQkxFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMi1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDowOToyMC4yMzkyOTY1MjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEzMzk2OTE0NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gTmV0ZmlsdGVyJ3MgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiBzb21ldGhpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24sIHNvIEknbSBoZWFkaW5nIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgbGlmZWJsb29kIG9mIExpbnV4IGNvbmZpZ3VyYXRpb24sIGFuZCBJJ20gaG9taW5nIGluIG9uIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFyb3VuZCBsaW5lIDcxMS4gVGhhdCBsaW5lLCBnaXZlIG9yIHRha2UgYSBmZXcsIGxpa2VseSBob2xkcyB0aGUga2V5IHRvIHRoZSBzZXR0aW5nIEknbSB0cnlpbmcgdG8gZGVjaXBoZXIgb3IgbW9kaWZ5LiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGRlZmluaXRpb24sIHBvdGVudGlhbGx5IHNvbWUgZGVwZW5kZW5jaWVzLCBtYXliZSBldmVuIGEgaGVscCB0ZXh0IHRoYXQncyB3b3J0aCBhIHF1aWNrIHNjYW4uIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgdGhlIGZlYXR1cmUgbGl2ZXMsIGFuZCB1bmRlcnN0YW5kaW5nIHRoaXMgc2VjdGlvbiBpcyBjcml0aWNhbC4gSSdtIGJyYWNpbmcgbXlzZWxmIGZvciB0aGUgdXN1YWwgS2NvbmZpZyBzeW50YXgg4oCTIHRoZSBgY29uZmlnYCBrZXl3b3JkLCB0aGUgdHlwZSBkZWNsYXJhdGlvbiwgbWF5YmUgc29tZSBgZGVwZW5kcyBvbmAgY2xhdXNlcywgYW5kIGhvcGVmdWxseSBzb21lIGNsZWFyLCBjb25jaXNlIGRvY3VtZW50YXRpb24uIExldCdzIHNlZSB3aGF0IHRyZWFzdXJlcyBhd2FpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYwOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjA5OjMxLjU3ODk5MDAxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNzA1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzA1OlxcdFxcdGRlcGVuZHMgb24gTkZfRkxPV19UQUJMRVxcbiA3MDY6XFx0XFx0aGVscFxcbiA3MDc6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBmbG93IHRhYmxlIG1peGVkIElQdjQvSVB2NiBzdXBwb3J0LlxcbiA3MDg6XFx0XFxuIDcwOTpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuIDcxMDpcXHRcXG4gNzExOlxcdGNvbmZpZyBORl9GTE9XX1RBQkxFXFxuIDcxMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXFxcIlxcbiA3MTM6XFx0XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfSU5HUkVTU1xcbiA3MTQ6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gNzE1OlxcdFxcdGRlcGVuZHMgb24gTkZfVEFCTEVTXFxuIDcxNjpcXHRcXHRoZWxwXFxuIDcxNzpcXHRcXHQgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIGZsb3cgdGFibGUgY29yZSBpbmZyYXN0cnVjdHVyZS5cXG4gNzE4OlxcdFxcbiA3MTk6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiA3MjA6XFx0XFxuIDcyMTpcXHRjb25maWcgTkZfRkxPV19UQUJMRV9QUk9DRlNcXG4gNzIyOlxcdFxcdGJvb2wgXFxcIlN1cHBseSBmbG93IHRhYmxlIHN0YXRpc3RpY3MgaW4gcHJvY2ZzXFxcIlxcbiA3MjM6XFx0XFx0ZGVwZW5kcyBvbiBORl9GTE9XX1RBQkxFXFxuIDcyNDpcXHRcXHRkZXBlbmRzIG9uIFBST0NfRlNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MzEuNTc5MDkyOTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3NjEyMTI5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSBgTkZfRkxPV19UQUJMRWAgaXMgdGhlIHByaW1hcnkgc3dpdGNoIGZvciB0aGUgZmxvdyB0YWJsZSBmdW5jdGlvbmFsaXR5LiBJbnRlcmVzdGluZywgSSBzaG91bGQgcHJvYmFibHkgZW5hYmxlIGBORl9GTE9XX1RBQkxFX0lORVRgIHRvbywgaWYgSSB3YW50IHRvIGhhbmRsZSBtaXhlZCBJUHY0L0lQdjYgdHJhZmZpYyDigJMgdGhhdCBjb3VsZCBiZSBpbXBvcnRhbnQuIFNpbmNlIEknbSBzZWVpbmcgY2hhbmdlcyBpbiBgbmZfZmxvd190YWJsZV9vZmZsb2FkLmNgLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBhbnkgaGFyZHdhcmUgb2ZmbG9hZCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZWxldmFudC4gTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgYmFzZWQgb24gdGhlIGtlcm5lbCBjb2RlLCBgbmZfZmxvd190YWJsZV9vZmZsb2FkLmNgIGlzIGFjdHVhbGx5IGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSBhcyBsb25nIGFzIGBORl9GTE9XX1RBQkxFYCBpcyBlbmFibGVkLiBJdCBzZWVtcyBJIG1hZGUgYSBiYWQgYXNzdW1wdGlvbi4gT2theSwgYmV0dGVyIGRvdWJsZSBjaGVjayB0aGUgTWFrZWZpbGUgaW4gYG5ldC9uZXRmaWx0ZXIvYCB0byBiZSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MzUuMDU1MjE2MzQ5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjUyNjIwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9mbG93X3RhYmxlX29mZmxvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mz1uZl9mbG93X3RhYmxlLW9ianNcXHRcXHQ6PSBuZl9mbG93X3RhYmxlX2NvcmUubyBuZl9mbG93X3RhYmxlX2lwLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQ0LVxcdFxcdFxcdFxcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NTpcXHRcXHRcXHRcXHQgICBuZl9mbG93X3RhYmxlX29mZmxvYWQubyBuZl9mbG93X3RhYmxlX3hkcC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNDYtbmZfZmxvd190YWJsZS0kKENPTkZJR19ORl9GTE9XX1RBQkxFX1BST0NGUykgKz0gbmZfZmxvd190YWJsZV9wcm9jZnMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDowOTozNS4xMTE3NDc4NDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxNzkyOTk1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipBbmFseXNpcyBvZiBOZXRmaWx0ZXIgRmxvdyBUYWJsZSBPZmZsb2FkIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkZWZpbml0aXZlbHkgdW5jb25kaXRpb25hbGx5IGNvbXBpbGVkIOKAkyB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzISBUaGUgcHJlc2VuY2Ugb2YgYE5GX0ZMT1dfVEFCTEVgIGlzIGVub3VnaCB0byBjb25maXJtIHRoYXQuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cbk5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlc2UgZm9jdXMgc3ltYm9scyB3ZSBoYXZlLiBgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGVgLCBgbmZfZmxvd190dW5uZWxfaXBpcF9wdXNoYCwgYG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoYCwgYW5kIGBuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWRg4oCmIFl1cCwgdGhvc2UgYXJlIGFsbCBzb2xpZCBpbmRpY2F0b3JzIG9mIHRoZSBwYXRjaCdzIHNjb3BlLiBUaGV5IGRpcmVjdGx5IHJlbGF0ZSB0byB0aGUgZmxvdyB0YWJsZSdzIGhhbmRsaW5nIG9mIHR1bm5lbHMgYW5kIGhhcmR3YXJlIG9mZmxvYWQsIGFuZCB0aGV5IGdpdmUgYSBjbGVhciBpbmRpY2F0aW9uIG9mIGZ1bmN0aW9uYWxpdHkgYmVpbmcgdG91Y2hlZC5cblxuVGhlIHBhdGNoIGFwcGVhcnMgdG8gbW9kaWZ5IGNvcmUgbmV0ZmlsdGVyIGZsb3cgdGFibGUgbG9naWMuIFRoaXMgaXMgaW4gbGluZSB3aXRoIHRoZSBkZXNjcmlwdGlvbnMsIGFuZCBjb25maXJtcyB0aGUgcmVsZXZhbmNlIG9mIHRoZSBzeW1ib2xzLiBJdCdzIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdHVubmVsIGhhbmRsaW5nIGFuZCBoYXJkd2FyZSBvZmZsb2FkIHBhdGhzLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLiBJdCBzZWVtcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCB3ZSB3YW50LlxuXG5JIHRoaW5rIHdlIGNhbiBzZXQgdGhlIHJlc3VsdHM7IGl0IGxvb2tzIGdvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2MzAsIk91dHB1dFRva2VucyI6MTQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjA5OjM5LjYyOTY4MTEwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxOTc0NjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9GTE9XX1RBQkxFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmxvd19vZmZsb2FkX2ZpbGxfcm91dGVcIixcbiAgICBcIm5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaFwiLFxuICAgIFwibmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hcIixcbiAgICBcIm5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG5ldGZpbHRlciBmbG93IHRhYmxlIGxvZ2ljLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRzdF9jYWNoZSBhbmQgZHN0X2Nvb2tpZSBhcmUgc3RvcmVkIGFuZCBoYW5kbGVkIGZvciB0dW5uZWxzLiBJdCBhbHNvIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGhhcmR3YXJlIG9mZmxvYWQgZm9yIHVuc3VwcG9ydGVkIHR1bm5lbCBmbG93cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9GTE9XX1RBQkxFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmxvd19vZmZsb2FkX2ZpbGxfcm91dGVcIixcbiAgICBcIm5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaFwiLFxuICAgIFwibmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hcIixcbiAgICBcIm5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG5ldGZpbHRlciBmbG93IHRhYmxlIGxvZ2ljLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRzdF9jYWNoZSBhbmQgZHN0X2Nvb2tpZSBhcmUgc3RvcmVkIGFuZCBoYW5kbGVkIGZvciB0dW5uZWxzLiBJdCBhbHNvIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGhhcmR3YXJlIG9mZmxvYWQgZm9yIHVuc3VwcG9ydGVkIHR1bm5lbCBmbG93cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowwngfc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 04:01:07 +0000 UTC FinishedAt: 2026-07-02 04:09:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "0469d460a598d03fc85ebd97f99640e6c579e2a2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_FLOW_TABLE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "0469d460a598d03fc85ebd97f99640e6c579e2a2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_FLOW_TABLE" ], "series_id": "2e71f0df-3c62-47c2-b42c-7df6506337b4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "flow_offload_fill_route", "nf_flow_tunnel_ipip_push", "nf_flow_tunnel_ip6ip6_push", "nf_flow_offload_unsupported" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmbG93X29mZmxvYWRfZmlsbF9yb3V0ZSYjMzQ7LAogICAgJiMzNDtuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gmIzM0OywKICAgICYjMzQ7bmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2gmIzM0OywKICAgICYjMzQ7bmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG5ldGZpbHRlciBmbG93IHRhYmxlIGxvZ2ljLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRzdF9jYWNoZSBhbmQgZHN0X2Nvb2tpZSBhcmUgc3RvcmVkIGFuZCBoYW5kbGVkIGZvciB0dW5uZWxzLiBJdCBhbHNvIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGhhcmR3YXJlIG9mZmxvYWQgZm9yIHVuc3VwcG9ydGVkIHR1bm5lbCBmbG93cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY2NTVkZDcyZGQ5YWE1ZWI4ZmExMjgyODE3YjU1OTA4N2I4YzMxZjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDA0OjA5OjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmggYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oXG5pbmRleCA3YjIzYjI0NWE1YTg2YS4uMzY5ZjZhNzE3ODExNGMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oXG5AQCAtMTU1LDExICYjNDM7MTU1LDExIEBAIHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUge1xuIFx0XHRcdFx0XHR0dW5fbnVtOjIsXG4gXHRcdFx0XHRcdGluX3ZsYW5faW5ncmVzczoyO1xuIFx0dTE2XHRcdFx0XHRtdHU7XG4mIzQzO1x0c3RydWN0IGRzdF9lbnRyeVx0XHQqZHN0X2NhY2hlO1xuJiM0MztcdHUzMlx0XHRcdFx0ZHN0X2Nvb2tpZTtcbiBcdHVuaW9uIHtcbiBcdFx0c3RydWN0IHtcbi1cdFx0XHRzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2FjaGU7XG4gXHRcdFx0dTMyXHRcdGlmaWR4O1xuLVx0XHRcdHUzMlx0XHRkc3RfY29va2llO1xuIFx0XHR9O1xuIFx0XHRzdHJ1Y3Qge1xuIFx0XHRcdHUzMlx0XHRpZmlkeDtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuY1xuaW5kZXggOTljNWI5ZDY3MWEwY2EuLjZmMTk1Y2NmMjIyYTkzIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuY1xuQEAgLTEyNywxMiAmIzQzOzEyNywyMSBAQCBzdGF0aWMgaW50IGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXG4gXG4gXHRzd2l0Y2ggKHJvdXRlLVx1MDAzZXR1cGxlW2Rpcl0ueG1pdF90eXBlKSB7XG4gXHRjYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDpcbiYjNDM7XHRcdGlmIChmbG93X3R1cGxlLVx1MDAzZXR1bl9udW0pIHtcbiYjNDM7XHRcdFx0Zmxvd190dXBsZS1cdTAwM2Vkc3RfY2FjaGUgPSBkc3Q7XG4mIzQzO1x0XHRcdGZsb3dfdHVwbGUtXHUwMDNlZHN0X2Nvb2tpZSA9XG4mIzQzO1x0XHRcdFx0Zmxvd19vZmZsb2FkX2RzdF9jb29raWUoZmxvd190dXBsZSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jYWNoZSA9IE5VTEw7XG4mIzQzO1x0XHRcdGZsb3dfdHVwbGUtXHUwMDNlZHN0X2Nvb2tpZSA9IDA7XG4mIzQzO1x0XHR9XG4gXHRcdG1lbWNweShmbG93X3R1cGxlLVx1MDAzZW91dC5oX2Rlc3QsIHJvdXRlLVx1MDAzZXR1cGxlW2Rpcl0ub3V0LmhfZGVzdCxcbiBcdFx0ICAgICAgIEVUSF9BTEVOKTtcbiBcdFx0bWVtY3B5KGZsb3dfdHVwbGUtXHUwMDNlb3V0Lmhfc291cmNlLCByb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLm91dC5oX3NvdXJjZSxcbiBcdFx0ICAgICAgIEVUSF9BTEVOKTtcbiBcdFx0Zmxvd190dXBsZS1cdTAwM2VvdXQuaWZpZHggPSByb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLm91dC5pZmluZGV4O1xuLVx0XHRkc3RfcmVsZWFzZShkc3QpO1xuJiM0MztcdFx0aWYgKCFmbG93X3R1cGxlLVx1MDAzZXR1bl9udW0pXG4mIzQzO1x0XHRcdGRzdF9yZWxlYXNlKGRzdCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9YRlJNOlxuIFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ORUlHSDpcbkBAIC0xNTIsOSAmIzQzOzE2MSw3IEBAIHN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcbiBzdGF0aWMgdm9pZCBuZnRfZmxvd19kc3RfcmVsZWFzZShzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LFxuIFx0XHRcdFx0IGVudW0gZmxvd19vZmZsb2FkX3R1cGxlX2RpciBkaXIpXG4ge1xuLVx0aWYgKGZsb3ctXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGUueG1pdF90eXBlID09IEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIIHx8XG4tXHQgICAgZmxvdy1cdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS54bWl0X3R5cGUgPT0gRkxPV19PRkZMT0FEX1hNSVRfWEZSTSlcbi1cdFx0ZHN0X3JlbGVhc2UoZmxvdy1cdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS5kc3RfY2FjaGUpO1xuJiM0MztcdGRzdF9yZWxlYXNlKGZsb3ctXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGUuZHN0X2NhY2hlKTtcbiB9XG4gXG4gdm9pZCBmbG93X29mZmxvYWRfcm91dGVfaW5pdChzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmNcbmluZGV4IDI5ZTkzYWMxZTJlNDAwLi4wYjc4ZGVjY2U4YTliZCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuY1xuQEAgLTI5OSw4ICYjNDM7Mjk5LDcgQEAgc3RhdGljIGJvb2wgbmZfZmxvd19leGNlZWRzX210dShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbXR1KVxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBuZl9mbG93X2RzdF9jaGVjayhzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSlcbiB7XG4tXHRpZiAodHVwbGUtXHUwMDNleG1pdF90eXBlICE9IEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHR1cGxlLVx1MDAzZXhtaXRfdHlwZSAhPSBGTE9XX09GRkxPQURfWE1JVF9YRlJNKVxuJiM0MztcdGlmICghdHVwbGUtXHUwMDNlZHN0X2NhY2hlKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbiBcdHJldHVybiBkc3RfY2hlY2sodHVwbGUtXHUwMDNlZHN0X2NhY2hlLCB0dXBsZS1cdTAwM2Vkc3RfY29va2llKTtcbkBAIC01OTAsMTAgJiM0Mzs1ODksMTAgQEAgc3RhdGljIGludCBuZl9mbG93X3BwcG9lX3B1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IGlkLFxuIFxuIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfaXBpcF9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSxcbi1cdFx0XHRcdCAgICBfX2JlMzIgKmlwX2RhZGRyKVxuJiM0MztcdFx0XHRcdCAgICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIF9fYmUzMiAqaXBfZGFkZHIpXG4ge1xuIFx0c3RydWN0IGlwaGRyICppcGggPSAoc3RydWN0IGlwaGRyICopc2tiX25ldHdvcmtfaGVhZGVyKHNrYik7XG4tXHRzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUodHVwbGUtXHUwMDNlZHN0X2NhY2hlKTtcbiYjNDM7XHRzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUoZHN0KTtcbiBcdHU4IHRvcyA9IGlwaC1cdTAwM2V0b3MsIHR0bCA9IGlwaC1cdTAwM2V0dGw7XG4gXHRfX2JlMTYgZnJhZ19vZmYgPSBpcGgtXHUwMDNlZnJhZ19vZmY7XG4gXHR1MzIgaGVhZHJvb20gPSBzaXplb2YoKmlwaCk7XG5AQCAtNjM2LDIxICYjNDM7NjM1LDIyIEBAIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfaXBpcF9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX3Y0X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSxcbi1cdFx0XHRcdCAgX19iZTMyICppcF9kYWRkcilcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCBkc3RfZW50cnkgKmRzdCwgIF9fYmUzMiAqaXBfZGFkZHIpXG4ge1xuIFx0aWYgKHR1cGxlLVx1MDAzZXR1bl9udW0pXG4tXHRcdHJldHVybiBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gobmV0LCBza2IsIHR1cGxlLCBpcF9kYWRkcik7XG4mIzQzO1x0XHRyZXR1cm4gbmZfZmxvd190dW5uZWxfaXBpcF9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgZHN0LCBpcF9kYWRkcik7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBuZl9mbG93X3R1bm5lbF9pcDZpcDZfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICAgICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSxcbiYjNDM7XHRcdFx0XHQgICAgICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXG4gXHRcdFx0XHQgICAgICBzdHJ1Y3QgaW42X2FkZHIgKippcDZfZGFkZHIpXG4ge1xuIFx0c3RydWN0IGlwdjZoZHIgKmlwNmggPSAoc3RydWN0IGlwdjZoZHIgKilza2JfbmV0d29ya19oZWFkZXIoc2tiKTtcbi1cdHN0cnVjdCBydGFibGUgKnJ0ID0gZHN0X3J0YWJsZSh0dXBsZS1cdTAwM2Vkc3RfY2FjaGUpO1xuIFx0X191OCBkc2ZpZWxkID0gaXB2Nl9nZXRfZHNmaWVsZChpcDZoKTtcbiYjNDM7XHRzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUoZHN0KTtcbiBcdHN0cnVjdCBmbG93aTYgZmw2ID0ge1xuIFx0XHQuZGFkZHIgPSB0dXBsZS1cdTAwM2V0dW4uc3JjX3Y2LFxuIFx0XHQuc2FkZHIgPSB0dXBsZS1cdTAwM2V0dW4uZHN0X3Y2LFxuQEAgLTY5NiwxMCAmIzQzOzY5NiwxMSBAQCBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX3Y2X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSxcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCBkc3RfZW50cnkgKmRzdCxcbiBcdFx0XHRcdCAgc3RydWN0IGluNl9hZGRyICoqaXA2X2RhZGRyKVxuIHtcbiBcdGlmICh0dXBsZS1cdTAwM2V0dW5fbnVtKVxuLVx0XHRyZXR1cm4gbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2gobmV0LCBza2IsIHR1cGxlLCBpcDZfZGFkZHIpO1xuJiM0MztcdFx0cmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgZHN0LCBpcDZfZGFkZHIpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTg0Miw3ICYjNDM7ODQzLDggQEAgbmZfZmxvd19vZmZsb2FkX2lwX2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdG90aGVyX3R1cGxlID0gXHUwMDI2Zmxvdy1cdTAwM2V0dXBsZWhhc2hbIWRpcl0udHVwbGU7XG4gXHRpcF9kYWRkciA9IG90aGVyX3R1cGxlLVx1MDAzZXNyY192NC5zX2FkZHI7XG4gXG4tXHRpZiAobmZfZmxvd190dW5uZWxfdjRfcHVzaChzdGF0ZS1cdTAwM2VuZXQsIHNrYiwgb3RoZXJfdHVwbGUsIFx1MDAyNmlwX2RhZGRyKSBcdTAwM2MgMClcbiYjNDM7XHRpZiAobmZfZmxvd190dW5uZWxfdjRfcHVzaChzdGF0ZS1cdTAwM2VuZXQsIHNrYiwgb3RoZXJfdHVwbGUsXG4mIzQzO1x0XHRcdFx0ICAgdHVwbGVoYXNoLVx1MDAzZXR1cGxlLmRzdF9jYWNoZSwgXHUwMDI2aXBfZGFkZHIpIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcbiBcdHN3aXRjaCAodHVwbGVoYXNoLVx1MDAzZXR1cGxlLnhtaXRfdHlwZSkge1xuQEAgLTExNTgsNiAmIzQzOzExNjAsNyBAQCBuZl9mbG93X29mZmxvYWRfaXB2Nl9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpcDZfZGFkZHIgPSBcdTAwMjZvdGhlcl90dXBsZS1cdTAwM2VzcmNfdjY7XG4gXG4gXHRpZiAobmZfZmxvd190dW5uZWxfdjZfcHVzaChzdGF0ZS1cdTAwM2VuZXQsIHNrYiwgb3RoZXJfdHVwbGUsXG4mIzQzO1x0XHRcdFx0ICAgdHVwbGVoYXNoLVx1MDAzZXR1cGxlLmRzdF9jYWNoZSxcbiBcdFx0XHRcdCAgIFx1MDAyNmlwNl9kYWRkcikgXHUwMDNjIDApXG4gXHRcdHJldHVybiBORl9EUk9QO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jXG5pbmRleCAwMDJlYzE1ZDk4OGJkYi4uM2U4NzExN2U3MjRiM2YgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jXG5AQCAtMTEwMSwxMiAmIzQzOzExMDEsMjMgQEAgbmZfZmxvd19vZmZsb2FkX3dvcmtfYWxsb2Moc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLFxuIFx0cmV0dXJuIG9mZmxvYWQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWQoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdylcbiYjNDM7e1xuJiM0MztcdGlmIChmbG93LVx1MDAzZXR1cGxlaGFzaFtGTE9XX09GRkxPQURfRElSX09SSUdJTkFMXS50dXBsZS50dW5fbnVtIHx8XG4mIzQzO1x0ICAgIGZsb3ctXHUwMDNldHVwbGVoYXNoW0ZMT1dfT0ZGTE9BRF9ESVJfUkVQTFldLnR1cGxlLnR1bl9udW0pXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuJiM0Mzt9XG4gXG4gdm9pZCBuZl9mbG93X29mZmxvYWRfYWRkKHN0cnVjdCBuZl9mbG93dGFibGUgKmZsb3d0YWJsZSxcbiBcdFx0XHQgc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdylcbiB7XG4gXHRzdHJ1Y3QgZmxvd19vZmZsb2FkX3dvcmsgKm9mZmxvYWQ7XG4gXG4mIzQzO1x0aWYgKG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChmbG93KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRvZmZsb2FkID0gbmZfZmxvd19vZmZsb2FkX3dvcmtfYWxsb2MoZmxvd3RhYmxlLCBmbG93LCBGTE9XX0NMU19SRVBMQUNFKTtcbiBcdGlmICghb2ZmbG9hZClcbiBcdFx0cmV0dXJuO1xuQEAgLTExMTksNiAmIzQzOzExMzAsOSBAQCB2b2lkIG5mX2Zsb3dfb2ZmbG9hZF9kZWwoc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLFxuIHtcbiBcdHN0cnVjdCBmbG93X29mZmxvYWRfd29yayAqb2ZmbG9hZDtcbiBcbiYjNDM7XHRpZiAobmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkKGZsb3cpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdG9mZmxvYWQgPSBuZl9mbG93X29mZmxvYWRfd29ya19hbGxvYyhmbG93dGFibGUsIGZsb3csIEZMT1dfQ0xTX0RFU1RST1kpO1xuIFx0aWYgKCFvZmZsb2FkKVxuIFx0XHRyZXR1cm47XG5AQCAtMTEzMyw2ICYjNDM7MTE0Nyw5IEBAIHZvaWQgbmZfZmxvd19vZmZsb2FkX3N0YXRzKHN0cnVjdCBuZl9mbG93dGFibGUgKmZsb3d0YWJsZSxcbiBcdHN0cnVjdCBmbG93X29mZmxvYWRfd29yayAqb2ZmbG9hZDtcbiBcdF9fczMyIGRlbHRhO1xuIFxuJiM0MztcdGlmIChuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWQoZmxvdykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0ZGVsdGEgPSBuZl9mbG93X3RpbWVvdXRfZGVsdGEoZmxvdy1cdTAwM2V0aW1lb3V0KTtcbiBcdGlmICgoZGVsdGEgXHUwMDNlPSAoOSAqIGZsb3dfb2ZmbG9hZF9nZXRfdGltZW91dChmbG93KSkgLyAxMCkpXG4gXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDowOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zmxvd19vZmZsb2FkX2ZpbGxfcm91dGUmIzM0OywKICAgICYjMzQ7bmZfZmxvd190dW5uZWxfaXBpcF9wdXNoJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBuZXRmaWx0ZXIgZmxvdyB0YWJsZSBsb2dpYywgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBkc3RfY2FjaGUgYW5kIGRzdF9jb29raWUgYXJlIHN0b3JlZCBhbmQgaGFuZGxlZCBmb3IgdHVubmVscy4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBoYXJkd2FyZSBvZmZsb2FkIGZvciB1bnN1cHBvcnRlZCB0dW5uZWwgZmxvd3MuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGY2NTVkZDcyZGQ5YWE1ZWI4ZmExMjgyODE3YjU1OTA4N2I4YzMxZjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyIDA0OjA5OjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmgKaW5kZXggN2IyM2IyNDVhNWE4NmEuLjM2OWY2YTcxNzgxMTRjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmgKQEAgLTE1NSwxMSAmIzQzOzE1NSwxMSBAQCBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlIHsKIAkJCQkJdHVuX251bToyLAogCQkJCQlpbl92bGFuX2luZ3Jlc3M6MjsKIAl1MTYJCQkJbXR1OwomIzQzOwlzdHJ1Y3QgZHN0X2VudHJ5CQkqZHN0X2NhY2hlOwomIzQzOwl1MzIJCQkJZHN0X2Nvb2tpZTsKIAl1bmlvbiB7CiAJCXN0cnVjdCB7Ci0JCQlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2FjaGU7CiAJCQl1MzIJCWlmaWR4OwotCQkJdTMyCQlkc3RfY29va2llOwogCQl9OwogCQlzdHJ1Y3QgewogCQkJdTMyCQlpZmlkeDsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jCmluZGV4IDk5YzViOWQ2NzFhMGNhLi42ZjE5NWNjZjIyMmE5MyAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jCkBAIC0xMjcsMTIgJiM0MzsxMjcsMjEgQEAgc3RhdGljIGludCBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZShzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LAogCiAJc3dpdGNoIChyb3V0ZS0mZ3Q7dHVwbGVbZGlyXS54bWl0X3R5cGUpIHsKIAljYXNlIEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVDoKJiM0MzsJCWlmIChmbG93X3R1cGxlLSZndDt0dW5fbnVtKSB7CiYjNDM7CQkJZmxvd190dXBsZS0mZ3Q7ZHN0X2NhY2hlID0gZHN0OwomIzQzOwkJCWZsb3dfdHVwbGUtJmd0O2RzdF9jb29raWUgPQomIzQzOwkJCQlmbG93X29mZmxvYWRfZHN0X2Nvb2tpZShmbG93X3R1cGxlKTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJZmxvd190dXBsZS0mZ3Q7ZHN0X2NhY2hlID0gTlVMTDsKJiM0MzsJCQlmbG93X3R1cGxlLSZndDtkc3RfY29va2llID0gMDsKJiM0MzsJCX0KIAkJbWVtY3B5KGZsb3dfdHVwbGUtJmd0O291dC5oX2Rlc3QsIHJvdXRlLSZndDt0dXBsZVtkaXJdLm91dC5oX2Rlc3QsCiAJCSAgICAgICBFVEhfQUxFTik7CiAJCW1lbWNweShmbG93X3R1cGxlLSZndDtvdXQuaF9zb3VyY2UsIHJvdXRlLSZndDt0dXBsZVtkaXJdLm91dC5oX3NvdXJjZSwKIAkJICAgICAgIEVUSF9BTEVOKTsKIAkJZmxvd190dXBsZS0mZ3Q7b3V0LmlmaWR4ID0gcm91dGUtJmd0O3R1cGxlW2Rpcl0ub3V0LmlmaW5kZXg7Ci0JCWRzdF9yZWxlYXNlKGRzdCk7CiYjNDM7CQlpZiAoIWZsb3dfdHVwbGUtJmd0O3R1bl9udW0pCiYjNDM7CQkJZHN0X3JlbGVhc2UoZHN0KTsKIAkJYnJlYWs7CiAJY2FzZSBGTE9XX09GRkxPQURfWE1JVF9YRlJNOgogCWNhc2UgRkxPV19PRkZMT0FEX1hNSVRfTkVJR0g6CkBAIC0xNTIsOSAmIzQzOzE2MSw3IEBAIHN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdywKIHN0YXRpYyB2b2lkIG5mdF9mbG93X2RzdF9yZWxlYXNlKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csCiAJCQkJIGVudW0gZmxvd19vZmZsb2FkX3R1cGxlX2RpciBkaXIpCiB7Ci0JaWYgKGZsb3ctJmd0O3R1cGxlaGFzaFtkaXJdLnR1cGxlLnhtaXRfdHlwZSA9PSBGTE9XX09GRkxPQURfWE1JVF9ORUlHSCB8fAotCSAgICBmbG93LSZndDt0dXBsZWhhc2hbZGlyXS50dXBsZS54bWl0X3R5cGUgPT0gRkxPV19PRkZMT0FEX1hNSVRfWEZSTSkKLQkJZHN0X3JlbGVhc2UoZmxvdy0mZ3Q7dHVwbGVoYXNoW2Rpcl0udHVwbGUuZHN0X2NhY2hlKTsKJiM0MzsJZHN0X3JlbGVhc2UoZmxvdy0mZ3Q7dHVwbGVoYXNoW2Rpcl0udHVwbGUuZHN0X2NhY2hlKTsKIH0KIAogdm9pZCBmbG93X29mZmxvYWRfcm91dGVfaW5pdChzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuYwppbmRleCAyOWU5M2FjMWUyZTQwMC4uMGI3OGRlY2NlOGE5YmQgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jCkBAIC0yOTksOCAmIzQzOzI5OSw3IEBAIHN0YXRpYyBib29sIG5mX2Zsb3dfZXhjZWVkc19tdHUoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IG10dSkKIAogc3RhdGljIGlubGluZSBib29sIG5mX2Zsb3dfZHN0X2NoZWNrKHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUgKnR1cGxlKQogewotCWlmICh0dXBsZS0mZ3Q7eG1pdF90eXBlICE9IEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIICZhbXA7JmFtcDsKLQkgICAgdHVwbGUtJmd0O3htaXRfdHlwZSAhPSBGTE9XX09GRkxPQURfWE1JVF9YRlJNKQomIzQzOwlpZiAoIXR1cGxlLSZndDtkc3RfY2FjaGUpCiAJCXJldHVybiB0cnVlOwogCiAJcmV0dXJuIGRzdF9jaGVjayh0dXBsZS0mZ3Q7ZHN0X2NhY2hlLCB0dXBsZS0mZ3Q7ZHN0X2Nvb2tpZSk7CkBAIC01OTAsMTAgJiM0Mzs1ODksMTAgQEAgc3RhdGljIGludCBuZl9mbG93X3BwcG9lX3B1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IGlkLAogCiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJICAgIHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUgKnR1cGxlLAotCQkJCSAgICBfX2JlMzIgKmlwX2RhZGRyKQomIzQzOwkJCQkgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0LCBfX2JlMzIgKmlwX2RhZGRyKQogewogCXN0cnVjdCBpcGhkciAqaXBoID0gKHN0cnVjdCBpcGhkciAqKXNrYl9uZXR3b3JrX2hlYWRlcihza2IpOwotCXN0cnVjdCBydGFibGUgKnJ0ID0gZHN0X3J0YWJsZSh0dXBsZS0mZ3Q7ZHN0X2NhY2hlKTsKJiM0MzsJc3RydWN0IHJ0YWJsZSAqcnQgPSBkc3RfcnRhYmxlKGRzdCk7CiAJdTggdG9zID0gaXBoLSZndDt0b3MsIHR0bCA9IGlwaC0mZ3Q7dHRsOwogCV9fYmUxNiBmcmFnX29mZiA9IGlwaC0mZ3Q7ZnJhZ19vZmY7CiAJdTMyIGhlYWRyb29tID0gc2l6ZW9mKCppcGgpOwpAQCAtNjM2LDIxICYjNDM7NjM1LDIyIEBAIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfaXBpcF9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogc3RhdGljIGludCBuZl9mbG93X3R1bm5lbF92NF9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgIHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUgKnR1cGxlLAotCQkJCSAgX19iZTMyICppcF9kYWRkcikKJiM0MzsJCQkJICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsICBfX2JlMzIgKmlwX2RhZGRyKQogewogCWlmICh0dXBsZS0mZ3Q7dHVuX251bSkKLQkJcmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaChuZXQsIHNrYiwgdHVwbGUsIGlwX2RhZGRyKTsKJiM0MzsJCXJldHVybiBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gobmV0LCBza2IsIHR1cGxlLCBkc3QsIGlwX2RhZGRyKTsKIAogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgICAgICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSwKJiM0MzsJCQkJICAgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0LAogCQkJCSAgICAgIHN0cnVjdCBpbjZfYWRkciAqKmlwNl9kYWRkcikKIHsKIAlzdHJ1Y3QgaXB2NmhkciAqaXA2aCA9IChzdHJ1Y3QgaXB2NmhkciAqKXNrYl9uZXR3b3JrX2hlYWRlcihza2IpOwotCXN0cnVjdCBydGFibGUgKnJ0ID0gZHN0X3J0YWJsZSh0dXBsZS0mZ3Q7ZHN0X2NhY2hlKTsKIAlfX3U4IGRzZmllbGQgPSBpcHY2X2dldF9kc2ZpZWxkKGlwNmgpOwomIzQzOwlzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUoZHN0KTsKIAlzdHJ1Y3QgZmxvd2k2IGZsNiA9IHsKIAkJLmRhZGRyID0gdHVwbGUtJmd0O3R1bi5zcmNfdjYsCiAJCS5zYWRkciA9IHR1cGxlLSZndDt0dW4uZHN0X3Y2LApAQCAtNjk2LDEwICYjNDM7Njk2LDExIEBAIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX3Y2X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZSAqdHVwbGUsCiYjNDM7CQkJCSAgc3RydWN0IGRzdF9lbnRyeSAqZHN0LAogCQkJCSAgc3RydWN0IGluNl9hZGRyICoqaXA2X2RhZGRyKQogewogCWlmICh0dXBsZS0mZ3Q7dHVuX251bSkKLQkJcmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgaXA2X2RhZGRyKTsKJiM0MzsJCXJldHVybiBuZl9mbG93X3R1bm5lbF9pcDZpcDZfcHVzaChuZXQsIHNrYiwgdHVwbGUsIGRzdCwgaXA2X2RhZGRyKTsKIAogCXJldHVybiAwOwogfQpAQCAtODQyLDcgJiM0Mzs4NDMsOCBAQCBuZl9mbG93X29mZmxvYWRfaXBfaG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCW90aGVyX3R1cGxlID0gJmFtcDtmbG93LSZndDt0dXBsZWhhc2hbIWRpcl0udHVwbGU7CiAJaXBfZGFkZHIgPSBvdGhlcl90dXBsZS0mZ3Q7c3JjX3Y0LnNfYWRkcjsKIAotCWlmIChuZl9mbG93X3R1bm5lbF92NF9wdXNoKHN0YXRlLSZndDtuZXQsIHNrYiwgb3RoZXJfdHVwbGUsICZhbXA7aXBfZGFkZHIpICZsdDsgMCkKJiM0MzsJaWYgKG5mX2Zsb3dfdHVubmVsX3Y0X3B1c2goc3RhdGUtJmd0O25ldCwgc2tiLCBvdGhlcl90dXBsZSwKJiM0MzsJCQkJICAgdHVwbGVoYXNoLSZndDt0dXBsZS5kc3RfY2FjaGUsICZhbXA7aXBfZGFkZHIpICZsdDsgMCkKIAkJcmV0dXJuIE5GX0RST1A7CiAKIAlzd2l0Y2ggKHR1cGxlaGFzaC0mZ3Q7dHVwbGUueG1pdF90eXBlKSB7CkBAIC0xMTU4LDYgJiM0MzsxMTYwLDcgQEAgbmZfZmxvd19vZmZsb2FkX2lwdjZfaG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWlwNl9kYWRkciA9ICZhbXA7b3RoZXJfdHVwbGUtJmd0O3NyY192NjsKIAogCWlmIChuZl9mbG93X3R1bm5lbF92Nl9wdXNoKHN0YXRlLSZndDtuZXQsIHNrYiwgb3RoZXJfdHVwbGUsCiYjNDM7CQkJCSAgIHR1cGxlaGFzaC0mZ3Q7dHVwbGUuZHN0X2NhY2hlLAogCQkJCSAgICZhbXA7aXA2X2RhZGRyKSAmbHQ7IDApCiAJCXJldHVybiBORl9EUk9QOwogCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYwppbmRleCAwMDJlYzE1ZDk4OGJkYi4uM2U4NzExN2U3MjRiM2YgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuYwpAQCAtMTEwMSwxMiAmIzQzOzExMDEsMjMgQEAgbmZfZmxvd19vZmZsb2FkX3dvcmtfYWxsb2Moc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLAogCXJldHVybiBvZmZsb2FkOwogfQogCiYjNDM7c3RhdGljIGJvb2wgbmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3cpCiYjNDM7ewomIzQzOwlpZiAoZmxvdy0mZ3Q7dHVwbGVoYXNoW0ZMT1dfT0ZGTE9BRF9ESVJfT1JJR0lOQUxdLnR1cGxlLnR1bl9udW0gfHwKJiM0MzsJICAgIGZsb3ctJmd0O3R1cGxlaGFzaFtGTE9XX09GRkxPQURfRElSX1JFUExZXS50dXBsZS50dW5fbnVtKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7CXJldHVybiBmYWxzZTsKJiM0Mzt9CiAKIHZvaWQgbmZfZmxvd19vZmZsb2FkX2FkZChzdHJ1Y3QgbmZfZmxvd3RhYmxlICpmbG93dGFibGUsCiAJCQkgc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdykKIHsKIAlzdHJ1Y3QgZmxvd19vZmZsb2FkX3dvcmsgKm9mZmxvYWQ7CiAKJiM0MzsJaWYgKG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChmbG93KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlvZmZsb2FkID0gbmZfZmxvd19vZmZsb2FkX3dvcmtfYWxsb2MoZmxvd3RhYmxlLCBmbG93LCBGTE9XX0NMU19SRVBMQUNFKTsKIAlpZiAoIW9mZmxvYWQpCiAJCXJldHVybjsKQEAgLTExMTksNiAmIzQzOzExMzAsOSBAQCB2b2lkIG5mX2Zsb3dfb2ZmbG9hZF9kZWwoc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLAogewogCXN0cnVjdCBmbG93X29mZmxvYWRfd29yayAqb2ZmbG9hZDsKIAomIzQzOwlpZiAobmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkKGZsb3cpKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCW9mZmxvYWQgPSBuZl9mbG93X29mZmxvYWRfd29ya19hbGxvYyhmbG93dGFibGUsIGZsb3csIEZMT1dfQ0xTX0RFU1RST1kpOwogCWlmICghb2ZmbG9hZCkKIAkJcmV0dXJuOwpAQCAtMTEzMyw2ICYjNDM7MTE0Nyw5IEBAIHZvaWQgbmZfZmxvd19vZmZsb2FkX3N0YXRzKHN0cnVjdCBuZl9mbG93dGFibGUgKmZsb3d0YWJsZSwKIAlzdHJ1Y3QgZmxvd19vZmZsb2FkX3dvcmsgKm9mZmxvYWQ7CiAJX19zMzIgZGVsdGE7CiAKJiM0MzsJaWYgKG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChmbG93KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlkZWx0YSA9IG5mX2Zsb3dfdGltZW91dF9kZWx0YShmbG93LSZndDt0aW1lb3V0KTsKIAlpZiAoKGRlbHRhICZndDs9ICg5ICogZmxvd19vZmZsb2FkX2dldF90aW1lb3V0KGZsb3cpKSAvIDEwKSkKIAkJcmV0dXJuOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIEZsb3cgVGFibGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHBva2luZyBhcm91bmQgaW4gdGhlIG5ldGZpbHRlciBmbG93IHRhYmxlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgdGhlIGBkc3RfY2FjaGVgIGFuZCBgZHN0X2Nvb2tpZWAgd2l0aGluIHRoZSBgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZWAuIFRoaXMgc2VlbXMgcHJldHR5IHNpZ25pZmljYW50IOKAkyB0aGV5JiMzOTtyZSBtb3ZpbmcgdGhlbSBvdXQgb2YgdGhlIHVuaW9uLCBzbyB0aGV5JiMzOTtyZSBhbHdheXMgcHJlc2VudC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiBob3cgdGhlIHRhYmxlIHJlcHJlc2VudHMgdGhlc2UgZGVzdGluYXRpb24tcmVsYXRlZCBhdHRyaWJ1dGVzLCBzdWdnZXN0aW5nIHBvdGVudGlhbGx5IGJyb2FkZXIgcGVyZm9ybWFuY2Ugb3IgY29ycmVjdG5lc3MgaW1wbGljYXRpb25zLCBlc3BlY2lhbGx5IHdpdGggY29uY3VycmVudCBhY2Nlc3Mgb3Igc3RhdGUgbWFuYWdlbWVudC4KClRoZSBjb3JlIG9mIGl0IGlzIHRoZSBtYW5pcHVsYXRpb24gb2YgdGhlIGBkc3RfY2FjaGVgIGFuZCBgZHN0X2Nvb2tpZWAgcG9pbnRlcnMuIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAgaXMgYmVpbmcgbW9kaWZpZWQgdG8gc2V0IHRoZW0gZXZlbiBmb3IgYEZMT1dfT0ZGTE9BRF9YTUlUX0RJUkVDVGAsIHdoZW4gdGhlIHR1bm5lbCBudW1iZXIgaXMgbm9uLXplcm8uIFRoZSBjaGFuZ2UgYWxzbyBtb2RpZmllcyB0aGUgYG5mdF9mbG93X2RzdF9yZWxlYXNlYCBmdW5jdGlvbiBzbyB0aGF0IGl0ICphbHdheXMqIHJlbGVhc2VzIHRoZSBgZHN0X2NhY2hlYCB1c2luZyBgZHN0X3JlbGVhc2VgLCByZWdhcmRsZXNzIG9mIG90aGVyIGNvbmRpdGlvbnMuIEFsc28sIGBuZl9mbG93X2RzdF9jaGVja2AgaXMgYmVpbmcgYWRqdXN0ZWQgdG8gY2hlY2sgZm9yIHRoZSBhYnNlbmNlIG9mIGB0dXBsZS0mZ3Q7ZHN0X2NhY2hlYCBhcyBpdHMgcHJpbWFyeSBjb25kaXRpb24sIGluc3RlYWQgb2YgYW4gb2xkZXIgYHhtaXRfdHlwZWAgY29uZGl0aW9uLgoKT24gdG9wIG9mIHRoaXMsIHR1bm5lbCBoYW5kbGluZyBpcyBiZWluZyByZXdvcmtlZC4gVGhlIGBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2hgIGFuZCBgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hgIGZ1bmN0aW9ucyBhcmUgbm93IHJlY2VpdmluZyBhIGBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RgIGFzIGFuIGFyZ3VtZW50IGluc3RlYWQgb2YgcmV0cmlldmluZyB0aGUgZGVzdGluYXRpb24gZnJvbSB0aGUgdHVwbGUgY2FjaGUuIFRoaXMgbGlrZWx5IG1lYW5zIHNvbWUgcmVmYWN0b3JpbmcgdG8gaW1wcm92ZSBjb2RlIGNsYXJpdHkgb3IgaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSB0dXBsZSBkb2VzbiYjMzk7dCBoYXZlIHRoZSBjYWNoZWQgZGVzdGluYXRpb24uIEFuZCBmaW5hbGx5LCBzb21lIG9mIHRoZSBmbG93IG9mZmxvYWQgZnVuY3Rpb25zIChgbmZfZmxvd19vZmZsb2FkX2FkZGAsIGBuZl9mbG93X29mZmxvYWRfZGVsYCwgYW5kIGBuZl9mbG93X29mZmxvYWRfc3RhdHNgKSBoYXZlIGFuIGVhcmx5IGV4aXQgY29uZGl0aW9uLCBiYXNlZCBvbiB0aGUgbmV3IGBuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWRgIGNoZWNrICh3aGljaCBjb25zaWRlcnMgYSBub24temVybyB0dW5uZWwgbnVtYmVyIGluIGVpdGhlciBkaXJlY3Rpb24pLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0JiMzOTtzIHRvdWNoaW5nIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBJUC9JUHY2IHR1bm5lbHMgYXJlIHJlcHJlc2VudGVkIGFuZCBoYW5kbGVkIHdpdGhpbiB0aGUgZmxvdyB0YWJsZS4gVGhhdCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgZ2l2ZW4gdGhhdCB0dW5uZWwgaGFuZGxpbmcgaXMgYSBjb21wbGV4IGFyZWEgd2l0aCBwbGVudHkgb2YgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGludGVyYWN0aW9ucy4KClRvIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgZm9jdXNlZCwgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0IGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQgb3IgYWZmZWN0ZWQuIEkgY2FuIHNlZSB0aGUgbGlzdDogYGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlYCwgYG5mdF9mbG93X2RzdF9yZWxlYXNlYCwgYG5mX2Zsb3dfZHN0X2NoZWNrYCwgYG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaGAsIGBuZl9mbG93X3R1bm5lbF92NF9wdXNoYCwgYG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoYCwgYG5mX2Zsb3dfdHVubmVsX3Y2X3B1c2hgLCBgbmZfZmxvd19vZmZsb2FkX2lwX2hvb2tgLCBgbmZfZmxvd19vZmZsb2FkX2lwdjZfaG9va2AsIGBuZl9mbG93X29mZmxvYWRfd29ya19hbGxvY2AsIGBuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWRgLCBgbmZfZmxvd19vZmZsb2FkX2FkZGAsIGBuZl9mbG93X29mZmxvYWRfZGVsYCwgYW5kIGBuZl9mbG93X29mZmxvYWRfc3RhdHNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYnV0IHdlIG5lZWQgdG8gcHJpb3JpdGl6ZS4KCkJhc2VkIG9uIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIGZvY3VzaW5nIG9uIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAsIGBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2hgLCBgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hgLCBhbmQgYG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZGAgc2VlbXMgbGlrZSB0aGUgc21hcnRlc3QgbW92ZSByaWdodCBub3cuIFRob3NlIGFyZSB0aGUgb25lcyB3aGVyZSB0aGUgY29yZSBkYXRhIHN0cnVjdHVyZSAoYW5kIGl0cyByZWxhdGlvbiB0byB0dW5uZWxzKSBpcyBiZWluZyB1cGRhdGVkLgoKTm93LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBhbmQgbWFrZSBzdXJlIHRoaXMgY29kZSBpcyBiZWluZyBidWlsdCBjb3JyZWN0bHkuIEkgc2hvdWxkIGxvb2sgaW4gdGhlIGBuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jYCwgYG5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jYCwgYW5kIGBuZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jYCBzb3VyY2UgZmlsZXMuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCBgbmZfZmxvd190YWJsZV9jb3JlLm9gIGlzIGluZGVlZCBiZWluZyBjb21waWxlZCwgYW5kIHRoYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Zsb3dfdGFibGVfY29yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT0xNDI9b2JqLSQoQ09ORklHX05GX0ZMT1dfVEFCTEUpXHQmIzQzOz0gbmZfZmxvd190YWJsZS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0MzpuZl9mbG93X3RhYmxlLW9ianNcdFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NC1cdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIyNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9uOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgZm9jdXMgaXMgYENPTkZJR19ORl9GTE9XX1RBQkxFYC4gVGhhdCYjMzk7cyBhIGtleSByZXF1aXJlbWVudCwgbm8gZG91YnQuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGRlcGVuZGVuY2llcyBvciBjby1yZXF1aXNpdGVzLiBBaGEsIG9rYXksIEkgc2VlIGBuZl9mbG93X3RhYmxlX29mZmxvYWQuY2AgaXMgZmxhZ2dlZCBhcyBiZWluZyBtb2RpZmllZCBhcyB3ZWxsLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgZmxvdyB0YWJsZSBvZmZsb2FkIGNhcGFiaWxpdGllcyBhcmUgaGVhdmlseSBpbnRlcnR3aW5lZCB3aXRoIHRoZSBiYXNlIGZsb3cgdGFibGUgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIHRoaXMgaW4gbWluZCBhcyBJIGRlbHZlIGZ1cnRoZXIgaW50byB0aGUgc3BlY2lmaWMgY2hhbmdlcywgYW5kIGxvb2sgYXQgdGhlIGludGVyYWN0aW9uIG9mIHRob3NlIGZpbGVzIHRvIHNlZSBob3cgdGhvc2UgYXJlIHRpZWQgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfZmxvd190YWJsZV9vZmZsb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mz1uZl9mbG93X3RhYmxlLW9ianNcdFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NC1cdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NTpcdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfb2ZmbG9hZC5vIG5mX2Zsb3dfdGFibGVfeGRwLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQ2LW5mX2Zsb3dfdGFibGUtJChDT05GSUdfTkZfRkxPV19UQUJMRV9QUk9DRlMpICYjNDM7PSBuZl9mbG93X3RhYmxlX3Byb2Nmcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYwMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgTmV0ZmlsdGVyIEZsb3cgVGFibGUgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBmdW5jdGlvbmFsaXR5IGxpdmVzIHdpdGhpbiB0aGUgYG5mX2Zsb3dfdGFibGUtb2Jqc2Agb2JqZWN0LiBTbywgaW1tZWRpYXRlbHksIHRoYXQgc2NyZWFtcyBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGFzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24ga25vYiBJIHNob3VsZCBiZSBjb25jZXJuZWQgd2l0aC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgYG5mX2Zsb3dfdGFibGVfaXAuY2AgaXMgYWxzbyBpbiB0aGUgbWl4LiBTbywgdGhhdCBzdWdnZXN0cyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG1pZ2h0IGJlIHNwbGl0LCBvciBwZXJoYXBzIHRoZXJlIGFyZSBJUC1zcGVjaWZpYyBhc3BlY3RzIGludm9sdmVkLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuCgpOb3cgSSYjMzk7bSB3b25kZXJpbmcsIGFyZSB0aGVyZSAqb3RoZXIqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc29tZSBtb3JlIGdyYW51bGFyIHNldHRpbmdzLCB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJIGNhbiYjMzk7dCBqdXN0IGFzc3VtZSBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGlzIHRoZSAqb25seSogdGhpbmcuIEJlc3QgdG8gY2hlY2sgdGhlIHNvdXJjZS4gSSYjMzk7bGwgbmVlZCB0byBnbyB0byBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBhbmQgbG9vayBmb3IgdGhlIGRlZmluaXRpb24gb2YgYE5GX0ZMT1dfVEFCTEVgLiBUaGF0JiMzOTtzIHdoZXJlIEkgY2FuIGZpbmQgYWxsIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGZvciB0aGlzIGZsb3cgdGFibGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfRkxPV19UQUJMRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzAxPWVuZGlmICMgTkZfVEFCTEVTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzAyLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjcwMzpjb25maWcgTkZfRkxPV19UQUJMRV9JTkVUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzA0LVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGZsb3cgdGFibGUgbWl4ZWQgSVB2NC9JUHY2IG1vZHVsZVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MTAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzExOmNvbmZpZyBORl9GTE9XX1RBQkxFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEyLVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MjE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfUFJPQ0ZTXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzIyLVx0Ym9vbCBcJiMzNDtTdXBwbHkgZmxvdyB0YWJsZSBzdGF0aXN0aWNzIGluIHByb2Nmc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipORl9GTE9XX1RBQkxFIERlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBraWNrcyBpbiwgYW5kIEkgaW1tZWRpYXRlbHkgc3RhcnQgdG8gbWVudGFsbHkgbWFwIG91dCB0aGUgaW1wbGljYXRpb25zIG9mICYjMzQ7TkZfRkxPV19UQUJMRSYjMzQ7IGRlcGVuZGVuY2llcy4gTXkgYnJhaW4ganVtcHMgcmlnaHQgdG8gZGVwZW5kZW5jeSBhbmFseXNpcy4gSSYjMzk7bSBlc3NlbnRpYWxseSBydW5uaW5nIHRocm91Z2ggdGhlIGxpa2VseSBjb25zdW1lcnMgYW5kIHByb3ZpZGVycyBvZiB0aGlzIHRhYmxlIGluIG15IGhlYWQuIFdoYXQgYXJlIHRoZSBjb3JlIG1vZHVsZXMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGlzIGRhdGEgc3RydWN0dXJlPyBJcyBpdCBwcmltYXJpbHkgd2l0aGluIHRoZSBOZXRmaWx0ZXIgY29udGV4dCwgb3IgYXJlIHdlIGJyYW5jaGluZyBvdXQ/IEFyZSB0aGVyZSBleHRlcm5hbCB1c2VycyB0aGF0IGhhdmUgZGV2ZWxvcGVkIHBsdWdpbnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoaXMgdGFibGU/IFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcywgb2YgY291cnNlLCBhYnNvbHV0ZWx5IGNydWNpYWwgYmVmb3JlIG1ha2luZyBhbnkgbW9kaWZpY2F0aW9ucyBvciBldmVuIGRpYWdub3NpbmcgcGVyZm9ybWFuY2UgaXNzdWVzLiBJdCBkaWN0YXRlcyB0aGUgcG90ZW50aWFsIGJsYXN0IHJhZGl1cyBvZiBhbnkgY2hhbmdlcy4gSSBuZWVkIHRvIGJlIHRoaW5raW5nIGFib3V0IHZlcnNpb25pbmcsIEFQSSBzdGFiaWxpdHksIGFuZCBwb3RlbnRpYWwgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZXMgcmlnaHQgZnJvbSB0aGUgc3RhcnQsIGFzIEkgY2FuIGFzc3VtZSB0aGUgdXNlciBoYXMgYSBmYWlybHkgbWF0dXJlIGNvZGViYXNlLiBJIGFsc28gc3RhcnQgdGhpbmtpbmcgYWJvdXQgdGhlIGtlcm5lbCBzdWJzeXN0ZW1zIGRpcmVjdGx5IGFjY2Vzc2luZyB0aGUgdGFibGUuIElzIHRoaXMgYWxsIGNvbnRhaW5lZCwgb3IgaXMgdGhlcmUgYW55IHVzZXIgc3BhY2UgaW50ZXJhY3Rpb24/IEhvdyBpcyBzeW5jaHJvbml6YXRpb24gaGFuZGxlZD8gTG9ja3MsIGF0b21pYyBvcGVyYXRpb25zLCB3aGF0JiMzOTtzIHRoZSBzdG9yeSB0aGVyZT8gSSBzdGFydCB0byB0aGluayBhYm91dCB0aGUgcG9zc2libGUgZmFpbHVyZSBwb2ludHMgb2YgdGhlIHN5c3RlbS4gSSBhbHNvIHRoaW5rIGFib3V0IGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIHdpdGggb3RoZXIgdGhpbmdzLCBzdWNoIGFzIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3Igcm91dGluZy4gQW5kIHRoZW4gYWxzbyB3aGVyZSBpdCBoYXMgdXBzdHJlYW0vZG93bnN0cmVhbSBkZXBlbmRlbmNpZXMuIEZpbmFsbHksIHRoZSB0aG91Z2h0IG9mIHdoYXQgdG9vbHMgSSBoYXZlIHRvIHBlcmZvcm0gdGhlc2UgaW52ZXN0aWdhdGlvbnMgYWxzbyBwb3BzIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfRkxPV19UQUJMRSQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTcwMz1jb25maWcgTkZfRkxPV19UQUJMRV9JTkVUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MTE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MTItXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtb2R1bGVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYwOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gTmV0ZmlsdGVyJiMzOTtzIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHNvbWV0aGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiwgc28gSSYjMzk7bSBoZWFkaW5nIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgbGlmZWJsb29kIG9mIExpbnV4IGNvbmZpZ3VyYXRpb24sIGFuZCBJJiMzOTttIGhvbWluZyBpbiBvbiBgbmV0L25ldGZpbHRlci9LY29uZmlnYCBhcm91bmQgbGluZSA3MTEuIFRoYXQgbGluZSwgZ2l2ZSBvciB0YWtlIGEgZmV3LCBsaWtlbHkgaG9sZHMgdGhlIGtleSB0byB0aGUgc2V0dGluZyBJJiMzOTttIHRyeWluZyB0byBkZWNpcGhlciBvciBtb2RpZnkuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGRlZmluaXRpb24sIHBvdGVudGlhbGx5IHNvbWUgZGVwZW5kZW5jaWVzLCBtYXliZSBldmVuIGEgaGVscCB0ZXh0IHRoYXQmIzM5O3Mgd29ydGggYSBxdWljayBzY2FuLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBmZWF0dXJlIGxpdmVzLCBhbmQgdW5kZXJzdGFuZGluZyB0aGlzIHNlY3Rpb24gaXMgY3JpdGljYWwuIEkmIzM5O20gYnJhY2luZyBteXNlbGYgZm9yIHRoZSB1c3VhbCBLY29uZmlnIHN5bnRheCDigJMgdGhlIGBjb25maWdgIGtleXdvcmQsIHRoZSB0eXBlIGRlY2xhcmF0aW9uLCBtYXliZSBzb21lIGBkZXBlbmRzIG9uYCBjbGF1c2VzLCBhbmQgaG9wZWZ1bGx5IHNvbWUgY2xlYXIsIGNvbmNpc2UgZG9jdW1lbnRhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRyZWFzdXJlcyBhd2FpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDcwNTpcdFx0ZGVwZW5kcyBvbiBORl9GTE9XX1RBQkxFXG4gNzA2Olx0XHRoZWxwXG4gNzA3Olx0XHQgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIGZsb3cgdGFibGUgbWl4ZWQgSVB2NC9JUHY2IHN1cHBvcnQuXG4gNzA4Olx0XG4gNzA5Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gNzEwOlx0XG4gNzExOlx0Y29uZmlnIE5GX0ZMT1dfVEFCTEVcbiA3MTI6XHRcdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBmbG93IHRhYmxlIG1vZHVsZVwmIzM0O1xuIDcxMzpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfSU5HUkVTU1xuIDcxNDpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcbiA3MTU6XHRcdGRlcGVuZHMgb24gTkZfVEFCTEVTXG4gNzE2Olx0XHRoZWxwXG4gNzE3Olx0XHQgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIGZsb3cgdGFibGUgY29yZSBpbmZyYXN0cnVjdHVyZS5cbiA3MTg6XHRcbiA3MTk6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiA3MjA6XHRcbiA3MjE6XHRjb25maWcgTkZfRkxPV19UQUJMRV9QUk9DRlNcbiA3MjI6XHRcdGJvb2wgXCYjMzQ7U3VwcGx5IGZsb3cgdGFibGUgc3RhdGlzdGljcyBpbiBwcm9jZnNcJiMzNDtcbiA3MjM6XHRcdGRlcGVuZHMgb24gTkZfRkxPV19UQUJMRVxuIDcyNDpcdFx0ZGVwZW5kcyBvbiBQUk9DX0ZTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNTIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSBgTkZfRkxPV19UQUJMRWAgaXMgdGhlIHByaW1hcnkgc3dpdGNoIGZvciB0aGUgZmxvdyB0YWJsZSBmdW5jdGlvbmFsaXR5LiBJbnRlcmVzdGluZywgSSBzaG91bGQgcHJvYmFibHkgZW5hYmxlIGBORl9GTE9XX1RBQkxFX0lORVRgIHRvbywgaWYgSSB3YW50IHRvIGhhbmRsZSBtaXhlZCBJUHY0L0lQdjYgdHJhZmZpYyDigJMgdGhhdCBjb3VsZCBiZSBpbXBvcnRhbnQuIFNpbmNlIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgaW4gYG5mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jYCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgYW55IGhhcmR3YXJlIG9mZmxvYWQgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQuIE5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIGJhc2VkIG9uIHRoZSBrZXJuZWwgY29kZSwgYG5mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jYCBpcyBhY3R1YWxseSBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkgYXMgbG9uZyBhcyBgTkZfRkxPV19UQUJMRWAgaXMgZW5hYmxlZC4gSXQgc2VlbXMgSSBtYWRlIGEgYmFkIGFzc3VtcHRpb24uIE9rYXksIGJldHRlciBkb3VibGUgY2hlY2sgdGhlIE1ha2VmaWxlIGluIGBuZXQvbmV0ZmlsdGVyL2AgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDQ6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfZmxvd190YWJsZV9vZmZsb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mz1uZl9mbG93X3RhYmxlLW9ianNcdFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NC1cdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NTpcdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfb2ZmbG9hZC5vIG5mX2Zsb3dfdGFibGVfeGRwLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQ2LW5mX2Zsb3dfdGFibGUtJChDT05GSUdfTkZfRkxPV19UQUJMRV9QUk9DRlMpICYjNDM7PSBuZl9mbG93X3RhYmxlX3Byb2Nmcy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDA0OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MzAKCQkJCQkJCW91dHB1dDogMTQyCgkJCQkJCQl0aG91Z2h0czogMTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjoKCioqQW5hbHlzaXMgb2YgTmV0ZmlsdGVyIEZsb3cgVGFibGUgT2ZmbG9hZCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRlZmluaXRpdmVseSB1bmNvbmRpdGlvbmFsbHkgY29tcGlsZWQg4oCTIHRoYXQgc2ltcGxpZmllcyB0aGluZ3MhIFRoZSBwcmVzZW5jZSBvZiBgTkZfRkxPV19UQUJMRWAgaXMgZW5vdWdoIHRvIGNvbmZpcm0gdGhhdC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGVzZSBmb2N1cyBzeW1ib2xzIHdlIGhhdmUuIGBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZWAsIGBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2hgLCBgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hgLCBhbmQgYG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZGDigKYgWXVwLCB0aG9zZSBhcmUgYWxsIHNvbGlkIGluZGljYXRvcnMgb2YgdGhlIHBhdGNoJiMzOTtzIHNjb3BlLiBUaGV5IGRpcmVjdGx5IHJlbGF0ZSB0byB0aGUgZmxvdyB0YWJsZSYjMzk7cyBoYW5kbGluZyBvZiB0dW5uZWxzIGFuZCBoYXJkd2FyZSBvZmZsb2FkLCBhbmQgdGhleSBnaXZlIGEgY2xlYXIgaW5kaWNhdGlvbiBvZiBmdW5jdGlvbmFsaXR5IGJlaW5nIHRvdWNoZWQuCgpUaGUgcGF0Y2ggYXBwZWFycyB0byBtb2RpZnkgY29yZSBuZXRmaWx0ZXIgZmxvdyB0YWJsZSBsb2dpYy4gVGhpcyBpcyBpbiBsaW5lIHdpdGggdGhlIGRlc2NyaXB0aW9ucywgYW5kIGNvbmZpcm1zIHRoZSByZWxldmFuY2Ugb2YgdGhlIHN5bWJvbHMuIEl0JiMzOTtzIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdHVubmVsIGhhbmRsaW5nIGFuZCBoYXJkd2FyZSBvZmZsb2FkIHBhdGhzLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLiBJdCBzZWVtcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCB3ZSB3YW50LgoKSSB0aGluayB3ZSBjYW4gc2V0IHRoZSByZXN1bHRzOyBpdCBsb29rcyBnb29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwNDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfRkxPV19UQUJMRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Zsb3dfb2ZmbG9hZF9maWxsX3JvdXRlJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaCYjMzQ7LAogICAgJiMzNDtuZl9mbG93X3R1bm5lbF9pcDZpcDZfcHVzaCYjMzQ7LAogICAgJiMzNDtuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbmV0ZmlsdGVyIGZsb3cgdGFibGUgbG9naWMsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgZHN0X2NhY2hlIGFuZCBkc3RfY29va2llIGFyZSBzdG9yZWQgYW5kIGhhbmRsZWQgZm9yIHR1bm5lbHMuIEl0IGFsc28gYWRkcyBhIGNoZWNrIHRvIHByZXZlbnQgaGFyZHdhcmUgb2ZmbG9hZCBmb3IgdW5zdXBwb3J0ZWQgdHVubmVsIGZsb3dzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zmxvd19vZmZsb2FkX2ZpbGxfcm91dGUmIzM0OywKICAgICYjMzQ7bmZfZmxvd190dW5uZWxfaXBpcF9wdXNoJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoJiMzNDssCiAgICAmIzM0O25mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBuZXRmaWx0ZXIgZmxvdyB0YWJsZSBsb2dpYywgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBkc3RfY2FjaGUgYW5kIGRzdF9jb29raWUgYXJlIHN0b3JlZCBhbmQgaGFuZGxlZCBmb3IgdHVubmVscy4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgdG8gcHJldmVudCBoYXJkd2FyZSBvZmZsb2FkIGZvciB1bnN1cHBvcnRlZCB0dW5uZWwgZmxvd3MuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDowOTowMS4wMDQxNTUxNjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODcxNzUyMjE4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9GTE9XX1RBQkxFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmxvd19vZmZsb2FkX2ZpbGxfcm91dGVcIixcbiAgICBcIm5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaFwiLFxuICAgIFwibmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hcIixcbiAgICBcIm5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG5ldGZpbHRlciBmbG93IHRhYmxlIGxvZ2ljLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRzdF9jYWNoZSBhbmQgZHN0X2Nvb2tpZSBhcmUgc3RvcmVkIGFuZCBoYW5kbGVkIGZvciB0dW5uZWxzLiBJdCBhbHNvIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGhhcmR3YXJlIG9mZmxvYWQgZm9yIHVuc3VwcG9ydGVkIHR1bm5lbCBmbG93cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MDEuMDA0MTU5ODQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQ4ODU1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmNjU1ZGQ3MmRkOWFhNWViOGZhMTI4MjgxN2I1NTkwODdiOGMzMWY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMDQ6MDk6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmhcXG5pbmRleCA3YjIzYjI0NWE1YTg2YS4uMzY5ZjZhNzE3ODExNGMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaFxcbisrKyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmhcXG5AQCAtMTU1LDExICsxNTUsMTEgQEAgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZSB7XFxuIFxcdFxcdFxcdFxcdFxcdHR1bl9udW06MixcXG4gXFx0XFx0XFx0XFx0XFx0aW5fdmxhbl9pbmdyZXNzOjI7XFxuIFxcdHUxNlxcdFxcdFxcdFxcdG10dTtcXG4rXFx0c3RydWN0IGRzdF9lbnRyeVxcdFxcdCpkc3RfY2FjaGU7XFxuK1xcdHUzMlxcdFxcdFxcdFxcdGRzdF9jb29raWU7XFxuIFxcdHVuaW9uIHtcXG4gXFx0XFx0c3RydWN0IHtcXG4tXFx0XFx0XFx0c3RydWN0IGRzdF9lbnRyeSAqZHN0X2NhY2hlO1xcbiBcXHRcXHRcXHR1MzJcXHRcXHRpZmlkeDtcXG4tXFx0XFx0XFx0dTMyXFx0XFx0ZHN0X2Nvb2tpZTtcXG4gXFx0XFx0fTtcXG4gXFx0XFx0c3RydWN0IHtcXG4gXFx0XFx0XFx0dTMyXFx0XFx0aWZpZHg7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXFxuaW5kZXggOTljNWI5ZDY3MWEwY2EuLjZmMTk1Y2NmMjIyYTkzIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXFxuQEAgLTEyNywxMiArMTI3LDIxIEBAIHN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG4gXFxuIFxcdHN3aXRjaCAocm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ueG1pdF90eXBlKSB7XFxuIFxcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUOlxcbitcXHRcXHRpZiAoZmxvd190dXBsZS1cXHUwMDNldHVuX251bSkge1xcbitcXHRcXHRcXHRmbG93X3R1cGxlLVxcdTAwM2Vkc3RfY2FjaGUgPSBkc3Q7XFxuK1xcdFxcdFxcdGZsb3dfdHVwbGUtXFx1MDAzZWRzdF9jb29raWUgPVxcbitcXHRcXHRcXHRcXHRmbG93X29mZmxvYWRfZHN0X2Nvb2tpZShmbG93X3R1cGxlKTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0Zmxvd190dXBsZS1cXHUwMDNlZHN0X2NhY2hlID0gTlVMTDtcXG4rXFx0XFx0XFx0Zmxvd190dXBsZS1cXHUwMDNlZHN0X2Nvb2tpZSA9IDA7XFxuK1xcdFxcdH1cXG4gXFx0XFx0bWVtY3B5KGZsb3dfdHVwbGUtXFx1MDAzZW91dC5oX2Rlc3QsIHJvdXRlLVxcdTAwM2V0dXBsZVtkaXJdLm91dC5oX2Rlc3QsXFxuIFxcdFxcdCAgICAgICBFVEhfQUxFTik7XFxuIFxcdFxcdG1lbWNweShmbG93X3R1cGxlLVxcdTAwM2VvdXQuaF9zb3VyY2UsIHJvdXRlLVxcdTAwM2V0dXBsZVtkaXJdLm91dC5oX3NvdXJjZSxcXG4gXFx0XFx0ICAgICAgIEVUSF9BTEVOKTtcXG4gXFx0XFx0Zmxvd190dXBsZS1cXHUwMDNlb3V0LmlmaWR4ID0gcm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ub3V0LmlmaW5kZXg7XFxuLVxcdFxcdGRzdF9yZWxlYXNlKGRzdCk7XFxuK1xcdFxcdGlmICghZmxvd190dXBsZS1cXHUwMDNldHVuX251bSlcXG4rXFx0XFx0XFx0ZHN0X3JlbGVhc2UoZHN0KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgRkxPV19PRkZMT0FEX1hNSVRfWEZSTTpcXG4gXFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ORUlHSDpcXG5AQCAtMTUyLDkgKzE2MSw3IEBAIHN0YXRpYyBpbnQgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGUoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG4gc3RhdGljIHZvaWQgbmZ0X2Zsb3dfZHN0X3JlbGVhc2Uoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG4gXFx0XFx0XFx0XFx0IGVudW0gZmxvd19vZmZsb2FkX3R1cGxlX2RpciBkaXIpXFxuIHtcXG4tXFx0aWYgKGZsb3ctXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLnhtaXRfdHlwZSA9PSBGTE9XX09GRkxPQURfWE1JVF9ORUlHSCB8fFxcbi1cXHQgICAgZmxvdy1cXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGUueG1pdF90eXBlID09IEZMT1dfT0ZGTE9BRF9YTUlUX1hGUk0pXFxuLVxcdFxcdGRzdF9yZWxlYXNlKGZsb3ctXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLmRzdF9jYWNoZSk7XFxuK1xcdGRzdF9yZWxlYXNlKGZsb3ctXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLmRzdF9jYWNoZSk7XFxuIH1cXG4gXFxuIHZvaWQgZmxvd19vZmZsb2FkX3JvdXRlX2luaXQoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuY1xcbmluZGV4IDI5ZTkzYWMxZTJlNDAwLi4wYjc4ZGVjY2U4YTliZCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jXFxuQEAgLTI5OSw4ICsyOTksNyBAQCBzdGF0aWMgYm9vbCBuZl9mbG93X2V4Y2VlZHNfbXR1KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBtdHUpXFxuIFxcbiBzdGF0aWMgaW5saW5lIGJvb2wgbmZfZmxvd19kc3RfY2hlY2soc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZSAqdHVwbGUpXFxuIHtcXG4tXFx0aWYgKHR1cGxlLVxcdTAwM2V4bWl0X3R5cGUgIT0gRkxPV19PRkZMT0FEX1hNSVRfTkVJR0ggXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIHR1cGxlLVxcdTAwM2V4bWl0X3R5cGUgIT0gRkxPV19PRkZMT0FEX1hNSVRfWEZSTSlcXG4rXFx0aWYgKCF0dXBsZS1cXHUwMDNlZHN0X2NhY2hlKVxcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFxuIFxcdHJldHVybiBkc3RfY2hlY2sodHVwbGUtXFx1MDAzZWRzdF9jYWNoZSwgdHVwbGUtXFx1MDAzZWRzdF9jb29raWUpO1xcbkBAIC01OTAsMTAgKzU4OSwxMCBAQCBzdGF0aWMgaW50IG5mX2Zsb3dfcHBwb2VfcHVzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgaWQsXFxuIFxcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSxcXG4tXFx0XFx0XFx0XFx0ICAgIF9fYmUzMiAqaXBfZGFkZHIpXFxuK1xcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIF9fYmUzMiAqaXBfZGFkZHIpXFxuIHtcXG4gXFx0c3RydWN0IGlwaGRyICppcGggPSAoc3RydWN0IGlwaGRyICopc2tiX25ldHdvcmtfaGVhZGVyKHNrYik7XFxuLVxcdHN0cnVjdCBydGFibGUgKnJ0ID0gZHN0X3J0YWJsZSh0dXBsZS1cXHUwMDNlZHN0X2NhY2hlKTtcXG4rXFx0c3RydWN0IHJ0YWJsZSAqcnQgPSBkc3RfcnRhYmxlKGRzdCk7XFxuIFxcdHU4IHRvcyA9IGlwaC1cXHUwMDNldG9zLCB0dGwgPSBpcGgtXFx1MDAzZXR0bDtcXG4gXFx0X19iZTE2IGZyYWdfb2ZmID0gaXBoLVxcdTAwM2VmcmFnX29mZjtcXG4gXFx0dTMyIGhlYWRyb29tID0gc2l6ZW9mKCppcGgpO1xcbkBAIC02MzYsMjEgKzYzNSwyMiBAQCBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX3Y0X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUgKnR1cGxlLFxcbi1cXHRcXHRcXHRcXHQgIF9fYmUzMiAqaXBfZGFkZHIpXFxuK1xcdFxcdFxcdFxcdCAgc3RydWN0IGRzdF9lbnRyeSAqZHN0LCAgX19iZTMyICppcF9kYWRkcilcXG4ge1xcbiBcXHRpZiAodHVwbGUtXFx1MDAzZXR1bl9udW0pXFxuLVxcdFxcdHJldHVybiBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gobmV0LCBza2IsIHR1cGxlLCBpcF9kYWRkcik7XFxuK1xcdFxcdHJldHVybiBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gobmV0LCBza2IsIHR1cGxlLCBkc3QsIGlwX2RhZGRyKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZSAqdHVwbGUsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkc3RfZW50cnkgKmRzdCxcXG4gXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGluNl9hZGRyICoqaXA2X2RhZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBpcHY2aGRyICppcDZoID0gKHN0cnVjdCBpcHY2aGRyICopc2tiX25ldHdvcmtfaGVhZGVyKHNrYik7XFxuLVxcdHN0cnVjdCBydGFibGUgKnJ0ID0gZHN0X3J0YWJsZSh0dXBsZS1cXHUwMDNlZHN0X2NhY2hlKTtcXG4gXFx0X191OCBkc2ZpZWxkID0gaXB2Nl9nZXRfZHNmaWVsZChpcDZoKTtcXG4rXFx0c3RydWN0IHJ0YWJsZSAqcnQgPSBkc3RfcnRhYmxlKGRzdCk7XFxuIFxcdHN0cnVjdCBmbG93aTYgZmw2ID0ge1xcbiBcXHRcXHQuZGFkZHIgPSB0dXBsZS1cXHUwMDNldHVuLnNyY192NixcXG4gXFx0XFx0LnNhZGRyID0gdHVwbGUtXFx1MDAzZXR1bi5kc3RfdjYsXFxuQEAgLTY5NiwxMCArNjk2LDExIEBAIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gc3RhdGljIGludCBuZl9mbG93X3R1bm5lbF92Nl9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSxcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IGluNl9hZGRyICoqaXA2X2RhZGRyKVxcbiB7XFxuIFxcdGlmICh0dXBsZS1cXHUwMDNldHVuX251bSlcXG4tXFx0XFx0cmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgaXA2X2RhZGRyKTtcXG4rXFx0XFx0cmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgZHN0LCBpcDZfZGFkZHIpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtODQyLDcgKzg0Myw4IEBAIG5mX2Zsb3dfb2ZmbG9hZF9pcF9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdG90aGVyX3R1cGxlID0gXFx1MDAyNmZsb3ctXFx1MDAzZXR1cGxlaGFzaFshZGlyXS50dXBsZTtcXG4gXFx0aXBfZGFkZHIgPSBvdGhlcl90dXBsZS1cXHUwMDNlc3JjX3Y0LnNfYWRkcjtcXG4gXFxuLVxcdGlmIChuZl9mbG93X3R1bm5lbF92NF9wdXNoKHN0YXRlLVxcdTAwM2VuZXQsIHNrYiwgb3RoZXJfdHVwbGUsIFxcdTAwMjZpcF9kYWRkcikgXFx1MDAzYyAwKVxcbitcXHRpZiAobmZfZmxvd190dW5uZWxfdjRfcHVzaChzdGF0ZS1cXHUwMDNlbmV0LCBza2IsIG90aGVyX3R1cGxlLFxcbitcXHRcXHRcXHRcXHQgICB0dXBsZWhhc2gtXFx1MDAzZXR1cGxlLmRzdF9jYWNoZSwgXFx1MDAyNmlwX2RhZGRyKSBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBORl9EUk9QO1xcbiBcXG4gXFx0c3dpdGNoICh0dXBsZWhhc2gtXFx1MDAzZXR1cGxlLnhtaXRfdHlwZSkge1xcbkBAIC0xMTU4LDYgKzExNjAsNyBAQCBuZl9mbG93X29mZmxvYWRfaXB2Nl9ob29rKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdGlwNl9kYWRkciA9IFxcdTAwMjZvdGhlcl90dXBsZS1cXHUwMDNlc3JjX3Y2O1xcbiBcXG4gXFx0aWYgKG5mX2Zsb3dfdHVubmVsX3Y2X3B1c2goc3RhdGUtXFx1MDAzZW5ldCwgc2tiLCBvdGhlcl90dXBsZSxcXG4rXFx0XFx0XFx0XFx0ICAgdHVwbGVoYXNoLVxcdTAwM2V0dXBsZS5kc3RfY2FjaGUsXFxuIFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZpcDZfZGFkZHIpIFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIE5GX0RST1A7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuY1xcbmluZGV4IDAwMmVjMTVkOTg4YmRiLi4zZTg3MTE3ZTcyNGIzZiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuY1xcbkBAIC0xMTAxLDEyICsxMTAxLDIzIEBAIG5mX2Zsb3dfb2ZmbG9hZF93b3JrX2FsbG9jKHN0cnVjdCBuZl9mbG93dGFibGUgKmZsb3d0YWJsZSxcXG4gXFx0cmV0dXJuIG9mZmxvYWQ7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93KVxcbit7XFxuK1xcdGlmIChmbG93LVxcdTAwM2V0dXBsZWhhc2hbRkxPV19PRkZMT0FEX0RJUl9PUklHSU5BTF0udHVwbGUudHVuX251bSB8fFxcbitcXHQgICAgZmxvdy1cXHUwMDNldHVwbGVoYXNoW0ZMT1dfT0ZGTE9BRF9ESVJfUkVQTFldLnR1cGxlLnR1bl9udW0pXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbit9XFxuIFxcbiB2b2lkIG5mX2Zsb3dfb2ZmbG9hZF9hZGQoc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLFxcbiBcXHRcXHRcXHQgc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdylcXG4ge1xcbiBcXHRzdHJ1Y3QgZmxvd19vZmZsb2FkX3dvcmsgKm9mZmxvYWQ7XFxuIFxcbitcXHRpZiAobmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkKGZsb3cpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRvZmZsb2FkID0gbmZfZmxvd19vZmZsb2FkX3dvcmtfYWxsb2MoZmxvd3RhYmxlLCBmbG93LCBGTE9XX0NMU19SRVBMQUNFKTtcXG4gXFx0aWYgKCFvZmZsb2FkKVxcbiBcXHRcXHRyZXR1cm47XFxuQEAgLTExMTksNiArMTEzMCw5IEBAIHZvaWQgbmZfZmxvd19vZmZsb2FkX2RlbChzdHJ1Y3QgbmZfZmxvd3RhYmxlICpmbG93dGFibGUsXFxuIHtcXG4gXFx0c3RydWN0IGZsb3dfb2ZmbG9hZF93b3JrICpvZmZsb2FkO1xcbiBcXG4rXFx0aWYgKG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChmbG93KSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0b2ZmbG9hZCA9IG5mX2Zsb3dfb2ZmbG9hZF93b3JrX2FsbG9jKGZsb3d0YWJsZSwgZmxvdywgRkxPV19DTFNfREVTVFJPWSk7XFxuIFxcdGlmICghb2ZmbG9hZClcXG4gXFx0XFx0cmV0dXJuO1xcbkBAIC0xMTMzLDYgKzExNDcsOSBAQCB2b2lkIG5mX2Zsb3dfb2ZmbG9hZF9zdGF0cyhzdHJ1Y3QgbmZfZmxvd3RhYmxlICpmbG93dGFibGUsXFxuIFxcdHN0cnVjdCBmbG93X29mZmxvYWRfd29yayAqb2ZmbG9hZDtcXG4gXFx0X19zMzIgZGVsdGE7XFxuIFxcbitcXHRpZiAobmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkKGZsb3cpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRkZWx0YSA9IG5mX2Zsb3dfdGltZW91dF9kZWx0YShmbG93LVxcdTAwM2V0aW1lb3V0KTtcXG4gXFx0aWYgKChkZWx0YSBcXHUwMDNlPSAoOSAqIGZsb3dfb2ZmbG9hZF9nZXRfdGltZW91dChmbG93KSkgLyAxMCkpXFxuIFxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MDEuMjc5ODMxNDlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDQxODMyNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmbG93X29mZmxvYWRfZmlsbF9yb3V0ZVwiLFxuICAgIFwibmZfZmxvd190dW5uZWxfaXBpcF9wdXNoXCIsXG4gICAgXCJuZl9mbG93X3R1bm5lbF9pcDZpcDZfcHVzaFwiLFxuICAgIFwibmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbmV0ZmlsdGVyIGZsb3cgdGFibGUgbG9naWMsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgZHN0X2NhY2hlIGFuZCBkc3RfY29va2llIGFyZSBzdG9yZWQgYW5kIGhhbmRsZWQgZm9yIHR1bm5lbHMuIEl0IGFsc28gYWRkcyBhIGNoZWNrIHRvIHByZXZlbnQgaGFyZHdhcmUgb2ZmbG9hZCBmb3IgdW5zdXBwb3J0ZWQgdHVubmVsIGZsb3dzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGY2NTVkZDcyZGQ5YWE1ZWI4ZmExMjgyODE3YjU1OTA4N2I4YzMxZjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDA0OjA5OjAwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmhcbmluZGV4IDdiMjNiMjQ1YTVhODZhLi4zNjlmNmE3MTc4MTE0YyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmhcbisrKyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmhcbkBAIC0xNTUsMTEgKzE1NSwxMSBAQCBzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlIHtcbiBcdFx0XHRcdFx0dHVuX251bToyLFxuIFx0XHRcdFx0XHRpbl92bGFuX2luZ3Jlc3M6MjtcbiBcdHUxNlx0XHRcdFx0bXR1O1xuK1x0c3RydWN0IGRzdF9lbnRyeVx0XHQqZHN0X2NhY2hlO1xuK1x0dTMyXHRcdFx0XHRkc3RfY29va2llO1xuIFx0dW5pb24ge1xuIFx0XHRzdHJ1Y3Qge1xuLVx0XHRcdHN0cnVjdCBkc3RfZW50cnkgKmRzdF9jYWNoZTtcbiBcdFx0XHR1MzJcdFx0aWZpZHg7XG4tXHRcdFx0dTMyXHRcdGRzdF9jb29raWU7XG4gXHRcdH07XG4gXHRcdHN0cnVjdCB7XG4gXHRcdFx0dTMyXHRcdGlmaWR4O1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXG5pbmRleCA5OWM1YjlkNjcxYTBjYS4uNmYxOTVjY2YyMjJhOTMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfY29yZS5jXG5AQCAtMTI3LDEyICsxMjcsMjEgQEAgc3RhdGljIGludCBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZShzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LFxuIFxuIFx0c3dpdGNoIChyb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLnhtaXRfdHlwZSkge1xuIFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ESVJFQ1Q6XG4rXHRcdGlmIChmbG93X3R1cGxlLVx1MDAzZXR1bl9udW0pIHtcbitcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jYWNoZSA9IGRzdDtcbitcdFx0XHRmbG93X3R1cGxlLVx1MDAzZWRzdF9jb29raWUgPVxuK1x0XHRcdFx0Zmxvd19vZmZsb2FkX2RzdF9jb29raWUoZmxvd190dXBsZSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0Zmxvd190dXBsZS1cdTAwM2Vkc3RfY2FjaGUgPSBOVUxMO1xuK1x0XHRcdGZsb3dfdHVwbGUtXHUwMDNlZHN0X2Nvb2tpZSA9IDA7XG4rXHRcdH1cbiBcdFx0bWVtY3B5KGZsb3dfdHVwbGUtXHUwMDNlb3V0LmhfZGVzdCwgcm91dGUtXHUwMDNldHVwbGVbZGlyXS5vdXQuaF9kZXN0LFxuIFx0XHQgICAgICAgRVRIX0FMRU4pO1xuIFx0XHRtZW1jcHkoZmxvd190dXBsZS1cdTAwM2VvdXQuaF9zb3VyY2UsIHJvdXRlLVx1MDAzZXR1cGxlW2Rpcl0ub3V0Lmhfc291cmNlLFxuIFx0XHQgICAgICAgRVRIX0FMRU4pO1xuIFx0XHRmbG93X3R1cGxlLVx1MDAzZW91dC5pZmlkeCA9IHJvdXRlLVx1MDAzZXR1cGxlW2Rpcl0ub3V0LmlmaW5kZXg7XG4tXHRcdGRzdF9yZWxlYXNlKGRzdCk7XG4rXHRcdGlmICghZmxvd190dXBsZS1cdTAwM2V0dW5fbnVtKVxuK1x0XHRcdGRzdF9yZWxlYXNlKGRzdCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9YRlJNOlxuIFx0Y2FzZSBGTE9XX09GRkxPQURfWE1JVF9ORUlHSDpcbkBAIC0xNTIsOSArMTYxLDcgQEAgc3RhdGljIGludCBmbG93X29mZmxvYWRfZmlsbF9yb3V0ZShzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93LFxuIHN0YXRpYyB2b2lkIG5mdF9mbG93X2RzdF9yZWxlYXNlKHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3csXG4gXHRcdFx0XHQgZW51bSBmbG93X29mZmxvYWRfdHVwbGVfZGlyIGRpcilcbiB7XG4tXHRpZiAoZmxvdy1cdTAwM2V0dXBsZWhhc2hbZGlyXS50dXBsZS54bWl0X3R5cGUgPT0gRkxPV19PRkZMT0FEX1hNSVRfTkVJR0ggfHxcbi1cdCAgICBmbG93LVx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLnhtaXRfdHlwZSA9PSBGTE9XX09GRkxPQURfWE1JVF9YRlJNKVxuLVx0XHRkc3RfcmVsZWFzZShmbG93LVx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLmRzdF9jYWNoZSk7XG4rXHRkc3RfcmVsZWFzZShmbG93LVx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLmRzdF9jYWNoZSk7XG4gfVxuIFxuIHZvaWQgZmxvd19vZmZsb2FkX3JvdXRlX2luaXQoc3RydWN0IGZsb3dfb2ZmbG9hZCAqZmxvdyxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9pcC5jXG5pbmRleCAyOWU5M2FjMWUyZTQwMC4uMGI3OGRlY2NlOGE5YmQgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfaXAuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmNcbkBAIC0yOTksOCArMjk5LDcgQEAgc3RhdGljIGJvb2wgbmZfZmxvd19leGNlZWRzX210dShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbXR1KVxuIFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBuZl9mbG93X2RzdF9jaGVjayhzdHJ1Y3QgZmxvd19vZmZsb2FkX3R1cGxlICp0dXBsZSlcbiB7XG4tXHRpZiAodHVwbGUtXHUwMDNleG1pdF90eXBlICE9IEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHR1cGxlLVx1MDAzZXhtaXRfdHlwZSAhPSBGTE9XX09GRkxPQURfWE1JVF9YRlJNKVxuK1x0aWYgKCF0dXBsZS1cdTAwM2Vkc3RfY2FjaGUpXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuIFx0cmV0dXJuIGRzdF9jaGVjayh0dXBsZS1cdTAwM2Vkc3RfY2FjaGUsIHR1cGxlLVx1MDAzZWRzdF9jb29raWUpO1xuQEAgLTU5MCwxMCArNTg5LDEwIEBAIHN0YXRpYyBpbnQgbmZfZmxvd19wcHBvZV9wdXNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiBpZCxcbiBcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICAgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZSAqdHVwbGUsXG4tXHRcdFx0XHQgICAgX19iZTMyICppcF9kYWRkcilcbitcdFx0XHRcdCAgICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIF9fYmUzMiAqaXBfZGFkZHIpXG4ge1xuIFx0c3RydWN0IGlwaGRyICppcGggPSAoc3RydWN0IGlwaGRyICopc2tiX25ldHdvcmtfaGVhZGVyKHNrYik7XG4tXHRzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUodHVwbGUtXHUwMDNlZHN0X2NhY2hlKTtcbitcdHN0cnVjdCBydGFibGUgKnJ0ID0gZHN0X3J0YWJsZShkc3QpO1xuIFx0dTggdG9zID0gaXBoLVx1MDAzZXRvcywgdHRsID0gaXBoLVx1MDAzZXR0bDtcbiBcdF9fYmUxNiBmcmFnX29mZiA9IGlwaC1cdTAwM2VmcmFnX29mZjtcbiBcdHUzMiBoZWFkcm9vbSA9IHNpemVvZigqaXBoKTtcbkBAIC02MzYsMjEgKzYzNSwyMiBAQCBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gc3RhdGljIGludCBuZl9mbG93X3R1bm5lbF92NF9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZSAqdHVwbGUsXG4tXHRcdFx0XHQgIF9fYmUzMiAqaXBfZGFkZHIpXG4rXHRcdFx0XHQgIHN0cnVjdCBkc3RfZW50cnkgKmRzdCwgIF9fYmUzMiAqaXBfZGFkZHIpXG4ge1xuIFx0aWYgKHR1cGxlLVx1MDAzZXR1bl9udW0pXG4tXHRcdHJldHVybiBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gobmV0LCBza2IsIHR1cGxlLCBpcF9kYWRkcik7XG4rXHRcdHJldHVybiBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2gobmV0LCBza2IsIHR1cGxlLCBkc3QsIGlwX2RhZGRyKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUgKnR1cGxlLFxuK1x0XHRcdFx0ICAgICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0LFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IGluNl9hZGRyICoqaXA2X2RhZGRyKVxuIHtcbiBcdHN0cnVjdCBpcHY2aGRyICppcDZoID0gKHN0cnVjdCBpcHY2aGRyICopc2tiX25ldHdvcmtfaGVhZGVyKHNrYik7XG4tXHRzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUodHVwbGUtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdF9fdTggZHNmaWVsZCA9IGlwdjZfZ2V0X2RzZmllbGQoaXA2aCk7XG4rXHRzdHJ1Y3QgcnRhYmxlICpydCA9IGRzdF9ydGFibGUoZHN0KTtcbiBcdHN0cnVjdCBmbG93aTYgZmw2ID0ge1xuIFx0XHQuZGFkZHIgPSB0dXBsZS1cdTAwM2V0dW4uc3JjX3Y2LFxuIFx0XHQuc2FkZHIgPSB0dXBsZS1cdTAwM2V0dW4uZHN0X3Y2LFxuQEAgLTY5NiwxMCArNjk2LDExIEBAIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIHN0YXRpYyBpbnQgbmZfZmxvd190dW5uZWxfdjZfcHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgIHN0cnVjdCBmbG93X29mZmxvYWRfdHVwbGUgKnR1cGxlLFxuK1x0XHRcdFx0ICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXG4gXHRcdFx0XHQgIHN0cnVjdCBpbjZfYWRkciAqKmlwNl9kYWRkcilcbiB7XG4gXHRpZiAodHVwbGUtXHUwMDNldHVuX251bSlcbi1cdFx0cmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgaXA2X2RhZGRyKTtcbitcdFx0cmV0dXJuIG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoKG5ldCwgc2tiLCB0dXBsZSwgZHN0LCBpcDZfZGFkZHIpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTg0Miw3ICs4NDMsOCBAQCBuZl9mbG93X29mZmxvYWRfaXBfaG9vayh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0b3RoZXJfdHVwbGUgPSBcdTAwMjZmbG93LVx1MDAzZXR1cGxlaGFzaFshZGlyXS50dXBsZTtcbiBcdGlwX2RhZGRyID0gb3RoZXJfdHVwbGUtXHUwMDNlc3JjX3Y0LnNfYWRkcjtcbiBcbi1cdGlmIChuZl9mbG93X3R1bm5lbF92NF9wdXNoKHN0YXRlLVx1MDAzZW5ldCwgc2tiLCBvdGhlcl90dXBsZSwgXHUwMDI2aXBfZGFkZHIpIFx1MDAzYyAwKVxuK1x0aWYgKG5mX2Zsb3dfdHVubmVsX3Y0X3B1c2goc3RhdGUtXHUwMDNlbmV0LCBza2IsIG90aGVyX3R1cGxlLFxuK1x0XHRcdFx0ICAgdHVwbGVoYXNoLVx1MDAzZXR1cGxlLmRzdF9jYWNoZSwgXHUwMDI2aXBfZGFkZHIpIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcbiBcdHN3aXRjaCAodHVwbGVoYXNoLVx1MDAzZXR1cGxlLnhtaXRfdHlwZSkge1xuQEAgLTExNTgsNiArMTE2MCw3IEBAIG5mX2Zsb3dfb2ZmbG9hZF9pcHY2X2hvb2sodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlwNl9kYWRkciA9IFx1MDAyNm90aGVyX3R1cGxlLVx1MDAzZXNyY192NjtcbiBcbiBcdGlmIChuZl9mbG93X3R1bm5lbF92Nl9wdXNoKHN0YXRlLVx1MDAzZW5ldCwgc2tiLCBvdGhlcl90dXBsZSxcbitcdFx0XHRcdCAgIHR1cGxlaGFzaC1cdTAwM2V0dXBsZS5kc3RfY2FjaGUsXG4gXHRcdFx0XHQgICBcdTAwMjZpcDZfZGFkZHIpIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfb2ZmbG9hZC5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuY1xuaW5kZXggMDAyZWMxNWQ5ODhiZGIuLjNlODcxMTdlNzI0YjNmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX29mZmxvYWQuY1xuQEAgLTExMDEsMTIgKzExMDEsMjMgQEAgbmZfZmxvd19vZmZsb2FkX3dvcmtfYWxsb2Moc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLFxuIFx0cmV0dXJuIG9mZmxvYWQ7XG4gfVxuIFxuK3N0YXRpYyBib29sIG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChzdHJ1Y3QgZmxvd19vZmZsb2FkICpmbG93KVxuK3tcbitcdGlmIChmbG93LVx1MDAzZXR1cGxlaGFzaFtGTE9XX09GRkxPQURfRElSX09SSUdJTkFMXS50dXBsZS50dW5fbnVtIHx8XG4rXHQgICAgZmxvdy1cdTAwM2V0dXBsZWhhc2hbRkxPV19PRkZMT0FEX0RJUl9SRVBMWV0udHVwbGUudHVuX251bSlcbitcdFx0cmV0dXJuIHRydWU7XG4rXG4rXHRyZXR1cm4gZmFsc2U7XG4rfVxuIFxuIHZvaWQgbmZfZmxvd19vZmZsb2FkX2FkZChzdHJ1Y3QgbmZfZmxvd3RhYmxlICpmbG93dGFibGUsXG4gXHRcdFx0IHN0cnVjdCBmbG93X29mZmxvYWQgKmZsb3cpXG4ge1xuIFx0c3RydWN0IGZsb3dfb2ZmbG9hZF93b3JrICpvZmZsb2FkO1xuIFxuK1x0aWYgKG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZChmbG93KSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0b2ZmbG9hZCA9IG5mX2Zsb3dfb2ZmbG9hZF93b3JrX2FsbG9jKGZsb3d0YWJsZSwgZmxvdywgRkxPV19DTFNfUkVQTEFDRSk7XG4gXHRpZiAoIW9mZmxvYWQpXG4gXHRcdHJldHVybjtcbkBAIC0xMTE5LDYgKzExMzAsOSBAQCB2b2lkIG5mX2Zsb3dfb2ZmbG9hZF9kZWwoc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLFxuIHtcbiBcdHN0cnVjdCBmbG93X29mZmxvYWRfd29yayAqb2ZmbG9hZDtcbiBcbitcdGlmIChuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWQoZmxvdykpXG4rXHRcdHJldHVybjtcbitcbiBcdG9mZmxvYWQgPSBuZl9mbG93X29mZmxvYWRfd29ya19hbGxvYyhmbG93dGFibGUsIGZsb3csIEZMT1dfQ0xTX0RFU1RST1kpO1xuIFx0aWYgKCFvZmZsb2FkKVxuIFx0XHRyZXR1cm47XG5AQCAtMTEzMyw2ICsxMTQ3LDkgQEAgdm9pZCBuZl9mbG93X29mZmxvYWRfc3RhdHMoc3RydWN0IG5mX2Zsb3d0YWJsZSAqZmxvd3RhYmxlLFxuIFx0c3RydWN0IGZsb3dfb2ZmbG9hZF93b3JrICpvZmZsb2FkO1xuIFx0X19zMzIgZGVsdGE7XG4gXG4rXHRpZiAobmZfZmxvd19vZmZsb2FkX3Vuc3VwcG9ydGVkKGZsb3cpKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRkZWx0YSA9IG5mX2Zsb3dfdGltZW91dF9kZWx0YShmbG93LVx1MDAzZXRpbWVvdXQpO1xuIFx0aWYgKChkZWx0YSBcdTAwM2U9ICg5ICogZmxvd19vZmZsb2FkX2dldF90aW1lb3V0KGZsb3cpKSAvIDEwKSlcbiBcdFx0cmV0dXJuO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MDEuMjc5ODMyODdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTMzNzM1NjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIEZsb3cgVGFibGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHBva2luZyBhcm91bmQgaW4gdGhlIG5ldGZpbHRlciBmbG93IHRhYmxlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgdGhlIGBkc3RfY2FjaGVgIGFuZCBgZHN0X2Nvb2tpZWAgd2l0aGluIHRoZSBgc3RydWN0IGZsb3dfb2ZmbG9hZF90dXBsZWAuIFRoaXMgc2VlbXMgcHJldHR5IHNpZ25pZmljYW50IOKAkyB0aGV5J3JlIG1vdmluZyB0aGVtIG91dCBvZiB0aGUgdW5pb24sIHNvIHRoZXkncmUgYWx3YXlzIHByZXNlbnQuIFRoYXQncyBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiBob3cgdGhlIHRhYmxlIHJlcHJlc2VudHMgdGhlc2UgZGVzdGluYXRpb24tcmVsYXRlZCBhdHRyaWJ1dGVzLCBzdWdnZXN0aW5nIHBvdGVudGlhbGx5IGJyb2FkZXIgcGVyZm9ybWFuY2Ugb3IgY29ycmVjdG5lc3MgaW1wbGljYXRpb25zLCBlc3BlY2lhbGx5IHdpdGggY29uY3VycmVudCBhY2Nlc3Mgb3Igc3RhdGUgbWFuYWdlbWVudC5cblxuVGhlIGNvcmUgb2YgaXQgaXMgdGhlIG1hbmlwdWxhdGlvbiBvZiB0aGUgYGRzdF9jYWNoZWAgYW5kIGBkc3RfY29va2llYCBwb2ludGVycy4gYGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlYCBpcyBiZWluZyBtb2RpZmllZCB0byBzZXQgdGhlbSBldmVuIGZvciBgRkxPV19PRkZMT0FEX1hNSVRfRElSRUNUYCwgd2hlbiB0aGUgdHVubmVsIG51bWJlciBpcyBub24temVyby4gVGhlIGNoYW5nZSBhbHNvIG1vZGlmaWVzIHRoZSBgbmZ0X2Zsb3dfZHN0X3JlbGVhc2VgIGZ1bmN0aW9uIHNvIHRoYXQgaXQgKmFsd2F5cyogcmVsZWFzZXMgdGhlIGBkc3RfY2FjaGVgIHVzaW5nIGBkc3RfcmVsZWFzZWAsIHJlZ2FyZGxlc3Mgb2Ygb3RoZXIgY29uZGl0aW9ucy4gQWxzbywgYG5mX2Zsb3dfZHN0X2NoZWNrYCBpcyBiZWluZyBhZGp1c3RlZCB0byBjaGVjayBmb3IgdGhlIGFic2VuY2Ugb2YgYHR1cGxlLVx1MDAzZWRzdF9jYWNoZWAgYXMgaXRzIHByaW1hcnkgY29uZGl0aW9uLCBpbnN0ZWFkIG9mIGFuIG9sZGVyIGB4bWl0X3R5cGVgIGNvbmRpdGlvbi5cblxuT24gdG9wIG9mIHRoaXMsIHR1bm5lbCBoYW5kbGluZyBpcyBiZWluZyByZXdvcmtlZC4gVGhlIGBuZl9mbG93X3R1bm5lbF9pcGlwX3B1c2hgIGFuZCBgbmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hgIGZ1bmN0aW9ucyBhcmUgbm93IHJlY2VpdmluZyBhIGBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RgIGFzIGFuIGFyZ3VtZW50IGluc3RlYWQgb2YgcmV0cmlldmluZyB0aGUgZGVzdGluYXRpb24gZnJvbSB0aGUgdHVwbGUgY2FjaGUuIFRoaXMgbGlrZWx5IG1lYW5zIHNvbWUgcmVmYWN0b3JpbmcgdG8gaW1wcm92ZSBjb2RlIGNsYXJpdHkgb3IgaGFuZGxlIGNhc2VzIHdoZXJlIHRoZSB0dXBsZSBkb2Vzbid0IGhhdmUgdGhlIGNhY2hlZCBkZXN0aW5hdGlvbi4gQW5kIGZpbmFsbHksIHNvbWUgb2YgdGhlIGZsb3cgb2ZmbG9hZCBmdW5jdGlvbnMgKGBuZl9mbG93X29mZmxvYWRfYWRkYCwgYG5mX2Zsb3dfb2ZmbG9hZF9kZWxgLCBhbmQgYG5mX2Zsb3dfb2ZmbG9hZF9zdGF0c2ApIGhhdmUgYW4gZWFybHkgZXhpdCBjb25kaXRpb24sIGJhc2VkIG9uIHRoZSBuZXcgYG5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZGAgY2hlY2sgKHdoaWNoIGNvbnNpZGVycyBhIG5vbi16ZXJvIHR1bm5lbCBudW1iZXIgaW4gZWl0aGVyIGRpcmVjdGlvbikuXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBpdCdzIHRvdWNoaW5nIHRoZSBjb3JlIGxvZ2ljIG9mIGhvdyBJUC9JUHY2IHR1bm5lbHMgYXJlIHJlcHJlc2VudGVkIGFuZCBoYW5kbGVkIHdpdGhpbiB0aGUgZmxvdyB0YWJsZS4gVGhhdCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgZ2l2ZW4gdGhhdCB0dW5uZWwgaGFuZGxpbmcgaXMgYSBjb21wbGV4IGFyZWEgd2l0aCBwbGVudHkgb2YgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGludGVyYWN0aW9ucy5cblxuVG8gbWFrZSBzdXJlIHdlJ3JlIGZvY3VzZWQsIGxldCdzIG5haWwgZG93biB3aGF0IGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQgb3IgYWZmZWN0ZWQuIEkgY2FuIHNlZSB0aGUgbGlzdDogYGZsb3dfb2ZmbG9hZF9maWxsX3JvdXRlYCwgYG5mdF9mbG93X2RzdF9yZWxlYXNlYCwgYG5mX2Zsb3dfZHN0X2NoZWNrYCwgYG5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaGAsIGBuZl9mbG93X3R1bm5lbF92NF9wdXNoYCwgYG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoYCwgYG5mX2Zsb3dfdHVubmVsX3Y2X3B1c2hgLCBgbmZfZmxvd19vZmZsb2FkX2lwX2hvb2tgLCBgbmZfZmxvd19vZmZsb2FkX2lwdjZfaG9va2AsIGBuZl9mbG93X29mZmxvYWRfd29ya19hbGxvY2AsIGBuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWRgLCBgbmZfZmxvd19vZmZsb2FkX2FkZGAsIGBuZl9mbG93X29mZmxvYWRfZGVsYCwgYW5kIGBuZl9mbG93X29mZmxvYWRfc3RhdHNgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBidXQgd2UgbmVlZCB0byBwcmlvcml0aXplLlxuXG5CYXNlZCBvbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzLCBmb2N1c2luZyBvbiBgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGVgLCBgbmZfZmxvd190dW5uZWxfaXBpcF9wdXNoYCwgYG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoYCwgYW5kIGBuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWRgIHNlZW1zIGxpa2UgdGhlIHNtYXJ0ZXN0IG1vdmUgcmlnaHQgbm93LiBUaG9zZSBhcmUgdGhlIG9uZXMgd2hlcmUgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmUgKGFuZCBpdHMgcmVsYXRpb24gdG8gdHVubmVscykgaXMgYmVpbmcgdXBkYXRlZC5cblxuTm93LCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGFuZCBtYWtlIHN1cmUgdGhpcyBjb2RlIGlzIGJlaW5nIGJ1aWx0IGNvcnJlY3RseS4gSSBzaG91bGQgbG9vayBpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9jb3JlLmNgLCBgbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX2lwLmNgLCBhbmQgYG5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9vZmZsb2FkLmNgIHNvdXJjZSBmaWxlcy4gTGV0J3MgbWFrZSBzdXJlIHRoYXQgYG5mX2Zsb3dfdGFibGVfY29yZS5vYCBpcyBpbmRlZWQgYmVpbmcgY29tcGlsZWQsIGFuZCB0aGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUyOSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjA5OjEwLjIxMzU3MDMzNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTI0MjI5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9mbG93X3RhYmxlX2NvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mj1vYmotJChDT05GSUdfTkZfRkxPV19UQUJMRSlcXHQrPSBuZl9mbG93X3RhYmxlLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0MzpuZl9mbG93X3RhYmxlLW9ianNcXHRcXHQ6PSBuZl9mbG93X3RhYmxlX2NvcmUubyBuZl9mbG93X3RhYmxlX2lwLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQ0LVxcdFxcdFxcdFxcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MTAuMjcyODE4NzcyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1OTgyNjE2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9uOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRoZSBpbml0aWFsIGZvY3VzIGlzIGBDT05GSUdfTkZfRkxPV19UQUJMRWAuIFRoYXQncyBhIGtleSByZXF1aXJlbWVudCwgbm8gZG91YnQuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGRlcGVuZGVuY2llcyBvciBjby1yZXF1aXNpdGVzLiBBaGEsIG9rYXksIEkgc2VlIGBuZl9mbG93X3RhYmxlX29mZmxvYWQuY2AgaXMgZmxhZ2dlZCBhcyBiZWluZyBtb2RpZmllZCBhcyB3ZWxsLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgZmxvdyB0YWJsZSBvZmZsb2FkIGNhcGFiaWxpdGllcyBhcmUgaGVhdmlseSBpbnRlcnR3aW5lZCB3aXRoIHRoZSBiYXNlIGZsb3cgdGFibGUgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIGtlZXAgdGhpcyBpbiBtaW5kIGFzIEkgZGVsdmUgZnVydGhlciBpbnRvIHRoZSBzcGVjaWZpYyBjaGFuZ2VzLCBhbmQgbG9vayBhdCB0aGUgaW50ZXJhY3Rpb24gb2YgdGhvc2UgZmlsZXMgdG8gc2VlIGhvdyB0aG9zZSBhcmUgdGllZCB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIyNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjA5OjEzLjIzMjY0NzA2N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTc0NDA3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9mbG93X3RhYmxlX29mZmxvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mz1uZl9mbG93X3RhYmxlLW9ianNcXHRcXHQ6PSBuZl9mbG93X3RhYmxlX2NvcmUubyBuZl9mbG93X3RhYmxlX2lwLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQ0LVxcdFxcdFxcdFxcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NTpcXHRcXHRcXHRcXHQgICBuZl9mbG93X3RhYmxlX29mZmxvYWQubyBuZl9mbG93X3RhYmxlX3hkcC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNDYtbmZfZmxvd190YWJsZS0kKENPTkZJR19ORl9GTE9XX1RBQkxFX1BST0NGUykgKz0gbmZfZmxvd190YWJsZV9wcm9jZnMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDowOToxMy4yODgzOTY0MzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzgzNDA5MTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRGl2aW5nIGludG8gdGhlIE5ldGZpbHRlciBGbG93IFRhYmxlIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBJJ20gbG9va2luZyBhdCB0aGlzIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uYWxpdHkgbGl2ZXMgd2l0aGluIHRoZSBgbmZfZmxvd190YWJsZS1vYmpzYCBvYmplY3QuIFNvLCBpbW1lZGlhdGVseSwgdGhhdCBzY3JlYW1zIGBDT05GSUdfTkZfRkxPV19UQUJMRWAgYXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBrbm9iIEkgc2hvdWxkIGJlIGNvbmNlcm5lZCB3aXRoLiBUaGF0J3MgdGhlIGJhc2VsaW5lLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgYG5mX2Zsb3dfdGFibGVfaXAuY2AgaXMgYWxzbyBpbiB0aGUgbWl4LiBTbywgdGhhdCBzdWdnZXN0cyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG1pZ2h0IGJlIHNwbGl0LCBvciBwZXJoYXBzIHRoZXJlIGFyZSBJUC1zcGVjaWZpYyBhc3BlY3RzIGludm9sdmVkLiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuXG5cbk5vdyBJJ20gd29uZGVyaW5nLCBhcmUgdGhlcmUgKm90aGVyKiBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNvbWUgbW9yZSBncmFudWxhciBzZXR0aW5ncywgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSBjYW4ndCBqdXN0IGFzc3VtZSBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGlzIHRoZSAqb25seSogdGhpbmcuIEJlc3QgdG8gY2hlY2sgdGhlIHNvdXJjZS4gSSdsbCBuZWVkIHRvIGdvIHRvIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFuZCBsb29rIGZvciB0aGUgZGVmaW5pdGlvbiBvZiBgTkZfRkxPV19UQUJMRWAuIFRoYXQncyB3aGVyZSBJIGNhbiBmaW5kIGFsbCByZWxldmFudCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBmbG93IHRhYmxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBmdWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MDIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDowOToxNi42NzE4MDc2NjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUxMjE5MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0ZMT1dfVEFCTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MDE9ZW5kaWYgIyBORl9UQUJMRVNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzAyLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MDM6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfSU5FVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MDQtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBmbG93IHRhYmxlIG1peGVkIElQdjQvSVB2NiBtb2R1bGVcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MTE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzEyLVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtb2R1bGVcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzIwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MjE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVfUFJPQ0ZTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMi1cXHRib29sIFxcXCJTdXBwbHkgZmxvdyB0YWJsZSBzdGF0aXN0aWNzIGluIHByb2Nmc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MTYuNzI2OTQxMjg2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1NDUyOTM1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTkZfRkxPV19UQUJMRSBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBraWNrcyBpbiwgYW5kIEkgaW1tZWRpYXRlbHkgc3RhcnQgdG8gbWVudGFsbHkgbWFwIG91dCB0aGUgaW1wbGljYXRpb25zIG9mIFwiTkZfRkxPV19UQUJMRVwiIGRlcGVuZGVuY2llcy4gTXkgYnJhaW4ganVtcHMgcmlnaHQgdG8gZGVwZW5kZW5jeSBhbmFseXNpcy4gSSdtIGVzc2VudGlhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgbGlrZWx5IGNvbnN1bWVycyBhbmQgcHJvdmlkZXJzIG9mIHRoaXMgdGFibGUgaW4gbXkgaGVhZC4gV2hhdCBhcmUgdGhlIGNvcmUgbW9kdWxlcyB0aGF0IGFyZSBnb2luZyB0byBiZSBpbnRlcmFjdGluZyB3aXRoIHRoaXMgZGF0YSBzdHJ1Y3R1cmU/IElzIGl0IHByaW1hcmlseSB3aXRoaW4gdGhlIE5ldGZpbHRlciBjb250ZXh0LCBvciBhcmUgd2UgYnJhbmNoaW5nIG91dD8gQXJlIHRoZXJlIGV4dGVybmFsIHVzZXJzIHRoYXQgaGF2ZSBkZXZlbG9wZWQgcGx1Z2lucyB0aGF0IGludGVyYWN0IHdpdGggdGhpcyB0YWJsZT8gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzLCBvZiBjb3Vyc2UsIGFic29sdXRlbHkgY3J1Y2lhbCBiZWZvcmUgbWFraW5nIGFueSBtb2RpZmljYXRpb25zIG9yIGV2ZW4gZGlhZ25vc2luZyBwZXJmb3JtYW5jZSBpc3N1ZXMuIEl0IGRpY3RhdGVzIHRoZSBwb3RlbnRpYWwgYmxhc3QgcmFkaXVzIG9mIGFueSBjaGFuZ2VzLiBJIG5lZWQgdG8gYmUgdGhpbmtpbmcgYWJvdXQgdmVyc2lvbmluZywgQVBJIHN0YWJpbGl0eSwgYW5kIHBvdGVudGlhbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlcyByaWdodCBmcm9tIHRoZSBzdGFydCwgYXMgSSBjYW4gYXNzdW1lIHRoZSB1c2VyIGhhcyBhIGZhaXJseSBtYXR1cmUgY29kZWJhc2UuIEkgYWxzbyBzdGFydCB0aGlua2luZyBhYm91dCB0aGUga2VybmVsIHN1YnN5c3RlbXMgZGlyZWN0bHkgYWNjZXNzaW5nIHRoZSB0YWJsZS4gSXMgdGhpcyBhbGwgY29udGFpbmVkLCBvciBpcyB0aGVyZSBhbnkgdXNlciBzcGFjZSBpbnRlcmFjdGlvbj8gSG93IGlzIHN5bmNocm9uaXphdGlvbiBoYW5kbGVkPyBMb2NrcywgYXRvbWljIG9wZXJhdGlvbnMsIHdoYXQncyB0aGUgc3RvcnkgdGhlcmU/IEkgc3RhcnQgdG8gdGhpbmsgYWJvdXQgdGhlIHBvc3NpYmxlIGZhaWx1cmUgcG9pbnRzIG9mIHRoZSBzeXN0ZW0uIEkgYWxzbyB0aGluayBhYm91dCBob3cgaXQncyBpbnRlZ3JhdGVkIHdpdGggb3RoZXIgdGhpbmdzLCBzdWNoIGFzIGNvbm5lY3Rpb24gdHJhY2tpbmcgb3Igcm91dGluZy4gQW5kIHRoZW4gYWxzbyB3aGVyZSBpdCBoYXMgdXBzdHJlYW0vZG93bnN0cmVhbSBkZXBlbmRlbmNpZXMuIEZpbmFsbHksIHRoZSB0aG91Z2h0IG9mIHdoYXQgdG9vbHMgSSBoYXZlIHRvIHBlcmZvcm0gdGhlc2UgaW52ZXN0aWdhdGlvbnMgYWxzbyBwb3BzIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTcyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MjAuMTgxNDc0Mjk1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzgxNDk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfRkxPV19UQUJMRSRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MDM9Y29uZmlnIE5GX0ZMT1dfVEFCTEVfSU5FVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzExOmNvbmZpZyBORl9GTE9XX1RBQkxFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMi1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDowOToyMC4yMzkyOTY1MjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEzMzk2OTE0NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gTmV0ZmlsdGVyJ3MgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiBzb21ldGhpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24sIHNvIEknbSBoZWFkaW5nIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgbGlmZWJsb29kIG9mIExpbnV4IGNvbmZpZ3VyYXRpb24sIGFuZCBJJ20gaG9taW5nIGluIG9uIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgIGFyb3VuZCBsaW5lIDcxMS4gVGhhdCBsaW5lLCBnaXZlIG9yIHRha2UgYSBmZXcsIGxpa2VseSBob2xkcyB0aGUga2V5IHRvIHRoZSBzZXR0aW5nIEknbSB0cnlpbmcgdG8gZGVjaXBoZXIgb3IgbW9kaWZ5LiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGRlZmluaXRpb24sIHBvdGVudGlhbGx5IHNvbWUgZGVwZW5kZW5jaWVzLCBtYXliZSBldmVuIGEgaGVscCB0ZXh0IHRoYXQncyB3b3J0aCBhIHF1aWNrIHNjYW4uIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgdGhlIGZlYXR1cmUgbGl2ZXMsIGFuZCB1bmRlcnN0YW5kaW5nIHRoaXMgc2VjdGlvbiBpcyBjcml0aWNhbC4gSSdtIGJyYWNpbmcgbXlzZWxmIGZvciB0aGUgdXN1YWwgS2NvbmZpZyBzeW50YXgg4oCTIHRoZSBgY29uZmlnYCBrZXl3b3JkLCB0aGUgdHlwZSBkZWNsYXJhdGlvbiwgbWF5YmUgc29tZSBgZGVwZW5kcyBvbmAgY2xhdXNlcywgYW5kIGhvcGVmdWxseSBzb21lIGNsZWFyLCBjb25jaXNlIGRvY3VtZW50YXRpb24uIExldCdzIHNlZSB3aGF0IHRyZWFzdXJlcyBhd2FpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYwOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjA5OjMxLjU3ODk5MDAxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTM5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNzA1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzA1OlxcdFxcdGRlcGVuZHMgb24gTkZfRkxPV19UQUJMRVxcbiA3MDY6XFx0XFx0aGVscFxcbiA3MDc6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHRoZSBmbG93IHRhYmxlIG1peGVkIElQdjQvSVB2NiBzdXBwb3J0LlxcbiA3MDg6XFx0XFxuIDcwOTpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuIDcxMDpcXHRcXG4gNzExOlxcdGNvbmZpZyBORl9GTE9XX1RBQkxFXFxuIDcxMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXFxcIlxcbiA3MTM6XFx0XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfSU5HUkVTU1xcbiA3MTQ6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4gNzE1OlxcdFxcdGRlcGVuZHMgb24gTkZfVEFCTEVTXFxuIDcxNjpcXHRcXHRoZWxwXFxuIDcxNzpcXHRcXHQgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIGZsb3cgdGFibGUgY29yZSBpbmZyYXN0cnVjdHVyZS5cXG4gNzE4OlxcdFxcbiA3MTk6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiA3MjA6XFx0XFxuIDcyMTpcXHRjb25maWcgTkZfRkxPV19UQUJMRV9QUk9DRlNcXG4gNzIyOlxcdFxcdGJvb2wgXFxcIlN1cHBseSBmbG93IHRhYmxlIHN0YXRpc3RpY3MgaW4gcHJvY2ZzXFxcIlxcbiA3MjM6XFx0XFx0ZGVwZW5kcyBvbiBORl9GTE9XX1RBQkxFXFxuIDcyNDpcXHRcXHRkZXBlbmRzIG9uIFBST0NfRlNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MzEuNTc5MDkyOTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3NjEyMTI5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSBgTkZfRkxPV19UQUJMRWAgaXMgdGhlIHByaW1hcnkgc3dpdGNoIGZvciB0aGUgZmxvdyB0YWJsZSBmdW5jdGlvbmFsaXR5LiBJbnRlcmVzdGluZywgSSBzaG91bGQgcHJvYmFibHkgZW5hYmxlIGBORl9GTE9XX1RBQkxFX0lORVRgIHRvbywgaWYgSSB3YW50IHRvIGhhbmRsZSBtaXhlZCBJUHY0L0lQdjYgdHJhZmZpYyDigJMgdGhhdCBjb3VsZCBiZSBpbXBvcnRhbnQuIFNpbmNlIEknbSBzZWVpbmcgY2hhbmdlcyBpbiBgbmZfZmxvd190YWJsZV9vZmZsb2FkLmNgLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBhbnkgaGFyZHdhcmUgb2ZmbG9hZCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZWxldmFudC4gTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgYmFzZWQgb24gdGhlIGtlcm5lbCBjb2RlLCBgbmZfZmxvd190YWJsZV9vZmZsb2FkLmNgIGlzIGFjdHVhbGx5IGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSBhcyBsb25nIGFzIGBORl9GTE9XX1RBQkxFYCBpcyBlbmFibGVkLiBJdCBzZWVtcyBJIG1hZGUgYSBiYWQgYXNzdW1wdGlvbi4gT2theSwgYmV0dGVyIGRvdWJsZSBjaGVjayB0aGUgTWFrZWZpbGUgaW4gYG5ldC9uZXRmaWx0ZXIvYCB0byBiZSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDQ6MDk6MzUuMDU1MjE2MzQ5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjUyNjIwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9mbG93X3RhYmxlX29mZmxvYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mz1uZl9mbG93X3RhYmxlLW9ianNcXHRcXHQ6PSBuZl9mbG93X3RhYmxlX2NvcmUubyBuZl9mbG93X3RhYmxlX2lwLm8gXFxcXFxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTQ0LVxcdFxcdFxcdFxcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NTpcXHRcXHRcXHRcXHQgICBuZl9mbG93X3RhYmxlX29mZmxvYWQubyBuZl9mbG93X3RhYmxlX3hkcC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNDYtbmZfZmxvd190YWJsZS0kKENPTkZJR19ORl9GTE9XX1RBQkxFX1BST0NGUykgKz0gbmZfZmxvd190YWJsZV9wcm9jZnMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwNDowOTozNS4xMTE3NDc4NDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxNzkyOTk1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipBbmFseXNpcyBvZiBOZXRmaWx0ZXIgRmxvdyBUYWJsZSBPZmZsb2FkIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkZWZpbml0aXZlbHkgdW5jb25kaXRpb25hbGx5IGNvbXBpbGVkIOKAkyB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzISBUaGUgcHJlc2VuY2Ugb2YgYE5GX0ZMT1dfVEFCTEVgIGlzIGVub3VnaCB0byBjb25maXJtIHRoYXQuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cbk5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlc2UgZm9jdXMgc3ltYm9scyB3ZSBoYXZlLiBgZmxvd19vZmZsb2FkX2ZpbGxfcm91dGVgLCBgbmZfZmxvd190dW5uZWxfaXBpcF9wdXNoYCwgYG5mX2Zsb3dfdHVubmVsX2lwNmlwNl9wdXNoYCwgYW5kIGBuZl9mbG93X29mZmxvYWRfdW5zdXBwb3J0ZWRg4oCmIFl1cCwgdGhvc2UgYXJlIGFsbCBzb2xpZCBpbmRpY2F0b3JzIG9mIHRoZSBwYXRjaCdzIHNjb3BlLiBUaGV5IGRpcmVjdGx5IHJlbGF0ZSB0byB0aGUgZmxvdyB0YWJsZSdzIGhhbmRsaW5nIG9mIHR1bm5lbHMgYW5kIGhhcmR3YXJlIG9mZmxvYWQsIGFuZCB0aGV5IGdpdmUgYSBjbGVhciBpbmRpY2F0aW9uIG9mIGZ1bmN0aW9uYWxpdHkgYmVpbmcgdG91Y2hlZC5cblxuVGhlIHBhdGNoIGFwcGVhcnMgdG8gbW9kaWZ5IGNvcmUgbmV0ZmlsdGVyIGZsb3cgdGFibGUgbG9naWMuIFRoaXMgaXMgaW4gbGluZSB3aXRoIHRoZSBkZXNjcmlwdGlvbnMsIGFuZCBjb25maXJtcyB0aGUgcmVsZXZhbmNlIG9mIHRoZSBzeW1ib2xzLiBJdCdzIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdHVubmVsIGhhbmRsaW5nIGFuZCBoYXJkd2FyZSBvZmZsb2FkIHBhdGhzLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLiBJdCBzZWVtcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCB3ZSB3YW50LlxuXG5JIHRoaW5rIHdlIGNhbiBzZXQgdGhlIHJlc3VsdHM7IGl0IGxvb2tzIGdvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2MzAsIk91dHB1dFRva2VucyI6MTQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDA0OjA5OjM5LjYyOTY4MTEwMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxOTc0NjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9GTE9XX1RBQkxFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmxvd19vZmZsb2FkX2ZpbGxfcm91dGVcIixcbiAgICBcIm5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaFwiLFxuICAgIFwibmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hcIixcbiAgICBcIm5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG5ldGZpbHRlciBmbG93IHRhYmxlIGxvZ2ljLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRzdF9jYWNoZSBhbmQgZHN0X2Nvb2tpZSBhcmUgc3RvcmVkIGFuZCBoYW5kbGVkIGZvciB0dW5uZWxzLiBJdCBhbHNvIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGhhcmR3YXJlIG9mZmxvYWQgZm9yIHVuc3VwcG9ydGVkIHR1bm5lbCBmbG93cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9GTE9XX1RBQkxFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZmxvd19vZmZsb2FkX2ZpbGxfcm91dGVcIixcbiAgICBcIm5mX2Zsb3dfdHVubmVsX2lwaXBfcHVzaFwiLFxuICAgIFwibmZfZmxvd190dW5uZWxfaXA2aXA2X3B1c2hcIixcbiAgICBcIm5mX2Zsb3dfb2ZmbG9hZF91bnN1cHBvcnRlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG5ldGZpbHRlciBmbG93IHRhYmxlIGxvZ2ljLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IGRzdF9jYWNoZSBhbmQgZHN0X2Nvb2tpZSBhcmUgc3RvcmVkIGFuZCBoYW5kbGVkIGZvciB0dW5uZWxzLiBJdCBhbHNvIGFkZHMgYSBjaGVjayB0byBwcmV2ZW50IGhhcmR3YXJlIG9mZmxvYWQgZm9yIHVuc3VwcG9ydGVkIHR1bm5lbCBmbG93cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowwngfc[1] Phase: Succeeded StartedAt: 2026-07-02 04:09:51 +0000 UTC FinishedAt: 2026-07-02 04:09:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 04:09:51 +0000 UTC FinishedAt: 2026-07-02 04:09:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2] Phase: Succeeded StartedAt: 2026-07-02 04:09:51 +0000 UTC FinishedAt: 2026-07-02 08:12:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-02 04:09:51 +0000 UTC FinishedAt: 2026-07-02 08:12:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 04:09:51 +0000 UTC FinishedAt: 2026-07-02 04:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 04:09:51 +0000 UTC FinishedAt: 2026-07-02 04:09:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowwngfc/series-workflowwngfc-convert-artifact-2388809480/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 04:10:01 +0000 UTC FinishedAt: 2026-07-02 04:37:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 04:10:01 +0000 UTC FinishedAt: 2026-07-02 04:37:42 +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:*170b73e7-5f17-4529-98c6-6800c8482e47,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-workflowwngfc/series-workflowwngfc-convert-artifact-2388809480/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": "2813c742-d6b4-47fa-9a79-beeba90a023b", "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-workflowwngfc/series-workflowwngfc-build-action-852242814/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 04:10:01 +0000 UTC FinishedAt: 2026-07-02 04:37:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*170b73e7-5f17-4529-98c6-6800c8482e47,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-workflowwngfc/series-workflowwngfc-convert-artifact-2388809480/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": "2813c742-d6b4-47fa-9a79-beeba90a023b", "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-workflowwngfc/series-workflowwngfc-build-action-852242814/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 04:37:42 +0000 UTC FinishedAt: 2026-07-02 04:37:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 04:37:42 +0000 UTC FinishedAt: 2026-07-02 04:37:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 04:37:42 +0000 UTC FinishedAt: 2026-07-02 04:38:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 04:37:43 +0000 UTC FinishedAt: 2026-07-02 04:38:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowwngfc/series-workflowwngfc-convert-artifact-2132259311/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 04:38:18 +0000 UTC FinishedAt: 2026-07-02 04:40:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 04:38:18 +0000 UTC FinishedAt: 2026-07-02 04:40:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2813c742-d6b4-47fa-9a79-beeba90a023b,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-workflowwngfc/series-workflowwngfc-build-action-852242814/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-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 04:40:41 +0000 UTC FinishedAt: 2026-07-02 04:40:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 04:40:41 +0000 UTC FinishedAt: 2026-07-02 04:40:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 04:40:41 +0000 UTC FinishedAt: 2026-07-02 05:06:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 04:40:42 +0000 UTC FinishedAt: 2026-07-02 05:06:14 +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:*170b73e7-5f17-4529-98c6-6800c8482e47,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-workflowwngfc/series-workflowwngfc-convert-artifact-2132259311/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": "84a9e6be-a9ff-4177-b27e-5e606d363d89", "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-workflowwngfc/series-workflowwngfc-build-action-3426166147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 04:40:42 +0000 UTC FinishedAt: 2026-07-02 05:05: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:*170b73e7-5f17-4529-98c6-6800c8482e47,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-workflowwngfc/series-workflowwngfc-convert-artifact-2132259311/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": "84a9e6be-a9ff-4177-b27e-5e606d363d89", "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-workflowwngfc/series-workflowwngfc-build-action-3426166147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 05:06:14 +0000 UTC FinishedAt: 2026-07-02 05:06:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 05:06:14 +0000 UTC FinishedAt: 2026-07-02 05:06:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 05:06:14 +0000 UTC FinishedAt: 2026-07-02 05:08:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 05:06:14 +0000 UTC FinishedAt: 2026-07-02 05:08:16 +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:*84a9e6be-a9ff-4177-b27e-5e606d363d89,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-workflowwngfc/series-workflowwngfc-build-action-3426166147/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-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-02 05:08:25 +0000 UTC FinishedAt: 2026-07-02 08:12:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-02 05:08:25 +0000 UTC FinishedAt: 2026-07-02 08:12:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"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:*2813c742-d6b4-47fa-9a79-beeba90a023b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*84a9e6be-a9ff-4177-b27e-5e606d363d89,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-workflowwngfc/series-workflowwngfc-build-action-852242814/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-workflowwngfc/series-workflowwngfc-build-action-3426166147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 05:08:25 +0000 UTC FinishedAt: 2026-07-02 05:09:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 05:08:25 +0000 UTC FinishedAt: 2026-07-02 05:08:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"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-workflowwngfc/series-workflowwngfc-convert-artifact-740925864/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 05:08:25 +0000 UTC FinishedAt: 2026-07-02 05:08:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 05:08:25 +0000 UTC FinishedAt: 2026-07-02 05:08:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 05:08:25 +0000 UTC FinishedAt: 2026-07-02 05:08:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-02 05:09:00 +0000 UTC FinishedAt: 2026-07-02 08:12:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwngfc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["flow_offload_fill_route","nf_flow_tunnel_ipip_push","nf_flow_tunnel_ip6ip6_push","nf_flow_offload_unsupported"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0469d460a598d03fc85ebd97f99640e6c579e2a2","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE"],"series_id":"2e71f0df-3c62-47c2-b42c-7df6506337b4","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-02 05:09:00 +0000 UTC FinishedAt: 2026-07-02 08:11:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2813c742-d6b4-47fa-9a79-beeba90a023b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*84a9e6be-a9ff-4177-b27e-5e606d363d89,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-workflowwngfc/series-workflowwngfc-build-action-852242814/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-workflowwngfc/series-workflowwngfc-build-action-3426166147/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-workflowwngfc/series-workflowwngfc-convert-artifact-740925864/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,}