Name: series-workflowc8clj Phase: Succeeded StartedAt: 2026-07-12 05:06:01 +0000 UTC FinishedAt: 2026-07-12 09:39:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[0] Phase: Succeeded StartedAt: 2026-07-12 05:06:01 +0000 UTC FinishedAt: 2026-07-12 05:24:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[0].run-triage Phase: Succeeded StartedAt: 2026-07-12 05:06:01 +0000 UTC FinishedAt: 2026-07-12 05:24:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "520d7d7942025a58a0c79a61b905a556cf3cb524", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT", "FUNCTION_TRACER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "520d7d7942025a58a0c79a61b905a556cf3cb524", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT", "FUNCTION_TRACER" ], "series_id": "25e22dd8-a5c7-4b91-9d47-12eadb2f98dd" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "register_fentry_multi", "unregister_fentry", "modify_fentry", "bpf_trampoline_update", "bpf_trampoline_multi_attach", "bpf_trampoline_multi_detach" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7RlVOQ1RJT05fVFJBQ0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmVnaXN0ZXJfZmVudHJ5X211bHRpJiMzNDssCiAgICAmIzM0O3VucmVnaXN0ZXJfZmVudHJ5JiMzNDssCiAgICAmIzM0O21vZGlmeV9mZW50cnkmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfdXBkYXRlJiMzNDssCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaCYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlBGIHRyYW1wb2xpbmUgbG9naWMgd2hlcmUgYGZ0cmFjZV9tYW5hZ2VkYCB3YXMgbm90IHNldCB0byB0cnVlIHdoZW4gcmVnaXN0ZXJpbmcgYSBtdWx0aSBmZW50cnkuIFRoaXMgY2F1c2VkIGlzc3VlcyB3aGVuIGF0dGFjaGluZyBhIHNpbmdsZSBmZW50cnkgdG8gYSBmdW5jdGlvbiB0aGF0IGFscmVhZHkgaGFkIGEgbXVsdGkgZmVudHJ5IGF0dGFjaGVkLCBhcyBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAgcmVseSBvbiBgZnRyYWNlX21hbmFnZWRgIGJlaW5nIHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMWIxMTkzNjhjNTVlZDcwZGQ4MGRiY2MyZWMwNzVjMTBhMWZjOWVmZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDA1OjIyOjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jIGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbmluZGV4IDFhNzIxZmM0YmVmNTYyLi42ZWFkZjY0ZjdlYzkwZiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuQEAgLTE1MzYsNiAmIzQzOzE1MzYsNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYVxuIFx0aWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItXHUwMDNlZmxhZ3MpKVxuIFx0XHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XG4gXG4mIzQzO1x0dHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZCA9IHRydWU7XG4gXHRmdHJhY2VfaGFzaF9hZGQoZGF0YS1cdTAwM2VyZWcsIGRhdGEtXHUwMDNlZW50cnksIGlwLCBhZGRyKTtcbiBcdHRyLVx1MDAzZWN1cl9pbWFnZSA9IGltO1xuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jXG5pbmRleCBmMDJmZmM3ZjQxZDc4NC4uMGFhOTUzMmEwNWNmZWMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuY1xuQEAgLTQ2MCw2ICYjNDM7NDYwLDczIEBAIHN0YXRpYyB2b2lkIHRlc3RfaW50ZXJzZWN0KHZvaWQpXG4gXHR0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fZGVzdHJveShza2VsKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfZmVudHJ5X2FmdGVyX211bHRpKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGZ1bmNzW10gPSB7XG4mIzQzO1x0XHRcJiMzNDticGZfZmVudHJ5X3Rlc3QxXCYjMzQ7LFxuJiM0MztcdH07XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpmZW50cnlfbGluayA9IE5VTEwsICptdWx0aV9saW5rID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgdHJhY2luZ19tdWx0aV9pbnRlcnNlY3QgKnNrZWwgPSBOVUxMO1xuJiM0MztcdExJQkJQRl9PUFRTKGJwZl90cmFjaW5nX211bHRpX29wdHMsIG9wdHMpO1xuJiM0MztcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyk7XG4mIzQzO1x0X191MzIgKmlkcyA9IE5VTEw7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0c2tlbCA9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X19vcGVuX2FuZF9sb2FkKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X19vcGVuX2FuZF9sb2FkXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlcGlkID0gZ2V0cGlkKCk7XG4mIzQzO1xuJiM0MztcdGlkcyA9IGdldF9pZHMoZnVuY3MsIEFSUkFZX1NJWkUoZnVuY3MpLCBOVUxMKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoaWRzLCBcJiMzNDtnZXRfaWRzXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gY2xlYW51cDtcbiYjNDM7XG4mIzQzO1x0b3B0cy5pZHMgPSBpZHM7XG4mIzQzO1x0b3B0cy5jbnQgPSBBUlJBWV9TSVpFKGZ1bmNzKTtcbiYjNDM7XHRtdWx0aV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5XzEsIE5VTEwsIFx1MDAyNm9wdHMpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihtdWx0aV9saW5rLCBcJiMzNDthdHRhY2hfbXVsdGlcJiMzNDspKVxuJiM0MztcdFx0Z290byBjbGVhbnVwO1xuJiM0MztcbiYjNDM7XHRmZW50cnlfbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2goc2tlbC1cdTAwM2Vwcm9ncy5mZW50cnkpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihmZW50cnlfbGluaywgXCYjMzQ7YXR0YWNoX2ZlbnRyeVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5XzEpLCBcdTAwMjZ0b3B0cyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDt0ZXN0X3J1blwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeV8xLCAxLCBcJiMzNDttdWx0aV9mZW50cnlcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2V0ZXN0X3Jlc3VsdF9mZW50cnksIDEsIFwmIzM0O2ZlbnRyeVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9saW5rX19kZXN0cm95KGZlbnRyeV9saW5rKTtcbiYjNDM7XHRmZW50cnlfbGluayA9IE5VTEw7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtkZXN0cm95X2ZlbnRyeVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5XzEpLCBcdTAwMjZ0b3B0cyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDt0ZXN0X3J1bl9tdWx0aVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeV8xLCAyLCBcJiMzNDttdWx0aV9mZW50cnlfb25seVwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeSwgMSwgXCYjMzQ7ZmVudHJ5X2RldGFjaGVkXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX2xpbmtfX2Rlc3Ryb3kobXVsdGlfbGluayk7XG4mIzQzO1x0bXVsdGlfbGluayA9IE5VTEw7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtkZXN0cm95X211bHRpXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gY2xlYW51cDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5mZW50cnlfMSksIFx1MDAyNnRvcHRzKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3Rlc3RfcnVuX2RldGFjaGVkXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gY2xlYW51cDtcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNldGVzdF9yZXN1bHRfZmVudHJ5XzEsIDIsIFwmIzM0O211bHRpX2ZlbnRyeV9kZXRhY2hlZFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeSwgMSwgXCYjMzQ7ZmVudHJ5X3N0aWxsX2RldGFjaGVkXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO2NsZWFudXA6XG4mIzQzO1x0YnBmX2xpbmtfX2Rlc3Ryb3koZmVudHJ5X2xpbmspO1xuJiM0MztcdGJwZl9saW5rX19kZXN0cm95KG11bHRpX2xpbmspO1xuJiM0MztcdGZyZWUoaWRzKTtcbiYjNDM7XHR0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fZGVzdHJveShza2VsKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCB0ZXN0X3Nlc3Npb24odm9pZClcbiB7XG4gXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMpO1xuQEAgLTk1Nyw0ICYjNDM7MTAyNCw2IEBAIHZvaWQgdGVzdF90cmFjaW5nX211bHRpX3Rlc3Qodm9pZClcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O2F0dGFjaF9hcGlfZmFpbHNcJiMzNDspKVxuIFx0XHR0ZXN0X2F0dGFjaF9hcGlfZmFpbHMoKTtcbiBcdFJVTl9URVNUUyh0cmFjaW5nX211bHRpX3ZlcmlmaWVyKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtmZW50cnlfYWZ0ZXJfbXVsdGlcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9mZW50cnlfYWZ0ZXJfbXVsdGkoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jXG5pbmRleCBjZDViZTBiYjZmZmRkNy4uNWIwYWY4ZjRjNjJmZjggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guY1xuQEAgLTExLDYgJiM0MzsxMSwxNCBAQCBfX3U2NCB0ZXN0X3Jlc3VsdF9mZW50cnlfMSA9IDA7XG4gX191NjQgdGVzdF9yZXN1bHRfZmVudHJ5XzIgPSAwO1xuIF9fdTY0IHRlc3RfcmVzdWx0X2ZleGl0XzEgPSAwO1xuIF9fdTY0IHRlc3RfcmVzdWx0X2ZleGl0XzIgPSAwO1xuJiM0MztfX3U2NCB0ZXN0X3Jlc3VsdF9mZW50cnkgPSAwO1xuJiM0MztcbiYjNDM7U0VDKFwmIzM0O2ZlbnRyeS9icGZfZmVudHJ5X3Rlc3QxXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coZmVudHJ5KVxuJiM0Mzt7XG4mIzQzO1x0dHJhY2luZ19tdWx0aV9hcmdfY2hlY2soY3R4LCBcdTAwMjZ0ZXN0X3Jlc3VsdF9mZW50cnksIGZhbHNlKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuIFxuIFNFQyhcJiMzNDtmZW50cnkubXVsdGlcJiMzNDspXG4gaW50IEJQRl9QUk9HKGZlbnRyeV8xKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7RlVOQ1RJT05fVFJBQ0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmVnaXN0ZXJfZmVudHJ5X211bHRpJiMzNDssCiAgICAmIzM0O3VucmVnaXN0ZXJfZmVudHJ5JiMzNDssCiAgICAmIzM0O21vZGlmeV9mZW50cnkmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfdXBkYXRlJiMzNDssCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaCYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlBGIHRyYW1wb2xpbmUgbG9naWMgd2hlcmUgYGZ0cmFjZV9tYW5hZ2VkYCB3YXMgbm90IHNldCB0byB0cnVlIHdoZW4gcmVnaXN0ZXJpbmcgYSBtdWx0aSBmZW50cnkuIFRoaXMgY2F1c2VkIGlzc3VlcyB3aGVuIGF0dGFjaGluZyBhIHNpbmdsZSBmZW50cnkgdG8gYSBmdW5jdGlvbiB0aGF0IGFscmVhZHkgaGFkIGEgbXVsdGkgZmVudHJ5IGF0dGFjaGVkLCBhcyBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAgcmVseSBvbiBgZnRyYWNlX21hbmFnZWRgIGJlaW5nIHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxYjExOTM2OGM1NWVkNzBkZDgwZGJjYzJlYzA3NWMxMGExZmM5ZWZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTIgMDU6MjI6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jCmluZGV4IDFhNzIxZmM0YmVmNTYyLi42ZWFkZjY0ZjdlYzkwZiAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi90cmFtcG9saW5lLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi90cmFtcG9saW5lLmMKQEAgLTE1MzYsNiAmIzQzOzE1MzYsNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYQogCWlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLSZndDtmbGFncykpCiAJCWFkZHIgPSBmdHJhY2Vfam1wX3NldChhZGRyKTsKIAomIzQzOwl0ci0mZ3Q7ZnVuYy5mdHJhY2VfbWFuYWdlZCA9IHRydWU7CiAJZnRyYWNlX2hhc2hfYWRkKGRhdGEtJmd0O3JlZywgZGF0YS0mZ3Q7ZW50cnksIGlwLCBhZGRyKTsKIAl0ci0mZ3Q7Y3VyX2ltYWdlID0gaW07CiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMKaW5kZXggZjAyZmZjN2Y0MWQ3ODQuLjBhYTk1MzJhMDVjZmVjIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jCkBAIC00NjAsNiAmIzQzOzQ2MCw3MyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ludGVyc2VjdCh2b2lkKQogCXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X19kZXN0cm95KHNrZWwpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgdGVzdF9mZW50cnlfYWZ0ZXJfbXVsdGkodm9pZCkKJiM0Mzt7CiYjNDM7CXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZnVuY3NbXSA9IHsKJiM0MzsJCSYjMzQ7YnBmX2ZlbnRyeV90ZXN0MSYjMzQ7LAomIzQzOwl9OwomIzQzOwlzdHJ1Y3QgYnBmX2xpbmsgKmZlbnRyeV9saW5rID0gTlVMTCwgKm11bHRpX2xpbmsgPSBOVUxMOwomIzQzOwlzdHJ1Y3QgdHJhY2luZ19tdWx0aV9pbnRlcnNlY3QgKnNrZWwgPSBOVUxMOwomIzQzOwlMSUJCUEZfT1BUUyhicGZfdHJhY2luZ19tdWx0aV9vcHRzLCBvcHRzKTsKJiM0MzsJTElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTsKJiM0MzsJX191MzIgKmlkcyA9IE5VTEw7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CXNrZWwgPSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fb3Blbl9hbmRfbG9hZCgpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgJiMzNDt0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fb3Blbl9hbmRfbG9hZCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJc2tlbC0mZ3Q7YnNzLSZndDtwaWQgPSBnZXRwaWQoKTsKJiM0MzsKJiM0MzsJaWRzID0gZ2V0X2lkcyhmdW5jcywgQVJSQVlfU0laRShmdW5jcyksIE5VTEwpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoaWRzLCAmIzM0O2dldF9pZHMmIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CW9wdHMuaWRzID0gaWRzOwomIzQzOwlvcHRzLmNudCA9IEFSUkFZX1NJWkUoZnVuY3MpOwomIzQzOwltdWx0aV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpKHNrZWwtJmd0O3Byb2dzLmZlbnRyeV8xLCBOVUxMLCAmYW1wO29wdHMpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIobXVsdGlfbGluaywgJiMzNDthdHRhY2hfbXVsdGkmIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CWZlbnRyeV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChza2VsLSZndDtwcm9ncy5mZW50cnkpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoZmVudHJ5X2xpbmssICYjMzQ7YXR0YWNoX2ZlbnRyeSYjMzQ7KSkKJiM0MzsJCWdvdG8gY2xlYW51cDsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhicGZfcHJvZ3JhbV9fZmQoc2tlbC0mZ3Q7cHJvZ3MuZmVudHJ5XzEpLCAmYW1wO3RvcHRzKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O3Rlc3RfcnVuJiMzNDspKQomIzQzOwkJZ290byBjbGVhbnVwOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDt0ZXN0X3Jlc3VsdF9mZW50cnlfMSwgMSwgJiMzNDttdWx0aV9mZW50cnkmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShza2VsLSZndDtic3MtJmd0O3Rlc3RfcmVzdWx0X2ZlbnRyeSwgMSwgJiMzNDtmZW50cnkmIzM0Oyk7CiYjNDM7CiYjNDM7CWVyciA9IGJwZl9saW5rX19kZXN0cm95KGZlbnRyeV9saW5rKTsKJiM0MzsJZmVudHJ5X2xpbmsgPSBOVUxMOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7ZGVzdHJveV9mZW50cnkmIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLmZlbnRyeV8xKSwgJmFtcDt0b3B0cyk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDt0ZXN0X3J1bl9tdWx0aSYjMzQ7KSkKJiM0MzsJCWdvdG8gY2xlYW51cDsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7dGVzdF9yZXN1bHRfZmVudHJ5XzEsIDIsICYjMzQ7bXVsdGlfZmVudHJ5X29ubHkmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShza2VsLSZndDtic3MtJmd0O3Rlc3RfcmVzdWx0X2ZlbnRyeSwgMSwgJiMzNDtmZW50cnlfZGV0YWNoZWQmIzM0Oyk7CiYjNDM7CiYjNDM7CWVyciA9IGJwZl9saW5rX19kZXN0cm95KG11bHRpX2xpbmspOwomIzQzOwltdWx0aV9saW5rID0gTlVMTDsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2Rlc3Ryb3lfbXVsdGkmIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLmZlbnRyeV8xKSwgJmFtcDt0b3B0cyk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDt0ZXN0X3J1bl9kZXRhY2hlZCYjMzQ7KSkKJiM0MzsJCWdvdG8gY2xlYW51cDsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7dGVzdF9yZXN1bHRfZmVudHJ5XzEsIDIsICYjMzQ7bXVsdGlfZmVudHJ5X2RldGFjaGVkJiMzNDspOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDt0ZXN0X3Jlc3VsdF9mZW50cnksIDEsICYjMzQ7ZmVudHJ5X3N0aWxsX2RldGFjaGVkJiMzNDspOwomIzQzOwomIzQzO2NsZWFudXA6CiYjNDM7CWJwZl9saW5rX19kZXN0cm95KGZlbnRyeV9saW5rKTsKJiM0MzsJYnBmX2xpbmtfX2Rlc3Ryb3kobXVsdGlfbGluayk7CiYjNDM7CWZyZWUoaWRzKTsKJiM0MzsJdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfX2Rlc3Ryb3koc2tlbCk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgdGVzdF9zZXNzaW9uKHZvaWQpCiB7CiAJTElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTsKQEAgLTk1Nyw0ICYjNDM7MTAyNCw2IEBAIHZvaWQgdGVzdF90cmFjaW5nX211bHRpX3Rlc3Qodm9pZCkKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O2F0dGFjaF9hcGlfZmFpbHMmIzM0OykpCiAJCXRlc3RfYXR0YWNoX2FwaV9mYWlscygpOwogCVJVTl9URVNUUyh0cmFjaW5nX211bHRpX3ZlcmlmaWVyKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtmZW50cnlfYWZ0ZXJfbXVsdGkmIzM0OykpCiYjNDM7CQl0ZXN0X2ZlbnRyeV9hZnRlcl9tdWx0aSgpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jCmluZGV4IGNkNWJlMGJiNmZmZGQ3Li41YjBhZjhmNGM2MmZmOCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYwpAQCAtMTEsNiAmIzQzOzExLDE0IEBAIF9fdTY0IHRlc3RfcmVzdWx0X2ZlbnRyeV8xID0gMDsKIF9fdTY0IHRlc3RfcmVzdWx0X2ZlbnRyeV8yID0gMDsKIF9fdTY0IHRlc3RfcmVzdWx0X2ZleGl0XzEgPSAwOwogX191NjQgdGVzdF9yZXN1bHRfZmV4aXRfMiA9IDA7CiYjNDM7X191NjQgdGVzdF9yZXN1bHRfZmVudHJ5ID0gMDsKJiM0MzsKJiM0MztTRUMoJiMzNDtmZW50cnkvYnBmX2ZlbnRyeV90ZXN0MSYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyhmZW50cnkpCiYjNDM7ewomIzQzOwl0cmFjaW5nX211bHRpX2FyZ19jaGVjayhjdHgsICZhbXA7dGVzdF9yZXN1bHRfZmVudHJ5LCBmYWxzZSk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KIAogU0VDKCYjMzQ7ZmVudHJ5Lm11bHRpJiMzNDspCiBpbnQgQlBGX1BST0coZmVudHJ5XzEpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzOTQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIEJQRiBUcmFtcG9saW5lIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgIGFuZCBzb21lIHJlbGF0ZWQgdGVzdHMgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdGhlIGNvZGUgY2hhbmdlIGl0c2VsZiB3aXRoaW4gdGhhdCBrZXJuZWwgZmlsZS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZXJlJiMzOTtzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjaGFuZ2UsIHdoaWNoIGFkZHMgYHRyLSZndDtmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtgLiBUaGlzIGxvb2tzIGxpa2UgaXQgaXMgc2V0dGluZyBhIGZsYWcgb24gdGhlIGJwZiB0cmFtcG9saW5lIHN0cnVjdC4gSSYjMzk7bSBnb2luZyB0byB0cmFjayBkb3duIHdoYXQgdGhhdCBtZWFucy4KClRoaXMgaXMgY29yZSBCUEYgdHJhbXBvbGluZSBsb2dpYywgc28gdW5kZXJzdGFuZGluZyB0aGUgcmFtaWZpY2F0aW9ucyBpcyBwcmV0dHkgaW1wb3J0YW50LgoKVG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9uLCBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgIGZ1bmN0aW9uIGl0c2VsZi4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IG9mIHdoYXQgaXQgZG9lcywgYW5kIGFsc28gd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3Iga2VybmVsIHNldHRpbmdzIGluZmx1ZW5jZSBpdHMgYmVoYXZpb3IuIFRoYXQgZmxhZyBiZWluZyBzZXQgdGhlcmUgbWF5IGhhdmUgYSBkZWVwZXIgaW1wbGljYXRpb24sIHNvIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIGFuZCBob3cgdGhhdCBgdHItJmd0O2Z1bmMuZnRyYWNlX21hbmFnZWRgIG1lbWJlciBpcyB1c2VkIGRvd25zdHJlYW0gZnJvbSB0aGlzIGZ1bmN0aW9uLiBUaGlzIHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gZnRyYWNlIG1hbmFnZW1lbnQsIHNvIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUga2VybmVsIGZlYXR1cmVzIG9yIGJ1aWxkIG9wdGlvbnMgcmVsYXRlZCB0byBmdHJhY2UgdGhhdCBtaWdodCBiZSByZWxldmFudCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlZ2lzdGVyX2ZlbnRyeV9tdWx0aSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTIyPXN0YXRpYyB2b2lkIGZ0cmFjZV9oYXNoX2FkZChzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gsIHN0cnVjdCBmdHJhY2VfZnVuY19lbnRyeSAqZW50cnksXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTUyOS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1MzA6c3RhdGljIGludCByZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnB0cilcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1MzEte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDQtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTQ1OnN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKnB0cilcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDYte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTc1Olx0LnJlZ2lzdGVyX2ZlbnRyeSAgID0gcmVnaXN0ZXJfZmVudHJ5X211bHRpLFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU3NjpcdC51bnJlZ2lzdGVyX2ZlbnRyeSA9IHVucmVnaXN0ZXJfZmVudHJ5X211bHRpLFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3Ny1cdC5tb2RpZnlfZmVudHJ5ICAgICA9IG1vZGlmeV9mZW50cnlfbXVsdGksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI2MgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCBGdW5jdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAgYmVpbmcgY2FsbGVkIHdpdGhpbiBgdHJhbXBvbGluZV9tdWx0aV9vcHNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGF0IGZ1bmN0aW9uIHdvcmtzIGFuZCB3aGVyZSBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGhpbiB0aGlzIGNvbnRleHQuIE15IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvZGUgZGlyZWN0bHkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgc291cmNlIGZpbGUsIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AuIFRoYXQgc2hvdWxkIGNvbnRhaW4gdGhlIGRlZmluaXRpb24gb2YgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAgYW5kLCBjcnVjaWFsbHksIEkgbmVlZCB0byBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIGBmdHJhY2VfbWFuYWdlZGAuIFVuZGVyc3RhbmRpbmcgdGhlaXIgcmVsYXRpb25zaGlwIGlzIHByb2JhYmx5IGtleSB0byBncmFzcGluZyB0aGUgYmVoYXZpb3Igb2YgYHRyYW1wb2xpbmVfbXVsdGlfb3BzYCwgYW5kIGJ5IGV4dGVuc2lvbiwgdGhlIHN5c3RlbSYjMzk7cyBvdmVyYWxsIGZ1bmN0aW9uIGhlcmUuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdHJhY2VfbWFuYWdlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oPTEzODA9c3RydWN0IGJwZl90cmFtcG9saW5lIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzOTItXHRcdHZvaWQgKmFkZHI7XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjEzOTM6XHRcdGJvb2wgZnRyYWNlX21hbmFnZWQ7XG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzOTQtXHR9IGZ1bmM7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDMyPXN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKmRhdGEgX19tYXliZV91bnVzZWQpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDM2LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDM3Olx0aWYgKHRyLVx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MzgtXHRcdHJldCA9IGRpcmVjdF9vcHNfZGVsKHRyLCBvbGRfYWRkcik7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDUwPXN0YXRpYyBpbnQgbW9kaWZ5X2ZlbnRyeShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDU2LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDU3Olx0aWYgKHRyLVx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQpIHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ1OC1cdFx0cmV0ID0gZGlyZWN0X29wc19tb2QodHIsIG5ld19hZGRyLCBsb2NrX2RpcmVjdF9tdXRleCk7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDczPXN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ4NC1cdFx0XHRyZXR1cm4gLUVOT1RTVVBQO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDg1Olx0XHR0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ4Ni1cdH1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ4Ny1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjQ4ODpcdGlmICh0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkKSB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00ODktXHRcdHJldCA9IGRpcmVjdF9vcHNfYWRkKHRyLCBuZXdfYWRkcik7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTUzMD1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcHRyKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1MzgtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTM5Olx0dHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZCA9IHRydWU7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTQwLVx0ZnRyYWNlX2hhc2hfYWRkKGRhdGEtXHUwMDNlcmVnLCBkYXRhLVx1MDAzZWVudHJ5LCBpcCwgYWRkcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE3OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGZlbnRyeWAgUGF0Y2gmIzM5O3MgSW1wbGljYXRpb25zKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc2V0dGluZyBgdHItJmd0O2Z1bmMuZnRyYWNlX21hbmFnZWQgPSB0cnVlYCB3aXRoaW4gYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgcmlwcGxlIGVmZmVjdCwgYXMgSSBrbm93IHRoYXQgYHVucmVnaXN0ZXJfZmVudHJ5YCBhbmQgYG1vZGlmeV9mZW50cnlgIGJvdGggY2hlY2sgdGhpcyBgdHItJmd0O2Z1bmMuZnRyYWNlX21hbmFnZWRgIGZsYWcuIE15IGluaXRpYWwgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgY29uZmxpY3RzLgoKQWgsIGJ1dCBhIGNsb3NlciBsb29rLiBgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGlgIGFuZCBgbW9kaWZ5X2ZlbnRyeV9tdWx0aWAgYXJlIHNwZWNpZmljYWxseSBhc3NvY2lhdGVkIHdpdGggbXVsdGktdHJhbXBvbGluZSBmdW5jdGlvbmFsaXR5LiBUaGF0JiMzOTtzIHRoZSBrZXkgY29udGV4dCBoZXJlLiBOb3cgSSBuZWVkIHRvIGV4YW1pbmUgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBhZGRlZCBmbGFnIGlzIGhhbmRsZWQgcHJvcGVybHkgaW4gdGhlIG11bHRpLXRyYW1wb2xpbmUgY29udGV4dC4gTGV0JiMzOTtzIHNlZSBob3cgdGhpcyBwbGF5cyBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTUzMD1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcHRyKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDQtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTQ1OnN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKnB0cilcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDYte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTc1LVx0LnJlZ2lzdGVyX2ZlbnRyeSAgID0gcmVnaXN0ZXJfZmVudHJ5X211bHRpLFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU3NjpcdC51bnJlZ2lzdGVyX2ZlbnRyeSA9IHVucmVnaXN0ZXJfZmVudHJ5X211bHRpLFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3Ny1cdC5tb2RpZnlfZmVudHJ5ICAgICA9IG1vZGlmeV9mZW50cnlfbXVsdGksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc0MgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipBbmFseXppbmcgRnRyYWNlIEZ1bmN0aW9uIFVucmVnaXN0cmF0aW9uIGFuZCBNb2RpZmljYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBmdHJhY2UgY29kZSBhbmQgc29tZXRoaW5nJiMzOTtzIGltbWVkaWF0ZWx5IGNhdGNoaW5nIG15IGF0dGVudGlvbi4gSSBzZWUgdGhhdCB0aGUgYHRyLSZndDtmdW5jLmZ0cmFjZV9tYW5hZ2VkYCBmbGFnIGlzIGJlaW5nIGV4cGxpY2l0bHkgY2hlY2tlZCBpbiBib3RoIGB1bnJlZ2lzdGVyX2ZlbnRyeWAgYW5kIGBtb2RpZnlfZmVudHJ5YCDigJMgY2xhc3NpYyBjaGVja3MgZm9yIG1hbmFnZWQgZnRyYWNlIGVudHJpZXMsIGFzIEkmIzM5O2QgZXhwZWN0LiBIb3dldmVyLCB3aGVuIEkgbG9vayBhdCBob3cgdGhlIG11bHRpLWZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgdmlhIHRoZSBgdHJhbXBvbGluZV9tdWx0aV9vcHNgLCBJIHNlZSB0aGF0IGl0IHVzZXMgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCBhbmQgYG1vZGlmeV9mZW50cnlfbXVsdGlgIGluc3RlYWQuCgpTbywgdGhlIHF1ZXN0aW9uIHRoYXQmIzM5O3MgYnViYmxpbmcgdXAgaW4gbXkgbWluZCBpcyB0aGlzOiBBcmUgdGhlIGluZGl2aWR1YWwgYHVucmVnaXN0ZXJfZmVudHJ5YCBvciBgbW9kaWZ5X2ZlbnRyeWAgZnVuY3Rpb25zIGFjdHVhbGx5IGV2ZXIgKnVzZWQqIG9uIHRoZXNlIG11bHRpLXRyYW1wb2xpbmVzPyBBbmQgaWYgbm90LCBpcyB0aGlzIGBmdHJhY2VfbWFuYWdlZGAgZmxhZyBiZWluZyB1c2VkICphbnl3aGVyZSogZWxzZSBpbiByZWxhdGlvbiB0byB0aGlzIG11bHRpLXRyYW1wb2xpbmUgc2V0dXA/IEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSB1c2FnZSBhbmQgZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGEgZGlzY29ubmVjdCBvciBhIHBvdGVudGlhbCBvdmVyc2lnaHQgaW4gaG93IHRoZXNlIGRpZmZlcmVudCBmdW5jdGlvbiBzZXRzIGludGVyYWN0LiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZSBmdHJhY2UgaW5mcmFzdHJ1Y3R1cmUgYW5kIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGluZyBvZiBtYW5hZ2VkIGVudHJpZXMgYWNyb3NzIGRpZmZlcmVudCB0cmFtcG9saW5lIGNvbmZpZ3VyYXRpb25zLiBUaW1lIHRvIGRpZyBkZWVwZXIuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dW5yZWdpc3Rlcl9mZW50cnkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi90cmFtcG9saW5lLmM9NjI9c3RydWN0IGJwZl90cmFtcG9saW5lX29wcyB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy02My1cdGludCAoKnJlZ2lzdGVyX2ZlbnRyeSkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKmRhdGEpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NjQ6XHRpbnQgKCp1bnJlZ2lzdGVyX2ZlbnRyeSkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKmRhdGEpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjUtXHRpbnQgKCptb2RpZnlfZmVudHJ5KShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDMwPXN0YXRpYyB2b2lkIGJwZl90cmFtcF9pbWFnZV9wdXQoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0pO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDMxLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDMyOnN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKmRhdGEgX19tYXliZV91bnVzZWQpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MzMte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTUwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyB0cmFtcG9saW5lX29wcyA9IHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTUwMi1cdC5yZWdpc3Rlcl9mZW50cnkgICA9IHJlZ2lzdGVyX2ZlbnRyeSxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjUwMzpcdC51bnJlZ2lzdGVyX2ZlbnRyeSA9IHVucmVnaXN0ZXJfZmVudHJ5LFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNTA0LVx0Lm1vZGlmeV9mZW50cnkgICAgID0gbW9kaWZ5X2ZlbnRyeSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz02NzM9c3RhdGljIGludCBicGZfdHJhbXBvbGluZV91cGRhdGUoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgYm9vbCBsb2NrX2RpcmVjdF9tdXRleCxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy02ODYtXHRpZiAodG90YWwgPT0gMCkge1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6Njg3Olx0XHRlcnIgPSBvcHMtXHUwMDNldW5yZWdpc3Rlcl9mZW50cnkodHIsIG9yaWdfZmxhZ3MsIGRhdGEpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjg4LVx0XHRnb3RvIG91dDtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTMwPXN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5X211bHRpKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICpwdHIpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU0NC1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1NDU6c3RhdGljIGludCB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgdm9pZCAqcHRyKVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU0Ni17XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTU3ND1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyB0cmFtcG9saW5lX211bHRpX29wcyA9IHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NzUtXHQucmVnaXN0ZXJfZmVudHJ5ICAgPSByZWdpc3Rlcl9mZW50cnlfbXVsdGksXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTc2Olx0LnVucmVnaXN0ZXJfZmVudHJ5ID0gdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGksXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTc3LVx0Lm1vZGlmeV9mZW50cnkgICAgID0gbW9kaWZ5X2ZlbnRyeV9tdWx0aSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkwOQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBJbnRlcmFjdGlvbiBvZiBgZnRyYWNlX21hbmFnZWRgIGFuZCBUcmFtcG9saW5lIE9wZXJhdGlvbnMqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGZ1bGx5IHVuZGVyc3RhbmQgdGhpcy4gSXQganVzdCBoaXQgbWU6IGB1bnJlZ2lzdGVyX2ZlbnRyeWAgcmVsaWVzIG9uIGB0ci0mZ3Q7ZnVuYy5mdHJhY2VfbWFuYWdlZGAuIEFuZCBJIHJlY2FsbCB0aGF0IGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgICpzZXRzKiBgdHItJmd0O2Z1bmMuZnRyYWNlX21hbmFnZWRgIHRvIGB0cnVlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBkb2VzIHRoYXQgc2V0IGhhdmUgYW55IHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGZvciBgdW5yZWdpc3Rlcl9mZW50cnlgPyBJIGhhdmUgYSBmZWVsaW5nIHRoZSBhbnN3ZXIgd2lsbCBiZSBOTyBidXQgYmVzdCB0byBjaGVjay4KCldhaXQsIG5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIGB1bnJlZ2lzdGVyX2ZlbnRyeWAgaXMgYnVyaWVkIGF3YXkgaW4gdGhlIGB0cmFtcG9saW5lX29wc2Agc3RydWN0dXJlLiBXaGVyZWFzLCBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCByZXNpZGVzIGluIGB0cmFtcG9saW5lX211bHRpX29wc2AuIEhtbSwgc28gZXZlbiBpZiB0aGUgZm9ybWVyIGZ1bmN0aW9uIHJlbGllcyBvbiB0aGUgbGF0dGVyIHZhcmlhYmxlIGl0IHNob3VsZCBiZSBvaywgdW5sZXNzLi4uIHdoYXQgaGFwcGVucyBpZiBhIHRyYW1wb2xpbmUgaXMgc3dpdGNoZWQgZnJvbSB0aGUgbXVsdGkgdmVyc2lvbiB0byB0aGUgc2luZ2xlIHZlcnNpb24gb2YgdGhlIGltcGxlbWVudGF0aW9uPyBPciBpZiBgZnRyYWNlX21hbmFnZWRgIGlzIGNoZWNrZWQgKmVsc2V3aGVyZSo/CgpPa2F5LCB0aW1lIHRvIGdldCBzZXJpb3VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBldmVyeXdoZXJlIHRoYXQgYGZ0cmFjZV9tYW5hZ2VkYCBpcyBhY3R1YWxseSB1c2VkLiBUaGF0JiMzOTtzIHRoZSBvbmx5IHdheSBJJiMzOTtsbCBoYXZlIGEgY2xlYXIgcGljdHVyZS4gR290dGEgZGlnIGludG8gdGhlIGNvZGUgYW5kIGZpbmQgYWxsIHRoZSBjYWxscy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSB0aG9yb3VnaCBzZWFyY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z0cmFjZV9tYW5hZ2VkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmLmg9MTM4MD1zdHJ1Y3QgYnBmX3RyYW1wb2xpbmUge1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMTM5Mi1cdFx0dm9pZCAqYWRkcjtcbmluY2x1ZGUvbGludXgvYnBmLmg6MTM5MzpcdFx0Ym9vbCBmdHJhY2VfbWFuYWdlZDtcbmluY2x1ZGUvbGludXgvYnBmLmgtMTM5NC1cdH0gZnVuYztcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz00MzI9c3RhdGljIGludCB1bnJlZ2lzdGVyX2ZlbnRyeShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgdm9pZCAqZGF0YSBfX21heWJlX3VudXNlZClcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MzYtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0Mzc6XHRpZiAodHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZClcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQzOC1cdFx0cmV0ID0gZGlyZWN0X29wc19kZWwodHIsIG9sZF9hZGRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz00NTA9c3RhdGljIGludCBtb2RpZnlfZmVudHJ5KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBvcmlnX2ZsYWdzLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00NTYtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0NTc6XHRpZiAodHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZCkge1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDU4LVx0XHRyZXQgPSBkaXJlY3Rfb3BzX21vZCh0ciwgbmV3X2FkZHIsIGxvY2tfZGlyZWN0X211dGV4KTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz00NzM9c3RhdGljIGludCByZWdpc3Rlcl9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDg0LVx0XHRcdHJldHVybiAtRU5PVFNVUFA7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0ODU6XHRcdHRyLVx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQgPSB0cnVlO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDg2LVx0fVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDg3LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDg4Olx0aWYgKHRyLVx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQpIHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ4OS1cdFx0cmV0ID0gZGlyZWN0X29wc19hZGQodHIsIG5ld19hZGRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTMwPXN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5X211bHRpKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICpwdHIpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTUzOC1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1Mzk6XHR0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDAtXHRmdHJhY2VfaGFzaF9hZGQoZGF0YS1cdTAwM2VyZWcsIGRhdGEtXHUwMDNlZW50cnksIGlwLCBhZGRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAxMgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipFeGFtaW5pbmcgZnRyYWNlX21hbmFnZWQgVXNhZ2UqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYGZ0cmFjZV9tYW5hZ2VkYCBmbGFnIGFuZCBpdHMgdXNlIGluIHRoZSBmdHJhY2Ugc3Vic3lzdGVtLiBJJiMzOTt2ZSBvYnNlcnZlZCB0aGF0IGBmdHJhY2VfbWFuYWdlZGAgaXMgb25seSByZWZlcmVuY2VkIHdpdGhpbiBgdW5yZWdpc3Rlcl9mZW50cnlgLCBgbW9kaWZ5X2ZlbnRyeWAsIGFuZCBgcmVnaXN0ZXJfZmVudHJ5YC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIEJ1dCB3YWl0IGEgbWludXRlLi4uIEkgbmVlZCB0byBjb25zaWRlciBhIHBvdGVudGlhbCBlZGdlIGNhc2UuIElmIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgICphbHNvKiBzZXRzIGB0ci0mZ3Q7ZnVuYy5mdHJhY2VfbWFuYWdlZCA9IHRydWVgLCBhbmQgdGhlbiBhICpzaW5nbGUqIGBmZW50cnlgIGlzIGF0dGFjaGVkIHRvIHRoZSAqc2FtZSogZnVuY3Rpb24gdmlhIHNvbWUgb3RoZXIgbWVhbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gVGhlcmUgY291bGQgYmUgY29uZmxpY3RzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIFRoaXMgbWlnaHQgcG9pbnQgdG8gYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgYW4gdW5oYW5kbGVkIHN0YXRlLiBJIGJldHRlciBpbnZlc3RpZ2F0ZSB0aGUgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAgZnVuY3Rpb24gdG8gc2VlIGlmIGl0IGhhbmRsZXMgdGhpcyBzY2VuYXJpby4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3RyYW1wb2xpbmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY0MDpcdFx0XHRnb3RvIG91dDtcbiA2NDE6XHRcbiA2NDI6XHRcdGVyciA9IGJwZl9qaXRfY2hhcmdlX21vZG1lbShzaXplKTtcbiA2NDM6XHRcdGlmIChlcnIpXG4gNjQ0Olx0XHRcdGdvdG8gb3V0X2ZyZWVfaW07XG4gNjQ1Olx0XHRpbS1cdTAwM2VzaXplID0gc2l6ZTtcbiA2NDY6XHRcbiA2NDc6XHRcdGVyciA9IC1FTk9NRU07XG4gNjQ4Olx0XHRpbS1cdTAwM2VpbWFnZSA9IGltYWdlID0gYXJjaF9hbGxvY19icGZfdHJhbXBvbGluZShzaXplKTtcbiA2NDk6XHRcdGlmICghaW1hZ2UpXG4gNjUwOlx0XHRcdGdvdG8gb3V0X3VuY2hhcmdlO1xuIDY1MTpcdFxuIDY1MjpcdFx0ZXJyID0gcGVyY3B1X3JlZl9pbml0KFx1MDAyNmltLVx1MDAzZXBjcmVmLCBfX2JwZl90cmFtcF9pbWFnZV9yZWxlYXNlLCAwLCBHRlBfS0VSTkVMKTtcbiA2NTM6XHRcdGlmIChlcnIpXG4gNjU0Olx0XHRcdGdvdG8gb3V0X2ZyZWVfaW1hZ2U7XG4gNjU1Olx0XG4gNjU2Olx0XHRrc3ltID0gXHUwMDI2aW0tXHUwMDNla3N5bTtcbiA2NTc6XHRcdElOSVRfTElTVF9IRUFEX1JDVShcdTAwMjZrc3ltLVx1MDAzZWxub2RlKTtcbiA2NTg6XHRcdHNucHJpbnRmKGtzeW0tXHUwMDNlbmFtZSwgS1NZTV9OQU1FX0xFTiwgXCYjMzQ7YnBmX3RyYW1wb2xpbmVfJWxsdVwmIzM0Oywga2V5KTtcbiA2NTk6XHRcdGJwZl9pbWFnZV9rc3ltX2luaXQoaW1hZ2UsIHNpemUsIGtzeW0pO1xuIDY2MDpcdFx0YnBmX2ltYWdlX2tzeW1fYWRkKGtzeW0pO1xuIDY2MTpcdFx0cmV0dXJuIGltO1xuIDY2MjpcdFxuIDY2MzpcdG91dF9mcmVlX2ltYWdlOlxuIDY2NDpcdFx0YXJjaF9mcmVlX2JwZl90cmFtcG9saW5lKGltLVx1MDAzZWltYWdlLCBpbS1cdTAwM2VzaXplKTtcbiA2NjU6XHRvdXRfdW5jaGFyZ2U6XG4gNjY2Olx0XHRicGZfaml0X3VuY2hhcmdlX21vZG1lbShzaXplKTtcbiA2Njc6XHRvdXRfZnJlZV9pbTpcbiA2Njg6XHRcdGtmcmVlKGltKTtcbiA2Njk6XHRvdXQ6XG4gNjcwOlx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIDY3MTpcdH1cbiA2NzI6XHRcbiA2NzM6XHRzdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxuIDY3NDpcdFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgKm9wcywgdm9pZCAqZGF0YSlcbiA2NzU6XHR7XG4gNjc2Olx0XHRzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbTtcbiA2Nzc6XHRcdHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2RlcztcbiA2Nzg6XHRcdHUzMiBvcmlnX2ZsYWdzID0gdHItXHUwMDNlZmxhZ3M7XG4gNjc5Olx0XHRib29sIGlwX2FyZyA9IGZhbHNlO1xuIDY4MDpcdFx0aW50IGVyciwgdG90YWwsIHNpemU7XG4gNjgxOlx0XG4gNjgyOlx0XHR0bm9kZXMgPSBicGZfdHJhbXBvbGluZV9nZXRfcHJvZ3ModHIsIFx1MDAyNnRvdGFsLCBcdTAwMjZpcF9hcmcpO1xuIDY4MzpcdFx0aWYgKElTX0VSUih0bm9kZXMpKVxuIDY4NDpcdFx0XHRyZXR1cm4gUFRSX0VSUih0bm9kZXMpO1xuIDY4NTpcdFxuIDY4NjpcdFx0aWYgKHRvdGFsID09IDApIHtcbiA2ODc6XHRcdFx0ZXJyID0gb3BzLVx1MDAzZXVucmVnaXN0ZXJfZmVudHJ5KHRyLCBvcmlnX2ZsYWdzLCBkYXRhKTtcbiA2ODg6XHRcdFx0Z290byBvdXQ7XG4gNjg5Olx0XHR9XG4gNjkwOlx0XG4gNjkxOlx0XHQvKiBjbGVhciBhbGwgYml0cyBleGNlcHQgU0hBUkVfSVBNT0RJRlkgYW5kIFRBSUxfQ0FMTF9DVFggKi9cbiA2OTI6XHRcdHRyLVx1MDAzZWZsYWdzIFx1MDAyNj0gKEJQRl9UUkFNUF9GX1NIQVJFX0lQTU9ESUZZIHwgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCk7XG4gNjkzOlx0XG4gNjk0Olx0XHRpZiAodG5vZGVzW0JQRl9UUkFNUF9GRVhJVF0ubnJfbm9kZXMgfHxcbiA2OTU6XHRcdCAgICB0bm9kZXNbQlBGX1RSQU1QX01PRElGWV9SRVRVUk5dLm5yX25vZGVzKSB7XG4gNjk2Olx0XHRcdC8qIE5PVEU6IEJQRl9UUkFNUF9GX1JFU1RPUkVfUkVHUyBhbmQgQlBGX1RSQU1QX0ZfU0tJUF9GUkFNRVxuIDY5NzpcdFx0XHQgKiBzaG91bGQgbm90IGJlIHNldCB0b2dldGhlci5cbiA2OTg6XHRcdFx0ICovXG4gNjk5Olx0XHRcdHRyLVx1MDAzZWZsYWdzIHw9IEJQRl9UUkFNUF9GX0NBTExfT1JJRyB8IEJQRl9UUkFNUF9GX1NLSVBfRlJBTUU7XG4gNzAwOlx0XHR9IGVsc2Uge1xuIDcwMTpcdFx0XHR0ci1cdTAwM2VmbGFncyB8PSBCUEZfVFJBTVBfRl9SRVNUT1JFX1JFR1M7XG4gNzAyOlx0XHR9XG4gNzAzOlx0XG4gNzA0Olx0XHRpZiAoaXBfYXJnKVxuIDcwNTpcdFx0XHR0ci1cdTAwM2VmbGFncyB8PSBCUEZfVFJBTVBfRl9JUF9BUkc7XG4gNzA2Olx0XG4gNzA3Olx0I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xuIDcwODpcdGFnYWluOlxuIDcwOTpcdFx0aWYgKHRyLVx1MDAzZWZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9DQUxMX09SSUcpIHtcbiA3MTA6XHRcdFx0aWYgKHRyLVx1MDAzZWZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9TSEFSRV9JUE1PRElGWSkge1xuIDcxMTpcdFx0XHRcdC8qIFRoZSBCUEZfVFJBTVBfRl9TS0lQX0ZSQU1FIGNhbiBiZSBjbGVhcmVkIGluIHRoZVxuIDcxMjpcdFx0XHRcdCAqIGZpcnN0IHRyeSwgcmVzZXQgaXQgaW4gdGhlIHNlY29uZCB0cnkuXG4gNzEzOlx0XHRcdFx0ICovXG4gNzE0Olx0XHRcdFx0dHItXHUwMDNlZmxhZ3MgfD0gQlBGX1RSQU1QX0ZfT1JJR19TVEFDSyB8IEJQRl9UUkFNUF9GX1NLSVBfRlJBTUU7XG4gNzE1Olx0XHRcdH0gZWxzZSBpZiAoSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVApKSB7XG4gNzE2Olx0XHRcdFx0LyogVXNlIFwmIzM0O2ptcFwmIzM0OyBpbnN0ZWFkIG9mIFwmIzM0O2NhbGxcJiMzNDsgZm9yIHRoZSB0cmFtcG9saW5lXG4gNzE3Olx0XHRcdFx0ICogaW4gdGhlIG9yaWdpbiBjYWxsIGNhc2UsIGFuZCB3ZSBkb24mIzM5O3QgbmVlZCB0b1xuIDcxODpcdFx0XHRcdCAqIHNraXAgdGhlIGZyYW1lLlxuIDcxOTpcdFx0XHRcdCAqL1xuIDcyMDpcdFx0XHRcdHRyLVx1MDAzZWZsYWdzIFx1MDAyNj0gfkJQRl9UUkFNUF9GX1NLSVBfRlJBTUU7XG4gNzIxOlx0XHRcdH1cbiA3MjI6XHRcdH1cbiA3MjM6XHQjZW5kaWZcbiA3MjQ6XHRcbiA3MjU6XHRcdHNpemUgPSBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoXHUwMDI2dHItXHUwMDNlZnVuYy5tb2RlbCwgdHItXHUwMDNlZmxhZ3MsXG4gNzI2Olx0XHRcdFx0XHRcdHRub2RlcywgdHItXHUwMDNlZnVuYy5hZGRyKTtcbiA3Mjc6XHRcdGlmIChzaXplIFx1MDAzYyAwKSB7XG4gNzI4Olx0XHRcdGVyciA9IHNpemU7XG4gNzI5Olx0XHRcdGdvdG8gb3V0O1xuIDczMDpcdFx0fVxuIDczMTpcdFxuIDczMjpcdFx0aWYgKHNpemUgXHUwMDNlIFBBR0VfU0laRSkge1xuIDczMzpcdFx0XHRlcnIgPSAtRTJCSUc7XG4gNzM0Olx0XHRcdGdvdG8gb3V0O1xuIDczNTpcdFx0fVxuIDczNjpcdFxuIDczNzpcdFx0aW0gPSBicGZfdHJhbXBfaW1hZ2VfYWxsb2ModHItXHUwMDNla2V5LCBzaXplKTtcbiA3Mzg6XHRcdGlmIChJU19FUlIoaW0pKSB7XG4gNzM5Olx0XHRcdGVyciA9IFBUUl9FUlIoaW0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTgxCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBUcmFtcG9saW5lIEJ1ZyBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IGFwcGVhcnMgdG8gYWRkcmVzcyBhIGJ1ZyBpbiB0aGUgQlBGIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgZmVudHJ5IG1lY2hhbmlzbS4gSSBzZWUgdGhhdCBgdHItJmd0O2Z1bmMuZnRyYWNlX21hbmFnZWRgIHdhc24mIzM5O3QgYmVpbmcgc2V0IHRvIGB0cnVlYCBpbiBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgd2hpY2ggaXMgZGVmaW5pdGVseSBhIHByb2JsZW0uIFRoaXMgb21pc3Npb24gY291bGQgbGVhZCB0byBpbmNvcnJlY3QgYmVoYXZpb3Igd2hlbiBtdWx0aXBsZSBmZW50cmllcyBhcmUgaW52b2x2ZWQuCgpUaGUgY29yZSBvZiB0aGUgaXNzdWUgc2VlbXMgdG8gYXJpc2Ugd2hlbiBhIHNpbmdsZSBmZW50cnkgaXMgYXR0YWNoZWQgdG8gYSBmdW5jdGlvbiB0aGF0IGFscmVhZHkgaGFzIGEgbXVsdGkgZmVudHJ5LCB0cmlnZ2VyaW5nIGBicGZfdHJhbXBvbGluZV91cGRhdGVgLiBJbnRlcmVzdGluZy4gV2FpdCBhIG1pbnV0ZSwgdGhlIGB0ZXN0X2ZlbnRyeV9hZnRlcl9tdWx0aWAgdGVzdCBjYXNlIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBwcm92b2tlICp0aGlzKiBzY2VuYXJpbywgc3RlcCBieSBzdGVwISBJdCBhdHRhY2hlcyBhIGBmZW50cnkubXVsdGlgLCB0aGVuIGEgc2luZ2xlIGBmZW50cnlgLCBkZXRhY2hlcyB0aGUgc2luZ2xlIGBmZW50cnlgLCBhbmQgdGhlbiBkZXRhY2hlcyB0aGUgYGZlbnRyeS5tdWx0aWAuIFRoYXQmIzM5O3MgcHJlY2lzZWx5IHRoZSBzaXR1YXRpb24gYmVpbmcgZmxhZ2dlZCBoZXJlLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIG1vZGlmaWNhdGlvbiB0byBob3cgQlBGIHRyYW1wb2xpbmVzIGFyZSBtYW5hZ2VkLCBzcGVjaWZpY2FsbHkgZm9yIHByb2dyYW1zIHVzaW5nIGBmZW50cnkubXVsdGlgLiBOb3cgSSBuZWVkIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBjb3JyZWN0bHkgbWFuYWdlcyB0aGUgZmVudHJ5IHN0YXRlLgoKSSYjMzk7bSBtYWtpbmcgYSBtZW50YWwgbm90ZSB0aGF0IHRoaXMgcGF0Y2ggcmVxdWlyZXMgdGhlIGNvbmZpZ3VyYXRpb25zIGBCUEZfU1lTQ0FMTGAsIGBGVFJBQ0VgLCBhbmQgcG90ZW50aWFsbHkgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYC4gVGltZSB0byBkb3VibGUtY2hlY2sgYGtlcm5lbC9icGYvdHJhbXBvbGluZS5jYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBvdmVyYWxsIGltcGFjdCBvbiB0aGUgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfLipGVFJBQ0UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDMwODIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91c2IvZHdjMy5yc3Q9NTM3PWluZm9ybWF0aW9uIGFib3V0IHRoZSBiZWhhdmlvciBvZiB0aGUgZHJpdmVyIGR1cmluZyBydW50aW1lLlxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3VzYi9kd2MzLnJzdC01MzgtXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2R3YzMucnN0OjUzOTpJbiBvcmRlciB0byB1c2UgdGhlc2UgZXZlbnRzLCB5b3UgbXVzdCBlbmFibGUgYGBDT05GSUdfRlRSQUNFYGAgaW5cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91c2IvZHdjMy5yc3QtNTQwLXlvdXIga2VybmVsIGNvbmZpZy5cbi0tXG5Eb2N1bWVudGF0aW9uL2xpdmVwYXRjaC9saXZlcGF0Y2gucnN0PTQ0PWEgYmFzZS4gQSBLcHJvYmUgaXMgcmVnaXN0ZXJlZCBhcyBhIGZ0cmFjZSBoYW5kbGVyIHdoZW4gdGhlIGZ1bmN0aW9uIGVudHJ5XG5Eb2N1bWVudGF0aW9uL2xpdmVwYXRjaC9saXZlcGF0Y2gucnN0OjQ1OmlzIHByb2JlZCwgc2VlIENPTkZJR19LUFJPQkVTX09OX0ZUUkFDRS4gQWxzbyBhbiBhbHRlcm5hdGl2ZSBmdW5jdGlvbiBmcm9tXG5Eb2N1bWVudGF0aW9uL2xpdmVwYXRjaC9saXZlcGF0Y2gucnN0LTQ2LWEgbGl2ZSBwYXRjaCBpcyBjYWxsZWQgd2l0aCB0aGUgaGVscCBvZiBhIGN1c3RvbSBmdHJhY2UgaGFuZGxlci4gQnV0IHRoZXJlIGFyZVxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZWJ1Z2dpbmcvZHJpdmVyX2RldmVsb3BtZW50X2RlYnVnZ2luZ19ndWlkZS5yc3Q9NTI9VHJhY2VfcHJpbnRrXG4tLVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlYnVnZ2luZy9kcml2ZXJfZGV2ZWxvcG1lbnRfZGVidWdnaW5nX2d1aWRlLnJzdC01NC1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZWJ1Z2dpbmcvZHJpdmVyX2RldmVsb3BtZW50X2RlYnVnZ2luZ19ndWlkZS5yc3Q6NTU6UHJlcmVxdWlzaXRlOiBgYENPTkZJR19EWU5BTUlDX0ZUUkFDRWBgIFx1MDAyNiBgYCNpbmNsdWRlIFx1MDAzY2xpbnV4L2Z0cmFjZS5oXHUwMDNlYGBcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZWJ1Z2dpbmcvZHJpdmVyX2RldmVsb3BtZW50X2RlYnVnZ2luZ19ndWlkZS5yc3QtNTYtXG4tLVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlYnVnZ2luZy91c2Vyc3BhY2VfZGVidWdnaW5nX2d1aWRlLnJzdD02Mz1GdHJhY2Vcbi0tXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVidWdnaW5nL3VzZXJzcGFjZV9kZWJ1Z2dpbmdfZ3VpZGUucnN0LTY1LVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlYnVnZ2luZy91c2Vyc3BhY2VfZGVidWdnaW5nX2d1aWRlLnJzdDo2NjpQcmVyZXF1aXNpdGU6IGBgQ09ORklHX0RZTkFNSUNfRlRSQUNFYGBcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZWJ1Z2dpbmcvdXNlcnNwYWNlX2RlYnVnZ2luZ19ndWlkZS5yc3QtNjctXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UtdXNlcy5yc3Q9MTM4PWZ0cmFjZV90ZXN0X3JlY3Vyc2lvbl90cnlsb2NrKCkgdG8gcmVjb3JkIHdoZXJlIHRoZSByZWN1cnNpb24gaGFwcGVuZWRcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLXVzZXMucnN0OjEzOTooaWYgQ09ORklHX0ZUUkFDRV9SRUNPUkRfUkVDVVJTSU9OIGlzIHNldCkuXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS11c2VzLnJzdC0xNDAtXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0PTI5NjI9ZHluYW1pYyBmdHJhY2Vcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3QtMjk2NC1cbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdDoyOTY1OklmIENPTkZJR19EWU5BTUlDX0ZUUkFDRSBpcyBzZXQsIHRoZSBzeXN0ZW0gd2lsbCBydW4gd2l0aFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTI5NjYtdmlydHVhbGx5IG5vIG92ZXJoZWFkIHdoZW4gZnVuY3Rpb24gdHJhY2luZyBpcyBkaXNhYmxlZC4gVGhlIHdheVxuLS1cbk1ha2VmaWxlPTEwMjk9aWZkZWYgQ09ORklHX0ZVTkNUSU9OX1RSQUNFUlxuTWFrZWZpbGU6MTAzMDppZmRlZiBDT05GSUdfRlRSQUNFX01DT1VOVF9VU0VfQ0Ncbk1ha2VmaWxlLTEwMzEtICBDQ19GTEFHU19GVFJBQ0VcdCYjNDM7PSAtbXJlY29yZC1tY291bnRcbi0tXG5NYWtlZmlsZT0xMDM4PWVuZGlmXG5NYWtlZmlsZToxMDM5OmlmZGVmIENPTkZJR19GVFJBQ0VfTUNPVU5UX1VTRV9PQkpUT09MXG5NYWtlZmlsZS0xMDQwLSAgaWZkZWYgQ09ORklHX0hBVkVfT0JKVE9PTF9OT1BfTUNPVU5UXG4tLVxuTWFrZWZpbGU9MTA0Mz1lbmRpZlxuTWFrZWZpbGU6MTA0NDppZmRlZiBDT05GSUdfRlRSQUNFX01DT1VOVF9VU0VfUkVDT1JETUNPVU5UXG5NYWtlZmlsZS0xMDQ1LSAgaWZkZWYgQ09ORklHX0hBVkVfQ19SRUNPUkRNQ09VTlRcbi0tXG5hcmNoL2FyYy9jb25maWdzL2F4czEwMV9kZWZjb25maWc9MTAyPUNPTkZJR19ERUZBVUxUX0hVTkdfVEFTS19USU1FT1VUPTEwXG4tLVxuYXJjaC9hcmMvY29uZmlncy9heHMxMDFfZGVmY29uZmlnLTEwNC0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAxX2RlZmNvbmZpZzoxMDU6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbi0tXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19kZWZjb25maWc9MTAwPUNPTkZJR19ERUZBVUxUX0hVTkdfVEFTS19USU1FT1VUPTEwXG4tLVxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfZGVmY29uZmlnLTEwMi0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAzX2RlZmNvbmZpZzoxMDM6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbi0tXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19zbXBfZGVmY29uZmlnPTEwMj1DT05GSUdfREVGQVVMVF9IVU5HX1RBU0tfVElNRU9VVD0xMFxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAzX3NtcF9kZWZjb25maWctMTA0LSMgQ09ORklHX0RFQlVHX1BSRUVNUFQgaXMgbm90IHNldFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfc21wX2RlZmNvbmZpZzoxMDU6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbi0tXG5hcmNoL2FyYy9jb25maWdzL2hzZGtfZGVmY29uZmlnPTg5PUNPTkZJR19ERUZBVUxUX0hVTkdfVEFTS19USU1FT1VUPTEwXG4tLVxuYXJjaC9hcmMvY29uZmlncy9oc2RrX2RlZmNvbmZpZy05MS0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWc6OTI6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWctOTMtQ09ORklHX0NSWVBUT19FQ0hBSU5JVj15XG4tLVxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9oc19zbXBfZGVmY29uZmlnPTcyPUNPTkZJR19ORlNfVjNfQUNMPXlcbmFyY2gvYXJjL2NvbmZpZ3MvbnNpbW9zY2lfaHNfc21wX2RlZmNvbmZpZzo3MzpDT05GSUdfRlRSQUNFPXlcbmFyY2gvYXJjL2NvbmZpZ3MvbnNpbW9zY2lfaHNfc21wX2RlZmNvbmZpZy03NC0jIENPTkZJR19ORVRfVkVORE9SX0NBREVOQ0UgaXMgbm90IHNldFxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvdmRrX2hzMzhfZGVmY29uZmlnPTkxPUNPTkZJR19ERUZBVUxUX0hVTkdfVEFTS19USU1FT1VUPTEwXG4tLVxuYXJjaC9hcmMvY29uZmlncy92ZGtfaHMzOF9kZWZjb25maWctOTMtIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL3Zka19oczM4X2RlZmNvbmZpZzo5NDojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvdmRrX2hzMzhfc21wX2RlZmNvbmZpZz05Nz1DT05GSUdfREVGQVVMVF9IVU5HX1RBU0tfVElNRU9VVD0xMFxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvdmRrX2hzMzhfc21wX2RlZmNvbmZpZy05OS0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvdmRrX2hzMzhfc21wX2RlZmNvbmZpZzoxMDA6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbi0tXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc9MjgwPUNPTkZJR19QU1RPUkVfUE1TRz15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc6MjgxOkNPTkZJR19QU1RPUkVfRlRSQUNFPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy0yODItQ09ORklHX1BTVE9SRV9SQU09eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvYXQ5MV9kdF9kZWZjb25maWc9MjQwPUNPTkZJR19ERUJVR19GUz15XG5hcmNoL2FybS9jb25maWdzL2F0OTFfZHRfZGVmY29uZmlnLTI0MS0jIENPTkZJR19TQ0hFRF9ERUJVRyBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL2F0OTFfZHRfZGVmY29uZmlnOjI0MjojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9hdDkxX2R0X2RlZmNvbmZpZy0yNDMtQ09ORklHX0RFQlVHX1VTRVI9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWc9MjI5PUNPTkZJR19SQ1VfQ1BVX1NUQUxMX1RJTUVPVVQ9NjBcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWc6MjMwOiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnLTIzMS1DT05GSUdfREVCVUdfVVNFUj15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9jbHBzNzExeF9kZWZjb25maWc9NzI9Q09ORklHX01JTklYX0ZTPXlcbmFyY2gvYXJtL2NvbmZpZ3MvY2xwczcxMXhfZGVmY29uZmlnLTczLSMgQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVMgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9jbHBzNzExeF9kZWZjb25maWc6NzQ6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvY2xwczcxMXhfZGVmY29uZmlnLTc1LUNPTkZJR19ERUJVR19VU0VSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL2lteF92Nl92N19kZWZjb25maWc9NDc5PUNPTkZJR19ERUJVR19GUz15XG5hcmNoL2FybS9jb25maWdzL2lteF92Nl92N19kZWZjb25maWctNDgwLSMgQ09ORklHX1NMVUJfREVCVUcgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnOjQ4MTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mvam9ybmFkYTcyMF9kZWZjb25maWc9OTI9Q09ORklHX0RFQlVHX0tFUk5FTD15XG5hcmNoL2FybS9jb25maWdzL2pvcm5hZGE3MjBfZGVmY29uZmlnOjkzOiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL2pvcm5hZGE3MjBfZGVmY29uZmlnLTk0LUNPTkZJR19ERUJVR19MTD15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9scGMzMnh4X2RlZmNvbmZpZz0xODc9Q09ORklHX1BBTklDX1RJTUVPVVQ9NVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbHBjMzJ4eF9kZWZjb25maWctMTg5LSMgQ09ORklHX0RFQlVHX1BSRUVNUFQgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9scGMzMnh4X2RlZmNvbmZpZzoxOTA6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvbHBjMzJ4eF9kZWZjb25maWctMTkxLUNPTkZJR19ERUJVR19MTD15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NHRfZGVmY29uZmlnPTkzPUNPTkZJR19NSU5JWF9GUz15XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y0dF9kZWZjb25maWc6OTQ6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjR0X2RlZmNvbmZpZy05NS1DT05GSUdfREVCVUdfVVNFUj15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NV9kZWZjb25maWc9MjkyPUNPTkZJR19ERUJVR19GUz15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NV9kZWZjb25maWctMjk0LSMgQ09ORklHX0RFQlVHX1BSRUVNUFQgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NV9kZWZjb25maWc6Mjk1OiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y1X2RlZmNvbmZpZy0yOTYtQ09ORklHX0RFQlVHX1VTRVI9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjVfZGVmY29uZmlnPTE5MT1DT05GSUdfREVCVUdfRlM9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjVfZGVmY29uZmlnLTE5My0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjVfZGVmY29uZmlnOjE5NDojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92NV9kZWZjb25maWctMTk1LUNPTkZJR19ERUJVR19VU0VSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL29yaW9uNXhfZGVmY29uZmlnPTE0Mz1DT05GSUdfTEFURU5DWVRPUD15XG5hcmNoL2FybS9jb25maWdzL29yaW9uNXhfZGVmY29uZmlnOjE0NDojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9vcmlvbjV4X2RlZmNvbmZpZy0xNDUtQ09ORklHX0RFQlVHX1VTRVI9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvcHhhM3h4X2RlZmNvbmZpZz0xMDY9Q09ORklHX0RFQlVHX1NQSU5MT0NLX1NMRUVQPXlcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhM3h4X2RlZmNvbmZpZzoxMDc6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhM3h4X2RlZmNvbmZpZy0xMDgtQ09ORklHX0RFQlVHX1VTRVI9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZz02NjU9Q09ORklHX0ZVTkNUSU9OX1RSQUNFUj15XG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc6NjY2OkNPTkZJR19GVFJBQ0VfU1lTQ0FMTFM9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvcmVhbHZpZXdfZGVmY29uZmlnPTk3PUNPTkZJR19ERUJVR19GUz15XG5hcmNoL2FybS9jb25maWdzL3JlYWx2aWV3X2RlZmNvbmZpZy05OC0jIENPTkZJR19TQ0hFRF9ERUJVRyBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL3JlYWx2aWV3X2RlZmNvbmZpZzo5OTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9yZWFsdmlld19kZWZjb25maWctMTAwLUNPTkZJR19ERUJVR19VU0VSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NhbWE1X2RlZmNvbmZpZz0yNTE9Q09ORklHX0RFQlVHX01FTU9SWV9JTklUPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTVfZGVmY29uZmlnLTI1Mi0jIENPTkZJR19TQ0hFRF9ERUJVRyBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL3NhbWE1X2RlZmNvbmZpZzoyNTM6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTVfZGVmY29uZmlnLTI1NC1DT05GSUdfREVCVUdfVVNFUj15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWc9MjQ4PUNPTkZJR19TVEFDS1RSQUNFPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTdfZGVmY29uZmlnOjI0OTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWctMjUwLUNPTkZJR19ERUJVR19VU0VSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZz0yMzU9Q09ORklHX01BR0lDX1NZU1JRPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnLTIzNi0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnOjIzNzojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvdTg1MDBfZGVmY29uZmlnPTE5MD1DT05GSUdfREVCVUdfRlM9eVxuYXJjaC9hcm0vY29uZmlncy91ODUwMF9kZWZjb25maWctMTkxLSMgQ09ORklHX1NDSEVEX0RFQlVHIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvdTg1MDBfZGVmY29uZmlnOjE5MjojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy91ODUwMF9kZWZjb25maWctMTkzLUNPTkZJR19ERUJVR19VU0VSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnPTE5Nj1DT05GSUdfREVCVUdfRlM9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mvd3BjbTQ1MF9kZWZjb25maWctMTk4LSMgQ09ORklHX0RFQlVHX1BSRUVNUFQgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy93cGNtNDUwX2RlZmNvbmZpZzoxOTk6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3Mvd3BjbTQ1MF9kZWZjb25maWctMjAwLUNPTkZJR19JT19TVFJJQ1RfREVWTUVNPXlcbi0tXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9mdHJhY2UuaC02LVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vZnRyYWNlLmg6NzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xuYXJjaC9hcm0vaW5jbHVkZS9hc20vZnRyYWNlLmgtOC0jZGVmaW5lIEFSQ0hfU1VQUE9SVFNfRlRSQUNFX09QUyAxXG4tLVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vZnRyYWNlLmg9MTY9ZXh0ZXJuIHZvaWQgX19nbnVfbWNvdW50X25jKHZvaWQpO1xuYXJjaC9hcm0vaW5jbHVkZS9hc20vZnRyYWNlLmgtMTctXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9mdHJhY2UuaDoxODojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9mdHJhY2UuaC0xOS1zdHJ1Y3QgZHluX2FyY2hfZnRyYWNlIHtcbi0tXG5hcmNoL2FybS9rZXJuZWwvTWFrZWZpbGU9NTk9b2JqLSQoQ09ORklHX0ZVTkNUSU9OX1RSQUNFUilcdCYjNDM7PSBlbnRyeS1mdHJhY2Uub1xuYXJjaC9hcm0va2VybmVsL01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19EWU5BTUlDX0ZUUkFDRSlcdCYjNDM7PSBmdHJhY2UubyBpbnNuLm8gcGF0Y2gub1xuYXJjaC9hcm0va2VybmVsL01ha2VmaWxlLTYxLW9iai0kKENPTkZJR19GVU5DVElPTl9HUkFQSF9UUkFDRVIpXHQmIzQzOz0gZnRyYWNlLm8gaW5zbi5vIHBhdGNoLm9cbi0tXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtNjItXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM6NjM6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1NcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy02NC1cbi0tXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM9MTA0PVRIVU1CKFx0bm9wLndcdFx0KVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNDQtXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTQ1OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTQ2LVx0bGRyX3ZhXHRyMiwgZnVuY3Rpb25fdHJhY2Vfb3BcdFx0QCBwb2ludGVyIHRvIHRoZSBjdXJyZW50XG4tLVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TPTE1OT1USFVNQihcdG5vcC53XHRcdClcbi0tXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTcwLSNlbmRpZlxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjE3MTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTcyLVx0QCBjYWxsZWQgZnJvbSBfX2Z0cmFjZV9jYWxsZXIsIHNhdmVkIGluIG1jb3VudF9lbnRlclxuLS1cbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0yMTA9VU5XSU5EKC5mbnN0YXJ0KVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjIxMTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjEyLVx0cHVzaFx0e2xyfVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0yMTk9RU5EUFJPQyhfX2dudV9tY291bnRfbmMpXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjIwLVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjIyMTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjIyLUVOVFJZKGZ0cmFjZV9jYWxsZXIpXG4tLVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TPTIyNj1FTkRQUk9DKGZ0cmFjZV9jYWxsZXIpXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjI3LVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjIyODojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTIyOS1FTlRSWShmdHJhY2VfcmVnc19jYWxsZXIpXG4tLVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TPTI0Mz1FTkRQUk9DKGZ0cmFjZV9ncmFwaF9jYWxsZXIpXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjQ0LVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjI0NTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTI0Ni1FTlRSWShmdHJhY2VfZ3JhcGhfcmVnc19jYWxsZXIpXG4tLVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TPTI4Nj1FTkRQUk9DKGZ0cmFjZV9zdHViX2dyYXBoKVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTI4Ny1cbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoyODg6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTI4OS1cbi0tXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM9Mjk1PUVORFBST0MoXFxkc3RcXCgpX2Zyb21faW5pdClcbi0tXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjk4LVx0aW5pdF90cmFtcFx0ZnRyYWNlX2NhbGxlclxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjI5OTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTMwMC1cdGluaXRfdHJhbXBcdGZ0cmFjZV9yZWdzX2NhbGxlclxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy00NC1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYzo0NTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtNDYtXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTY5PXN0YXRpYyB1bnNpZ25lZCBsb25nIF9fcmVmIGFkanVzdF9hZGRyZXNzKHN0cnVjdCBkeW5fZnRyYWNlICpyZWMsXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTcxLXtcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYzo3MjpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0UpIHx8XG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtNzMtXHQgICAgc3lzdGVtX3N0YXRlIFx1MDAzZT0gU1lTVEVNX0ZSRUVJTkdfSU5JVE1FTSB8fFxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy03NS1cdFx0cmV0dXJuIGFkZHI7XG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6NzY6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHUykgfHxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy03Ny1cdCAgICBhZGRyID09ICh1bnNpZ25lZCBsb25nKVx1MDAyNmZ0cmFjZV9jYWxsZXIpXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTEyMj1pbnQgZnRyYWNlX3VwZGF0ZV9mdHJhY2VfZnVuYyhmdHJhY2VfZnVuY190IGZ1bmMpXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTEzMi1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYzoxMzM6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1NcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0xMzQtXHRpZiAoIXJldCkge1xuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYz0xNDU9aW50IGZ0cmFjZV9tYWtlX2NhbGwoc3RydWN0IGR5bl9mdHJhY2UgKnJlYywgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0xNjgtXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6MTY5OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtMTcwLVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYz0xODY9aW50IGZ0cmFjZV9tYWtlX25vcChzdHJ1Y3QgbW9kdWxlICptb2QsXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTIyMi19XG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6MjIzOiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0UgKi9cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0yMjQtXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTIyNz12b2lkIHByZXBhcmVfZnRyYWNlX3JldHVybih1bnNpZ25lZCBsb25nICpwYXJlbnQsIHVuc2lnbmVkIGxvbmcgc2VsZl9hZGRyLFxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0yNzMtXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6Mjc0OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0yNzUtZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZnRyYWNlX2dyYXBoX2NhbGw7XG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTI5ND1zdGF0aWMgaW50IGZ0cmFjZV9tb2RpZnlfZ3JhcGhfY2FsbGVyKGJvb2wgZW5hYmxlKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0zMDEtXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6MzAyOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtMzAzLVx0aWYgKCFyZXQpXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTMxOD1pbnQgZnRyYWNlX2Rpc2FibGVfZnRyYWNlX2dyYXBoX2NhbGxlcih2b2lkKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0zMjEtfVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jOjMyMjojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFICovXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtMzIzLSNlbmRpZiAvKiBDT05GSUdfRlVOQ1RJT05fR1JBUEhfVFJBQ0VSICovXG4tLVxuYXJjaC9hcm0va2VybmVsL21vZHVsZS1wbHRzLmM9MjQ9c3RhdGljIGNvbnN0IHUzMiBmaXhlZF9wbHRzW10gPSB7XG5hcmNoL2FybS9rZXJuZWwvbW9kdWxlLXBsdHMuYzoyNTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2FybS9rZXJuZWwvbW9kdWxlLXBsdHMuYy0yNi1cdEZUUkFDRV9BRERSLFxuLS1cbmFyY2gvYXJtNjQvTWFrZWZpbGU9MTQxPUNIRUNLRkxBR1NcdCYjNDM7PSAtRF9fYWFyY2g2NF9fXG5hcmNoL2FybTY0L01ha2VmaWxlLTE0Mi1cbmFyY2gvYXJtNjQvTWFrZWZpbGU6MTQzOmlmZXEgKCQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQ0FMTF9PUFMpLHkpXG5hcmNoL2FybTY0L01ha2VmaWxlLTE0NC0gIEtCVUlMRF9DUFBGTEFHUyAmIzQzOz0gLURDQ19VU0lOR19QQVRDSEFCTEVfRlVOQ1RJT05fRU5UUllcbmFyY2gvYXJtNjQvTWFrZWZpbGUtMTQ1LSAgQ0NfRkxBR1NfRlRSQUNFIDo9IC1mcGF0Y2hhYmxlLWZ1bmN0aW9uLWVudHJ5PTQsMlxuYXJjaC9hcm02NC9NYWtlZmlsZToxNDY6ZWxzZSBpZmVxICgkKENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0FSR1MpLHkpXG5hcmNoL2FybTY0L01ha2VmaWxlLTE0Ny0gIEtCVUlMRF9DUFBGTEFHUyAmIzQzOz0gLURDQ19VU0lOR19QQVRDSEFCTEVfRlVOQ1RJT05fRU5UUllcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTE5NTk9Q09ORklHX0RFQlVHX0ZTPXlcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTE5NjEtIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE5NjI6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTk2My1DT05GSUdfQ09SRVNJR0hUPW1cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE0LVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaDoxNTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC0xNi0jZGVmaW5lIEFSQ0hfU1VQUE9SVFNfRlRSQUNFX09QUyAxXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaD01NT11bnNpZ25lZCBsb25nIGFyY2hfZnRyYWNlX2dldF9zeW1hZGRyKHVuc2lnbmVkIGxvbmcgZmVudHJ5X2lwKTtcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTU3LVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaDo1ODojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC01OS0jZGVmaW5lIEhBVkVfQVJDSF9GVFJBQ0VfUkVHU1xuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg9NzE9c3RydWN0IF9fYXJjaF9mdHJhY2VfcmVncyB7XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC03NC1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg6NzU6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC03Ni1cdHVuc2lnbmVkIGxvbmcgZGlyZWN0X3RyYW1wO1xuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg9MTcyPXZvaWQgZnRyYWNlX2dyYXBoX2Z1bmModW5zaWduZWQgbG9uZyBpcCwgdW5zaWduZWQgbG9uZyBwYXJlbnRfaXAsXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC0xNzUtXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oOjE3NjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE3Ny1zdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9mdHJhY2Vfc2V0X2RpcmVjdF9jYWxsZXIoc3RydWN0IGZ0cmFjZV9yZWdzICpmcmVncyxcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE4NS19XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oOjE4NjojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTICovXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE4Ny1cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21vZHVsZS5oPTE2PXN0cnVjdCBtb2RfYXJjaF9zcGVjaWZpYyB7XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tb2R1bGUuaC0xOS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW9kdWxlLmg6MjA6XHQvKiBmb3IgQ09ORklHX0RZTkFNSUNfRlRSQUNFICovXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21vZHVsZS5oLTIxLVx0c3RydWN0IHBsdF9lbnRyeVx0KmZ0cmFjZV90cmFtcG9saW5lcztcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jPTI3PWludCBtYWluKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy04Mi0gIEJMQU5LKCk7XG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jOjgzOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTg0LSAgREVGSU5FKEZSRUdTX1gwLFx0XHRvZmZzZXRvZihzdHJ1Y3QgX19hcmNoX2Z0cmFjZV9yZWdzLCByZWdzWzBdKSk7XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy05Mi0gIERFRklORShGUkVHU19QQyxcdFx0b2Zmc2V0b2Yoc3RydWN0IF9fYXJjaF9mdHJhY2VfcmVncywgcGMpKTtcbmFyY2gvYXJtNjQva2VybmVsL2FzbS1vZmZzZXRzLmM6OTM6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy05NC0gIERFRklORShGUkVHU19ESVJFQ1RfVFJBTVAsXHRvZmZzZXRvZihzdHJ1Y3QgX19hcmNoX2Z0cmFjZV9yZWdzLCBkaXJlY3RfdHJhbXApKTtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE4Mi0gIEJMQU5LKCk7XG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jOjE4MzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE4NC0gIERFRklORShGVFJBQ0VfT1BTX0RJUkVDVF9DQUxMLFx0b2Zmc2V0b2Yoc3RydWN0IGZ0cmFjZV9vcHMsIGRpcmVjdF9jYWxsKSk7XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTUtXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoxNjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTctLypcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0zNj1TWU1fQ09ERV9TVEFSVChmdHJhY2VfY2FsbGVyKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTM4LVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6Mzk6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0NBTExfT1BTXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy00MC1cdC8qXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtNTMtXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzo1NDojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy01NS1cdC8qXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtNzYtXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzo3NzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy03OC1cdHN0clx0eHpyLCBbc3AsICNGUkVHU19ESVJFQ1RfVFJBTVBdXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTAxLVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTAyOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QU1xuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTAzLVx0bW92XHR4MiwgeDExXHRcdFx0XHRcdC8vIG9wXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM9MTEwPVNZTV9JTk5FUl9MQUJFTChmdHJhY2VfY2FsbCwgU1lNX0xfR0xPQkFMKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTEyOC1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TOjEyOTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xMzAtXHRsZHJcdHgxNywgW3NwLCAjRlJFR1NfRElSRUNUX1RSQU1QXVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTE0Mi1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TOjE0MzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNDQtU1lNX0lOTkVSX0xBQkVMKGZ0cmFjZV9jYWxsZXJfZGlyZWN0X2xhdGUsIFNZTV9MX0xPQ0FMKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TPTE2MT1TWU1fSU5ORVJfTEFCRUwoZnRyYWNlX2NhbGxlcl9kaXJlY3QsIFNZTV9MX0xPQ0FMKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTE2OC1cdGJyXHR4MTdcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TOjE2OTojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTICovXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNzAtU1lNX0NPREVfRU5EKGZ0cmFjZV9jYWxsZXIpXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNzEtXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoxNzI6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTczLVNZTV9DT0RFX1NUQVJUKGZ0cmFjZV9zdHViX2RpcmVjdF90cmFtcClcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0xNzg9U1lNX0NPREVfRU5EKGZ0cmFjZV9zdHViX2RpcmVjdF90cmFtcClcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TOjE3OTojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTICovXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xODAtXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoxODE6I2Vsc2UgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHUyAqL1xuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTgyLVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TPTMxMj1TWU1fRlVOQ19FTkQoZnRyYWNlX2dyYXBoX2NhbGxlcilcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTMxMy0jZW5kaWYgLyogQ09ORklHX0ZVTkNUSU9OX0dSQVBIX1RSQUNFUiAqL1xuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MzE0OiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTICovXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0zMTUtXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMTktXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYzoyMDojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMjEtc3RydWN0IGZyZWdzX29mZnNldCB7XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM9NjM9dW5zaWduZWQgbG9uZyBmdHJhY2VfY2FsbF9hZGp1c3QodW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTY4LVx0ICovXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYzo2OTpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTKSlcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTcwLVx0XHRyZXR1cm4gYWRkcjtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy05MC1cdCAqL1xuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6OTE6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQ0FMTF9PUFMpKVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtOTItXHRcdHJldHVybiBhZGRyICYjNDM7IEFBUkNINjRfSU5TTl9TSVpFO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTE0Nz11bnNpZ25lZCBsb25nIGFyY2hfZnRyYWNlX2dldF9zeW1hZGRyKHVuc2lnbmVkIGxvbmcgZmVudHJ5X2lwKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTE2OC1cdCAqL1xuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6MTY5Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0NBTExfT1BTKSlcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTE3MC1cdFx0cmV0dXJuIGZlbnRyeV9pcCAtIEFBUkNINjRfSU5TTl9TSVpFO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTI0Mj1pbnQgZnRyYWNlX3VwZGF0ZV9mdHJhY2VfZnVuYyhmdHJhY2VfZnVuY190IGZ1bmMpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMjUwLVx0ICovXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYzoyNTE6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QUykpXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy0yNTItXHRcdHJldHVybiAwO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTI5NT1zdGF0aWMgYm9vbCBmdHJhY2VfZmluZF9jYWxsYWJsZV9hZGRyKHN0cnVjdCBkeW5fZnRyYWNlICpyZWMsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMzUxLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6MzUyOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QU1xuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMzUzLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnRyYWNlX29wcyAqYXJtNjRfcmVjX2dldF9vcHMoc3RydWN0IGR5bl9mdHJhY2UgKnJlYylcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYz0zOTM9aW50IGZ0cmFjZV9tYWtlX2NhbGwoc3RydWN0IGR5bl9mdHJhY2UgKnJlYywgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTQxMS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjQxMjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQ0FMTF9PUFNcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTQxMy1pbnQgZnRyYWNlX21vZGlmeV9jYWxsKHN0cnVjdCBkeW5fZnRyYWNlICpyZWMsIHVuc2lnbmVkIGxvbmcgb2xkX2FkZHIsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNDM2LVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6NDM3OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy00MzgtLypcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYz00ODE9aW50IGZ0cmFjZV9tYWtlX25vcChzdHJ1Y3QgbW9kdWxlICptb2QsIHN0cnVjdCBkeW5fZnRyYWNlICpyZWMsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNTAyLVx0ICovXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYzo1MDM6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHUykgXHUwMDI2XHUwMDI2IG1vZClcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTUwNC1cdFx0cmV0dXJuIGFhcmNoNjRfaW5zbl9wYXRjaF90ZXh0X25vc3luYygodm9pZCAqKXBjLCBuZXcpO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTUyNz12b2lkIHByZXBhcmVfZnRyYWNlX3JldHVybih1bnNpZ25lZCBsb25nIHNlbGZfYWRkciwgdW5zaWduZWQgbG9uZyAqcGFyZW50LFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTU0OC1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjU0OTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNTUwLXZvaWQgZnRyYWNlX2dyYXBoX2Z1bmModW5zaWduZWQgbG9uZyBpcCwgdW5zaWduZWQgbG9uZyBwYXJlbnRfaXAsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM9NTk0PWludCBmdHJhY2VfZGlzYWJsZV9mdHJhY2VfZ3JhcGhfY2FsbGVyKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNTk3LX1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjU5ODojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHUyAqL1xuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNTk5LSNlbmRpZiAvKiBDT05GSUdfRlVOQ1RJT05fR1JBUEhfVFJBQ0VSICovXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmM9NDUyPXN0YXRpYyBpbnQgbW9kdWxlX2luaXRfZnRyYWNlX3BsdChjb25zdCBFbGZfRWhkciAqaGRyLFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL21vZHVsZS5jLTQ1NS17XG5hcmNoL2FybTY0L2tlcm5lbC9tb2R1bGUuYzo0NTY6I2lmIGRlZmluZWQoQ09ORklHX0RZTkFNSUNfRlRSQUNFKVxuYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmMtNDU3LVx0Y29uc3QgRWxmX1NoZHIgKnM7XG4tLVxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TPTkyPUVORChmdHJhY2Vfc3R1YilcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy05My1cbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUzo5NDojaWZuZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRVxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TLTk1LUVOVFJZKF9tY291bnQpXG4tLVxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TPTEzMj1FTkQoX21jb3VudClcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUzoxMzM6I2Vsc2UgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFICovXG5hcmNoL2Nza3kvYWJpdjIvbWNvdW50LlMtMTM0LUVOVFJZKF9tY291bnQpXG4tLVxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TPTE2MT1FTkRQUk9DKGZ0cmFjZV9jYWxsZXIpXG5hcmNoL2Nza3kvYWJpdjIvbWNvdW50LlM6MTYyOiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0UgKi9cbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy0xNjMtXG4tLVxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TPTE4Mj1FTkQocmV0dXJuX3RvX2hhbmRsZXIpXG4tLVxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TLTE4NC1cbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUzoxODU6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1NcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy0xODYtRU5UUlkoZnRyYWNlX3JlZ3NfY2FsbGVyKVxuLS1cbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUz0yMTA9RU5EUFJPQyhmdHJhY2VfcmVnc19jYWxsZXIpXG5hcmNoL2Nza3kvYWJpdjIvbWNvdW50LlM6MjExOiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0UgKi9cbi0tXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jLTgtXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jOjk6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRVxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xMC1cbi0tXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jPTEyNz1pbnQgZnRyYWNlX3VwZGF0ZV9mdHJhY2VfZnVuYyhmdHJhY2VfZnVuY190IGZ1bmMpXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xMzUtfVxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYzoxMzY6I2VuZGlmIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRSAqL1xuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xMzctXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jOjEzODojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xMzktaW50IGZ0cmFjZV9tb2RpZnlfY2FsbChzdHJ1Y3QgZHluX2Z0cmFjZSAqcmVjLCB1bnNpZ25lZCBsb25nIG9sZF9hZGRyLFxuLS1cbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmM9MTQ3PXZvaWQgcHJlcGFyZV9mdHJhY2VfcmV0dXJuKHVuc2lnbmVkIGxvbmcgKnBhcmVudCwgdW5zaWduZWQgbG9uZyBzZWxmX2FkZHIsXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xODUtXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jOjE4NjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jLTE4Ny1pbnQgZnRyYWNlX2VuYWJsZV9mdHJhY2VfZ3JhcGhfY2FsbGVyKHZvaWQpXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYz0xOTM9aW50IGZ0cmFjZV9kaXNhYmxlX2Z0cmFjZV9ncmFwaF9jYWxsZXIodm9pZClcbi0tXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jLTE5Ny19XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1MDkKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBUcmFtcG9saW5lIENvbmZpZ3VyYXRpb24gUmVxdWlyZW1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgaGVyZS4gSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19GVFJBQ0VgLCBhbmQgYENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AuIFRoYXQgbGFzdCBvbmUsIGVuYWJsaW5nIGRpcmVjdCBjYWxscyBmb3IgdHJhbXBvbGluZXMsIGNhdGNoZXMgbXkgZXllLiBIb2xkIG9uLCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCBzZWVtcyB0byBzcGVjaWZpY2FsbHkgdXNlICpib3RoKiBgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYCBhbmQgYENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0pNUGAuIEhtbSwgdGhhdCBzZWVtcyBvZGQuCgpJIG5lZWQgdG8gY29uZmlybSB3aGF0IGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgcmVhbGx5IGRvZXMuIEkgc2hvdWxkIGNoZWNrIGVpdGhlciBga2VybmVsL2JwZi9LY29uZmlnYCBvciBga2VybmVsL3RyYWNlL0tjb25maWdgIHRvIGJlIGNlcnRhaW4uIFdhaXQsIGxldCYjMzk7cyBzdGVwIGJhY2sgYSBtb21lbnQgYW5kIHJlY29uc2lkZXIuIE1heWJlIGBCUEZfU1lTQ0FMTGAgYW5kIGBGVU5DVElPTl9UUkFDRVJgIGFsb25lIGFyZSBzdWZmaWNpZW50IGZvciBub3cuIEkmIzM5O20gb3ZlcnRoaW5raW5nIHRoaXMuCgpBaCwgYnV0IHRoZXJlJiMzOTtzIG1vcmUgdG8gaXQuIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItJmd0O2ZsYWdzKWAgaXMgZW1wbG95ZWQgaW4gYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAuIFRoYXQmIzM5O3MgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb250cm9scyB0aGUgdXNlIG9mIGBicGZfdHJhbXBvbGluZV91c2Vfam1wYC4gU28gbm93IEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgYnBmX3RyYW1wb2xpbmVfdXNlX2ptcGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90cmFtcG9saW5lX3VzZV9qbXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTI5OTY9c3RhdGljIHZvaWQgc2F2ZV9hcmdzKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTggKipwcm9nLFxuLS1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0yOTk5LVx0aW50IGFyZ19yZWdzLCBmaXJzdF9vZmYgPSAwLCBucl9yZWdzID0gMCwgbnJfc3RhY2tfc2xvdHMgPSAwO1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjMwMDA6XHRib29sIHVzZV9qbXAgPSBicGZfdHJhbXBvbGluZV91c2Vfam1wKGZsYWdzKTtcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zMDAxLVx0aW50IGksIGo7XG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTMzNDY9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcndfaW1hZ2UsXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM0NDctXHRcdCAqL1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjM0NDg6XHRcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKGZsYWdzKSkge1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM0NDktXHRcdFx0Lyogbm8gcmlwIGluIHRoZSBcJiMzNDtqbXBcJiMzNDsgY2FzZSAqL1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MTMzMz1icGZfdHJhbXBvbGluZV9leGl0X3QgYnBmX3RyYW1wb2xpbmVfZXhpdChjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMTMzNS0jaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfSk1QXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjEzMzY6c3RhdGljIGlubGluZSBib29sIGJwZl90cmFtcG9saW5lX3VzZV9qbXAodTY0IGZsYWdzKVxuaW5jbHVkZS9saW51eC9icGYuaC0xMzM3LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzNDAtI2Vsc2VcbmluY2x1ZGUvbGludXgvYnBmLmg6MTM0MTpzdGF0aWMgaW5saW5lIGJvb2wgYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh1NjQgZmxhZ3MpXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzNDIte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTIzNz1zdGF0aWMgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoX2Zyb21faXAoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdm9pZCAqcHRyKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTI0Ny1cdFx0cmV0dXJuIE5VTEw7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoyNDg6XHRpZiAoYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh0ci1cdTAwM2VmbGFncykpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0yNDktXHRcdGFkZHIgPSBmdHJhY2Vfam1wX3NldChhZGRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0zMTc9c3RhdGljIGludCBkaXJlY3Rfb3BzX2FkZChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB2b2lkICpwdHIpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMzIyLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MzIzOlx0aWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItXHUwMDNlZmxhZ3MpKVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMzI0LVx0XHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MzM3PXN0YXRpYyBpbnQgZGlyZWN0X29wc19tb2Qoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdm9pZCAqcHRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4KVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTM0MS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjM0MjpcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVx1MDAzZWZsYWdzKSlcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTM0My1cdFx0YWRkciA9IGZ0cmFjZV9qbXBfc2V0KGFkZHIpO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTQxMT1zdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZV9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDE4LVx0XHRuZXdfdCA9IEJQRl9NT0RfTk9QO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDE5Olx0ZWxzZSBpZiAoYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh0ci1cdTAwM2VmbGFncykpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MjAtXHRcdG5ld190ID0gQlBGX01PRF9KVU1QO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQyMy1cdFx0b2xkX3QgPSBCUEZfTU9EX05PUDtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjQyNDpcdGVsc2UgaWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAob3JpZ19mbGFncykpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MjUtXHRcdG9sZF90ID0gQlBGX01PRF9KVU1QO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1MzA9c3RhdGljIGludCByZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnB0cilcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTM1LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTUzNjpcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVx1MDAzZWZsYWdzKSlcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1MzctXHRcdGFkZHIgPSBmdHJhY2Vfam1wX3NldChhZGRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTQ1PXN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKnB0cilcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTUwLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU1MTpcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVx1MDAzZWZsYWdzKSlcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NTItXHRcdGFkZHIgPSBmdHJhY2Vfam1wX3NldChhZGRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTU5PXN0YXRpYyBpbnQgbW9kaWZ5X2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU2NS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1NjY6XHRpZiAoYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh0ci1cdTAwM2VmbGFncykpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTY3LVx0XHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTMwCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBEeW5hbWljIFRyYWNpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9uczogYEJQRl9TWVNDQUxMYCwgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYCwgYERZTkFNSUNfRlRSQUNFX1dJVEhfSk1QYCwgYW5kIGp1c3QgcGxhaW4gb2xkIGBGVFJBQ0VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHplcm8gaW4gb24gYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYC4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoYXQgdGhpcyAqaXMqIGFjdHVhbGx5IGEgdmFsaWQgY29uZmlndXJhdGlvbiBvcHRpb24gd2l0aGluIHRoaXMgc3BlY2lmaWMga2VybmVsIGJ1aWxkIGVudmlyb25tZW50LiBJdCYjMzk7cyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgY2FwYWJpbGl0aWVzIGZvciBkeW5hbWljIHRyYWNpbmcgYW5kIGhvdyB0byBiZXN0IGFwcHJvYWNoIHRoZSBpbnN0cnVtZW50YXRpb24gc3RyYXRlZ3kuIE5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgaXTigJlzIGRlZmluZWQgYW5kIHN1cHBvcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9LY29uZmlnPTMyND1jb25maWcgRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctMzI4LVxua2VybmVsL3RyYWNlL0tjb25maWc6MzI5OmNvbmZpZyBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xua2VybmVsL3RyYWNlL0tjb25maWctMzMwLVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg1NgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXM6CgoqKkNvbnNpZGVyaW5nIHRoZSBGdHJhY2UgTGFuZHNjYXBlKioKClllcywgdGhhdCYjMzk7cyBleGFjdGx5IHJpZ2h0LiBUaGUgc2l0dWF0aW9uIGlzIGFzIEkgZXhwZWN0ZWQgaXQgdG8gYmUuCgpOb3csIGxldCYjMzk7cyBzZWUuLi4gYW5kIHdoYXQgYWJvdXQgdGhlIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0pNUGAgb3B0aW9uIGluIHJlbGF0aW9uIHRvIHRoaXM/IFRoYXQmIzM5O3MgdGhlIG5leHQga2V5IGZhY3RvciB0byBhc3Nlc3MuIEdvdHRhIGtlZXAgdGhhdCBpbiBtaW5kLCBpdHMgaW1wbGljYXRpb25zIGFyZSBzaWduaWZpY2FudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERZTkFNSUNfRlRSQUNFX1dJVEhfSk1QJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9LY29uZmlnPTMzOD1jb25maWcgRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctMzQyLVxua2VybmVsL3RyYWNlL0tjb25maWc6MzQzOmNvbmZpZyBEWU5BTUlDX0ZUUkFDRV9XSVRIX0pNUFxua2VybmVsL3RyYWNlL0tjb25maWctMzQ0LVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA4OQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipLZXJuZWwgVHJhY2luZyBDb25maWd1cmF0aW9uIC0gQSBRdWljayBDaGVjayoqCgpSaWdodCwgKnllcyouIFRpbWUgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGVzZSB0cmFjaW5nIGNvbmZpZ3VyYXRpb25zLiBgQlBGX1NZU0NBTExgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVBgLCB0aG9zZSBhbGwgc2VlbSBsaWtlIHN0cm9uZyBjYW5kaWRhdGVzIGZvciBhIHJvYnVzdCB0cmFjaW5nIHNldHVwLiBCdXQgaGFuZyBvbiBhIHNlY29uZC4uLiBgRlRSQUNFYCBpc24mIzM5O3QgYSAqY29uZmlnKiBpdHNlbGYsIGlzIGl0PyBJdOKAmXMgbW9yZSBvZiBhIGdlbmVyYWwgdGVybSBlbmNvbXBhc3NpbmcgZmVhdHVyZXMgbGlrZSBgRlVOQ1RJT05fVFJBQ0VSYCBvciBgRFlOQU1JQ19GVFJBQ0VgLiBJIG5lZWQgdG8gYmUgcHJlY2lzZSBoZXJlLgoKVG8gY29uZmlybSBhbmQgcGlucG9pbnQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLCBJIHNob3VsZCBpbW1lZGlhdGVseSBjb25zdWx0IGBrZXJuZWwvdHJhY2UvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIGRlZmluaXRpdmUgc291cmNlLiBJJiMzOTtsbCBoZWFkIG92ZXIgdGhlcmUgdG8gdmVyaWZ5IHdoYXQmIzM5O3Mgd2hhdCBhbmQgZW5zdXJlIEkmIzM5O20gdXNpbmcgdGhlIGNvcnJlY3QgdGVybWlub2xvZ3kgd2hlbiBkaXNjdXNzaW5nIEZ0cmFjZSYjMzk7cyBidWlsZGluZyBibG9ja3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGVFJBQ0UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL0tjb25maWc9MTk4PWNvbmZpZyBUUkFDSU5HX1NVUFBPUlRcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0yMDMtXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoyMDQ6bWVudWNvbmZpZyBGVFJBQ0Vcbmtlcm5lbC90cmFjZS9LY29uZmlnLTIwNS1cdGJvb2wgXCYjMzQ7VHJhY2Vyc1wmIzM0O1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnPTU4OD1jb25maWcgRU5BQkxFX0RFRkFVTFRfVFJBQ0VSU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTU5Ni1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjU5Nzpjb25maWcgRlRSQUNFX1NZU0NBTExTXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy01OTgtXHRib29sIFwmIzM0O1RyYWNlIHN5c2NhbGxzXCYjMzQ7XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWc9ODY4PWNvbmZpZyBCUEZfS1BST0JFX09WRVJSSURFXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODc2LVxua2VybmVsL3RyYWNlL0tjb25maWc6ODc3OmNvbmZpZyBGVFJBQ0VfTUNPVU5UX1VTRV9QQVRDSEFCTEVfRlVOQ1RJT05fRU5UUllcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg3OC1cdGJvb2xcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04ODAtXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4ODE6Y29uZmlnIEZUUkFDRV9NQ09VTlRfVVNFX0NDXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04ODItXHRkZWZfYm9vbCB5XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODg2LVxua2VybmVsL3RyYWNlL0tjb25maWc6ODg3OmNvbmZpZyBGVFJBQ0VfTUNPVU5UX1VTRV9PQkpUT09MXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04ODgtXHRkZWZfYm9vbCB5XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODk0LVxua2VybmVsL3RyYWNlL0tjb25maWc6ODk1OmNvbmZpZyBGVFJBQ0VfTUNPVU5UX1VTRV9SRUNPUkRNQ09VTlRcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg5Ni1cdGRlZl9ib29sIHlcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz0xMDIxPWNvbmZpZyBUUkFDRV9FVkFMX01BUF9GSUxFXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctMTA0OC1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjEwNDk6Y29uZmlnIEZUUkFDRV9SRUNPUkRfUkVDVVJTSU9OXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMDUwLVx0Ym9vbCBcJiMzNDtSZWNvcmQgZnVuY3Rpb25zIHRoYXQgcmVjdXJzZSBpbiBmdW5jdGlvbiB0cmFjaW5nXCYjMzQ7XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctMTA2Mi1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjEwNjM6Y29uZmlnIEZUUkFDRV9SRUNPUkRfUkVDVVJTSU9OX1NJWkVcbmtlcm5lbC90cmFjZS9LY29uZmlnLTEwNjQtXHRpbnQgXCYjMzQ7TWF4IG51bWJlciBvZiByZWN1cnNlZCBmdW5jdGlvbnMgdG8gcmVjb3JkXCYjMzQ7XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctMTA3My1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjEwNzQ6Y29uZmlnIEZUUkFDRV9WQUxJREFURV9SQ1VfSVNfV0FUQ0hJTkdcbmtlcm5lbC90cmFjZS9LY29uZmlnLTEwNzUtXHRib29sIFwmIzM0O1ZhbGlkYXRlIFJDVSBpcyBvbiBkdXJpbmcgZnRyYWNlIGV4ZWN1dGlvblwmIzM0O1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnPTExMDE9Y29uZmlnIEdDT1ZfUFJPRklMRV9GVFJBQ0Vcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMTEyLVxua2VybmVsL3RyYWNlL0tjb25maWc6MTExMzpjb25maWcgRlRSQUNFX1NFTEZURVNUXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMTE0LVx0Ym9vbFxua2VybmVsL3RyYWNlL0tjb25maWctMTExNS1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjExMTY6Y29uZmlnIEZUUkFDRV9TVEFSVFVQX1RFU1Rcbmtlcm5lbC90cmFjZS9LY29uZmlnLTExMTctXHRib29sIFwmIzM0O1BlcmZvcm0gYSBzdGFydHVwIHRlc3Qgb24gZnRyYWNlXCYjMzQ7XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWc9MTEzNj1jb25maWcgRVZFTlRfVFJBQ0VfVEVTVF9TWVNDQUxMU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTExNDctXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoxMTQ4OmNvbmZpZyBGVFJBQ0VfU09SVF9TVEFSVFVQX1RFU1Rcbmtlcm5lbC90cmFjZS9LY29uZmlnLTExNDktICAgICAgIGJvb2wgXCYjMzQ7VmVyaWZ5IGNvbXBpbGUgdGltZSBzb3J0aW5nIG9mIGZ0cmFjZSBmdW5jdGlvbnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyMzAKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIFRyYWNpbmcgQ29uZmlndXJhdGlvbiBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBiYWNrIGludG8gdGhpcyBrZXJuZWwgdHJhY2luZyBzZXR1cC4gUmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdDogYEZUUkFDRWAgaXMganVzdCB0aGUgdG9wLWxldmVsIG1lbnVjb25maWcsIGJ1dCB0aGUgcmVhbCBwbGF5ZXJzIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgYEZVTkNUSU9OX1RSQUNFUmAgYW5kIGBEWU5BTUlDX0ZUUkFDRWAuIFRob3NlIGFyZSB0aGUgYWN0dWFsIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zLiBBbmQsIG9mIGNvdXJzZSwgYEJQRl9TWVNDQUxMYCDigJMgdGhhdCYjMzk7cyB0aGUgYmlnIG9uZS4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBoZXJlPyBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgcmVhbGx5IHplcm8gaW4gb24gYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGFuZCBgbW9kaWZ5X2ZlbnRyeV9tdWx0aWAuIFRob3NlIHNlZW0gbGlrZSB0aGUgY29yZSBvcGVyYXRpb25zIGZvciBtYW5hZ2luZyB0aGVzZSBgZmVudHJ5YCB0cmFjaW5nIGluc3RhbmNlcy4gQWxzbywgSSBzaG91bGQgY2hlY2sgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAgYW5kIGBicGZfdHJhbXBvbGluZV91cGRhdGVfZmVudHJ5YCBhcyB0aGV5IGFyZSByZWxhdGVkLgoKT24gdGhlIGxpYmJwZiBzaWRlLCBgYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpYCBpcyBsaWtlbHkgaW52b2x2ZWQsIGJ1dCB0aGUga2VybmVsLXNpZGUgZXF1aXZhbGVudC4uLiBsZXQmIzM5O3Mgc2VlLCBpdCYjMzk7cyBwcm9iYWJseSBzb21ldGhpbmcgbGlrZSBgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2hgIG9yIGEgc2ltaWxhciBmdW5jdGlvbiwgaGFuZGxpbmcgdGhlIGFjdHVhbCBhdHRhY2guCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgc291cmNlLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byBga2VybmVsL2JwZi9zeXNjYWxsLmNgIGFuZCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgaG93IHRoZSBgZmVudHJ5Lm11bHRpYCBhdHRhY2htZW50cyBhcmUgaGFuZGxlZC4gSSBiZXQgdGhlIHBsdW1iaW5nIGlzIGFsbCBpbiB0aGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHRoZSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdHJhY2luZ19wcm9nX2F0dGFjaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3N5c2NhbGwuYz0zNjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2xpbmtfb3BzIGJwZl90cmFjaW5nX2xpbmtfbG9wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zNjA5LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MzYxMDpzdGF0aWMgaW50IGJwZl90cmFjaW5nX3Byb2dfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM2MTEtXHRcdFx0XHQgICBpbnQgdGd0X3Byb2dfZmQsXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NDI3Mz1zdGF0aWMgaW50IGJwZl9yYXdfdHBfbGlua19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQyOTctXHRcdH1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQyOTg6XHRcdHJldHVybiBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChwcm9nLCAwLCAwLCAwLCBhdHRhY2hfdHlwZSk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00Mjk5LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTU3NjU9c3RhdGljIGludCBsaW5rX2NyZWF0ZSh1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTc5NS1cdGNhc2UgQlBGX1BST0dfVFlQRV9FWFQ6XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1Nzk2Olx0XHRyZXQgPSBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChwcm9nLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTc5Ny1cdFx0XHRcdFx0ICAgICAgYXR0ci1cdTAwM2VsaW5rX2NyZWF0ZS50YXJnZXRfZmQsXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTgxNy1cdFx0ZWxzZVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTgxODpcdFx0XHRyZXQgPSBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChwcm9nLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTgxOS1cdFx0XHRcdFx0XHQgICAgICBhdHRyLVx1MDAzZWxpbmtfY3JlYXRlLnRhcmdldF9mZCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yZWN1cnNpdmVfYXR0YWNoLmM9OTk9dm9pZCB0ZXN0X3JlY3Vyc2l2ZV9mZW50cnkodm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yZWN1cnNpdmVfYXR0YWNoLmMtMTEwLSAqIFwmIzM0O3Byb2ctXHUwMDNlYXV4LVx1MDAzZWRzdF90cmFtcG9saW5lIGFuZCB0Z3RfcHJvZyBpcyBOVUxMXCYjMzQ7IGJyYW5jaCBpblxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmVjdXJzaXZlX2F0dGFjaC5jOjExMTogKiBicGZfdHJhY2luZ19wcm9nX2F0dGFjaCkgZG9lcyBub3QgbGVhZCB0byBhIGNyYXNoIGR1ZSB0byBtaXNzaW5nIGF0dGFjaF9idGZcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3JlY3Vyc2l2ZV9hdHRhY2guYy0xMTItICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MzM4CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgc2l0dWF0aW9uIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBhIEJQRiBUcmFjZXBvaW50IExpbmsqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gU29tZXRoaW5nJiMzOTtzIG5hZ2dpbmcgYXQgbWUgYWJvdXQgdGhpcyBgZmVudHJ5Lm11bHRpYCB0cmFjZXBvaW50IEkmIzM5O20gbG9va2luZyBhdC4gSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0IGl0JiMzOTtzIGJlaW5nIGhvb2tlZCB1cCB1c2luZyBgYnBmX2xpbmtfY3JlYXRlYCwgcHJvYmFibHkgd2l0aCBzb21ldGhpbmcgbGlrZSBgQlBGX1RSQUNFX0ZFTlRSWV9NVUxUSWAgb3IgYSBzaW1pbGFyIGZsYWcgZm9yIG11bHRpcGxlIGZ1bmN0aW9uIGVudHJ5IHBvaW50cy4gUmlnaHQ/CgpMZXQmIzM5O3MgY29uZmlybSB0aGF0IGh5cG90aGVzaXMuIFRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIGF1dGhvcml0YXRpdmUgZGVmaW5pdGlvbiBhbmQgaGFuZGxpbmcgb2YgdGhpcyBpcyBnb2luZyB0byBiZSBpbiB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AuIEkgbmVlZCB0byB0cmFjayBkb3duIGhvdyBgbXVsdGlgIGlzIGhhbmRsZWQgaW4gcmVsYXRpb24gdG8gYGJwZl9saW5rX2NyZWF0ZWAgaW4gdGhhdCBmaWxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBkZWZpbml0aXZlIGFuc3dlciBvbiBob3cgdGhpcyB0cmFjZXBvaW50IGlzIGVzdGFibGlzaGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdHJhY2luZ19tdWx0aV9hdHRhY2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03ODk9aW50IGJwZl91cHJvYmVfbXVsdGlfbGlua19hdHRhY2goY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc5MDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpO1xuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03OTEtI2Vsc2Vcbi0tXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTg0OD1zdGF0aWMgaW5saW5lIGludFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo4NDk6YnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTg1MC17XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTc2NT1zdGF0aWMgaW50IGxpbmtfY3JlYXRlKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE1LVx0XHRlbHNlIGlmIChpc190cmFjaW5nX211bHRpKHByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpKVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTgxNjpcdFx0XHRyZXQgPSBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2gocHJvZywgYXR0cik7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE3LVx0XHRlbHNlXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM4MTk9c3RhdGljIGludCBjaGVja19kdXBfaWRzKHUzMiAqaWRzLCB1NjQgKmNvb2tpZXMsIHUzMiBjbnQpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM4MzktXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6Mzg0MDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzg0MS17XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MjktXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MzkzMDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkzMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTE4CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkluaXRpYWwgRXhwbG9yYXRpb24gb2YgQlBGIE11bHRpLUF0dGFjaG1lbnQqKgoKUmlnaHQsIHNvIEkmIzM5O20gc3RhcnRpbmcgYXQgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBtdWx0aS1hdHRhY2htZW50IGJ1c2luZXNzLiBUaGUga2V5IHNlZW1zIHRvIGJlIGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGxvb2sgYXQgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAgYW5kIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgIGFzIHBvdGVudGlhbCBjb250cmlidXRpbmcgZnVuY3Rpb25zLiBUaGUgZmlyc3Qgb25lIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpcyBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYCwgYW5kIEkga25vdyBmcm9tIHBhc3QgZXhwZXJpZW5jZSBpdCBzaG91bGQgYmUgaW4gYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AuIFRpbWUgdG8gZGlnIGluIHRoZXJlIGFuZCBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdHJhY2luZ19tdWx0aV9hdHRhY2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03ODk9aW50IGJwZl91cHJvYmVfbXVsdGlfbGlua19hdHRhY2goY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc5MDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpO1xuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03OTEtI2Vsc2Vcbi0tXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTg0OD1zdGF0aWMgaW5saW5lIGludFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo4NDk6YnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTg1MC17XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTc2NT1zdGF0aWMgaW50IGxpbmtfY3JlYXRlKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE1LVx0XHRlbHNlIGlmIChpc190cmFjaW5nX211bHRpKHByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpKVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTgxNjpcdFx0XHRyZXQgPSBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2gocHJvZywgYXR0cik7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE3LVx0XHRlbHNlXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM4MTk9c3RhdGljIGludCBjaGVja19kdXBfaWRzKHUzMiAqaWRzLCB1NjQgKmNvb2tpZXMsIHUzMiBjbnQpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM4MzktXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6Mzg0MDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzg0MS17XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MjktXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MzkzMDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkzMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2ODU3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBGdW5jdGlvbiBFbnRyeSBQb2ludCBNYW5hZ2VtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUga2V5IGZ1bmN0aW9ucyBoZXJlOiBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgYG1vZGlmeV9mZW50cnlfbXVsdGlgLCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCwgYW5kIGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgLiBUaGVzZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciBtYW5hZ2luZyBmdW5jdGlvbiBlbnRyeSBwb2ludHMgd2l0aCBCUEYsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBpbnRlcmFjdGlvbnMgdGhvcm91Z2hseS4KCkkgYWxzbyBzZWUgYSBmZXcgY3J1Y2lhbCBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgY2FyZWZ1bCBjb25zaWRlcmF0aW9uOiBgQlBGX1NZU0NBTExgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVBgLCBhbmQgYEZVTkNUSU9OX1RSQUNFUmAuIAoKV2FpdCBhIG1pbnV0ZSwgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYCBhbmQgYERZTkFNSUNfRlRSQUNFX1dJVEhfSk1QYCBhcmUgKmRlZl9ib29sIHkqIG9uIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLiBNZWFuaW5nIHRoZXkgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBpZiB0aGUgYXJjaGl0ZWN0dXJlIHN1cHBvcnRzIGl0LiBXZSBkb24mIzM5O3QgaGF2ZSB0byBleHBsaWNpdGx5IGNvbmZpZ3VyZSB0aGVtLCBidXQgaXQgaXNuJiMzOTt0IGdvaW5nIHRvIGJlIGhhcm1mdWwgaWYgdGhleSBhcmUgYWxzbyBkZWZpbmVkLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdywgc2ltcGxpZmllcyB0aGUgY29uZmlndXJhdGlvbiBzb21ld2hhdC4gSG1tLCBJIHRoaW5rIGBGUFJPQkVgIG9yIGBGVFJBQ0VgIG1pZ2h0IGFsc28gY29tZSBpbnRvIHBsYXksIHBvdGVudGlhbGx5LCBhbmQgY2xlYXJseSwgYEZVTkNUSU9OX1RSQUNFUmAgaXMgdGhlIG1haW4gZW5hYmxlciBoZXJlLgoKTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYGtlcm5lbC9icGYvS2NvbmZpZ2AgZmlsZSwgSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmUgYSBnb29kIGdyYXNwIG9uIGBCUEZfU1lTQ0FMTGAg4oCTIG5lZWQgdG8gYmUgY3J5c3RhbCBjbGVhciBvbiBob3cgdGhhdCYjMzk7cyB0aWVkIGludG8gdGhpcyB3aG9sZSBlY29zeXN0ZW0uIEdvdHRhIGVuc3VyZSBJJiMzOTttIGdldHRpbmcgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb24gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTI5CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJJiMzOTttIHRoaW5raW5nIGl0OgoKKipUcmFjaW5nIE15IFN0ZXBzOiBGdW5jdGlvbiBUcmFjZXIgSW52ZXN0aWdhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzdGF0dXMgb2YgdGhlIGBGVU5DVElPTl9UUkFDRVJgLiBUaGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMgdGhlIGBLY29uZmlnYCBmaWxlLCBwYXJ0aWN1bGFybHkgd2l0aGluIHRoZSB0cmFjaW5nIHN1YnN5c3RlbS4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IGluc2lnaHQgaW50byB3aGV0aGVyIHRoaXMgZmVhdHVyZSBpcyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgY29uZGl0aW9uYWxseSBjb21waWxlZC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBga2VybmVsL3RyYWNlL0tjb25maWdgLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gYW5kIHNob3VsZCBoYXZlIGFsbCB0aGUgYW5zd2Vycy4gSSBleHBlY3QgdGhhdCBJJiMzOTtsbCBmaW5kIGl0cyBkZWZpbml0aW9uIGluIGhlcmUuIExldCYjMzk7cyBnbyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZVTkNUSU9OX1RSQUNFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZz0yMjY9Y29uZmlnIEJPT1RUSU1FX1RSQUNJTkdcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0yMzQtXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoyMzU6Y29uZmlnIEZVTkNUSU9OX1RSQUNFUlxua2VybmVsL3RyYWNlL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtLZXJuZWwgRnVuY3Rpb24gVHJhY2VyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3Nzk4CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqRGVsdmluZyBpbnRvIEJQRiBUcmFjZXBvaW50cyoqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoZXNlIHRyYWNpbmcgaG9va3Mgd29yaywgYW5kIGl0IGxvb2tzIGxpa2UgYEJQRl9TWVNDQUxMYCBhbmQgYEZVTkNUSU9OX1RSQUNFUmAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBrZWVwIHRob3NlIGluIG1pbmQgYXMgSSB0cmFjZSB0aGlzLgoKSGFuZyBvbi4uLiBJJiMzOTttIGxvb2tpbmcgYXQgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAsIGFuZCBpdCYjMzk7cyBkZWZpbmVkIGluIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIG1ha2VzIG1lIHdvbmRlciBpZiBgdHJhbXBvbGluZS5jYCBpcyBjb21waWxlZCBjb25kaXRpb25hbGx5LiBJIG5lZWQgdG8gY2hlY2sgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gc2VlIGlmIHRob3NlIGNvbmZpZ3MgSSBtZW50aW9uZWQgaGF2ZSBhbiBpbXBhY3QgaGVyZS4gVGhpcyBtaWdodCBleHBsYWluIHNvbWUgb2YgdGhlIGNvbmRpdGlvbmFsIGJlaGF2aW9yIEkmIzM5O3ZlIGJlZW4gc2VlaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGF0IGxvZ2ljIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJhbXBvbGluZS5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbGl2ZXBhdGNoL3JlbGlhYmxlLXN0YWNrdHJhY2UucnN0PTE3OT1pbmZvcm1hdGlvbiBpcyBub3QgaW4gYSBjb25zaXN0ZW50IGxvY2F0aW9uIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGVudHJ5XG5Eb2N1bWVudGF0aW9uL2xpdmVwYXRjaC9yZWxpYWJsZS1zdGFja3RyYWNlLnJzdDoxODA6dHJhbXBvbGluZSBvciByZXR1cm4gdHJhbXBvbGluZS4gRm9yIGV4YW1wbGUsIGNvbnNpZGVyaW5nIHRoZSB4ODZfNjRcbkRvY3VtZW50YXRpb24vbGl2ZXBhdGNoL3JlbGlhYmxlLXN0YWNrdHJhY2UucnN0LTE4MS0mIzM5O3JldHVybl90b19oYW5kbGVyJiMzOTsgcmV0dXJuIHRyYW1wb2xpbmU6XG4tLVxuYXJjaC9hcmMvaW5jbHVkZS91YXBpL2FzbS9zaWduYWwuaC0xOC0gKiB3aGljaCBhbGxvd3Mgc2lncmV0dXJuIGJhc2VkIHJlLWVudHJ5IGludG8ga2VybmVsIGFmdGVyIGhhbmRsaW5nIHNpZ25hbC5cbmFyY2gvYXJjL2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmg6MTk6ICogVy9vIHRoaXMga2VybmVsIG5lZWRzIHRvIFwmIzM0O3N5bnRoZXNpemVcJiMzNDsgdGhlIHNpZ3JldHVybiB0cmFtcG9saW5lIG9uIHVzZXJcbmFyY2gvYXJjL2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgtMjAtICogbW9kZSBzdGFjayB3aGljaCBpbiB0dXJuIGZvcmNlcyB0aGUgZm9sbG93aW5nOlxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19LUFJPQkVTKVx0XHQmIzQzOz0ga3Byb2Jlcy5vIGRlY29kZS1pbnNuLm9cdFxcXG5hcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6MzpcdFx0XHRcdCAgIGtwcm9iZXNfdHJhbXBvbGluZS5vXHRcdFxcXG5hcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUtNC1cdFx0XHRcdCAgIHNpbXVsYXRlLWluc24ub1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jPTE0MzQ9c3RhdGljIGludCBnY3Nfc2lnbmFsX2VudHJ5KF9fc2lncmVzdG9yZV90IHNpZ3RyYW1wLCBzdHJ1Y3Qga3NpZ25hbCAqa3NpZylcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zaWduYWwuYy0xNDUxLVx0LypcbmFyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jOjE0NTI6XHQgKiBQdXNoIGEgY2FwIGFuZCB0aGUgR0NTIGVudHJ5IGZvciB0aGUgdHJhbXBvbGluZSBvbnRvIHRoZSBHQ1MuXG5hcmNoL2FybTY0L2tlcm5lbC9zaWduYWwuYy0xNDUzLVx0ICovXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MjU1Mz1zdGF0aWMgdm9pZCBzdG9yZV9mdW5jX21ldGEoc3RydWN0IGppdF9jdHggKmN0eCwgdTY0IGZ1bmNfbWV0YSwgaW50IGZ1bmNfbWV0YV9vZmYpXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjU2Ni0gKiAgIG1vdiB4OSwgbHJcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjI1Njc6ICogICBibCAgXHUwMDNjYnBmX3RyYW1wb2xpbmUgb3IgcGx0XHUwMDNlXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yNTY4LSAqXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfS1BST0JFUylcdFx0JiM0Mzs9IGtwcm9iZXMubyBkZWNvZGUtaW5zbi5vIHNpbXVsYXRlLWluc24ub1xuYXJjaC9jc2t5L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfS1BST0JFUylcdFx0JiM0Mzs9IGtwcm9iZXNfdHJhbXBvbGluZS5vXG5hcmNoL2Nza3kva2VybmVsL3Byb2Jlcy9NYWtlZmlsZS00LW9iai0kKENPTkZJR19LUFJPQkVTX09OX0ZUUkFDRSlcdCYjNDM7PSBmdHJhY2Uub1xuLS1cbmFyY2gvaGV4YWdvbi9rZXJuZWwvTWFrZWZpbGU9Nz1vYmoteSAmIzQzOz0gc2V0dXAubyBpcnFfY3B1Lm8gdHJhcHMubyBzeXNjYWxsdGFiLm8gc2lnbmFsLm8gdGltZS5vXG5hcmNoL2hleGFnb24va2VybmVsL01ha2VmaWxlOjg6b2JqLXkgJiM0Mzs9IHByb2Nlc3MubyB0cmFtcG9saW5lLm8gcmVzZXQubyBwdHJhY2UubyB2ZHNvLm9cbmFyY2gvaGV4YWdvbi9rZXJuZWwvTWFrZWZpbGUtOS1cbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU9Mjk9aWZkZWYgQ09ORklHX0ZVTkNUSU9OX1RSQUNFUlxuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9NYWtlZmlsZS00MC0gIENGTEFHU19SRU1PVkVfcmV0aG9vay5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU6NDE6ICBDRkxBR1NfUkVNT1ZFX3JldGhvb2tfdHJhbXBvbGluZS5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGUtNDItZW5kaWZcbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU9NzY9b2JqLSQoQ09ORklHX0tQUk9CRVMpXHRcdCYjNDM7PSBrcHJvYmVzLm9cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9NYWtlZmlsZTo3NzpvYmotJChDT05GSUdfUkVUSE9PSylcdFx0JiM0Mzs9IHJldGhvb2subyByZXRob29rX3RyYW1wb2xpbmUub1xuYXJjaC9sb29uZ2FyY2gva2VybmVsL01ha2VmaWxlLTc4LW9iai0kKENPTkZJR19VUFJPQkVTKVx0XHQmIzQzOz0gdXByb2Jlcy5vXG4tLVxuYXJjaC9uaW9zMi9rZXJuZWwvc2lnbmFsLmM9MTgyPXN0YXRpYyBpbnQgc2V0dXBfcnRfZnJhbWUoc3RydWN0IGtzaWduYWwgKmtzaWcsIHNpZ3NldF90ICpzZXQsXG4tLVxuYXJjaC9uaW9zMi9rZXJuZWwvc2lnbmFsLmMtMjAzLVx0LyogU2V0IHVwIHRvIHJldHVybiBmcm9tIHVzZXJzcGFjZTsganVtcCB0byBmaXhlZCBhZGRyZXNzIHNpZ3JldHVyblxuYXJjaC9uaW9zMi9rZXJuZWwvc2lnbmFsLmM6MjA0Olx0ICAgdHJhbXBvbGluZSBvbiBrdXNlciBwYWdlLiAgKi9cbmFyY2gvbmlvczIva2VybmVsL3NpZ25hbC5jLTIwNS1cdHJlZ3MtXHUwMDNlcmEgPSAodW5zaWduZWQgbG9uZykgKDB4MTA0NCk7XG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz01MzU9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01MzgtXHQgKiBUT0RPOiBSZW1vdmUgYWZ0ZXIgdmFsaWRhdGluZyBzdXBwb3J0XG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jOjUzOTpcdCAqIGZvciBmc2Vzc2lvbiBhbmQgdHJhbXBvbGluZSBvbiBwcGMzMi5cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNTQwLVx0ICovXG4tLVxuYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX0tQUk9CRVMpXHRcdCYjNDM7PSBrcHJvYmVzLm8gZGVjb2RlLWluc24ubyBzaW11bGF0ZS1pbnNuLm9cbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZTozOm9iai0kKENPTkZJR19SRVRIT09LKVx0XHQmIzQzOz0gcmV0aG9vay5vIHJldGhvb2tfdHJhbXBvbGluZS5vXG5hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUtNC1vYmotJChDT05GSUdfVVBST0JFUylcdFx0JiM0Mzs9IHVwcm9iZXMubyBkZWNvZGUtaW5zbi5vIHNpbXVsYXRlLWluc24ub1xuLS1cbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT02PUNGTEFHU19SRU1PVkVfcmV0aG9vay5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6NzpDRkxBR1NfUkVNT1ZFX3JldGhvb2tfdHJhbXBvbGluZS5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG4tLVxuYXJjaC9zMzkwL2Jvb3QvTWFrZWZpbGU9MzU9b2JqLXlcdCYjNDM7PSB2ZXJzaW9uLm8gcGdtX2NoZWNrLm8gY3R5cGUubyBpcGxfZGF0YS5vIHJlbG9jcy5vIGFsdGVybmF0aXZlLm9cbmFyY2gvczM5MC9ib290L01ha2VmaWxlOjM2Om9iai15XHQmIzQzOz0gdXYubyBwcmludGsubyB0cmFtcG9saW5lLm9cbmFyY2gvczM5MC9ib290L01ha2VmaWxlLTM3LW9iai0kKENPTkZJR19SQU5ET01JWkVfQkFTRSlcdCYjNDM7PSBrYXNsci5vXG4tLVxuYXJjaC94ODYvaHlwZXJ2L01ha2VmaWxlPTEyPW9iai0kKENPTkZJR19QQVJBVklSVF9TUElOTE9DS1MpXHQmIzQzOz0gaHZfc3BpbmxvY2sub1xuLS1cbmFyY2gveDg2L2h5cGVydi9NYWtlZmlsZS0xNC0gaWZkZWYgQ09ORklHX01TSFZfUk9PVFxuYXJjaC94ODYvaHlwZXJ2L01ha2VmaWxlOjE1OiAgQ0ZMQUdTX1JFTU9WRV9odl90cmFtcG9saW5lLm8gJiM0Mzs9IC1wZ1xuYXJjaC94ODYvaHlwZXJ2L01ha2VmaWxlOjE2OiAgQ0ZMQUdTX2h2X3RyYW1wb2xpbmUubyAgICAgICAgJiM0Mzs9IC1mbm8tc3RhY2stcHJvdGVjdG9yXG5hcmNoL3g4Ni9oeXBlcnYvTWFrZWZpbGU6MTc6ICBvYmotJChDT05GSUdfQ1JBU0hfRFVNUCkgICAgICAmIzQzOz0gaHZfY3Jhc2gubyBodl90cmFtcG9saW5lLm9cbmFyY2gveDg2L2h5cGVydi9NYWtlZmlsZS0xOC0gZW5kaWZcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmM9MjgzPWV4dGVybiB2b2lkIGZ0cmFjZV9yZWdzX2NhbGxlcl9qbXAodm9pZCk7XG4tLVxuYXJjaC94ODYva2VybmVsL2Z0cmFjZS5jLTI5MC0gKiBUaGUgZnRyYWNlX29wcyBpcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGNhbGxiYWNrLiBTaW5jZSB0aGVcbmFyY2gveDg2L2tlcm5lbC9mdHJhY2UuYzoyOTE6ICogdHJhbXBvbGluZSBvbmx5IHNlcnZpY2VzIGEgc2luZ2xlIGZ0cmFjZV9vcHMsIHdlIGNhbiBwYXNzIGluXG5hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmMtMjkyLSAqIHRoYXQgb3BzIGRpcmVjdGx5LlxuLS1cbmFyY2gveDg2L2tlcm5lbC9mdHJhY2UuYz00Nzc9dm9pZCBhcmNoX2Z0cmFjZV91cGRhdGVfdHJhbXBvbGluZShzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9mdHJhY2UuYy00ODUtXHRpZiAoIW9wcy1cdTAwM2V0cmFtcG9saW5lKSB7XG5hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmM6NDg2Olx0XHRvcHMtXHUwMDNldHJhbXBvbGluZSA9IGNyZWF0ZV90cmFtcG9saW5lKG9wcywgXHUwMDI2c2l6ZSk7XG5hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmMtNDg3LVx0XHRpZiAoIW9wcy1cdTAwM2V0cmFtcG9saW5lKVxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gZGlzYXNtLm8gbXByb2cub1xua2VybmVsL2JwZi9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IHRyYW1wb2xpbmUub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTU3PXN0YXRpYyB2b2lkIHRyYW1wb2xpbmVfdW5sb2NrKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjEtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo2MjpzdHJ1Y3QgYnBmX3RyYW1wb2xpbmVfb3BzIHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTYzLVx0aW50ICgqcmVnaXN0ZXJfZmVudHJ5KShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqZGF0YSk7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NzA9c3RhdGljIGludCBicGZfdHJhbXBvbGluZV91cGRhdGUoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgYm9vbCBsb2NrX2RpcmVjdF9tdXRleCxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjcxOlx0XHRcdFx0IGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgKm9wcywgdm9pZCAqZGF0YSk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo3MjpzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyB0cmFtcG9saW5lX29wcztcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTczLVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTk4PXN0YXRpYyBpbnQgYnBmX3RyYW1wX2Z0cmFjZV9vcHNfZnVuYyhzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCB1bnNpZ25lZCBsb25nIGlwLFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1Ny1cdFx0XHRyZXQgPSBicGZfdHJhbXBvbGluZV91cGRhdGUodHIsIGZhbHNlIC8qIGxvY2tfZGlyZWN0X211dGV4ICovLFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU4Olx0XHRcdFx0XHRcdCAgICBcdTAwMjZ0cmFtcG9saW5lX29wcywgTlVMTCk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTktXHRcdGJyZWFrO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2NC1cdFx0XHRyZXQgPSBicGZfdHJhbXBvbGluZV91cGRhdGUodHIsIGZhbHNlIC8qIGxvY2tfZGlyZWN0X211dGV4ICovLFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTY1Olx0XHRcdFx0XHRcdCAgICBcdTAwMjZ0cmFtcG9saW5lX29wcywgTlVMTCk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjYtXHRcdGJyZWFrO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTQ3Mz1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy01MDAtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo1MDE6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9vcHMgPSB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy01MDItXHQucmVnaXN0ZXJfZmVudHJ5ICAgPSByZWdpc3Rlcl9mZW50cnksXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NjczPXN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIGJvb2wgbG9ja19kaXJlY3RfbXV0ZXgsXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo2NzQ6XHRcdFx0XHQgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLCB2b2lkICpkYXRhKVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjc1LXtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz05MDU9c3RhdGljIGludCBfX2JwZl90cmFtcG9saW5lX2xpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtOTA3LVx0XHRcdFx0ICAgICAgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZyxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjkwODpcdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgKm9wcyxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTkwOS1cdFx0XHRcdCAgICAgIHZvaWQgKmRhdGEpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9OTQ2PWludCBicGZfdHJhbXBvbGluZV9saW5rX3Byb2coc3RydWN0IGJwZl90cmFtcF9ub2RlICpub2RlLFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTk1Mi1cdHRyYW1wb2xpbmVfbG9jayh0cik7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo5NTM6XHRlcnIgPSBfX2JwZl90cmFtcG9saW5lX2xpbmtfcHJvZyhub2RlLCB0ciwgdGd0X3Byb2csIFx1MDAyNnRyYW1wb2xpbmVfb3BzLCBOVUxMKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTk1NC1cdHRyYW1wb2xpbmVfdW5sb2NrKHRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz05NTg9c3RhdGljIGludCBfX2JwZl90cmFtcG9saW5lX3VubGlua19wcm9nKHN0cnVjdCBicGZfdHJhbXBfbm9kZSAqbm9kZSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05NjAtXHRcdFx0XHRcdHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo5NjE6XHRcdFx0XHRcdGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgKm9wcyxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTk2Mi1cdFx0XHRcdFx0dm9pZCAqZGF0YSlcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz05ODM9aW50IGJwZl90cmFtcG9saW5lX3VubGlua19wcm9nKHN0cnVjdCBicGZfdHJhbXBfbm9kZSAqbm9kZSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05ODktXHR0cmFtcG9saW5lX2xvY2sodHIpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6OTkwOlx0ZXJyID0gX19icGZfdHJhbXBvbGluZV91bmxpbmtfcHJvZyhub2RlLCB0ciwgdGd0X3Byb2csIFx1MDAyNnRyYW1wb2xpbmVfb3BzLCBOVUxMKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTk5MS1cdHRyYW1wb2xpbmVfdW5sb2NrKHRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xMDc2PWludCBicGZfdHJhbXBvbGluZV9saW5rX2Nncm91cF9zaGltKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xMTE4LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTExOTpcdGVyciA9IF9fYnBmX3RyYW1wb2xpbmVfbGlua19wcm9nKFx1MDAyNnNoaW1fbGluay1cdTAwM2VsaW5rLm5vZGUsIHRyLCBOVUxMLCBcdTAwMjZ0cmFtcG9saW5lX29wcywgTlVMTCk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xMTIwLVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTU5PXN0YXRpYyBpbnQgbW9kaWZ5X2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3My1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1NzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTc1LVx0LnJlZ2lzdGVyX2ZlbnRyeSAgID0gcmVnaXN0ZXJfZmVudHJ5X211bHRpLFxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTI2MzU9dm9pZCB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjY1NS1cdFx0ICogb3IgTlVMTDsgdGhlIGxhdHRlciBjYXNlIG1lYW5zIHRoYXQgbm9ib2R5IGJ1dCByaS1cdTAwM2VmdW5jXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyNjU2Olx0XHQgKiBjb3VsZCBoaXQgdGhpcyB0cmFtcG9saW5lIG9uIHJldHVybi4gVE9ETzogc2lnYWx0c3RhY2soKS5cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI2NTctXHRcdCAqL1xuLS1cbmtlcm5lbC90cmFjZS9mdHJhY2UuYz0zMzA9aW50IF9fcmVnaXN0ZXJfZnRyYWNlX2Z1bmN0aW9uKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMpXG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTM2NC1cbmtlcm5lbC90cmFjZS9mdHJhY2UuYzozNjU6XHRmdHJhY2VfdXBkYXRlX3RyYW1wb2xpbmUob3BzKTtcbmtlcm5lbC90cmFjZS9mdHJhY2UuYy0zNjYtXG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jPTM5Mz1zdGF0aWMgdm9pZCBmdHJhY2VfdXBkYXRlX3BpZF9mdW5jKHZvaWQpXG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTQwNC1cdFx0XHRcdGZ0cmFjZV9waWRfZnVuYyA6IG9wLVx1MDAzZXNhdmVkX2Z1bmM7XG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6NDA1Olx0XHRcdGZ0cmFjZV91cGRhdGVfdHJhbXBvbGluZShvcCk7XG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNDA2LVx0XHR9XG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jPTg0MTQ9c3RhdGljIHZvaWQgZnRyYWNlX3VwZGF0ZV90cmFtcG9saW5lKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMpXG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTg0MTctXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6ODQxODpcdGFyY2hfZnRyYWNlX3VwZGF0ZV90cmFtcG9saW5lKG9wcyk7XG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtODQxOS1cdGlmIChvcHMtXHUwMDNldHJhbXBvbGluZSBcdTAwMjZcdTAwMjYgb3BzLVx1MDAzZXRyYW1wb2xpbmUgIT0gdHJhbXBvbGluZSBcdTAwMjZcdTAwMjZcbi0tXG50b29scy9wZXJmL3V0aWwvZHNvLmg9Mjg9ZW51bSBkc29fYmluYXJ5X3R5cGUge1xuLS1cbnRvb2xzL3BlcmYvdXRpbC9kc28uaC05Ny1cdERTT19CSU5BUllfVFlQRV9fQlBGX1BST0dfSU5GTyxcbnRvb2xzL3BlcmYvdXRpbC9kc28uaDo5ODpcdC8qKiBARFNPX0JJTkFSWV9UWVBFX19CUEZfSU1BR0U6IGppdHRlZCBCUEYgdHJhbXBvbGluZSBvciBkaXNwYXRjaGVyIGNvZGUuICovXG50b29scy9wZXJmL3V0aWwvZHNvLmgtOTktXHREU09fQklOQVJZX1RZUEVfX0JQRl9JTUFHRSxcbi0tXG50b29scy9wZXJmL3V0aWwvbWFwLmM9NTI5PXU2NCBtYXBfX3JpcF8yb2JqZHVtcChjb25zdCBzdHJ1Y3QgbWFwICptYXAsIHU2NCByaXApXG4tLVxudG9vbHMvcGVyZi91dGlsL21hcC5jLTUzNS1cdCAqIHZtbGludXggZG9lcyBub3QgaGF2ZSBwcm9ncmFtIGhlYWRlcnMgZm9yIFBUSSBlbnRyeSB0cmFtcG9saW5lcyBhbmRcbnRvb2xzL3BlcmYvdXRpbC9tYXAuYzo1MzY6XHQgKiBrY29yZSBtYXkgbm90IGVpdGhlci4gSG93ZXZlciB0aGUgdHJhbXBvbGluZSBvYmplY3QgY29kZSBpcyBvbiB0aGVcbnRvb2xzL3BlcmYvdXRpbC9tYXAuYy01MzctXHQgKiBtYWluIGtlcm5lbCBtYXAsIHNvIGp1c3QgdXNlIHRoYXQgaW5zdGVhZC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyMDQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBCUEYgSklUIENvbXBpbGF0aW9uIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gaG93IHRoZSBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgIGZpbGUgZ2V0cyBjb21waWxlZC4gVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoYXQgaXQmIzM5O3MgY29uZGl0aW9uYWwgb24gYENPTkZJR19CUEZfSklUYC4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBrZXJuZWwvYnBmL01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBidWlsZCBydWxlcy4gWWVwLCBgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSB0cmFtcG9saW5lLm9gIGNvbmZpcm1zIHRoYXQuIFNvIGBCUEZfSklUYCBpcyBkZWZpbml0ZWx5IGEgbmVjZXNzYXJ5IGNvbXBvbmVudC4gSG1tLCBhbHRob3VnaCBgQlBGX0pJVGAgaXMgdHlwaWNhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2ggYW5kIGV4cGxpY2l0bHkgaW5jbHVkZSBpdC4gT2theSwgdGltZSB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgYGtlcm5lbC9icGYvS2NvbmZpZ2AgdG8gdmVyaWZ5IHRoZSBleGFjdCBkZWZpbml0aW9uIGFuZCBkZXBlbmRlbmNpZXMgZm9yIGBCUEZfSklUYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9KSVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7UGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxua2VybmVsL2JwZi9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjc1MAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDQ2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQlBGIFRyYWNpbmcgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBCUEYgSklUIHNldHVwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBCUEZfSklUYCBpcyBlbmFibGVkLCBvYnZpb3VzbHkuIFRoZW4sIGxldCYjMzk7cyByZWNhcCB0aGUgcmVsZXZhbnQgY29uZmlnczogYEJQRl9TWVNDQUxMYCwgYEJQRl9KSVRgLCBgRlVOQ1RJT05fVFJBQ0VSYCwgYW5kIGlkZWFsbHksIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBjcnVjaWFsIHNldHRpbmdzIGluIHRoZSBtaXguIEkgcmVjYWxsIHRoYXQgYEZUUkFDRWAgaXMgYSBtZW51Y29uZmlnLCB3aXRoIGBGVU5DVElPTl9UUkFDRVJgIGJlaW5nIHRoZSBzcGVjaWZpYyBjb25maWcgSSYjMzk7bSBhZnRlci4KCk5vdywgbGV0JiMzOTtzIGdldCBpbnRvIHRoZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uOiBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgYG1vZGlmeV9mZW50cnlfbXVsdGlgLCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCwgYW5kIGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgLiBIbW0sIHdhaXQgYSBtaW51dGUsIEkgaGF2ZSB0byByZW1lbWJlciB0aGF0IGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIGEgcG90ZW50aWFsbHkgaG90LXBhdGggZnVuY3Rpb24sIHJpZ2h0PyBOb3BlLCBJJiMzOTttIHRoaW5raW5nIG9mIHNvbWV0aGluZyBlbHNlLiBJdCYjMzk7cyBvbmx5IGNhbGxlZCBkdXJpbmcgQlBGIHByb2dyYW0gYXR0YWNobWVudCBhbmQgZGV0YWNobWVudCDigJMgc2xvdyBwYXRocy4gYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgaXMgYWxzbyBhIHNsb3cgcGF0aCwgYXMgaXMgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAuCgpBbHJpZ2h0LCBJIHNob3VsZCBjb25maXJtIGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIHN0YXRpYy4gWWVzLCBpdCBpcy4gSXQmIzM5O3MgZGVmaW5lZCBzdGF0aWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBBaCwgcmlnaHQsIGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIGNhbGxlZCBieSBgYnBmX3RyYW1wb2xpbmVfbGlua19wcm9nYCBhbmQgYGJwZl90cmFtcG9saW5lX3VubGlua19wcm9nYCwgYW5kIEkgaGF2ZSBteSBsaXN0IG9mIGZ1bmN0aW9uczogYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGBtb2RpZnlfZmVudHJ5X211bHRpYCwgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAsIGFuZCBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIHN0YXRpYy4gWWVwLCBkZWZpbml0ZWx5IHN0YXRpYy4gQW5kLCBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYD8gU3RhdGljIGFzIHdlbGwuIEhvdyBhYm91dCBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYD8gTm8sIHRoYXQgb25lJiMzOTtzIG5vdCBzdGF0aWMuIExvb2tzIGxpa2UgaXQmIzM5O3MgZGVmaW5lZCBpbiBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYCwgc28gSSBzaG91bGQgcHJvYmFibHkgdGFrZSBhIGxvb2sgYXQgaXQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90cmFjaW5nX211bHRpX2F0dGFjaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc4OT1pbnQgYnBmX3Vwcm9iZV9tdWx0aV9saW5rX2F0dGFjaChjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6NzkwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cik7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc5MS0jZWxzZVxuLS1cbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9ODQ4PXN0YXRpYyBpbmxpbmUgaW50XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjg0OTpicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODUwLXtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NzY1PXN0YXRpYyBpbnQgbGlua19jcmVhdGUodW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU4MTUtXHRcdGVsc2UgaWYgKGlzX3RyYWNpbmdfbXVsdGkocHJvZy1cdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZSkpXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1ODE2Olx0XHRcdHJldCA9IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChwcm9nLCBhdHRyKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU4MTctXHRcdGVsc2Vcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MzgxOT1zdGF0aWMgaW50IGNoZWNrX2R1cF9pZHModTMyICppZHMsIHU2NCAqY29va2llcywgdTMyIGNudClcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzgzOS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozODQwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zODQxLXtcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkyOS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozOTMwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTMxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQyNjUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgRG91YmxlIERlZmluaXRpb24gaW4gQlBGIFRyYWNpbmcqKgoKT2theSwgaG9sZCBvbiBhIG1pbnV0ZS4gVGhpcyBkb2VzbiYjMzk7dCBzZWVtIHJpZ2h0LiBUaGUgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgZnVuY3Rpb24uLi4gSSBjb3VsZCBzd2VhciBJIHNhdyB0aGF0IGRlZmluZWQgc29tZXdoZXJlIGJlZm9yZS4gSW4gZmFjdCwgbXkgaW50ZXJuYWwgbGludGluZyBqdXN0IHdlbnQgaGF5d2lyZS4gQW0gSSBzZWVpbmcgZG91YmxlPyBMZXQgbWUgZG91YmxlLWNoZWNrIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgIGFuZCBtYWtlIHN1cmUgbXkgZXllcyBhcmVuJiMzOTt0IGRlY2VpdmluZyBtZSwgZXNwZWNpYWxseSBhcm91bmQgbGluZSBudW1iZXJzIDM4NDAgYW5kIDM5MzAuIFNvbWV0aGluZyBmZWVscyBvZmYgaGVyZSwgYW5kIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzIHBvdGVudGlhbCBjb25mbGljdCBiZWZvcmUgaXQgY2F1c2VzIGFueSBkb3duc3RyZWFtIGlzc3Vlcy4gQSByZWR1bmRhbnQgZGVmaW5pdGlvbiBpcyBhIHRpY2tpbmcgdGltZS1ib21iLCBhbmQgSSBkb24mIzM5O3Qgd2FudCB0byBkZWFsIHdpdGggdGhhdCBtZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM4MzA6XHRcbjM4MzE6XHRcdGZvciAoaW50IGkgPSAxOyBpIFx1MDAzYyBjbnQ7IGkmIzQzOyYjNDM7KSB7XG4zODMyOlx0XHRcdGlmIChpZHNbaV0gPT0gaWRzW2kgLSAxXSkge1xuMzgzMzpcdFx0XHRcdGVyciA9IC1FSU5WQUw7XG4zODM0Olx0XHRcdFx0YnJlYWs7XG4zODM1Olx0XHRcdH1cbjM4MzY6XHRcdH1cbjM4Mzc6XHRcdHJldHVybiBlcnI7XG4zODM4Olx0fVxuMzgzOTpcdFxuMzg0MDpcdGludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbjM4NDE6XHR7XG4zODQyOlx0XHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluayA9IE5VTEw7XG4zODQzOlx0XHRzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKmZleGl0cyA9IE5VTEw7XG4zODQ0Olx0XHRzdHJ1Y3QgYnBmX2xpbmtfcHJpbWVyIGxpbmtfcHJpbWVyO1xuMzg0NTpcdFx0dTMyIGNudCwgKmlkcyA9IE5VTEw7XG4zODQ2Olx0XHR1NjQgX191c2VyICp1Y29va2llcztcbjM4NDc6XHRcdHU2NCAqY29va2llcyA9IE5VTEw7XG4zODQ4Olx0XHR1MzIgX191c2VyICp1aWRzO1xuMzg0OTpcdFx0aW50IGVycjtcbjM4NTA6XHRcbjM4NTE6XHRcdHVpZHMgPSB1NjRfdG9fdXNlcl9wdHIoYXR0ci1cdTAwM2VsaW5rX2NyZWF0ZS50cmFjaW5nX211bHRpLmlkcyk7XG4zODUyOlx0XHRjbnQgPSBhdHRyLVx1MDAzZWxpbmtfY3JlYXRlLnRyYWNpbmdfbXVsdGkuY250O1xuMzg1MzpcdFxuMzg1NDpcdFx0aWYgKCFjbnQgfHwgIXVpZHMpXG4zODU1Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzg1NjpcdFx0aWYgKGNudCBcdTAwM2UgTUFYX1RSQUNJTkdfTVVMVElfQ05UKVxuMzg1NzpcdFx0XHRyZXR1cm4gLUUyQklHO1xuMzg1ODpcdFx0aWYgKGF0dHItXHUwMDNlbGlua19jcmVhdGUuZmxhZ3MgfHwgYXR0ci1cdTAwM2VsaW5rX2NyZWF0ZS50YXJnZXRfZmQpXG4zODU5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzg2MDpcdFxuMzg2MTpcdFx0aWRzID0ga3ZtYWxsb2Nfb2JqcygqaWRzLCBjbnQpO1xuMzg2MjpcdFx0aWYgKCFpZHMpXG4zODYzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzg2NDpcdFxuMzg2NTpcdFx0aWYgKGNvcHlfZnJvbV91c2VyKGlkcywgdWlkcywgY250ICogc2l6ZW9mKCppZHMpKSkge1xuMzg2NjpcdFx0XHRlcnIgPSAtRUZBVUxUO1xuMzg2NzpcdFx0XHRnb3RvIGVycm9yO1xuMzg2ODpcdFx0fVxuMzg2OTpcdFxuMzg3MDpcdFx0dWNvb2tpZXMgPSB1NjRfdG9fdXNlcl9wdHIoYXR0ci1cdTAwM2VsaW5rX2NyZWF0ZS50cmFjaW5nX211bHRpLmNvb2tpZXMpO1xuMzg3MTpcdFx0aWYgKHVjb29raWVzKSB7XG4zODcyOlx0XHRcdGNvb2tpZXMgPSBrdm1hbGxvY19vYmpzKCpjb29raWVzLCBjbnQpO1xuMzg3MzpcdFx0XHRpZiAoIWNvb2tpZXMpIHtcbjM4NzQ6XHRcdFx0XHRlcnIgPSAtRU5PTUVNO1xuMzg3NTpcdFx0XHRcdGdvdG8gZXJyb3I7XG4zODc2Olx0XHRcdH1cbjM4Nzc6XHRcdFx0aWYgKGNvcHlfZnJvbV91c2VyKGNvb2tpZXMsIHVjb29raWVzLCBjbnQgKiBzaXplb2YoKmNvb2tpZXMpKSkge1xuMzg3ODpcdFx0XHRcdGVyciA9IC1FRkFVTFQ7XG4zODc5Olx0XHRcdFx0Z290byBlcnJvcjtcbjM4ODA6XHRcdFx0fVxuMzg4MTpcdFx0fVxuMzg4MjpcdFxuMzg4MzpcdFx0ZXJyID0gY2hlY2tfZHVwX2lkcyhpZHMsIGNvb2tpZXMsIGNudCk7XG4zODg0Olx0XHRpZiAoZXJyKVxuMzg4NTpcdFx0XHRnb3RvIGVycm9yO1xuMzg4NjpcdFxuMzg4NzpcdFx0aWYgKHByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OX01VTFRJKSB7XG4zODg4Olx0XHRcdGZleGl0cyA9IGt2bWFsbG9jX29ianMoKmZleGl0cywgY250KTtcbjM4ODk6XHRcdFx0aWYgKCFmZXhpdHMpIHtcbjM4OTA6XHRcdFx0XHRlcnIgPSAtRU5PTUVNO1xuMzg5MTpcdFx0XHRcdGdvdG8gZXJyb3I7XG4zODkyOlx0XHRcdH1cbjM4OTM6XHRcdH1cbjM4OTQ6XHRcbjM4OTU6XHRcdGxpbmsgPSBrdnphbGxvY19mbGV4KCpsaW5rLCBub2RlcywgY250KTtcbjM4OTY6XHRcdGlmICghbGluaykge1xuMzg5NzpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuMzg5ODpcdFx0XHRnb3RvIGVycm9yO1xuMzg5OTpcdFx0fVxuMzkwMDpcdFxuMzkwMTpcdFx0YnBmX2xpbmtfaW5pdChcdTAwMjZsaW5rLVx1MDAzZWxpbmssIEJQRl9MSU5LX1RZUEVfVFJBQ0lOR19NVUxUSSxcbjM5MDI6XHRcdFx0ICAgICAgXHUwMDI2YnBmX3RyYWNpbmdfbXVsdGlfbGlua19sb3BzLCBwcm9nLCBwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKTtcbjM5MDM6XHRcbjM5MDQ6XHRcdGVyciA9IGJwZl9saW5rX3ByaW1lKFx1MDAyNmxpbmstXHUwMDNlbGluaywgXHUwMDI2bGlua19wcmltZXIpO1xuMzkwNTpcdFx0aWYgKGVycilcbjM5MDY6XHRcdFx0Z290byBlcnJvcjtcbjM5MDc6XHRcbjM5MDg6XHRcdGxpbmstXHUwMDNlbm9kZXNfY250ID0gY250O1xuMzkwOTpcdFx0bGluay1cdTAwM2Vjb29raWVzID0gY29va2llcztcbjM5MTA6XHRcdGxpbmstXHUwMDNlZmV4aXRzID0gZmV4aXRzO1xuMzkxMTpcdFxuMzkxMjpcdFx0ZXJyID0gYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHByb2csIGlkcywgbGluayk7XG4zOTEzOlx0XHRrdmZyZWUoaWRzKTtcbjM5MTQ6XHRcdGlmIChlcnIpIHtcbjM5MTU6XHRcdFx0YnBmX2xpbmtfY2xlYW51cChcdTAwMjZsaW5rX3ByaW1lcik7XG4zOTE2Olx0XHRcdHJldHVybiBlcnI7XG4zOTE3Olx0XHR9XG4zOTE4Olx0XHRyZXR1cm4gYnBmX2xpbmtfc2V0dGxlKFx1MDAyNmxpbmtfcHJpbWVyKTtcbjM5MTk6XHRcbjM5MjA6XHRlcnJvcjpcbjM5MjE6XHRcdGt2ZnJlZShmZXhpdHMpO1xuMzkyMjpcdFx0a3ZmcmVlKGNvb2tpZXMpO1xuMzkyMzpcdFx0a3ZmcmVlKGlkcyk7XG4zOTI0Olx0XHRrdmZyZWUobGluayk7XG4zOTI1Olx0XHRyZXR1cm4gZXJyO1xuMzkyNjpcdH1cbjM5Mjc6XHRcbjM5Mjg6XHQjZWxzZVxuMzkyOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTkyNQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbmRpdGlvbmFsIExvZ2ljIGluIHRoZSBDb2RlKioKCk9rYXksIHNvIEkmIzM5O3ZlIHF1aWNrbHkgaWRlbnRpZmllZCB0aGUgYCNlbHNlYCBibG9jayDigJMgdGhhdCYjMzk7cyBhIGtleSBwb2ludCBvZiBkaXZlcmdlbmNlIGluIHRoZSBsb2dpYy4gTm93LCB0byB0cnVseSBncmFzcCB0aGUgZmxvdywgSSBuZWVkIHRvIHpvb20gaW4gb24gdGhlIGNvcmUgZnVuY3Rpb24gY2FsbHMuIExldCBtZSBzZWUuLi4gdGhlIG9uZXMgdGhhdCBpbW1lZGlhdGVseSBzdGFuZCBvdXQgYXMgY3JpdGljYWwgYXJlOiBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgYG1vZGlmeV9mZW50cnlfbXVsdGlgLCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCwgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAsIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoYC4gSSYjMzk7bGwgd2FudCB0byB0cmFjZSBlYWNoIG9mIHRoZXNlIHRvIHNlZSB3aGF0IGlzIGhhcHBlbmluZy4KCkhtbSwgaW50ZXJlc3RpbmcsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hgIGlzIGRlZmluZWQgaW4gYGtlcm5lbC9icGYvdHJhbXBvbGluZS5jYC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIHRoYXQmIzM5O2xsIHNhdmUgbWUgc29tZSB0aW1lLiBSaWdodCwgbGV0IG1lIGNoZWNrIHRoYXQgZnVuY3Rpb24gbW9yZSBjbG9zZWx5IHRvIHVuZGVyc3RhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9icGYuaD0xNTIwPWludCBhcmNoX3ByZXBhcmVfYnBmX2Rpc3BhdGNoZXIodm9pZCAqaW1hZ2UsIHZvaWQgKmJ1ZiwgczY0ICpmdW5jcywgaW50IG51bV9mdW5jcyk7XG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1MjEtXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1MjI6aW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxuaW5jbHVkZS9saW51eC9icGYuaC0xNTIzLVx0XHRcdFx0c3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbmsgKmxpbmspO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MTYzNT1zdGF0aWMgaW5saW5lIGJvb2wgYnBmX3Byb2dfaGFzX3RyYW1wb2xpbmUoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMTYzOC19XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE2Mzk6c3RhdGljIGlubGluZSBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE2NDAtXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3OS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1ODA6c3RhdGljIHZvaWQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2luaXQoc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1ODEte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1ODUtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTg2OnN0YXRpYyB2b2lkIGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTg3LXtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTk0LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU5NTpzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2soc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1OTYte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2MTEtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNjEyOmludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2MTMtXHRcdFx0XHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluaylcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjU4LVx0Zm9yX2VhY2hfbW5vZGUobW5vZGUsIGxpbmspIHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2NTk6XHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9pbml0KG1ub2RlLVx1MDAzZXRyYW1wb2xpbmUpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTY2MC1cbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjg2LVx0Zm9yX2VhY2hfbW5vZGUobW5vZGUsIGxpbmspXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNjg3Olx0XHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZShtbm9kZS1cdTAwM2V0cmFtcG9saW5lKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2ODgtXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTY5Ni1cdFx0YnBmX3RyYW1wb2xpbmVfcmVtb3ZlX3Byb2cobW5vZGUtXHUwMDNldHJhbXBvbGluZSwgXHUwMDI2bW5vZGUtXHUwMDNlbm9kZSk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNjk3Olx0XHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sobW5vZGUtXHUwMDNldHJhbXBvbGluZSk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjk4LVx0fVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MTI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MjEtXHRcdGRhdGEtXHUwMDNlZW50cnkgPSBcdTAwMjZtbm9kZS1cdTAwM2VlbnRyeTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3MjI6XHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9pbml0KG1ub2RlLVx1MDAzZXRyYW1wb2xpbmUpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTcyMy1cdFx0V0FSTl9PTl9PTkNFKF9fYnBmX3RyYW1wb2xpbmVfdW5saW5rX3Byb2coXHUwMDI2bW5vZGUtXHUwMDNlbm9kZSwgbW5vZGUtXHUwMDNldHJhbXBvbGluZSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzMyLVx0Zm9yX2VhY2hfbW5vZGUobW5vZGUsIGxpbmspXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNzMzOlx0XHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZShtbm9kZS1cdTAwM2V0cmFtcG9saW5lKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MzQtXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM4NDA9aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTExLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM5MTI6XHRlcnIgPSBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2gocHJvZywgaWRzLCBsaW5rKTtcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTEzLVx0a3ZmcmVlKGlkcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NTEzCgkJCQkJCQlvdXRwdXQ6IDIwNAoJCQkJCQkJdGhvdWdodHM6IDk5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgQlBGIFRyYW1wb2xpbmUgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gdGhpbmtpbmcgYWJvdXQgdGhlIGJlc3QgdGFyZ2V0cyBmb3IgZnV6emluZyByZWxhdGVkIHRvIHRoaXMgQlBGIHRyYW1wb2xpbmUgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoYCBhbmQgYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAgYXJlIGRlZmluaXRlbHkgZ29vZCBwbGFjZXMgdG8gc3RhcnQsIGFuZCB0aGF0IHN0aWxsIGhvbGRzIHRydWUuIExldCYjMzk7cyBzZWUuLi4KCkkgc2hvdWxkIHN0YXJ0IGJ5IHN1bW1hcml6aW5nIHRoZSBmdW5jdGlvbnMgSSYjMzk7dmUgaWRlbnRpZmllZCBhcyBiZWluZyByZWxldmFudC4gSSBoYXZlOgoKKiAgIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgCiogICBgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGlgCiogICBgbW9kaWZ5X2ZlbnRyeV9tdWx0aWAKKiAgIGBicGZfdHJhbXBvbGluZV91cGRhdGVgCiogICBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYAoqICAgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaGAKKiAgIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgCgpBbHNvLCB0aGUga2VybmVsIGNvbmZpZ3MgdGhhdCBhcmUgcmVsZXZhbnQgYXJlOgoqICAgYEJQRl9TWVNDQUxMYAoqICAgYEJQRl9KSVRgCiogICBgRlVOQ1RJT05fVFJBQ0VSYAoKV2FpdCwgaGFuZyBvbi4uLiBkaWRuJiMzOTt0IEkgc2VlIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgaW4gdGhlIHBhdGNoIGNvbnRleHQ/IEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgcXVpY2suLi4gcmlnaHQsIHRoYXQgb25lIGlzIGBkZWZfYm9vbCB5YCBkZXBlbmRpbmcgb24gYEhBVkVfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLCBtZWFuaW5nIGl0JiMzOTtzIG5vdCBhIHVzZXItc2VsZWN0YWJsZSBjb25maWcuIE9rYXksIGdvb2QgdG8ga25vdy4gVGhlIGxpc3Qgb2YgdXNlci1zZWxlY3RhYmxlIGNvbmZpZ3MgaXMgY29ycmVjdCB0aGVuLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmIGFnYWluLgoKYGBgYwotLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYwpAQCAtMTUzNiw2ICYjNDM7MTUzNiw3IEBAIHN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5X211bHRpKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hCiAJaWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItJmd0O2ZsYWdzKSkKIAkJYWRkciA9IGZ0cmFjZV9qbXBfc2V0KGFkZHIpOwogCiYjNDM7CXRyLSZndDtmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTsKIAlmdHJhY2VfaGFzaF9hZGQoZGF0YS0mZ3Q7cmVnLCBkYXRhLSZndDtlbnRyeSwgaXAsIGFkZHIpOwogCXRyLSZndDtjdXJfaW1hZ2UgPSBpbTsKIAlyZXR1cm4gMDsKYGBgCgpSaWdodCwgdGhpcyBpcyBhYm91dCBmaXhpbmcgYSBidWcsIHdoZXJlIGBmdHJhY2VfbWFuYWdlZGAgd2FzIG5vdCBzZXQgY29ycmVjdGx5IGZvciBtdWx0aS10cmFtcG9saW5lcy4gVGhpcyBoYXMgaW1wbGljYXRpb25zIGZvciBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAgYmVjYXVzZSB0aGV5IHdvdWxkIHJlbHkgb24gdGhlIGBmdHJhY2VfbWFuYWdlZGAgZmxhZyBiZWluZyBzZXQuIFNvLCBib3RoIG9mIHRoZXNlIGFyZSBnb29kIHRhcmdldHMgdG9vLiBBbHNvLCBgdW5yZWdpc3Rlcl9mZW50cnlgIGlzIGNhbGxlZCBmcm9tIGBicGZfdHJhbXBvbGluZV91cGRhdGVgLiBTbyBsZXQmIzM5O3MgaW5jbHVkZSB0aG9zZS4KCk9rYXksIHNvIHRoZSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gbG9vayBsaWtlOgoKKiAgIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgCiogICBgdW5yZWdpc3Rlcl9mZW50cnlgCiogICBgbW9kaWZ5X2ZlbnRyeWAKKiAgIGBicGZfdHJhbXBvbGluZV91cGRhdGVgCiogICBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYAoqICAgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaGAKKiAgIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgCgpXZSBkb24mIzM5O3Qgd2FudCB0aGUgdGFyZ2V0IGxpc3QgdG8gYmUgdG9vIGxvbmcsIHNvIEkmIzM5O20gZ29pbmcgdG8gcmVmaW5lIHRoaXMgYSBiaXQsIGJ5IHJlbW92aW5nIGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgLgoKVGhlIGZpbmFsIGxpc3QgaXM6CgoqICAgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAKKiAgIGB1bnJlZ2lzdGVyX2ZlbnRyeWAKKiAgIGBtb2RpZnlfZmVudHJ5YAoqICAgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAKKiAgIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hgCiogICBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYAoKVGhhdCBmZWVscyByaWdodC4KCkZvciBjb25maWdzLCB3ZSBoYXZlOgoKKiAgIGBCUEZfU1lTQ0FMTGAKKiAgIGBCUEZfSklUYAoqICAgYEZVTkNUSU9OX1RSQUNFUmAKClRoZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBgZnRyYWNlX21hbmFnZWRgIHdhc24mIzM5O3QgYmVpbmcgc2V0IGNvcnJlY3RseSBmb3IgbXVsdGktdHJhbXBvbGluZXMsIHdoaWNoIGxlZCB0byBpc3N1ZXMgd2l0aCBob3cgYHVucmVnaXN0ZXJfZmVudHJ5YCBhbmQgYG1vZGlmeV9mZW50cnlgIGZ1bmN0aW9uZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIGluIHRoZSBCUEYgc3Vic3lzdGVtLCB3aGljaCBhYnNvbHV0ZWx5IG1ha2VzIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIEFsc28sIGBDT05GSUdfRlRSQUNFYCBpcyBhIG1lbnVjb25maWcsIGJ1dCBgRlVOQ1RJT05fVFJBQ0VSYCBpcyB0aGUgYWN0dWFsIGNvbmZpZyB0aGF0IGVuYWJsZXMgYENPTkZJR19EWU5BTUlDX0ZUUkFDRWAgYW5kIGBDT05GSUdfRlRSQUNFYC4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgbmVlZGVkIGZvciBlbmFibGluZyB0aGUgQlBGIHN5c2NhbGwuIGBDT05GSUdfQlBGX0pJVGAgaXMgbmVjZXNzYXJ5IGZvciB0aGUgQlBGIEpJVCwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHRyYW1wb2xpbmVzIHRvIHdvcmsuCgpPa2F5LCBJIHRoaW5rIEkmIzM5O3ZlIGdvdCB0aGlzIGZ1bGx5IHNjb3BlZC4gTGV0JiMzOTsKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7LAogICAgJiMzNDtGVU5DVElPTl9UUkFDRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZWdpc3Rlcl9mZW50cnlfbXVsdGkmIzM0OywKICAgICYjMzQ7dW5yZWdpc3Rlcl9mZW50cnkmIzM0OywKICAgICYjMzQ7bW9kaWZ5X2ZlbnRyeSYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV91cGRhdGUmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoJiMzNDssCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX211bHRpX2RldGFjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBCUEYgdHJhbXBvbGluZSBsb2dpYyB3aGVyZSBgZnRyYWNlX21hbmFnZWRgIHdhcyBub3Qgc2V0IHRvIHRydWUgd2hlbiByZWdpc3RlcmluZyBhIG11bHRpIGZlbnRyeS4gVGhpcyBjYXVzZWQgaXNzdWVzIHdoZW4gYXR0YWNoaW5nIGEgc2luZ2xlIGZlbnRyeSB0byBhIGZ1bmN0aW9uIHRoYXQgYWxyZWFkeSBoYWQgYSBtdWx0aSBmZW50cnkgYXR0YWNoZWQsIGFzIGB1bnJlZ2lzdGVyX2ZlbnRyeWAgYW5kIGBtb2RpZnlfZmVudHJ5YCByZWx5IG9uIGBmdHJhY2VfbWFuYWdlZGAgYmVpbmcgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7RlVOQ1RJT05fVFJBQ0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmVnaXN0ZXJfZmVudHJ5X211bHRpJiMzNDssCiAgICAmIzM0O3VucmVnaXN0ZXJfZmVudHJ5JiMzNDssCiAgICAmIzM0O21vZGlmeV9mZW50cnkmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfdXBkYXRlJiMzNDssCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaCYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlBGIHRyYW1wb2xpbmUgbG9naWMgd2hlcmUgYGZ0cmFjZV9tYW5hZ2VkYCB3YXMgbm90IHNldCB0byB0cnVlIHdoZW4gcmVnaXN0ZXJpbmcgYSBtdWx0aSBmZW50cnkuIFRoaXMgY2F1c2VkIGlzc3VlcyB3aGVuIGF0dGFjaGluZyBhIHNpbmdsZSBmZW50cnkgdG8gYSBmdW5jdGlvbiB0aGF0IGFscmVhZHkgaGFkIGEgbXVsdGkgZmVudHJ5IGF0dGFjaGVkLCBhcyBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAgcmVseSBvbiBgZnRyYWNlX21hbmFnZWRgIGJlaW5nIHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjI6MTIuNzg5NzgxNzkxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NTIwNTI2ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJGVU5DVElPTl9UUkFDRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZWdpc3Rlcl9mZW50cnlfbXVsdGlcIixcbiAgICBcInVucmVnaXN0ZXJfZmVudHJ5XCIsXG4gICAgXCJtb2RpZnlfZmVudHJ5XCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV91cGRhdGVcIixcbiAgICBcImJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaFwiLFxuICAgIFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlBGIHRyYW1wb2xpbmUgbG9naWMgd2hlcmUgYGZ0cmFjZV9tYW5hZ2VkYCB3YXMgbm90IHNldCB0byB0cnVlIHdoZW4gcmVnaXN0ZXJpbmcgYSBtdWx0aSBmZW50cnkuIFRoaXMgY2F1c2VkIGlzc3VlcyB3aGVuIGF0dGFjaGluZyBhIHNpbmdsZSBmZW50cnkgdG8gYSBmdW5jdGlvbiB0aGF0IGFscmVhZHkgaGFkIGEgbXVsdGkgZmVudHJ5IGF0dGFjaGVkLCBhcyBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAgcmVseSBvbiBgZnRyYWNlX21hbmFnZWRgIGJlaW5nIHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjoxMi43ODk3ODYzMjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MTgwODE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFiMTE5MzY4YzU1ZWQ3MGRkODBkYmNjMmVjMDc1YzEwYTFmYzllZmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTIgMDU6MjI6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi90cmFtcG9saW5lLmMgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xcbmluZGV4IDFhNzIxZmM0YmVmNTYyLi42ZWFkZjY0ZjdlYzkwZiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xcbisrKyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXFxuQEAgLTE1MzYsNiArMTUzNiw3IEBAIHN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5X211bHRpKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hXFxuIFxcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVxcdTAwM2VmbGFncykpXFxuIFxcdFxcdGFkZHIgPSBmdHJhY2Vfam1wX3NldChhZGRyKTtcXG4gXFxuK1xcdHRyLVxcdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtcXG4gXFx0ZnRyYWNlX2hhc2hfYWRkKGRhdGEtXFx1MDAzZXJlZywgZGF0YS1cXHUwMDNlZW50cnksIGlwLCBhZGRyKTtcXG4gXFx0dHItXFx1MDAzZWN1cl9pbWFnZSA9IGltO1xcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jXFxuaW5kZXggZjAyZmZjN2Y0MWQ3ODQuLjBhYTk1MzJhMDVjZmVjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuY1xcbkBAIC00NjAsNiArNDYwLDczIEBAIHN0YXRpYyB2b2lkIHRlc3RfaW50ZXJzZWN0KHZvaWQpXFxuIFxcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X19kZXN0cm95KHNrZWwpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0ZXN0X2ZlbnRyeV9hZnRlcl9tdWx0aSh2b2lkKVxcbit7XFxuK1xcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZnVuY3NbXSA9IHtcXG4rXFx0XFx0XFxcImJwZl9mZW50cnlfdGVzdDFcXFwiLFxcbitcXHR9O1xcbitcXHRzdHJ1Y3QgYnBmX2xpbmsgKmZlbnRyeV9saW5rID0gTlVMTCwgKm11bHRpX2xpbmsgPSBOVUxMO1xcbitcXHRzdHJ1Y3QgdHJhY2luZ19tdWx0aV9pbnRlcnNlY3QgKnNrZWwgPSBOVUxMO1xcbitcXHRMSUJCUEZfT1BUUyhicGZfdHJhY2luZ19tdWx0aV9vcHRzLCBvcHRzKTtcXG4rXFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTtcXG4rXFx0X191MzIgKmlkcyA9IE5VTEw7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRza2VsID0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfX29wZW5fYW5kX2xvYWQoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJ0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fb3Blbl9hbmRfbG9hZFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXBpZCA9IGdldHBpZCgpO1xcbitcXG4rXFx0aWRzID0gZ2V0X2lkcyhmdW5jcywgQVJSQVlfU0laRShmdW5jcyksIE5VTEwpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoaWRzLCBcXFwiZ2V0X2lkc1xcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcbitcXHRvcHRzLmlkcyA9IGlkcztcXG4rXFx0b3B0cy5jbnQgPSBBUlJBWV9TSVpFKGZ1bmNzKTtcXG4rXFx0bXVsdGlfbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2luZ19tdWx0aShza2VsLVxcdTAwM2Vwcm9ncy5mZW50cnlfMSwgTlVMTCwgXFx1MDAyNm9wdHMpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIobXVsdGlfbGluaywgXFxcImF0dGFjaF9tdWx0aVxcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcbitcXHRmZW50cnlfbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2goc2tlbC1cXHUwMDNlcHJvZ3MuZmVudHJ5KTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKGZlbnRyeV9saW5rLCBcXFwiYXR0YWNoX2ZlbnRyeVxcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcbitcXHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy5mZW50cnlfMSksIFxcdTAwMjZ0b3B0cyk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcInRlc3RfcnVuXFxcIikpXFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNldGVzdF9yZXN1bHRfZmVudHJ5XzEsIDEsIFxcXCJtdWx0aV9mZW50cnlcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNldGVzdF9yZXN1bHRfZmVudHJ5LCAxLCBcXFwiZmVudHJ5XFxcIik7XFxuK1xcbitcXHRlcnIgPSBicGZfbGlua19fZGVzdHJveShmZW50cnlfbGluayk7XFxuK1xcdGZlbnRyeV9saW5rID0gTlVMTDtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiZGVzdHJveV9mZW50cnlcXFwiKSlcXG4rXFx0XFx0Z290byBjbGVhbnVwO1xcbitcXG4rXFx0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhicGZfcHJvZ3JhbV9fZmQoc2tlbC1cXHUwMDNlcHJvZ3MuZmVudHJ5XzEpLCBcXHUwMDI2dG9wdHMpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJ0ZXN0X3J1bl9tdWx0aVxcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeV8xLCAyLCBcXFwibXVsdGlfZmVudHJ5X29ubHlcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNldGVzdF9yZXN1bHRfZmVudHJ5LCAxLCBcXFwiZmVudHJ5X2RldGFjaGVkXFxcIik7XFxuK1xcbitcXHRlcnIgPSBicGZfbGlua19fZGVzdHJveShtdWx0aV9saW5rKTtcXG4rXFx0bXVsdGlfbGluayA9IE5VTEw7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImRlc3Ryb3lfbXVsdGlcXFwiKSlcXG4rXFx0XFx0Z290byBjbGVhbnVwO1xcbitcXG4rXFx0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhicGZfcHJvZ3JhbV9fZmQoc2tlbC1cXHUwMDNlcHJvZ3MuZmVudHJ5XzEpLCBcXHUwMDI2dG9wdHMpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJ0ZXN0X3J1bl9kZXRhY2hlZFxcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeV8xLCAyLCBcXFwibXVsdGlfZmVudHJ5X2RldGFjaGVkXFxcIik7XFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeSwgMSwgXFxcImZlbnRyeV9zdGlsbF9kZXRhY2hlZFxcXCIpO1xcbitcXG4rY2xlYW51cDpcXG4rXFx0YnBmX2xpbmtfX2Rlc3Ryb3koZmVudHJ5X2xpbmspO1xcbitcXHRicGZfbGlua19fZGVzdHJveShtdWx0aV9saW5rKTtcXG4rXFx0ZnJlZShpZHMpO1xcbitcXHR0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fZGVzdHJveShza2VsKTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgdGVzdF9zZXNzaW9uKHZvaWQpXFxuIHtcXG4gXFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTtcXG5AQCAtOTU3LDQgKzEwMjQsNiBAQCB2b2lkIHRlc3RfdHJhY2luZ19tdWx0aV90ZXN0KHZvaWQpXFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJhdHRhY2hfYXBpX2ZhaWxzXFxcIikpXFxuIFxcdFxcdHRlc3RfYXR0YWNoX2FwaV9mYWlscygpO1xcbiBcXHRSVU5fVEVTVFModHJhY2luZ19tdWx0aV92ZXJpZmllcik7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJmZW50cnlfYWZ0ZXJfbXVsdGlcXFwiKSlcXG4rXFx0XFx0dGVzdF9mZW50cnlfYWZ0ZXJfbXVsdGkoKTtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmNcXG5pbmRleCBjZDViZTBiYjZmZmRkNy4uNWIwYWY4ZjRjNjJmZjggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jXFxuQEAgLTExLDYgKzExLDE0IEBAIF9fdTY0IHRlc3RfcmVzdWx0X2ZlbnRyeV8xID0gMDtcXG4gX191NjQgdGVzdF9yZXN1bHRfZmVudHJ5XzIgPSAwO1xcbiBfX3U2NCB0ZXN0X3Jlc3VsdF9mZXhpdF8xID0gMDtcXG4gX191NjQgdGVzdF9yZXN1bHRfZmV4aXRfMiA9IDA7XFxuK19fdTY0IHRlc3RfcmVzdWx0X2ZlbnRyeSA9IDA7XFxuK1xcbitTRUMoXFxcImZlbnRyeS9icGZfZmVudHJ5X3Rlc3QxXFxcIilcXG4raW50IEJQRl9QUk9HKGZlbnRyeSlcXG4re1xcbitcXHR0cmFjaW5nX211bHRpX2FyZ19jaGVjayhjdHgsIFxcdTAwMjZ0ZXN0X3Jlc3VsdF9mZW50cnksIGZhbHNlKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4gXFxuIFNFQyhcXFwiZmVudHJ5Lm11bHRpXFxcIilcXG4gaW50IEJQRl9QUk9HKGZlbnRyeV8xKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjoxMy4xNjIyMTE5MjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNDE0ODA4ODkwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiRlVOQ1RJT05fVFJBQ0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVnaXN0ZXJfZmVudHJ5X211bHRpXCIsXG4gICAgXCJ1bnJlZ2lzdGVyX2ZlbnRyeVwiLFxuICAgIFwibW9kaWZ5X2ZlbnRyeVwiLFxuICAgIFwiYnBmX3RyYW1wb2xpbmVfdXBkYXRlXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hcIixcbiAgICBcImJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIEJQRiB0cmFtcG9saW5lIGxvZ2ljIHdoZXJlIGBmdHJhY2VfbWFuYWdlZGAgd2FzIG5vdCBzZXQgdG8gdHJ1ZSB3aGVuIHJlZ2lzdGVyaW5nIGEgbXVsdGkgZmVudHJ5LiBUaGlzIGNhdXNlZCBpc3N1ZXMgd2hlbiBhdHRhY2hpbmcgYSBzaW5nbGUgZmVudHJ5IHRvIGEgZnVuY3Rpb24gdGhhdCBhbHJlYWR5IGhhZCBhIG11bHRpIGZlbnRyeSBhdHRhY2hlZCwgYXMgYHVucmVnaXN0ZXJfZmVudHJ5YCBhbmQgYG1vZGlmeV9mZW50cnlgIHJlbHkgb24gYGZ0cmFjZV9tYW5hZ2VkYCBiZWluZyBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxYjExOTM2OGM1NWVkNzBkZDgwZGJjYzJlYzA3NWMxMGExZmM5ZWZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMDU6MjI6MTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXG5pbmRleCAxYTcyMWZjNGJlZjU2Mi4uNmVhZGY2NGY3ZWM5MGYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuKysrIGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbkBAIC0xNTM2LDYgKzE1MzYsNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYVxuIFx0aWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItXHUwMDNlZmxhZ3MpKVxuIFx0XHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XG4gXG4rXHR0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtcbiBcdGZ0cmFjZV9oYXNoX2FkZChkYXRhLVx1MDAzZXJlZywgZGF0YS1cdTAwM2VlbnRyeSwgaXAsIGFkZHIpO1xuIFx0dHItXHUwMDNlY3VyX2ltYWdlID0gaW07XG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmNcbmluZGV4IGYwMmZmYzdmNDFkNzg0Li4wYWE5NTMyYTA1Y2ZlYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jXG5AQCAtNDYwLDYgKzQ2MCw3MyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ludGVyc2VjdCh2b2lkKVxuIFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfX2Rlc3Ryb3koc2tlbCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHRlc3RfZmVudHJ5X2FmdGVyX211bHRpKHZvaWQpXG4re1xuK1x0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBmdW5jc1tdID0ge1xuK1x0XHRcImJwZl9mZW50cnlfdGVzdDFcIixcbitcdH07XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmZlbnRyeV9saW5rID0gTlVMTCwgKm11bHRpX2xpbmsgPSBOVUxMO1xuK1x0c3RydWN0IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0ICpza2VsID0gTlVMTDtcbitcdExJQkJQRl9PUFRTKGJwZl90cmFjaW5nX211bHRpX29wdHMsIG9wdHMpO1xuK1x0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTtcbitcdF9fdTMyICppZHMgPSBOVUxMO1xuK1x0aW50IGVycjtcbitcbitcdHNrZWwgPSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fb3Blbl9hbmRfbG9hZCgpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwidHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfX29wZW5fYW5kX2xvYWRcIikpXG4rXHRcdHJldHVybjtcbitcbitcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZXBpZCA9IGdldHBpZCgpO1xuK1xuK1x0aWRzID0gZ2V0X2lkcyhmdW5jcywgQVJSQVlfU0laRShmdW5jcyksIE5VTEwpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKGlkcywgXCJnZXRfaWRzXCIpKVxuK1x0XHRnb3RvIGNsZWFudXA7XG4rXG4rXHRvcHRzLmlkcyA9IGlkcztcbitcdG9wdHMuY250ID0gQVJSQVlfU0laRShmdW5jcyk7XG4rXHRtdWx0aV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5XzEsIE5VTEwsIFx1MDAyNm9wdHMpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKG11bHRpX2xpbmssIFwiYXR0YWNoX211bHRpXCIpKVxuK1x0XHRnb3RvIGNsZWFudXA7XG4rXG4rXHRmZW50cnlfbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2goc2tlbC1cdTAwM2Vwcm9ncy5mZW50cnkpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKGZlbnRyeV9saW5rLCBcImF0dGFjaF9mZW50cnlcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcbitcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5XzEpLCBcdTAwMjZ0b3B0cyk7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwidGVzdF9ydW5cIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2V0ZXN0X3Jlc3VsdF9mZW50cnlfMSwgMSwgXCJtdWx0aV9mZW50cnlcIik7XG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNldGVzdF9yZXN1bHRfZmVudHJ5LCAxLCBcImZlbnRyeVwiKTtcbitcbitcdGVyciA9IGJwZl9saW5rX19kZXN0cm95KGZlbnRyeV9saW5rKTtcbitcdGZlbnRyeV9saW5rID0gTlVMTDtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJkZXN0cm95X2ZlbnRyeVwiKSlcbitcdFx0Z290byBjbGVhbnVwO1xuK1xuK1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5mZW50cnlfMSksIFx1MDAyNnRvcHRzKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJ0ZXN0X3J1bl9tdWx0aVwiKSlcbitcdFx0Z290byBjbGVhbnVwO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeV8xLCAyLCBcIm11bHRpX2ZlbnRyeV9vbmx5XCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeSwgMSwgXCJmZW50cnlfZGV0YWNoZWRcIik7XG4rXG4rXHRlcnIgPSBicGZfbGlua19fZGVzdHJveShtdWx0aV9saW5rKTtcbitcdG11bHRpX2xpbmsgPSBOVUxMO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcImRlc3Ryb3lfbXVsdGlcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcbitcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5XzEpLCBcdTAwMjZ0b3B0cyk7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwidGVzdF9ydW5fZGV0YWNoZWRcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2V0ZXN0X3Jlc3VsdF9mZW50cnlfMSwgMiwgXCJtdWx0aV9mZW50cnlfZGV0YWNoZWRcIik7XG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNldGVzdF9yZXN1bHRfZmVudHJ5LCAxLCBcImZlbnRyeV9zdGlsbF9kZXRhY2hlZFwiKTtcbitcbitjbGVhbnVwOlxuK1x0YnBmX2xpbmtfX2Rlc3Ryb3koZmVudHJ5X2xpbmspO1xuK1x0YnBmX2xpbmtfX2Rlc3Ryb3kobXVsdGlfbGluayk7XG4rXHRmcmVlKGlkcyk7XG4rXHR0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fZGVzdHJveShza2VsKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgdGVzdF9zZXNzaW9uKHZvaWQpXG4ge1xuIFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTtcbkBAIC05NTcsNCArMTAyNCw2IEBAIHZvaWQgdGVzdF90cmFjaW5nX211bHRpX3Rlc3Qodm9pZClcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwiYXR0YWNoX2FwaV9mYWlsc1wiKSlcbiBcdFx0dGVzdF9hdHRhY2hfYXBpX2ZhaWxzKCk7XG4gXHRSVU5fVEVTVFModHJhY2luZ19tdWx0aV92ZXJpZmllcik7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcImZlbnRyeV9hZnRlcl9tdWx0aVwiKSlcbitcdFx0dGVzdF9mZW50cnlfYWZ0ZXJfbXVsdGkoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jXG5pbmRleCBjZDViZTBiYjZmZmRkNy4uNWIwYWY4ZjRjNjJmZjggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guY1xuQEAgLTExLDYgKzExLDE0IEBAIF9fdTY0IHRlc3RfcmVzdWx0X2ZlbnRyeV8xID0gMDtcbiBfX3U2NCB0ZXN0X3Jlc3VsdF9mZW50cnlfMiA9IDA7XG4gX191NjQgdGVzdF9yZXN1bHRfZmV4aXRfMSA9IDA7XG4gX191NjQgdGVzdF9yZXN1bHRfZmV4aXRfMiA9IDA7XG4rX191NjQgdGVzdF9yZXN1bHRfZmVudHJ5ID0gMDtcbitcbitTRUMoXCJmZW50cnkvYnBmX2ZlbnRyeV90ZXN0MVwiKVxuK2ludCBCUEZfUFJPRyhmZW50cnkpXG4re1xuK1x0dHJhY2luZ19tdWx0aV9hcmdfY2hlY2soY3R4LCBcdTAwMjZ0ZXN0X3Jlc3VsdF9mZW50cnksIGZhbHNlKTtcbitcdHJldHVybiAwO1xuK31cbiBcbiBTRUMoXCJmZW50cnkubXVsdGlcIilcbiBpbnQgQlBGX1BST0coZmVudHJ5XzEpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjoxMy4xNjIyMTMyMDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzg1NzUwNzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBCUEYgVHJhbXBvbGluZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AgYW5kIHNvbWUgcmVsYXRlZCB0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0aGUgY29kZSBjaGFuZ2UgaXRzZWxmIHdpdGhpbiB0aGF0IGtlcm5lbCBmaWxlLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhlcmUncyBhIG1vZGlmaWNhdGlvbiB0byB0aGUgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2hhbmdlLCB3aGljaCBhZGRzIGB0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtgLiBUaGlzIGxvb2tzIGxpa2UgaXQgaXMgc2V0dGluZyBhIGZsYWcgb24gdGhlIGJwZiB0cmFtcG9saW5lIHN0cnVjdC4gSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gd2hhdCB0aGF0IG1lYW5zLlxuXG5UaGlzIGlzIGNvcmUgQlBGIHRyYW1wb2xpbmUgbG9naWMsIHNvIHVuZGVyc3RhbmRpbmcgdGhlIHJhbWlmaWNhdGlvbnMgaXMgcHJldHR5IGltcG9ydGFudC5cblxuVG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9uLCBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgIGZ1bmN0aW9uIGl0c2VsZi4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQgb2Ygd2hhdCBpdCBkb2VzLCBhbmQgYWxzbyB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBrZXJuZWwgc2V0dGluZ3MgaW5mbHVlbmNlIGl0cyBiZWhhdmlvci4gVGhhdCBmbGFnIGJlaW5nIHNldCB0aGVyZSBtYXkgaGF2ZSBhIGRlZXBlciBpbXBsaWNhdGlvbiwgc28gSSdsbCBiZSBsb29raW5nIGZvciB3aGVyZSBhbmQgaG93IHRoYXQgYHRyLVx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWRgIG1lbWJlciBpcyB1c2VkIGRvd25zdHJlYW0gZnJvbSB0aGlzIGZ1bmN0aW9uLiBUaGlzIHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gZnRyYWNlIG1hbmFnZW1lbnQsIHNvIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUga2VybmVsIGZlYXR1cmVzIG9yIGJ1aWxkIG9wdGlvbnMgcmVsYXRlZCB0byBmdHJhY2UgdGhhdCBtaWdodCBiZSByZWxldmFudCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzk0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjI6MTcuNTQ3OTY1NTU3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODUyMzI2MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVnaXN0ZXJfZmVudHJ5X211bHRpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1MjI9c3RhdGljIHZvaWQgZnRyYWNlX2hhc2hfYWRkKHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCwgc3RydWN0IGZ0cmFjZV9mdW5jX2VudHJ5ICplbnRyeSxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1MjktXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTUzMDpzdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcHRyKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1MzEte1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU0NC1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTQ1OnN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTQ2LXtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU3NTpcXHQucmVnaXN0ZXJfZmVudHJ5ICAgPSByZWdpc3Rlcl9mZW50cnlfbXVsdGksXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU3NjpcXHQudW5yZWdpc3Rlcl9mZW50cnkgPSB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aSxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTc3LVxcdC5tb2RpZnlfZmVudHJ5ICAgICA9IG1vZGlmeV9mZW50cnlfbXVsdGksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIyOjE5LjMzMzIwMjQ0NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4OTI1MjYyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCBGdW5jdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gc2VlaW5nIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgIGJlaW5nIGNhbGxlZCB3aXRoaW4gYHRyYW1wb2xpbmVfbXVsdGlfb3BzYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhhdCBmdW5jdGlvbiB3b3JrcyBhbmQgd2hlcmUgaXQncyBiZWluZyB1c2VkIHdpdGhpbiB0aGlzIGNvbnRleHQuIE15IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvZGUgZGlyZWN0bHkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgc291cmNlIGZpbGUsIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AuIFRoYXQgc2hvdWxkIGNvbnRhaW4gdGhlIGRlZmluaXRpb24gb2YgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAgYW5kLCBjcnVjaWFsbHksIEkgbmVlZCB0byBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIGBmdHJhY2VfbWFuYWdlZGAuIFVuZGVyc3RhbmRpbmcgdGhlaXIgcmVsYXRpb25zaGlwIGlzIHByb2JhYmx5IGtleSB0byBncmFzcGluZyB0aGUgYmVoYXZpb3Igb2YgYHRyYW1wb2xpbmVfbXVsdGlfb3BzYCwgYW5kIGJ5IGV4dGVuc2lvbiwgdGhlIHN5c3RlbSdzIG92ZXJhbGwgZnVuY3Rpb24gaGVyZS4gVGltZSB0byBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjYyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjI6MjIuMjI1NzMwNTc3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzAzODA3NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnRyYWNlX21hbmFnZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9icGYuaD0xMzgwPXN0cnVjdCBicGZfdHJhbXBvbGluZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzOTItXFx0XFx0dm9pZCAqYWRkcjtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjEzOTM6XFx0XFx0Ym9vbCBmdHJhY2VfbWFuYWdlZDtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzOTQtXFx0fSBmdW5jO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDMyPXN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKmRhdGEgX19tYXliZV91bnVzZWQpXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MzYtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDM3OlxcdGlmICh0ci1cXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZClcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MzgtXFx0XFx0cmV0ID0gZGlyZWN0X29wc19kZWwodHIsIG9sZF9hZGRyKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTQ1MD1zdGF0aWMgaW50IG1vZGlmeV9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDU2LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjQ1NzpcXHRpZiAodHItXFx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQpIHtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00NTgtXFx0XFx0cmV0ID0gZGlyZWN0X29wc19tb2QodHIsIG5ld19hZGRyLCBsb2NrX2RpcmVjdF9tdXRleCk7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz00NzM9c3RhdGljIGludCByZWdpc3Rlcl9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00ODQtXFx0XFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0ODU6XFx0XFx0dHItXFx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQgPSB0cnVlO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ4Ni1cXHR9XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDg3LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjQ4ODpcXHRpZiAodHItXFx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQpIHtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00ODktXFx0XFx0cmV0ID0gZGlyZWN0X29wc19hZGQodHIsIG5ld19hZGRyKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1MzA9c3RhdGljIGludCByZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnB0cilcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1MzgtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTUzOTpcXHR0ci1cXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZCA9IHRydWU7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU0MC1cXHRmdHJhY2VfaGFzaF9hZGQoZGF0YS1cXHUwMDNlcmVnLCBkYXRhLVxcdTAwM2VlbnRyeSwgaXAsIGFkZHIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjoyMy45OTYxMTU2NDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM1OTg2Njc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGZlbnRyeWAgUGF0Y2gncyBJbXBsaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHNldHRpbmcgYHRyLVx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQgPSB0cnVlYCB3aXRoaW4gYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgcmlwcGxlIGVmZmVjdCwgYXMgSSBrbm93IHRoYXQgYHVucmVnaXN0ZXJfZmVudHJ5YCBhbmQgYG1vZGlmeV9mZW50cnlgIGJvdGggY2hlY2sgdGhpcyBgdHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZGAgZmxhZy4gTXkgaW5pdGlhbCBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBpbnRyb2R1Y2VzIGFueSBjb25mbGljdHMuXG5cbkFoLCBidXQgYSBjbG9zZXIgbG9vay4gYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCBhbmQgYG1vZGlmeV9mZW50cnlfbXVsdGlgIGFyZSBzcGVjaWZpY2FsbHkgYXNzb2NpYXRlZCB3aXRoIG11bHRpLXRyYW1wb2xpbmUgZnVuY3Rpb25hbGl0eS4gVGhhdCdzIHRoZSBrZXkgY29udGV4dCBoZXJlLiBOb3cgSSBuZWVkIHRvIGV4YW1pbmUgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBhZGRlZCBmbGFnIGlzIGhhbmRsZWQgcHJvcGVybHkgaW4gdGhlIG11bHRpLXRyYW1wb2xpbmUgY29udGV4dC4gTGV0J3Mgc2VlIGhvdyB0aGlzIHBsYXlzIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE3OSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIyOjI3LjEzMjEwMzg4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU5MjE4MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVucmVnaXN0ZXJfZmVudHJ5X211bHRpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1MzA9c3RhdGljIGludCByZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnB0cilcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDQtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU0NTpzdGF0aWMgaW50IHVucmVnaXN0ZXJfZmVudHJ5X211bHRpKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBvcmlnX2ZsYWdzLCB2b2lkICpwdHIpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU0Ni17XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wb2xpbmVfb3BzIHRyYW1wb2xpbmVfbXVsdGlfb3BzID0ge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NzUtXFx0LnJlZ2lzdGVyX2ZlbnRyeSAgID0gcmVnaXN0ZXJfZmVudHJ5X211bHRpLFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1NzY6XFx0LnVucmVnaXN0ZXJfZmVudHJ5ID0gdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGksXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3Ny1cXHQubW9kaWZ5X2ZlbnRyeSAgICAgPSBtb2RpZnlfZmVudHJ5X211bHRpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjoyOC43OTEzMjY2NzFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk0Mjk0MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkFuYWx5emluZyBGdHJhY2UgRnVuY3Rpb24gVW5yZWdpc3RyYXRpb24gYW5kIE1vZGlmaWNhdGlvbioqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyBmdHJhY2UgY29kZSBhbmQgc29tZXRoaW5nJ3MgaW1tZWRpYXRlbHkgY2F0Y2hpbmcgbXkgYXR0ZW50aW9uLiBJIHNlZSB0aGF0IHRoZSBgdHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZGAgZmxhZyBpcyBiZWluZyBleHBsaWNpdGx5IGNoZWNrZWQgaW4gYm90aCBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAg4oCTIGNsYXNzaWMgY2hlY2tzIGZvciBtYW5hZ2VkIGZ0cmFjZSBlbnRyaWVzLCBhcyBJJ2QgZXhwZWN0LiBIb3dldmVyLCB3aGVuIEkgbG9vayBhdCBob3cgdGhlIG11bHRpLWZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgdmlhIHRoZSBgdHJhbXBvbGluZV9tdWx0aV9vcHNgLCBJIHNlZSB0aGF0IGl0IHVzZXMgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCBhbmQgYG1vZGlmeV9mZW50cnlfbXVsdGlgIGluc3RlYWQuXG5cblNvLCB0aGUgcXVlc3Rpb24gdGhhdCdzIGJ1YmJsaW5nIHVwIGluIG15IG1pbmQgaXMgdGhpczogQXJlIHRoZSBpbmRpdmlkdWFsIGB1bnJlZ2lzdGVyX2ZlbnRyeWAgb3IgYG1vZGlmeV9mZW50cnlgIGZ1bmN0aW9ucyBhY3R1YWxseSBldmVyICp1c2VkKiBvbiB0aGVzZSBtdWx0aS10cmFtcG9saW5lcz8gQW5kIGlmIG5vdCwgaXMgdGhpcyBgZnRyYWNlX21hbmFnZWRgIGZsYWcgYmVpbmcgdXNlZCAqYW55d2hlcmUqIGVsc2UgaW4gcmVsYXRpb24gdG8gdGhpcyBtdWx0aS10cmFtcG9saW5lIHNldHVwPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgdXNhZ2UgYW5kIGRldGVybWluZSBpZiB0aGVyZSdzIGEgZGlzY29ubmVjdCBvciBhIHBvdGVudGlhbCBvdmVyc2lnaHQgaW4gaG93IHRoZXNlIGRpZmZlcmVudCBmdW5jdGlvbiBzZXRzIGludGVyYWN0LiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIGZ0cmFjZSBpbmZyYXN0cnVjdHVyZSBhbmQgdGhlIGFwcHJvcHJpYXRlIGhhbmRsaW5nIG9mIG1hbmFnZWQgZW50cmllcyBhY3Jvc3MgZGlmZmVyZW50IHRyYW1wb2xpbmUgY29uZmlndXJhdGlvbnMuIFRpbWUgdG8gZGlnIGRlZXBlci4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzQyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjI6MzIuMzg1NjIyOTM5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM2MDc0ODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVucmVnaXN0ZXJfZmVudHJ5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTYyPXN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTYzLVxcdGludCAoKnJlZ2lzdGVyX2ZlbnRyeSkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKmRhdGEpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjY0OlxcdGludCAoKnVucmVnaXN0ZXJfZmVudHJ5KShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgdm9pZCAqZGF0YSk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjUtXFx0aW50ICgqbW9kaWZ5X2ZlbnRyeSkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDMwPXN0YXRpYyB2b2lkIGJwZl90cmFtcF9pbWFnZV9wdXQoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0pO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQzMS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0MzI6c3RhdGljIGludCB1bnJlZ2lzdGVyX2ZlbnRyeShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgdm9pZCAqZGF0YSBfX21heWJlX3VudXNlZClcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MzMte1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NTAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wb2xpbmVfb3BzIHRyYW1wb2xpbmVfb3BzID0ge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTUwMi1cXHQucmVnaXN0ZXJfZmVudHJ5ICAgPSByZWdpc3Rlcl9mZW50cnksXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NTAzOlxcdC51bnJlZ2lzdGVyX2ZlbnRyeSA9IHVucmVnaXN0ZXJfZmVudHJ5LFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTUwNC1cXHQubW9kaWZ5X2ZlbnRyeSAgICAgPSBtb2RpZnlfZmVudHJ5LFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NjczPXN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIGJvb2wgbG9ja19kaXJlY3RfbXV0ZXgsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy02ODYtXFx0aWYgKHRvdGFsID09IDApIHtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo2ODc6XFx0XFx0ZXJyID0gb3BzLVxcdTAwM2V1bnJlZ2lzdGVyX2ZlbnRyeSh0ciwgb3JpZ19mbGFncywgZGF0YSk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjg4LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTUzMD1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcHRyKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU0NC1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTQ1OnN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTQ2LXtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3NS1cXHQucmVnaXN0ZXJfZmVudHJ5ICAgPSByZWdpc3Rlcl9mZW50cnlfbXVsdGksXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU3NjpcXHQudW5yZWdpc3Rlcl9mZW50cnkgPSB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aSxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTc3LVxcdC5tb2RpZnlfZmVudHJ5ICAgICA9IG1vZGlmeV9mZW50cnlfbXVsdGksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIyOjM0LjAyMTcwMzMyN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQyODgxODY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIEludGVyYWN0aW9uIG9mIGBmdHJhY2VfbWFuYWdlZGAgYW5kIFRyYW1wb2xpbmUgT3BlcmF0aW9ucyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBmdWxseSB1bmRlcnN0YW5kIHRoaXMuIEl0IGp1c3QgaGl0IG1lOiBgdW5yZWdpc3Rlcl9mZW50cnlgIHJlbGllcyBvbiBgdHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZGAuIEFuZCBJIHJlY2FsbCB0aGF0IGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgICpzZXRzKiBgdHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZGAgdG8gYHRydWVgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGRvZXMgdGhhdCBzZXQgaGF2ZSBhbnkgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMgZm9yIGB1bnJlZ2lzdGVyX2ZlbnRyeWA/IEkgaGF2ZSBhIGZlZWxpbmcgdGhlIGFuc3dlciB3aWxsIGJlIE5PIGJ1dCBiZXN0IHRvIGNoZWNrLlxuXG5XYWl0LCBub3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBgdW5yZWdpc3Rlcl9mZW50cnlgIGlzIGJ1cmllZCBhd2F5IGluIHRoZSBgdHJhbXBvbGluZV9vcHNgIHN0cnVjdHVyZS4gV2hlcmVhcywgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAgcmVzaWRlcyBpbiBgdHJhbXBvbGluZV9tdWx0aV9vcHNgLiBIbW0sIHNvIGV2ZW4gaWYgdGhlIGZvcm1lciBmdW5jdGlvbiByZWxpZXMgb24gdGhlIGxhdHRlciB2YXJpYWJsZSBpdCBzaG91bGQgYmUgb2ssIHVubGVzcy4uLiB3aGF0IGhhcHBlbnMgaWYgYSB0cmFtcG9saW5lIGlzIHN3aXRjaGVkIGZyb20gdGhlIG11bHRpIHZlcnNpb24gdG8gdGhlIHNpbmdsZSB2ZXJzaW9uIG9mIHRoZSBpbXBsZW1lbnRhdGlvbj8gT3IgaWYgYGZ0cmFjZV9tYW5hZ2VkYCBpcyBjaGVja2VkICplbHNld2hlcmUqP1xuXG5Pa2F5LCB0aW1lIHRvIGdldCBzZXJpb3VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBldmVyeXdoZXJlIHRoYXQgYGZ0cmFjZV9tYW5hZ2VkYCBpcyBhY3R1YWxseSB1c2VkLiBUaGF0J3MgdGhlIG9ubHkgd2F5IEknbGwgaGF2ZSBhIGNsZWFyIHBpY3R1cmUuIEdvdHRhIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBmaW5kIGFsbCB0aGUgY2FsbHMuIExldCdzIHN0YXJ0IHdpdGggYSB0aG9yb3VnaCBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MDksIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjI6MzcuOTY0NTg3ODAzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM3MzI1ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ0cmFjZV9tYW5hZ2VkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9MTM4MD1zdHJ1Y3QgYnBmX3RyYW1wb2xpbmUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMzkyLVxcdFxcdHZvaWQgKmFkZHI7XFxuaW5jbHVkZS9saW51eC9icGYuaDoxMzkzOlxcdFxcdGJvb2wgZnRyYWNlX21hbmFnZWQ7XFxuaW5jbHVkZS9saW51eC9icGYuaC0xMzk0LVxcdH0gZnVuYztcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTQzMj1zdGF0aWMgaW50IHVucmVnaXN0ZXJfZmVudHJ5KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBvcmlnX2ZsYWdzLCB2b2lkICpkYXRhIF9fbWF5YmVfdW51c2VkKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDM2LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjQzNzpcXHRpZiAodHItXFx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDM4LVxcdFxcdHJldCA9IGRpcmVjdF9vcHNfZGVsKHRyLCBvbGRfYWRkcik7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz00NTA9c3RhdGljIGludCBtb2RpZnlfZmVudHJ5KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBvcmlnX2ZsYWdzLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ1Ni1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0NTc6XFx0aWYgKHRyLVxcdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkKSB7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDU4LVxcdFxcdHJldCA9IGRpcmVjdF9vcHNfbW9kKHRyLCBuZXdfYWRkciwgbG9ja19kaXJlY3RfbXV0ZXgpO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDczPXN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDg0LVxcdFxcdFxcdHJldHVybiAtRU5PVFNVUFA7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDg1OlxcdFxcdHRyLVxcdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00ODYtXFx0fVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ4Ny1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0ODg6XFx0aWYgKHRyLVxcdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkKSB7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDg5LVxcdFxcdHJldCA9IGRpcmVjdF9vcHNfYWRkKHRyLCBuZXdfYWRkcik7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTMwPXN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5X211bHRpKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICpwdHIpXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTM4LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1Mzk6XFx0dHItXFx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQgPSB0cnVlO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDAtXFx0ZnRyYWNlX2hhc2hfYWRkKGRhdGEtXFx1MDAzZXJlZywgZGF0YS1cXHUwMDNlZW50cnksIGlwLCBhZGRyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjI6MzkuNjAxOTIwNTcyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTMyMTU4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipFeGFtaW5pbmcgZnRyYWNlX21hbmFnZWQgVXNhZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIGBmdHJhY2VfbWFuYWdlZGAgZmxhZyBhbmQgaXRzIHVzZSBpbiB0aGUgZnRyYWNlIHN1YnN5c3RlbS4gSSd2ZSBvYnNlcnZlZCB0aGF0IGBmdHJhY2VfbWFuYWdlZGAgaXMgb25seSByZWZlcmVuY2VkIHdpdGhpbiBgdW5yZWdpc3Rlcl9mZW50cnlgLCBgbW9kaWZ5X2ZlbnRyeWAsIGFuZCBgcmVnaXN0ZXJfZmVudHJ5YC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIEJ1dCB3YWl0IGEgbWludXRlLi4uIEkgbmVlZCB0byBjb25zaWRlciBhIHBvdGVudGlhbCBlZGdlIGNhc2UuIElmIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgICphbHNvKiBzZXRzIGB0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZWAsIGFuZCB0aGVuIGEgKnNpbmdsZSogYGZlbnRyeWAgaXMgYXR0YWNoZWQgdG8gdGhlICpzYW1lKiBmdW5jdGlvbiB2aWEgc29tZSBvdGhlciBtZWFucywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBUaGVyZSBjb3VsZCBiZSBjb25mbGljdHMgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhpcyBtaWdodCBwb2ludCB0byBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBhbiB1bmhhbmRsZWQgc3RhdGUuIEkgYmV0dGVyIGludmVzdGlnYXRlIHRoZSBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCBmdW5jdGlvbiB0byBzZWUgaWYgaXQgaGFuZGxlcyB0aGlzIHNjZW5hcmlvLiBMZXQncyBkaWcgaW50byB0aGF0IGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwMTIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjo0My4wNTUxMzkxOThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9icGYvdHJhbXBvbGluZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY0MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2NDA6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDY0MTpcXHRcXG4gNjQyOlxcdFxcdGVyciA9IGJwZl9qaXRfY2hhcmdlX21vZG1lbShzaXplKTtcXG4gNjQzOlxcdFxcdGlmIChlcnIpXFxuIDY0NDpcXHRcXHRcXHRnb3RvIG91dF9mcmVlX2ltO1xcbiA2NDU6XFx0XFx0aW0tXFx1MDAzZXNpemUgPSBzaXplO1xcbiA2NDY6XFx0XFxuIDY0NzpcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiA2NDg6XFx0XFx0aW0tXFx1MDAzZWltYWdlID0gaW1hZ2UgPSBhcmNoX2FsbG9jX2JwZl90cmFtcG9saW5lKHNpemUpO1xcbiA2NDk6XFx0XFx0aWYgKCFpbWFnZSlcXG4gNjUwOlxcdFxcdFxcdGdvdG8gb3V0X3VuY2hhcmdlO1xcbiA2NTE6XFx0XFxuIDY1MjpcXHRcXHRlcnIgPSBwZXJjcHVfcmVmX2luaXQoXFx1MDAyNmltLVxcdTAwM2VwY3JlZiwgX19icGZfdHJhbXBfaW1hZ2VfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCk7XFxuIDY1MzpcXHRcXHRpZiAoZXJyKVxcbiA2NTQ6XFx0XFx0XFx0Z290byBvdXRfZnJlZV9pbWFnZTtcXG4gNjU1OlxcdFxcbiA2NTY6XFx0XFx0a3N5bSA9IFxcdTAwMjZpbS1cXHUwMDNla3N5bTtcXG4gNjU3OlxcdFxcdElOSVRfTElTVF9IRUFEX1JDVShcXHUwMDI2a3N5bS1cXHUwMDNlbG5vZGUpO1xcbiA2NTg6XFx0XFx0c25wcmludGYoa3N5bS1cXHUwMDNlbmFtZSwgS1NZTV9OQU1FX0xFTiwgXFxcImJwZl90cmFtcG9saW5lXyVsbHVcXFwiLCBrZXkpO1xcbiA2NTk6XFx0XFx0YnBmX2ltYWdlX2tzeW1faW5pdChpbWFnZSwgc2l6ZSwga3N5bSk7XFxuIDY2MDpcXHRcXHRicGZfaW1hZ2Vfa3N5bV9hZGQoa3N5bSk7XFxuIDY2MTpcXHRcXHRyZXR1cm4gaW07XFxuIDY2MjpcXHRcXG4gNjYzOlxcdG91dF9mcmVlX2ltYWdlOlxcbiA2NjQ6XFx0XFx0YXJjaF9mcmVlX2JwZl90cmFtcG9saW5lKGltLVxcdTAwM2VpbWFnZSwgaW0tXFx1MDAzZXNpemUpO1xcbiA2NjU6XFx0b3V0X3VuY2hhcmdlOlxcbiA2NjY6XFx0XFx0YnBmX2ppdF91bmNoYXJnZV9tb2RtZW0oc2l6ZSk7XFxuIDY2NzpcXHRvdXRfZnJlZV9pbTpcXG4gNjY4OlxcdFxcdGtmcmVlKGltKTtcXG4gNjY5OlxcdG91dDpcXG4gNjcwOlxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuIDY3MTpcXHR9XFxuIDY3MjpcXHRcXG4gNjczOlxcdHN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIGJvb2wgbG9ja19kaXJlY3RfbXV0ZXgsXFxuIDY3NDpcXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLCB2b2lkICpkYXRhKVxcbiA2NzU6XFx0e1xcbiA2NzY6XFx0XFx0c3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW07XFxuIDY3NzpcXHRcXHRzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICp0bm9kZXM7XFxuIDY3ODpcXHRcXHR1MzIgb3JpZ19mbGFncyA9IHRyLVxcdTAwM2VmbGFncztcXG4gNjc5OlxcdFxcdGJvb2wgaXBfYXJnID0gZmFsc2U7XFxuIDY4MDpcXHRcXHRpbnQgZXJyLCB0b3RhbCwgc2l6ZTtcXG4gNjgxOlxcdFxcbiA2ODI6XFx0XFx0dG5vZGVzID0gYnBmX3RyYW1wb2xpbmVfZ2V0X3Byb2dzKHRyLCBcXHUwMDI2dG90YWwsIFxcdTAwMjZpcF9hcmcpO1xcbiA2ODM6XFx0XFx0aWYgKElTX0VSUih0bm9kZXMpKVxcbiA2ODQ6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIodG5vZGVzKTtcXG4gNjg1OlxcdFxcbiA2ODY6XFx0XFx0aWYgKHRvdGFsID09IDApIHtcXG4gNjg3OlxcdFxcdFxcdGVyciA9IG9wcy1cXHUwMDNldW5yZWdpc3Rlcl9mZW50cnkodHIsIG9yaWdfZmxhZ3MsIGRhdGEpO1xcbiA2ODg6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDY4OTpcXHRcXHR9XFxuIDY5MDpcXHRcXG4gNjkxOlxcdFxcdC8qIGNsZWFyIGFsbCBiaXRzIGV4Y2VwdCBTSEFSRV9JUE1PRElGWSBhbmQgVEFJTF9DQUxMX0NUWCAqL1xcbiA2OTI6XFx0XFx0dHItXFx1MDAzZWZsYWdzIFxcdTAwMjY9IChCUEZfVFJBTVBfRl9TSEFSRV9JUE1PRElGWSB8IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpO1xcbiA2OTM6XFx0XFxuIDY5NDpcXHRcXHRpZiAodG5vZGVzW0JQRl9UUkFNUF9GRVhJVF0ubnJfbm9kZXMgfHxcXG4gNjk1OlxcdFxcdCAgICB0bm9kZXNbQlBGX1RSQU1QX01PRElGWV9SRVRVUk5dLm5yX25vZGVzKSB7XFxuIDY5NjpcXHRcXHRcXHQvKiBOT1RFOiBCUEZfVFJBTVBfRl9SRVNUT1JFX1JFR1MgYW5kIEJQRl9UUkFNUF9GX1NLSVBfRlJBTUVcXG4gNjk3OlxcdFxcdFxcdCAqIHNob3VsZCBub3QgYmUgc2V0IHRvZ2V0aGVyLlxcbiA2OTg6XFx0XFx0XFx0ICovXFxuIDY5OTpcXHRcXHRcXHR0ci1cXHUwMDNlZmxhZ3MgfD0gQlBGX1RSQU1QX0ZfQ0FMTF9PUklHIHwgQlBGX1RSQU1QX0ZfU0tJUF9GUkFNRTtcXG4gNzAwOlxcdFxcdH0gZWxzZSB7XFxuIDcwMTpcXHRcXHRcXHR0ci1cXHUwMDNlZmxhZ3MgfD0gQlBGX1RSQU1QX0ZfUkVTVE9SRV9SRUdTO1xcbiA3MDI6XFx0XFx0fVxcbiA3MDM6XFx0XFxuIDcwNDpcXHRcXHRpZiAoaXBfYXJnKVxcbiA3MDU6XFx0XFx0XFx0dHItXFx1MDAzZWZsYWdzIHw9IEJQRl9UUkFNUF9GX0lQX0FSRztcXG4gNzA2OlxcdFxcbiA3MDc6XFx0I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xcbiA3MDg6XFx0YWdhaW46XFxuIDcwOTpcXHRcXHRpZiAodHItXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfQ0FMTF9PUklHKSB7XFxuIDcxMDpcXHRcXHRcXHRpZiAodHItXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfU0hBUkVfSVBNT0RJRlkpIHtcXG4gNzExOlxcdFxcdFxcdFxcdC8qIFRoZSBCUEZfVFJBTVBfRl9TS0lQX0ZSQU1FIGNhbiBiZSBjbGVhcmVkIGluIHRoZVxcbiA3MTI6XFx0XFx0XFx0XFx0ICogZmlyc3QgdHJ5LCByZXNldCBpdCBpbiB0aGUgc2Vjb25kIHRyeS5cXG4gNzEzOlxcdFxcdFxcdFxcdCAqL1xcbiA3MTQ6XFx0XFx0XFx0XFx0dHItXFx1MDAzZWZsYWdzIHw9IEJQRl9UUkFNUF9GX09SSUdfU1RBQ0sgfCBCUEZfVFJBTVBfRl9TS0lQX0ZSQU1FO1xcbiA3MTU6XFx0XFx0XFx0fSBlbHNlIGlmIChJU19FTkFCTEVEKENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0pNUCkpIHtcXG4gNzE2OlxcdFxcdFxcdFxcdC8qIFVzZSBcXFwiam1wXFxcIiBpbnN0ZWFkIG9mIFxcXCJjYWxsXFxcIiBmb3IgdGhlIHRyYW1wb2xpbmVcXG4gNzE3OlxcdFxcdFxcdFxcdCAqIGluIHRoZSBvcmlnaW4gY2FsbCBjYXNlLCBhbmQgd2UgZG9uJ3QgbmVlZCB0b1xcbiA3MTg6XFx0XFx0XFx0XFx0ICogc2tpcCB0aGUgZnJhbWUuXFxuIDcxOTpcXHRcXHRcXHRcXHQgKi9cXG4gNzIwOlxcdFxcdFxcdFxcdHRyLVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+QlBGX1RSQU1QX0ZfU0tJUF9GUkFNRTtcXG4gNzIxOlxcdFxcdFxcdH1cXG4gNzIyOlxcdFxcdH1cXG4gNzIzOlxcdCNlbmRpZlxcbiA3MjQ6XFx0XFxuIDcyNTpcXHRcXHRzaXplID0gYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKFxcdTAwMjZ0ci1cXHUwMDNlZnVuYy5tb2RlbCwgdHItXFx1MDAzZWZsYWdzLFxcbiA3MjY6XFx0XFx0XFx0XFx0XFx0XFx0dG5vZGVzLCB0ci1cXHUwMDNlZnVuYy5hZGRyKTtcXG4gNzI3OlxcdFxcdGlmIChzaXplIFxcdTAwM2MgMCkge1xcbiA3Mjg6XFx0XFx0XFx0ZXJyID0gc2l6ZTtcXG4gNzI5OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA3MzA6XFx0XFx0fVxcbiA3MzE6XFx0XFxuIDczMjpcXHRcXHRpZiAoc2l6ZSBcXHUwMDNlIFBBR0VfU0laRSkge1xcbiA3MzM6XFx0XFx0XFx0ZXJyID0gLUUyQklHO1xcbiA3MzQ6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDczNTpcXHRcXHR9XFxuIDczNjpcXHRcXG4gNzM3OlxcdFxcdGltID0gYnBmX3RyYW1wX2ltYWdlX2FsbG9jKHRyLVxcdTAwM2VrZXksIHNpemUpO1xcbiA3Mzg6XFx0XFx0aWYgKElTX0VSUihpbSkpIHtcXG4gNzM5OlxcdFxcdFxcdGVyciA9IFBUUl9FUlIoaW0pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjo0My4wNTUyNjc5MjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg3MTI3MjA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgVHJhbXBvbGluZSBCdWcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgYXBwZWFycyB0byBhZGRyZXNzIGEgYnVnIGluIHRoZSBCUEYgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBmZW50cnkgbWVjaGFuaXNtLiBJIHNlZSB0aGF0IGB0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkYCB3YXNuJ3QgYmVpbmcgc2V0IHRvIGB0cnVlYCBpbiBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgd2hpY2ggaXMgZGVmaW5pdGVseSBhIHByb2JsZW0uIFRoaXMgb21pc3Npb24gY291bGQgbGVhZCB0byBpbmNvcnJlY3QgYmVoYXZpb3Igd2hlbiBtdWx0aXBsZSBmZW50cmllcyBhcmUgaW52b2x2ZWQuXG5cblRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBzZWVtcyB0byBhcmlzZSB3aGVuIGEgc2luZ2xlIGZlbnRyeSBpcyBhdHRhY2hlZCB0byBhIGZ1bmN0aW9uIHRoYXQgYWxyZWFkeSBoYXMgYSBtdWx0aSBmZW50cnksIHRyaWdnZXJpbmcgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAuIEludGVyZXN0aW5nLiBXYWl0IGEgbWludXRlLCB0aGUgYHRlc3RfZmVudHJ5X2FmdGVyX211bHRpYCB0ZXN0IGNhc2UgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHByb3Zva2UgKnRoaXMqIHNjZW5hcmlvLCBzdGVwIGJ5IHN0ZXAhIEl0IGF0dGFjaGVzIGEgYGZlbnRyeS5tdWx0aWAsIHRoZW4gYSBzaW5nbGUgYGZlbnRyeWAsIGRldGFjaGVzIHRoZSBzaW5nbGUgYGZlbnRyeWAsIGFuZCB0aGVuIGRldGFjaGVzIHRoZSBgZmVudHJ5Lm11bHRpYC4gVGhhdCdzIHByZWNpc2VseSB0aGUgc2l0dWF0aW9uIGJlaW5nIGZsYWdnZWQgaGVyZS5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIG1vZGlmaWNhdGlvbiB0byBob3cgQlBGIHRyYW1wb2xpbmVzIGFyZSBtYW5hZ2VkLCBzcGVjaWZpY2FsbHkgZm9yIHByb2dyYW1zIHVzaW5nIGBmZW50cnkubXVsdGlgLiBOb3cgSSBuZWVkIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBjb3JyZWN0bHkgbWFuYWdlcyB0aGUgZmVudHJ5IHN0YXRlLlxuXG5JJ20gbWFraW5nIGEgbWVudGFsIG5vdGUgdGhhdCB0aGlzIHBhdGNoIHJlcXVpcmVzIHRoZSBjb25maWd1cmF0aW9ucyBgQlBGX1NZU0NBTExgLCBgRlRSQUNFYCwgYW5kIHBvdGVudGlhbGx5IGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AuIFRpbWUgdG8gZG91YmxlLWNoZWNrIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgb3ZlcmFsbCBpbXBhY3Qgb24gdGhlIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk4MSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIyOjQ3LjkyNjU0MTgxN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3Njk3NDkyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfLipGVFJBQ0VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzMDgyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2R3YzMucnN0PTUzNz1pbmZvcm1hdGlvbiBhYm91dCB0aGUgYmVoYXZpb3Igb2YgdGhlIGRyaXZlciBkdXJpbmcgcnVudGltZS5cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2R3YzMucnN0LTUzOC1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2R3YzMucnN0OjUzOTpJbiBvcmRlciB0byB1c2UgdGhlc2UgZXZlbnRzLCB5b3UgbXVzdCBlbmFibGUgYGBDT05GSUdfRlRSQUNFYGAgaW5cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2R3YzMucnN0LTU0MC15b3VyIGtlcm5lbCBjb25maWcuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2xpdmVwYXRjaC9saXZlcGF0Y2gucnN0PTQ0PWEgYmFzZS4gQSBLcHJvYmUgaXMgcmVnaXN0ZXJlZCBhcyBhIGZ0cmFjZSBoYW5kbGVyIHdoZW4gdGhlIGZ1bmN0aW9uIGVudHJ5XFxuRG9jdW1lbnRhdGlvbi9saXZlcGF0Y2gvbGl2ZXBhdGNoLnJzdDo0NTppcyBwcm9iZWQsIHNlZSBDT05GSUdfS1BST0JFU19PTl9GVFJBQ0UuIEFsc28gYW4gYWx0ZXJuYXRpdmUgZnVuY3Rpb24gZnJvbVxcbkRvY3VtZW50YXRpb24vbGl2ZXBhdGNoL2xpdmVwYXRjaC5yc3QtNDYtYSBsaXZlIHBhdGNoIGlzIGNhbGxlZCB3aXRoIHRoZSBoZWxwIG9mIGEgY3VzdG9tIGZ0cmFjZSBoYW5kbGVyLiBCdXQgdGhlcmUgYXJlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVidWdnaW5nL2RyaXZlcl9kZXZlbG9wbWVudF9kZWJ1Z2dpbmdfZ3VpZGUucnN0PTUyPVRyYWNlX3ByaW50a1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlYnVnZ2luZy9kcml2ZXJfZGV2ZWxvcG1lbnRfZGVidWdnaW5nX2d1aWRlLnJzdC01NC1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVidWdnaW5nL2RyaXZlcl9kZXZlbG9wbWVudF9kZWJ1Z2dpbmdfZ3VpZGUucnN0OjU1OlByZXJlcXVpc2l0ZTogYGBDT05GSUdfRFlOQU1JQ19GVFJBQ0VgYCBcXHUwMDI2IGBgI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Z0cmFjZS5oXFx1MDAzZWBgXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlYnVnZ2luZy9kcml2ZXJfZGV2ZWxvcG1lbnRfZGVidWdnaW5nX2d1aWRlLnJzdC01Ni1cXG4tLVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZWJ1Z2dpbmcvdXNlcnNwYWNlX2RlYnVnZ2luZ19ndWlkZS5yc3Q9NjM9RnRyYWNlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVidWdnaW5nL3VzZXJzcGFjZV9kZWJ1Z2dpbmdfZ3VpZGUucnN0LTY1LVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZWJ1Z2dpbmcvdXNlcnNwYWNlX2RlYnVnZ2luZ19ndWlkZS5yc3Q6NjY6UHJlcmVxdWlzaXRlOiBgYENPTkZJR19EWU5BTUlDX0ZUUkFDRWBgXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlYnVnZ2luZy91c2Vyc3BhY2VfZGVidWdnaW5nX2d1aWRlLnJzdC02Ny1cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLXVzZXMucnN0PTEzOD1mdHJhY2VfdGVzdF9yZWN1cnNpb25fdHJ5bG9jaygpIHRvIHJlY29yZCB3aGVyZSB0aGUgcmVjdXJzaW9uIGhhcHBlbmVkXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UtdXNlcy5yc3Q6MTM5OihpZiBDT05GSUdfRlRSQUNFX1JFQ09SRF9SRUNVUlNJT04gaXMgc2V0KS5cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS11c2VzLnJzdC0xNDAtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3Q9Mjk2Mj1keW5hbWljIGZ0cmFjZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTI5NjQtXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0OjI5NjU6SWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFIGlzIHNldCwgdGhlIHN5c3RlbSB3aWxsIHJ1biB3aXRoXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTI5NjYtdmlydHVhbGx5IG5vIG92ZXJoZWFkIHdoZW4gZnVuY3Rpb24gdHJhY2luZyBpcyBkaXNhYmxlZC4gVGhlIHdheVxcbi0tXFxuTWFrZWZpbGU9MTAyOT1pZmRlZiBDT05GSUdfRlVOQ1RJT05fVFJBQ0VSXFxuTWFrZWZpbGU6MTAzMDppZmRlZiBDT05GSUdfRlRSQUNFX01DT1VOVF9VU0VfQ0NcXG5NYWtlZmlsZS0xMDMxLSAgQ0NfRkxBR1NfRlRSQUNFXFx0Kz0gLW1yZWNvcmQtbWNvdW50XFxuLS1cXG5NYWtlZmlsZT0xMDM4PWVuZGlmXFxuTWFrZWZpbGU6MTAzOTppZmRlZiBDT05GSUdfRlRSQUNFX01DT1VOVF9VU0VfT0JKVE9PTFxcbk1ha2VmaWxlLTEwNDAtICBpZmRlZiBDT05GSUdfSEFWRV9PQkpUT09MX05PUF9NQ09VTlRcXG4tLVxcbk1ha2VmaWxlPTEwNDM9ZW5kaWZcXG5NYWtlZmlsZToxMDQ0OmlmZGVmIENPTkZJR19GVFJBQ0VfTUNPVU5UX1VTRV9SRUNPUkRNQ09VTlRcXG5NYWtlZmlsZS0xMDQ1LSAgaWZkZWYgQ09ORklHX0hBVkVfQ19SRUNPUkRNQ09VTlRcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAxX2RlZmNvbmZpZz0xMDI9Q09ORklHX0RFRkFVTFRfSFVOR19UQVNLX1RJTUVPVVQ9MTBcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAxX2RlZmNvbmZpZy0xMDQtIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDFfZGVmY29uZmlnOjEwNTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfZGVmY29uZmlnPTEwMD1DT05GSUdfREVGQVVMVF9IVU5HX1RBU0tfVElNRU9VVD0xMFxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfZGVmY29uZmlnLTEwMi0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19kZWZjb25maWc6MTAzOiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19zbXBfZGVmY29uZmlnPTEwMj1DT05GSUdfREVGQVVMVF9IVU5HX1RBU0tfVElNRU9VVD0xMFxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfc21wX2RlZmNvbmZpZy0xMDQtIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfc21wX2RlZmNvbmZpZzoxMDU6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWc9ODk9Q09ORklHX0RFRkFVTFRfSFVOR19UQVNLX1RJTUVPVVQ9MTBcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWctOTEtIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9oc2RrX2RlZmNvbmZpZzo5MjojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWctOTMtQ09ORklHX0NSWVBUT19FQ0hBSU5JVj15XFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX3NtcF9kZWZjb25maWc9NzI9Q09ORklHX05GU19WM19BQ0w9eVxcbmFyY2gvYXJjL2NvbmZpZ3MvbnNpbW9zY2lfaHNfc21wX2RlZmNvbmZpZzo3MzpDT05GSUdfRlRSQUNFPXlcXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX3NtcF9kZWZjb25maWctNzQtIyBDT05GSUdfTkVUX1ZFTkRPUl9DQURFTkNFIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvdmRrX2hzMzhfZGVmY29uZmlnPTkxPUNPTkZJR19ERUZBVUxUX0hVTkdfVEFTS19USU1FT1VUPTEwXFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL3Zka19oczM4X2RlZmNvbmZpZy05My0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL3Zka19oczM4X2RlZmNvbmZpZzo5NDojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy92ZGtfaHMzOF9zbXBfZGVmY29uZmlnPTk3PUNPTkZJR19ERUZBVUxUX0hVTkdfVEFTS19USU1FT1VUPTEwXFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL3Zka19oczM4X3NtcF9kZWZjb25maWctOTktIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy92ZGtfaHMzOF9zbXBfZGVmY29uZmlnOjEwMDojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnPTI4MD1DT05GSUdfUFNUT1JFX1BNU0c9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZzoyODE6Q09ORklHX1BTVE9SRV9GVFJBQ0U9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy0yODItQ09ORklHX1BTVE9SRV9SQU09eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9hdDkxX2R0X2RlZmNvbmZpZz0yNDA9Q09ORklHX0RFQlVHX0ZTPXlcXG5hcmNoL2FybS9jb25maWdzL2F0OTFfZHRfZGVmY29uZmlnLTI0MS0jIENPTkZJR19TQ0hFRF9ERUJVRyBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9hdDkxX2R0X2RlZmNvbmZpZzoyNDI6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL2F0OTFfZHRfZGVmY29uZmlnLTI0My1DT05GSUdfREVCVUdfVVNFUj15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTIyOT1DT05GSUdfUkNVX0NQVV9TVEFMTF9USU1FT1VUPTYwXFxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZzoyMzA6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnLTIzMS1DT05GSUdfREVCVUdfVVNFUj15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2NscHM3MTF4X2RlZmNvbmZpZz03Mj1DT05GSUdfTUlOSVhfRlM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvY2xwczcxMXhfZGVmY29uZmlnLTczLSMgQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVMgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvY2xwczcxMXhfZGVmY29uZmlnOjc0OiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9jbHBzNzExeF9kZWZjb25maWctNzUtQ09ORklHX0RFQlVHX1VTRVI9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnPTQ3OT1DT05GSUdfREVCVUdfRlM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvaW14X3Y2X3Y3X2RlZmNvbmZpZy00ODAtIyBDT05GSUdfU0xVQl9ERUJVRyBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnOjQ4MTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9qb3JuYWRhNzIwX2RlZmNvbmZpZz05Mj1DT05GSUdfREVCVUdfS0VSTkVMPXlcXG5hcmNoL2FybS9jb25maWdzL2pvcm5hZGE3MjBfZGVmY29uZmlnOjkzOiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9qb3JuYWRhNzIwX2RlZmNvbmZpZy05NC1DT05GSUdfREVCVUdfTEw9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9scGMzMnh4X2RlZmNvbmZpZz0xODc9Q09ORklHX1BBTklDX1RJTUVPVVQ9NVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9scGMzMnh4X2RlZmNvbmZpZy0xODktIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9scGMzMnh4X2RlZmNvbmZpZzoxOTA6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL2xwYzMyeHhfZGVmY29uZmlnLTE5MS1DT05GSUdfREVCVUdfTEw9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NHRfZGVmY29uZmlnPTkzPUNPTkZJR19NSU5JWF9GUz15XFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NHRfZGVmY29uZmlnOjk0OiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NHRfZGVmY29uZmlnLTk1LUNPTkZJR19ERUJVR19VU0VSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjVfZGVmY29uZmlnPTI5Mj1DT05GSUdfREVCVUdfRlM9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NV9kZWZjb25maWctMjk0LSMgQ09ORklHX0RFQlVHX1BSRUVNUFQgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjVfZGVmY29uZmlnOjI5NTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjVfZGVmY29uZmlnLTI5Ni1DT05GSUdfREVCVUdfVVNFUj15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y1X2RlZmNvbmZpZz0xOTE9Q09ORklHX0RFQlVHX0ZTPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjVfZGVmY29uZmlnLTE5My0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y1X2RlZmNvbmZpZzoxOTQ6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y1X2RlZmNvbmZpZy0xOTUtQ09ORklHX0RFQlVHX1VTRVI9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9vcmlvbjV4X2RlZmNvbmZpZz0xNDM9Q09ORklHX0xBVEVOQ1lUT1A9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb3Jpb241eF9kZWZjb25maWc6MTQ0OiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9vcmlvbjV4X2RlZmNvbmZpZy0xNDUtQ09ORklHX0RFQlVHX1VTRVI9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9weGEzeHhfZGVmY29uZmlnPTEwNj1DT05GSUdfREVCVUdfU1BJTkxPQ0tfU0xFRVA9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhM3h4X2RlZmNvbmZpZzoxMDc6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL3B4YTN4eF9kZWZjb25maWctMTA4LUNPTkZJR19ERUJVR19VU0VSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZz02NjU9Q09ORklHX0ZVTkNUSU9OX1RSQUNFUj15XFxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnOjY2NjpDT05GSUdfRlRSQUNFX1NZU0NBTExTPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvcmVhbHZpZXdfZGVmY29uZmlnPTk3PUNPTkZJR19ERUJVR19GUz15XFxuYXJjaC9hcm0vY29uZmlncy9yZWFsdmlld19kZWZjb25maWctOTgtIyBDT05GSUdfU0NIRURfREVCVUcgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvcmVhbHZpZXdfZGVmY29uZmlnOjk5OiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9yZWFsdmlld19kZWZjb25maWctMTAwLUNPTkZJR19ERUJVR19VU0VSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTVfZGVmY29uZmlnPTI1MT1DT05GSUdfREVCVUdfTUVNT1JZX0lOSVQ9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTVfZGVmY29uZmlnLTI1Mi0jIENPTkZJR19TQ0hFRF9ERUJVRyBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9zYW1hNV9kZWZjb25maWc6MjUzOiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9zYW1hNV9kZWZjb25maWctMjU0LUNPTkZJR19ERUJVR19VU0VSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTdfZGVmY29uZmlnPTI0OD1DT05GSUdfU1RBQ0tUUkFDRT15XFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWc6MjQ5OiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWctMjUwLUNPTkZJR19ERUJVR19VU0VSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnPTIzNT1DT05GSUdfTUFHSUNfU1lTUlE9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnLTIzNi0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZzoyMzc6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvdTg1MDBfZGVmY29uZmlnPTE5MD1DT05GSUdfREVCVUdfRlM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvdTg1MDBfZGVmY29uZmlnLTE5MS0jIENPTkZJR19TQ0hFRF9ERUJVRyBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy91ODUwMF9kZWZjb25maWc6MTkyOiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy91ODUwMF9kZWZjb25maWctMTkzLUNPTkZJR19ERUJVR19VU0VSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvd3BjbTQ1MF9kZWZjb25maWc9MTk2PUNPTkZJR19ERUJVR19GUz15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnLTE5OC0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnOjE5OTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3Mvd3BjbTQ1MF9kZWZjb25maWctMjAwLUNPTkZJR19JT19TVFJJQ1RfREVWTUVNPXlcXG4tLVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTYtXFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vZnRyYWNlLmg6NzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTgtI2RlZmluZSBBUkNIX1NVUFBPUlRTX0ZUUkFDRV9PUFMgMVxcbi0tXFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vZnRyYWNlLmg9MTY9ZXh0ZXJuIHZvaWQgX19nbnVfbWNvdW50X25jKHZvaWQpO1xcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE3LVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL2Z0cmFjZS5oOjE4OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9mdHJhY2UuaC0xOS1zdHJ1Y3QgZHluX2FyY2hfZnRyYWNlIHtcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9NYWtlZmlsZT01OT1vYmotJChDT05GSUdfRlVOQ1RJT05fVFJBQ0VSKVxcdCs9IGVudHJ5LWZ0cmFjZS5vXFxuYXJjaC9hcm0va2VybmVsL01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19EWU5BTUlDX0ZUUkFDRSlcXHQrPSBmdHJhY2UubyBpbnNuLm8gcGF0Y2gub1xcbmFyY2gvYXJtL2tlcm5lbC9NYWtlZmlsZS02MS1vYmotJChDT05GSUdfRlVOQ1RJT05fR1JBUEhfVFJBQ0VSKVxcdCs9IGZ0cmFjZS5vIGluc24ubyBwYXRjaC5vXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtNjItXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjYzOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTY0LVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TPTEwND1USFVNQihcXHRub3Aud1xcdFxcdClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNDQtXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjE0NTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNDYtXFx0bGRyX3ZhXFx0cjIsIGZ1bmN0aW9uX3RyYWNlX29wXFx0XFx0QCBwb2ludGVyIHRvIHRoZSBjdXJyZW50XFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM9MTU5PVRIVU1CKFxcdG5vcC53XFx0XFx0KVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTE3MC0jZW5kaWZcXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTcxOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTcyLVxcdEAgY2FsbGVkIGZyb20gX19mdHJhY2VfY2FsbGVyLCBzYXZlZCBpbiBtY291bnRfZW50ZXJcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0yMTA9VU5XSU5EKC5mbnN0YXJ0KVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoyMTE6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0yMTItXFx0cHVzaFxcdHtscn1cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0yMTk9RU5EUFJPQyhfX2dudV9tY291bnRfbmMpXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTIyMC1cXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM6MjIxOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjIyLUVOVFJZKGZ0cmFjZV9jYWxsZXIpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM9MjI2PUVORFBST0MoZnRyYWNlX2NhbGxlcilcXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjI3LVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoyMjg6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1NcXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjI5LUVOVFJZKGZ0cmFjZV9yZWdzX2NhbGxlcilcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0yNDM9RU5EUFJPQyhmdHJhY2VfZ3JhcGhfY2FsbGVyKVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0yNDQtXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjI0NTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0yNDYtRU5UUlkoZnRyYWNlX2dyYXBoX3JlZ3NfY2FsbGVyKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TPTI4Nj1FTkRQUk9DKGZ0cmFjZV9zdHViX2dyYXBoKVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0yODctXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjI4ODojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTI4OS1cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0yOTU9RU5EUFJPQyhcXFxcZHN0XFxcXCgpX2Zyb21faW5pdClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0yOTgtXFx0aW5pdF90cmFtcFxcdGZ0cmFjZV9jYWxsZXJcXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM6Mjk5OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTMwMC1cXHRpbml0X3RyYW1wXFx0ZnRyYWNlX3JlZ3NfY2FsbGVyXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtNDQtXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jOjQ1OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtNDYtXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM9Njk9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19yZWYgYWRqdXN0X2FkZHJlc3Moc3RydWN0IGR5bl9mdHJhY2UgKnJlYyxcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy03MS17XFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jOjcyOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0UpIHx8XFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTczLVxcdCAgICBzeXN0ZW1fc3RhdGUgXFx1MDAzZT0gU1lTVEVNX0ZSRUVJTkdfSU5JVE1FTSB8fFxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTc1LVxcdFxcdHJldHVybiBhZGRyO1xcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYzo3NjpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHUykgfHxcXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtNzctXFx0ICAgIGFkZHIgPT0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNmZ0cmFjZV9jYWxsZXIpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM9MTIyPWludCBmdHJhY2VfdXBkYXRlX2Z0cmFjZV9mdW5jKGZ0cmFjZV9mdW5jX3QgZnVuYylcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0xMzItXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jOjEzMzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0xMzQtXFx0aWYgKCFyZXQpIHtcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYz0xNDU9aW50IGZ0cmFjZV9tYWtlX2NhbGwoc3RydWN0IGR5bl9mdHJhY2UgKnJlYywgdW5zaWduZWQgbG9uZyBhZGRyKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTE2OC1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6MTY5OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTE3MC1cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYz0xODY9aW50IGZ0cmFjZV9tYWtlX25vcChzdHJ1Y3QgbW9kdWxlICptb2QsXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtMjIyLX1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6MjIzOiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0UgKi9cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtMjI0LVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTIyNz12b2lkIHByZXBhcmVfZnRyYWNlX3JldHVybih1bnNpZ25lZCBsb25nICpwYXJlbnQsIHVuc2lnbmVkIGxvbmcgc2VsZl9hZGRyLFxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTI3My1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6Mjc0OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtMjc1LWV4dGVybiB1bnNpZ25lZCBsb25nIGZ0cmFjZV9ncmFwaF9jYWxsO1xcbi0tXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTI5ND1zdGF0aWMgaW50IGZ0cmFjZV9tb2RpZnlfZ3JhcGhfY2FsbGVyKGJvb2wgZW5hYmxlKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTMwMS1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6MzAyOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTMwMy1cXHRpZiAoIXJldClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYz0zMTg9aW50IGZ0cmFjZV9kaXNhYmxlX2Z0cmFjZV9ncmFwaF9jYWxsZXIodm9pZClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0zMjEtfVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYzozMjI6I2VuZGlmIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRSAqL1xcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0zMjMtI2VuZGlmIC8qIENPTkZJR19GVU5DVElPTl9HUkFQSF9UUkFDRVIgKi9cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9tb2R1bGUtcGx0cy5jPTI0PXN0YXRpYyBjb25zdCB1MzIgZml4ZWRfcGx0c1tdID0ge1xcbmFyY2gvYXJtL2tlcm5lbC9tb2R1bGUtcGx0cy5jOjI1OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2FybS9rZXJuZWwvbW9kdWxlLXBsdHMuYy0yNi1cXHRGVFJBQ0VfQUREUixcXG4tLVxcbmFyY2gvYXJtNjQvTWFrZWZpbGU9MTQxPUNIRUNLRkxBR1NcXHQrPSAtRF9fYWFyY2g2NF9fXFxuYXJjaC9hcm02NC9NYWtlZmlsZS0xNDItXFxuYXJjaC9hcm02NC9NYWtlZmlsZToxNDM6aWZlcSAoJChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QUykseSlcXG5hcmNoL2FybTY0L01ha2VmaWxlLTE0NC0gIEtCVUlMRF9DUFBGTEFHUyArPSAtRENDX1VTSU5HX1BBVENIQUJMRV9GVU5DVElPTl9FTlRSWVxcbmFyY2gvYXJtNjQvTWFrZWZpbGUtMTQ1LSAgQ0NfRkxBR1NfRlRSQUNFIDo9IC1mcGF0Y2hhYmxlLWZ1bmN0aW9uLWVudHJ5PTQsMlxcbmFyY2gvYXJtNjQvTWFrZWZpbGU6MTQ2OmVsc2UgaWZlcSAoJChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTKSx5KVxcbmFyY2gvYXJtNjQvTWFrZWZpbGUtMTQ3LSAgS0JVSUxEX0NQUEZMQUdTICs9IC1EQ0NfVVNJTkdfUEFUQ0hBQkxFX0ZVTkNUSU9OX0VOVFJZXFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTE5NTk9Q09ORklHX0RFQlVHX0ZTPXlcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTk2MS0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE5NjI6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTE5NjMtQ09ORklHX0NPUkVTSUdIVD1tXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE0LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg6MTU6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0FSR1NcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE2LSNkZWZpbmUgQVJDSF9TVVBQT1JUU19GVFJBQ0VfT1BTIDFcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg9NTU9dW5zaWduZWQgbG9uZyBhcmNoX2Z0cmFjZV9nZXRfc3ltYWRkcih1bnNpZ25lZCBsb25nIGZlbnRyeV9pcCk7XFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTU3LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg6NTg6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0FSR1NcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTU5LSNkZWZpbmUgSEFWRV9BUkNIX0ZUUkFDRV9SRUdTXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oPTcxPXN0cnVjdCBfX2FyY2hfZnRyYWNlX3JlZ3Mge1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC03NC1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oOjc1OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTc2LVxcdHVuc2lnbmVkIGxvbmcgZGlyZWN0X3RyYW1wO1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaD0xNzI9dm9pZCBmdHJhY2VfZ3JhcGhfZnVuYyh1bnNpZ25lZCBsb25nIGlwLCB1bnNpZ25lZCBsb25nIHBhcmVudF9pcCxcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmgtMTc1LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg6MTc2OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE3Ny1zdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9mdHJhY2Vfc2V0X2RpcmVjdF9jYWxsZXIoc3RydWN0IGZ0cmFjZV9yZWdzICpmcmVncyxcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmgtMTg1LX1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oOjE4NjojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTICovXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC0xODctXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21vZHVsZS5oPTE2PXN0cnVjdCBtb2RfYXJjaF9zcGVjaWZpYyB7XFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21vZHVsZS5oLTE5LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW9kdWxlLmg6MjA6XFx0LyogZm9yIENPTkZJR19EWU5BTUlDX0ZUUkFDRSAqL1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW9kdWxlLmgtMjEtXFx0c3RydWN0IHBsdF9lbnRyeVxcdCpmdHJhY2VfdHJhbXBvbGluZXM7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jPTI3PWludCBtYWluKHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTgyLSAgQkxBTksoKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jOjgzOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTXFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy04NC0gIERFRklORShGUkVHU19YMCxcXHRcXHRvZmZzZXRvZihzdHJ1Y3QgX19hcmNoX2Z0cmFjZV9yZWdzLCByZWdzWzBdKSk7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTkyLSAgREVGSU5FKEZSRUdTX1BDLFxcdFxcdG9mZnNldG9mKHN0cnVjdCBfX2FyY2hfZnRyYWNlX3JlZ3MsIHBjKSk7XFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYzo5MzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy05NC0gIERFRklORShGUkVHU19ESVJFQ1RfVFJBTVAsXFx0b2Zmc2V0b2Yoc3RydWN0IF9fYXJjaF9mdHJhY2VfcmVncywgZGlyZWN0X3RyYW1wKSk7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE4Mi0gIEJMQU5LKCk7XFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYzoxODM6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xcbmFyY2gvYXJtNjQva2VybmVsL2FzbS1vZmZzZXRzLmMtMTg0LSAgREVGSU5FKEZUUkFDRV9PUFNfRElSRUNUX0NBTEwsXFx0b2Zmc2V0b2Yoc3RydWN0IGZ0cmFjZV9vcHMsIGRpcmVjdF9jYWxsKSk7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoxNjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTE3LS8qXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0zNj1TWU1fQ09ERV9TVEFSVChmdHJhY2VfY2FsbGVyKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMzgtXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6Mzk6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0NBTExfT1BTXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtNDAtXFx0LypcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTUzLVxcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TOjU0OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy01NS1cXHQvKlxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtNzYtXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6Nzc6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTc4LVxcdHN0clxcdHh6ciwgW3NwLCAjRlJFR1NfRElSRUNUX1RSQU1QXVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTAxLVxcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TOjEwMjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQ0FMTF9PUFNcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xMDMtXFx0bW92XFx0eDIsIHgxMVxcdFxcdFxcdFxcdFxcdC8vIG9wXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0xMTA9U1lNX0lOTkVSX0xBQkVMKGZ0cmFjZV9jYWxsLCBTWU1fTF9HTE9CQUwpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xMjgtXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTI5OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xMzAtXFx0bGRyXFx0eDE3LCBbc3AsICNGUkVHU19ESVJFQ1RfVFJBTVBdXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNDItXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTQzOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNDQtU1lNX0lOTkVSX0xBQkVMKGZ0cmFjZV9jYWxsZXJfZGlyZWN0X2xhdGUsIFNZTV9MX0xPQ0FMKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM9MTYxPVNZTV9JTk5FUl9MQUJFTChmdHJhY2VfY2FsbGVyX2RpcmVjdCwgU1lNX0xfTE9DQUwpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNjgtXFx0YnJcXHR4MTdcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoxNjk6I2VuZGlmIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMUyAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTE3MC1TWU1fQ09ERV9FTkQoZnRyYWNlX2NhbGxlcilcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNzEtXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTcyOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNzMtU1lNX0NPREVfU1RBUlQoZnRyYWNlX3N0dWJfZGlyZWN0X3RyYW1wKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM9MTc4PVNZTV9DT0RFX0VORChmdHJhY2Vfc3R1Yl9kaXJlY3RfdHJhbXApXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTc5OiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFMgKi9cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xODAtXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTgxOiNlbHNlIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0FSR1MgKi9cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xODItXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0zMTI9U1lNX0ZVTkNfRU5EKGZ0cmFjZV9ncmFwaF9jYWxsZXIpXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMzEzLSNlbmRpZiAvKiBDT05GSUdfRlVOQ1RJT05fR1JBUEhfVFJBQ0VSICovXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MzE0OiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTICovXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMzE1LVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMTktXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6MjA6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0FSR1NcXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy0yMS1zdHJ1Y3QgZnJlZ3Nfb2Zmc2V0IHtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTYzPXVuc2lnbmVkIGxvbmcgZnRyYWNlX2NhbGxfYWRqdXN0KHVuc2lnbmVkIGxvbmcgYWRkcilcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTY4LVxcdCAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjY5OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTKSlcXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy03MC1cXHRcXHRyZXR1cm4gYWRkcjtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTkwLVxcdCAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjkxOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QUykpXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtOTItXFx0XFx0cmV0dXJuIGFkZHIgKyBBQVJDSDY0X0lOU05fU0laRTtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTE0Nz11bnNpZ25lZCBsb25nIGFyY2hfZnRyYWNlX2dldF9zeW1hZGRyKHVuc2lnbmVkIGxvbmcgZmVudHJ5X2lwKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMTY4LVxcdCAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjE2OTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQ0FMTF9PUFMpKVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTE3MC1cXHRcXHRyZXR1cm4gZmVudHJ5X2lwIC0gQUFSQ0g2NF9JTlNOX1NJWkU7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYz0yNDI9aW50IGZ0cmFjZV91cGRhdGVfZnRyYWNlX2Z1bmMoZnRyYWNlX2Z1bmNfdCBmdW5jKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMjUwLVxcdCAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjI1MTpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QUykpXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMjUyLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM9Mjk1PXN0YXRpYyBib29sIGZ0cmFjZV9maW5kX2NhbGxhYmxlX2FkZHIoc3RydWN0IGR5bl9mdHJhY2UgKnJlYyxcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTM1MS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYzozNTI6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0NBTExfT1BTXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMzUzLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnRyYWNlX29wcyAqYXJtNjRfcmVjX2dldF9vcHMoc3RydWN0IGR5bl9mdHJhY2UgKnJlYylcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTM5Mz1pbnQgZnRyYWNlX21ha2VfY2FsbChzdHJ1Y3QgZHluX2Z0cmFjZSAqcmVjLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy00MTEtXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6NDEyOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QU1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTQxMy1pbnQgZnRyYWNlX21vZGlmeV9jYWxsKHN0cnVjdCBkeW5fZnRyYWNlICpyZWMsIHVuc2lnbmVkIGxvbmcgb2xkX2FkZHIsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy00MzYtXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6NDM3OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNDM4LS8qXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYz00ODE9aW50IGZ0cmFjZV9tYWtlX25vcChzdHJ1Y3QgbW9kdWxlICptb2QsIHN0cnVjdCBkeW5fZnRyYWNlICpyZWMsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy01MDItXFx0ICovXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6NTAzOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTKSBcXHUwMDI2XFx1MDAyNiBtb2QpXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNTA0LVxcdFxcdHJldHVybiBhYXJjaDY0X2luc25fcGF0Y2hfdGV4dF9ub3N5bmMoKHZvaWQgKilwYywgbmV3KTtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTUyNz12b2lkIHByZXBhcmVfZnRyYWNlX3JldHVybih1bnNpZ25lZCBsb25nIHNlbGZfYWRkciwgdW5zaWduZWQgbG9uZyAqcGFyZW50LFxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNTQ4LVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjU0OTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTU1MC12b2lkIGZ0cmFjZV9ncmFwaF9mdW5jKHVuc2lnbmVkIGxvbmcgaXAsIHVuc2lnbmVkIGxvbmcgcGFyZW50X2lwLFxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM9NTk0PWludCBmdHJhY2VfZGlzYWJsZV9mdHJhY2VfZ3JhcGhfY2FsbGVyKHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy01OTctfVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjU5ODojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHUyAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTU5OS0jZW5kaWYgLyogQ09ORklHX0ZVTkNUSU9OX0dSQVBIX1RSQUNFUiAqL1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmM9NDUyPXN0YXRpYyBpbnQgbW9kdWxlX2luaXRfZnRyYWNlX3BsdChjb25zdCBFbGZfRWhkciAqaGRyLFxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmMtNDU1LXtcXG5hcmNoL2FybTY0L2tlcm5lbC9tb2R1bGUuYzo0NTY6I2lmIGRlZmluZWQoQ09ORklHX0RZTkFNSUNfRlRSQUNFKVxcbmFyY2gvYXJtNjQva2VybmVsL21vZHVsZS5jLTQ1Ny1cXHRjb25zdCBFbGZfU2hkciAqcztcXG4tLVxcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUz05Mj1FTkQoZnRyYWNlX3N0dWIpXFxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TLTkzLVxcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUzo5NDojaWZuZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRVxcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy05NS1FTlRSWShfbWNvdW50KVxcbi0tXFxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TPTEzMj1FTkQoX21jb3VudClcXG5hcmNoL2Nza3kvYWJpdjIvbWNvdW50LlM6MTMzOiNlbHNlIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRSAqL1xcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy0xMzQtRU5UUlkoX21jb3VudClcXG4tLVxcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUz0xNjE9RU5EUFJPQyhmdHJhY2VfY2FsbGVyKVxcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUzoxNjI6I2VuZGlmIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRSAqL1xcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy0xNjMtXFxuLS1cXG5hcmNoL2Nza3kvYWJpdjIvbWNvdW50LlM9MTgyPUVORChyZXR1cm5fdG9faGFuZGxlcilcXG4tLVxcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy0xODQtXFxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TOjE4NTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy0xODYtRU5UUlkoZnRyYWNlX3JlZ3NfY2FsbGVyKVxcbi0tXFxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TPTIxMD1FTkRQUk9DKGZ0cmFjZV9yZWdzX2NhbGxlcilcXG5hcmNoL2Nza3kvYWJpdjIvbWNvdW50LlM6MjExOiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0UgKi9cXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmMtOC1cXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jOjk6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRVxcbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmMtMTAtXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jPTEyNz1pbnQgZnRyYWNlX3VwZGF0ZV9mdHJhY2VfZnVuYyhmdHJhY2VfZnVuY190IGZ1bmMpXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jLTEzNS19XFxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYzoxMzY6I2VuZGlmIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRSAqL1xcbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmMtMTM3LVxcbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmM6MTM4OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xMzktaW50IGZ0cmFjZV9tb2RpZnlfY2FsbChzdHJ1Y3QgZHluX2Z0cmFjZSAqcmVjLCB1bnNpZ25lZCBsb25nIG9sZF9hZGRyLFxcbi0tXFxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYz0xNDc9dm9pZCBwcmVwYXJlX2Z0cmFjZV9yZXR1cm4odW5zaWduZWQgbG9uZyAqcGFyZW50LCB1bnNpZ25lZCBsb25nIHNlbGZfYWRkcixcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmMtMTg1LVxcbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmM6MTg2OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jLTE4Ny1pbnQgZnRyYWNlX2VuYWJsZV9mdHJhY2VfZ3JhcGhfY2FsbGVyKHZvaWQpXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jPTE5Mz1pbnQgZnRyYWNlX2Rpc2FibGVfZnRyYWNlX2dyYXBoX2NhbGxlcih2b2lkKVxcbi0tXFxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xOTctfVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjo1MC4xMDM1MjQyOTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAxODI2MjQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIFRyYW1wb2xpbmUgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgaGVyZS4gSSBzZWUgd2UncmUgZGVhbGluZyB3aXRoIGBDT05GSUdfQlBGX1NZU0NBTExgLCBgQ09ORklHX0ZUUkFDRWAsIGFuZCBgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYC4gVGhhdCBsYXN0IG9uZSwgZW5hYmxpbmcgZGlyZWN0IGNhbGxzIGZvciB0cmFtcG9saW5lcywgY2F0Y2hlcyBteSBleWUuIEhvbGQgb24sIGBicGZfdHJhbXBvbGluZV91cGRhdGVgIHNlZW1zIHRvIHNwZWNpZmljYWxseSB1c2UgKmJvdGgqIGBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgIGFuZCBgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfSk1QYC4gSG1tLCB0aGF0IHNlZW1zIG9kZC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gd2hhdCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgIHJlYWxseSBkb2VzLiBJIHNob3VsZCBjaGVjayBlaXRoZXIgYGtlcm5lbC9icGYvS2NvbmZpZ2Agb3IgYGtlcm5lbC90cmFjZS9LY29uZmlnYCB0byBiZSBjZXJ0YWluLiBXYWl0LCBsZXQncyBzdGVwIGJhY2sgYSBtb21lbnQgYW5kIHJlY29uc2lkZXIuIE1heWJlIGBCUEZfU1lTQ0FMTGAgYW5kIGBGVU5DVElPTl9UUkFDRVJgIGFsb25lIGFyZSBzdWZmaWNpZW50IGZvciBub3cuIEknbSBvdmVydGhpbmtpbmcgdGhpcy5cblxuQWgsIGJ1dCB0aGVyZSdzIG1vcmUgdG8gaXQuIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItXHUwMDNlZmxhZ3MpYCBpcyBlbXBsb3llZCBpbiBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYC4gVGhhdCdzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29udHJvbHMgdGhlIHVzZSBvZiBgYnBmX3RyYW1wb2xpbmVfdXNlX2ptcGAuIFNvIG5vdyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRlZmluaXRpb24gb2YgYGJwZl90cmFtcG9saW5lX3VzZV9qbXBgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDUwOSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjo1NS4xMjE3ODk0NTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzM2ODc5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3RyYW1wb2xpbmVfdXNlX2ptcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9Mjk5Nj1zdGF0aWMgdm9pZCBzYXZlX2FyZ3MoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1OCAqKnByb2csXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMjk5OS1cXHRpbnQgYXJnX3JlZ3MsIGZpcnN0X29mZiA9IDAsIG5yX3JlZ3MgPSAwLCBucl9zdGFja19zbG90cyA9IDA7XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjMwMDA6XFx0Ym9vbCB1c2Vfam1wID0gYnBmX3RyYW1wb2xpbmVfdXNlX2ptcChmbGFncyk7XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTMwMDEtXFx0aW50IGksIGo7XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MzM0Nj1zdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICpyd19pbWFnZSxcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNDQ3LVxcdFxcdCAqL1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNDQ4OlxcdFxcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKGZsYWdzKSkge1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNDQ5LVxcdFxcdFxcdC8qIG5vIHJpcCBpbiB0aGUgXFxcImptcFxcXCIgY2FzZSAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0xMzMzPWJwZl90cmFtcG9saW5lX2V4aXRfdCBicGZfdHJhbXBvbGluZV9leGl0KGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzMzUtI2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0pNUFxcbmluY2x1ZGUvbGludXgvYnBmLmg6MTMzNjpzdGF0aWMgaW5saW5lIGJvb2wgYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh1NjQgZmxhZ3MpXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMzM3LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTM0MC0jZWxzZVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MTM0MTpzdGF0aWMgaW5saW5lIGJvb2wgYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh1NjQgZmxhZ3MpXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMzQyLXtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTIzNz1zdGF0aWMgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoX2Zyb21faXAoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdm9pZCAqcHRyKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMjQ3LVxcdFxcdHJldHVybiBOVUxMO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjI0ODpcXHRpZiAoYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh0ci1cXHUwMDNlZmxhZ3MpKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTI0OS1cXHRcXHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0zMTc9c3RhdGljIGludCBkaXJlY3Rfb3BzX2FkZChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB2b2lkICpwdHIpXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0zMjItXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MzIzOlxcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVxcdTAwM2VmbGFncykpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMzI0LVxcdFxcdGFkZHIgPSBmdHJhY2Vfam1wX3NldChhZGRyKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTMzNz1zdGF0aWMgaW50IGRpcmVjdF9vcHNfbW9kKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHZvaWQgKnB0ciwgYm9vbCBsb2NrX2RpcmVjdF9tdXRleClcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTM0MS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzozNDI6XFx0aWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItXFx1MDAzZWZsYWdzKSlcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0zNDMtXFx0XFx0YWRkciA9IGZ0cmFjZV9qbXBfc2V0KGFkZHIpO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDExPXN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlX2ZlbnRyeShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncyxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQxOC1cXHRcXHRuZXdfdCA9IEJQRl9NT0RfTk9QO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjQxOTpcXHRlbHNlIGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVxcdTAwM2VmbGFncykpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDIwLVxcdFxcdG5ld190ID0gQlBGX01PRF9KVU1QO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDIzLVxcdFxcdG9sZF90ID0gQlBGX01PRF9OT1A7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDI0OlxcdGVsc2UgaWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAob3JpZ19mbGFncykpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDI1LVxcdFxcdG9sZF90ID0gQlBGX01PRF9KVU1QO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTUzMD1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcHRyKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTUzNS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTM2OlxcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVxcdTAwM2VmbGFncykpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTUzNy1cXHRcXHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTQ1PXN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKnB0cilcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NTAtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU1MTpcXHRpZiAoYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh0ci1cXHUwMDNlZmxhZ3MpKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NTItXFx0XFx0YWRkciA9IGZ0cmFjZV9qbXBfc2V0KGFkZHIpO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTU1OT1zdGF0aWMgaW50IG1vZGlmeV9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU2NS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTY2OlxcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVxcdTAwM2VmbGFncykpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU2Ny1cXHRcXHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIyOjU2Ljc1NTQ4MzY3MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTMwMjA3Nzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgRHluYW1pYyBUcmFjaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2Uga2VybmVsIGNvbmZpZ3VyYXRpb25zOiBgQlBGX1NZU0NBTExgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVBgLCBhbmQganVzdCBwbGFpbiBvbGQgYEZUUkFDRWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyB6ZXJvIGluIG9uIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGF0IHRoaXMgKmlzKiBhY3R1YWxseSBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdpdGhpbiB0aGlzIHNwZWNpZmljIGtlcm5lbCBidWlsZCBlbnZpcm9ubWVudC4gSXQncyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgY2FwYWJpbGl0aWVzIGZvciBkeW5hbWljIHRyYWNpbmcgYW5kIGhvdyB0byBiZXN0IGFwcHJvYWNoIHRoZSBpbnN0cnVtZW50YXRpb24gc3RyYXRlZ3kuIE5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgaXTigJlzIGRlZmluZWQgYW5kIHN1cHBvcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1MzAsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjo1OS42ODU2OTM5MTlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjcwODU5MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTMyND1jb25maWcgRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0zMjgtXFxua2VybmVsL3RyYWNlL0tjb25maWc6MzI5OmNvbmZpZyBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTMzMC1cXHRkZWZfYm9vbCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIzOjAxLjU1Mjc4NjE0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc5NTQ0MTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSdtIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBGdHJhY2UgTGFuZHNjYXBlKipcblxuWWVzLCB0aGF0J3MgZXhhY3RseSByaWdodC4gVGhlIHNpdHVhdGlvbiBpcyBhcyBJIGV4cGVjdGVkIGl0IHRvIGJlLlxuXG5Ob3csIGxldCdzIHNlZS4uLiBhbmQgd2hhdCBhYm91dCB0aGUgYERZTkFNSUNfRlRSQUNFX1dJVEhfSk1QYCBvcHRpb24gaW4gcmVsYXRpb24gdG8gdGhpcz8gVGhhdCdzIHRoZSBuZXh0IGtleSBmYWN0b3IgdG8gYXNzZXNzLiBHb3R0YSBrZWVwIHRoYXQgaW4gbWluZCwgaXRzIGltcGxpY2F0aW9ucyBhcmUgc2lnbmlmaWNhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODU2LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6MDQuNDMyMzMyMDE2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk0NzM0NDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEWU5BTUlDX0ZUUkFDRV9XSVRIX0pNUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvS2NvbmZpZz0zMzg9Y29uZmlnIERZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctMzQyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjM0Mzpjb25maWcgRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVBcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0zNDQtXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMzowNi4xMjcwNzE3MzFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA1Mjg2MjY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKktlcm5lbCBUcmFjaW5nIENvbmZpZ3VyYXRpb24gLSBBIFF1aWNrIENoZWNrKipcblxuUmlnaHQsICp5ZXMqLiBUaW1lIHRvIHNvbGlkaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlc2UgdHJhY2luZyBjb25maWd1cmF0aW9ucy4gYEJQRl9TWVNDQUxMYCwgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYCwgYERZTkFNSUNfRlRSQUNFX1dJVEhfSk1QYCwgdGhvc2UgYWxsIHNlZW0gbGlrZSBzdHJvbmcgY2FuZGlkYXRlcyBmb3IgYSByb2J1c3QgdHJhY2luZyBzZXR1cC4gQnV0IGhhbmcgb24gYSBzZWNvbmQuLi4gYEZUUkFDRWAgaXNuJ3QgYSAqY29uZmlnKiBpdHNlbGYsIGlzIGl0PyBJdOKAmXMgbW9yZSBvZiBhIGdlbmVyYWwgdGVybSBlbmNvbXBhc3NpbmcgZmVhdHVyZXMgbGlrZSBgRlVOQ1RJT05fVFJBQ0VSYCBvciBgRFlOQU1JQ19GVFJBQ0VgLiBJIG5lZWQgdG8gYmUgcHJlY2lzZSBoZXJlLlxuXG5UbyBjb25maXJtIGFuZCBwaW5wb2ludCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIEkgc2hvdWxkIGltbWVkaWF0ZWx5IGNvbnN1bHQgYGtlcm5lbC90cmFjZS9LY29uZmlnYC4gVGhhdCdzIHRoZSBkZWZpbml0aXZlIHNvdXJjZS4gSSdsbCBoZWFkIG92ZXIgdGhlcmUgdG8gdmVyaWZ5IHdoYXQncyB3aGF0IGFuZCBlbnN1cmUgSSdtIHVzaW5nIHRoZSBjb3JyZWN0IHRlcm1pbm9sb2d5IHdoZW4gZGlzY3Vzc2luZyBGdHJhY2UncyBidWlsZGluZyBibG9ja3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDg5LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6MTAuMTc5OTQxNTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzE5NjQyNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZUUkFDRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvS2NvbmZpZz0xOTg9Y29uZmlnIFRSQUNJTkdfU1VQUE9SVFxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctMjAzLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjIwNDptZW51Y29uZmlnIEZUUkFDRVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTIwNS1cXHRib29sIFxcXCJUcmFjZXJzXFxcIlxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWc9NTg4PWNvbmZpZyBFTkFCTEVfREVGQVVMVF9UUkFDRVJTXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy01OTYtXFxua2VybmVsL3RyYWNlL0tjb25maWc6NTk3OmNvbmZpZyBGVFJBQ0VfU1lTQ0FMTFNcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy01OTgtXFx0Ym9vbCBcXFwiVHJhY2Ugc3lzY2FsbHNcXFwiXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz04Njg9Y29uZmlnIEJQRl9LUFJPQkVfT1ZFUlJJREVcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg3Ni1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4Nzc6Y29uZmlnIEZUUkFDRV9NQ09VTlRfVVNFX1BBVENIQUJMRV9GVU5DVElPTl9FTlRSWVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg3OC1cXHRib29sXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04ODAtXFxua2VybmVsL3RyYWNlL0tjb25maWc6ODgxOmNvbmZpZyBGVFJBQ0VfTUNPVU5UX1VTRV9DQ1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg4Mi1cXHRkZWZfYm9vbCB5XFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04ODYtXFxua2VybmVsL3RyYWNlL0tjb25maWc6ODg3OmNvbmZpZyBGVFJBQ0VfTUNPVU5UX1VTRV9PQkpUT09MXFxua2VybmVsL3RyYWNlL0tjb25maWctODg4LVxcdGRlZl9ib29sIHlcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg5NC1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4OTU6Y29uZmlnIEZUUkFDRV9NQ09VTlRfVVNFX1JFQ09SRE1DT1VOVFxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg5Ni1cXHRkZWZfYm9vbCB5XFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz0xMDIxPWNvbmZpZyBUUkFDRV9FVkFMX01BUF9GSUxFXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMDQ4LVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjEwNDk6Y29uZmlnIEZUUkFDRV9SRUNPUkRfUkVDVVJTSU9OXFxua2VybmVsL3RyYWNlL0tjb25maWctMTA1MC1cXHRib29sIFxcXCJSZWNvcmQgZnVuY3Rpb25zIHRoYXQgcmVjdXJzZSBpbiBmdW5jdGlvbiB0cmFjaW5nXFxcIlxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctMTA2Mi1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoxMDYzOmNvbmZpZyBGVFJBQ0VfUkVDT1JEX1JFQ1VSU0lPTl9TSVpFXFxua2VybmVsL3RyYWNlL0tjb25maWctMTA2NC1cXHRpbnQgXFxcIk1heCBudW1iZXIgb2YgcmVjdXJzZWQgZnVuY3Rpb25zIHRvIHJlY29yZFxcXCJcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTEwNzMtXFxua2VybmVsL3RyYWNlL0tjb25maWc6MTA3NDpjb25maWcgRlRSQUNFX1ZBTElEQVRFX1JDVV9JU19XQVRDSElOR1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTEwNzUtXFx0Ym9vbCBcXFwiVmFsaWRhdGUgUkNVIGlzIG9uIGR1cmluZyBmdHJhY2UgZXhlY3V0aW9uXFxcIlxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWc9MTEwMT1jb25maWcgR0NPVl9QUk9GSUxFX0ZUUkFDRVxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctMTExMi1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoxMTEzOmNvbmZpZyBGVFJBQ0VfU0VMRlRFU1RcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMTE0LVxcdGJvb2xcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMTE1LVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjExMTY6Y29uZmlnIEZUUkFDRV9TVEFSVFVQX1RFU1RcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMTE3LVxcdGJvb2wgXFxcIlBlcmZvcm0gYSBzdGFydHVwIHRlc3Qgb24gZnRyYWNlXFxcIlxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWc9MTEzNj1jb25maWcgRVZFTlRfVFJBQ0VfVEVTVF9TWVNDQUxMU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctMTE0Ny1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoxMTQ4OmNvbmZpZyBGVFJBQ0VfU09SVF9TVEFSVFVQX1RFU1RcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMTQ5LSAgICAgICBib29sIFxcXCJWZXJpZnkgY29tcGlsZSB0aW1lIHNvcnRpbmcgb2YgZnRyYWNlIGZ1bmN0aW9uc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6MTEuODUxOTEzMzk3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NzE5NTgwNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIFRyYWNpbmcgQ29uZmlndXJhdGlvbiBFeHBsb3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgYmFjayBpbnRvIHRoaXMga2VybmVsIHRyYWNpbmcgc2V0dXAuIFJpZ2h0LCBmaXJzdCB0aGluZ3MgZmlyc3Q6IGBGVFJBQ0VgIGlzIGp1c3QgdGhlIHRvcC1sZXZlbCBtZW51Y29uZmlnLCBidXQgdGhlIHJlYWwgcGxheWVycyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlIGBGVU5DVElPTl9UUkFDRVJgIGFuZCBgRFlOQU1JQ19GVFJBQ0VgLiBUaG9zZSBhcmUgdGhlIGFjdHVhbCBlbmFibGluZyBjb25maWd1cmF0aW9ucy4gQW5kLCBvZiBjb3Vyc2UsIGBCUEZfU1lTQ0FMTGAg4oCTIHRoYXQncyB0aGUgYmlnIG9uZS5cblxuTm93LCB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGhlcmU/IExldCdzIHNlZS4uLiBJJ20gdGhpbmtpbmcgSSBzaG91bGQgcmVhbGx5IHplcm8gaW4gb24gYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGFuZCBgbW9kaWZ5X2ZlbnRyeV9tdWx0aWAuIFRob3NlIHNlZW0gbGlrZSB0aGUgY29yZSBvcGVyYXRpb25zIGZvciBtYW5hZ2luZyB0aGVzZSBgZmVudHJ5YCB0cmFjaW5nIGluc3RhbmNlcy4gQWxzbywgSSBzaG91bGQgY2hlY2sgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAgYW5kIGBicGZfdHJhbXBvbGluZV91cGRhdGVfZmVudHJ5YCBhcyB0aGV5IGFyZSByZWxhdGVkLlxuXG5PbiB0aGUgbGliYnBmIHNpZGUsIGBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNpbmdfbXVsdGlgIGlzIGxpa2VseSBpbnZvbHZlZCwgYnV0IHRoZSBrZXJuZWwtc2lkZSBlcXVpdmFsZW50Li4uIGxldCdzIHNlZSwgaXQncyBwcm9iYWJseSBzb21ldGhpbmcgbGlrZSBgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2hgIG9yIGEgc2ltaWxhciBmdW5jdGlvbiwgaGFuZGxpbmcgdGhlIGFjdHVhbCBhdHRhY2guXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBzb3VyY2UuIEknbSBnb2luZyB0byBqdW1wIGludG8gYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBhbmQgc3BlY2lmaWNhbGx5IGxvb2sgZm9yIGhvdyB0aGUgYGZlbnRyeS5tdWx0aWAgYXR0YWNobWVudHMgYXJlIGhhbmRsZWQuIEkgYmV0IHRoZSBwbHVtYmluZyBpcyBhbGwgaW4gdGhlcmUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyMzAsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6MTcuODIzODczNDc2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjkyMzQxMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFjaW5nX3Byb2dfYXR0YWNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvc3lzY2FsbC5jPTM2MDM9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfbGlua19vcHMgYnBmX3RyYWNpbmdfbGlua19sb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzYwOS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozNjEwOnN0YXRpYyBpbnQgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM2MTEtXFx0XFx0XFx0XFx0ICAgaW50IHRndF9wcm9nX2ZkLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9NDI3Mz1zdGF0aWMgaW50IGJwZl9yYXdfdHBfbGlua19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDI5Ny1cXHRcXHR9XFxua2VybmVsL2JwZi9zeXNjYWxsLmM6NDI5ODpcXHRcXHRyZXR1cm4gYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2gocHJvZywgMCwgMCwgMCwgYXR0YWNoX3R5cGUpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQyOTktXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTc2NT1zdGF0aWMgaW50IGxpbmtfY3JlYXRlKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU3OTUtXFx0Y2FzZSBCUEZfUFJPR19UWVBFX0VYVDpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1Nzk2OlxcdFxcdHJldCA9IGJwZl90cmFjaW5nX3Byb2dfYXR0YWNoKHByb2csXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTc5Ny1cXHRcXHRcXHRcXHRcXHQgICAgICBhdHRyLVxcdTAwM2VsaW5rX2NyZWF0ZS50YXJnZXRfZmQsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE3LVxcdFxcdGVsc2VcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1ODE4OlxcdFxcdFxcdHJldCA9IGJwZl90cmFjaW5nX3Byb2dfYXR0YWNoKHByb2csXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTgxOS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBhdHRyLVxcdTAwM2VsaW5rX2NyZWF0ZS50YXJnZXRfZmQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yZWN1cnNpdmVfYXR0YWNoLmM9OTk9dm9pZCB0ZXN0X3JlY3Vyc2l2ZV9mZW50cnkodm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3JlY3Vyc2l2ZV9hdHRhY2guYy0xMTAtICogXFxcInByb2ctXFx1MDAzZWF1eC1cXHUwMDNlZHN0X3RyYW1wb2xpbmUgYW5kIHRndF9wcm9nIGlzIE5VTExcXFwiIGJyYW5jaCBpblxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3JlY3Vyc2l2ZV9hdHRhY2guYzoxMTE6ICogYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2gpIGRvZXMgbm90IGxlYWQgdG8gYSBjcmFzaCBkdWUgdG8gbWlzc2luZyBhdHRhY2hfYnRmXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmVjdXJzaXZlX2F0dGFjaC5jLTExMi0gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6MTkuNTE2MjIwMjUxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NDE4NjM1NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBzaXR1YXRpb24gbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgYSBCUEYgVHJhY2Vwb2ludCBMaW5rKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gU29tZXRoaW5nJ3MgbmFnZ2luZyBhdCBtZSBhYm91dCB0aGlzIGBmZW50cnkubXVsdGlgIHRyYWNlcG9pbnQgSSdtIGxvb2tpbmcgYXQuIEknbSBwcmV0dHkgc3VyZSB0aGF0IGl0J3MgYmVpbmcgaG9va2VkIHVwIHVzaW5nIGBicGZfbGlua19jcmVhdGVgLCBwcm9iYWJseSB3aXRoIHNvbWV0aGluZyBsaWtlIGBCUEZfVFJBQ0VfRkVOVFJZX01VTFRJYCBvciBhIHNpbWlsYXIgZmxhZyBmb3IgbXVsdGlwbGUgZnVuY3Rpb24gZW50cnkgcG9pbnRzLiBSaWdodD9cblxuTGV0J3MgY29uZmlybSB0aGF0IGh5cG90aGVzaXMuIFRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIGF1dGhvcml0YXRpdmUgZGVmaW5pdGlvbiBhbmQgaGFuZGxpbmcgb2YgdGhpcyBpcyBnb2luZyB0byBiZSBpbiB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AuIEkgbmVlZCB0byB0cmFjayBkb3duIGhvdyBgbXVsdGlgIGlzIGhhbmRsZWQgaW4gcmVsYXRpb24gdG8gYGJwZl9saW5rX2NyZWF0ZWAgaW4gdGhhdCBmaWxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBkZWZpbml0aXZlIGFuc3dlciBvbiBob3cgdGhpcyB0cmFjZXBvaW50IGlzIGVzdGFibGlzaGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTMzOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIzOjI0LjI1ODA4NjM2N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3NjMzNTg4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03ODk9aW50IGJwZl91cHJvYmVfbXVsdGlfbGlua19hdHRhY2goY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo3OTA6aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKTtcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc5MS0jZWxzZVxcbi0tXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD04NDg9c3RhdGljIGlubGluZSBpbnRcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjg0OTpicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTg1MC17XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NzY1PXN0YXRpYyBpbnQgbGlua19jcmVhdGUodW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTgxNS1cXHRcXHRlbHNlIGlmIChpc190cmFjaW5nX211bHRpKHByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKSlcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1ODE2OlxcdFxcdFxcdHJldCA9IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChwcm9nLCBhdHRyKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE3LVxcdFxcdGVsc2VcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0zODE5PXN0YXRpYyBpbnQgY2hlY2tfZHVwX2lkcyh1MzIgKmlkcywgdTY0ICpjb29raWVzLCB1MzIgY250KVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM4MzktXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM4NDA6aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zODQxLXtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTI5LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozOTMwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkzMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIzOjI1LjkzNDQyNjg3M1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg0MzI3NTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW5pdGlhbCBFeHBsb3JhdGlvbiBvZiBCUEYgTXVsdGktQXR0YWNobWVudCoqXG5cblJpZ2h0LCBzbyBJJ20gc3RhcnRpbmcgYXQgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBtdWx0aS1hdHRhY2htZW50IGJ1c2luZXNzLiBUaGUga2V5IHNlZW1zIHRvIGJlIGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGxvb2sgYXQgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAgYW5kIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgIGFzIHBvdGVudGlhbCBjb250cmlidXRpbmcgZnVuY3Rpb25zLiBUaGUgZmlyc3Qgb25lIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpcyBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYCwgYW5kIEkga25vdyBmcm9tIHBhc3QgZXhwZXJpZW5jZSBpdCBzaG91bGQgYmUgaW4gYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AuIFRpbWUgdG8gZGlnIGluIHRoZXJlIGFuZCBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjExOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIzOjI4LjgxODc1NjUzNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwMDY3NTU5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03ODk9aW50IGJwZl91cHJvYmVfbXVsdGlfbGlua19hdHRhY2goY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo3OTA6aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKTtcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc5MS0jZWxzZVxcbi0tXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD04NDg9c3RhdGljIGlubGluZSBpbnRcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjg0OTpicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTg1MC17XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NzY1PXN0YXRpYyBpbnQgbGlua19jcmVhdGUodW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTgxNS1cXHRcXHRlbHNlIGlmIChpc190cmFjaW5nX211bHRpKHByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKSlcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1ODE2OlxcdFxcdFxcdHJldCA9IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChwcm9nLCBhdHRyKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE3LVxcdFxcdGVsc2VcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0zODE5PXN0YXRpYyBpbnQgY2hlY2tfZHVwX2lkcyh1MzIgKmlkcywgdTY0ICpjb29raWVzLCB1MzIgY250KVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM4MzktXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM4NDA6aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zODQxLXtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTI5LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozOTMwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkzMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIzOjMwLjQxOTQzOTAyNVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDYwNjQ1NzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBGdW5jdGlvbiBFbnRyeSBQb2ludCBNYW5hZ2VtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGtleSBmdW5jdGlvbnMgaGVyZTogYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGBtb2RpZnlfZmVudHJ5X211bHRpYCwgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAsIGFuZCBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYC4gVGhlc2UgYXJlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgbWFuYWdpbmcgZnVuY3Rpb24gZW50cnkgcG9pbnRzIHdpdGggQlBGLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgaW50ZXJhY3Rpb25zIHRob3JvdWdobHkuXG5cbkkgYWxzbyBzZWUgYSBmZXcgY3J1Y2lhbCBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgY2FyZWZ1bCBjb25zaWRlcmF0aW9uOiBgQlBGX1NZU0NBTExgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVBgLCBhbmQgYEZVTkNUSU9OX1RSQUNFUmAuIFxuXG5XYWl0IGEgbWludXRlLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgIGFuZCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVBgIGFyZSAqZGVmX2Jvb2wgeSogb24gc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuIE1lYW5pbmcgdGhleSBzaG91bGQgYmUgYXV0b21hdGljYWxseSBlbmFibGVkIGlmIHRoZSBhcmNoaXRlY3R1cmUgc3VwcG9ydHMgaXQuIFdlIGRvbid0IGhhdmUgdG8gZXhwbGljaXRseSBjb25maWd1cmUgdGhlbSwgYnV0IGl0IGlzbid0IGdvaW5nIHRvIGJlIGhhcm1mdWwgaWYgdGhleSBhcmUgYWxzbyBkZWZpbmVkLiBUaGF0J3MgZ29vZCB0byBrbm93LCBzaW1wbGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIHNvbWV3aGF0LiBIbW0sIEkgdGhpbmsgYEZQUk9CRWAgb3IgYEZUUkFDRWAgbWlnaHQgYWxzbyBjb21lIGludG8gcGxheSwgcG90ZW50aWFsbHksIGFuZCBjbGVhcmx5LCBgRlVOQ1RJT05fVFJBQ0VSYCBpcyB0aGUgbWFpbiBlbmFibGVyIGhlcmUuXG5cbkxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBrZXJuZWwvYnBmL0tjb25maWdgIGZpbGUsIEkgd2FudCB0byBtYWtlIHN1cmUgSSBoYXZlIGEgZ29vZCBncmFzcCBvbiBgQlBGX1NZU0NBTExgIOKAkyBuZWVkIHRvIGJlIGNyeXN0YWwgY2xlYXIgb24gaG93IHRoYXQncyB0aWVkIGludG8gdGhpcyB3aG9sZSBlY29zeXN0ZW0uIEdvdHRhIGVuc3VyZSBJJ20gZ2V0dGluZyB0aGUgY29tcGxldGUgcGljdHVyZSBvbiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjg1NywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMzozNi40ODAwODY2MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyOTQ0NTg3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMzozOC4xMDk1MzY5NDlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY0NjM2ODk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgaWYgSSdtIHRoaW5raW5nIGl0OlxuXG4qKlRyYWNpbmcgTXkgU3RlcHM6IEZ1bmN0aW9uIFRyYWNlciBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3RhdHVzIG9mIHRoZSBgRlVOQ1RJT05fVFJBQ0VSYC4gVGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIHRoZSBgS2NvbmZpZ2AgZmlsZSwgcGFydGljdWxhcmx5IHdpdGhpbiB0aGUgdHJhY2luZyBzdWJzeXN0ZW0uIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBpbnNpZ2h0IGludG8gd2hldGhlciB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBga2VybmVsL3RyYWNlL0tjb25maWdgLiBJdCdzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBhbmQgc2hvdWxkIGhhdmUgYWxsIHRoZSBhbnN3ZXJzLiBJIGV4cGVjdCB0aGF0IEknbGwgZmluZCBpdHMgZGVmaW5pdGlvbiBpbiBoZXJlLiBMZXQncyBnbyFcblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1MjksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMzo0MC43NTU5MDgwMTVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDY4OTc0MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZVTkNUSU9OX1RSQUNFUlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvS2NvbmZpZz0yMjY9Y29uZmlnIEJPT1RUSU1FX1RSQUNJTkdcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTIzNC1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoyMzU6Y29uZmlnIEZVTkNUSU9OX1RSQUNFUlxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTIzNi1cXHRib29sIFxcXCJLZXJuZWwgRnVuY3Rpb24gVHJhY2VyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMzo0Mi41MDI4MTE0OTZaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0ODY4MDU4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqRGVsdmluZyBpbnRvIEJQRiBUcmFjZXBvaW50cyoqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSB0cmFjaW5nIGhvb2tzIHdvcmssIGFuZCBpdCBsb29rcyBsaWtlIGBCUEZfU1lTQ0FMTGAgYW5kIGBGVU5DVElPTl9UUkFDRVJgIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kIGFzIEkgdHJhY2UgdGhpcy5cblxuSGFuZyBvbi4uLiBJJ20gbG9va2luZyBhdCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCwgYW5kIGl0J3MgZGVmaW5lZCBpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIG1ha2VzIG1lIHdvbmRlciBpZiBgdHJhbXBvbGluZS5jYCBpcyBjb21waWxlZCBjb25kaXRpb25hbGx5LiBJIG5lZWQgdG8gY2hlY2sgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gc2VlIGlmIHRob3NlIGNvbmZpZ3MgSSBtZW50aW9uZWQgaGF2ZSBhbiBpbXBhY3QgaGVyZS4gVGhpcyBtaWdodCBleHBsYWluIHNvbWUgb2YgdGhlIGNvbmRpdGlvbmFsIGJlaGF2aW9yIEkndmUgYmVlbiBzZWVpbmcuIEknbGwgbmVlZCB0byBmb2xsb3cgdGhhdCBsb2dpYyB0byBmdWxseSB1bmRlcnN0YW5kIHRoaXMgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3Nzk4LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6NDYuMjUxNDk0NDc0WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc3Njc5Mzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyYW1wb2xpbmUub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2xpdmVwYXRjaC9yZWxpYWJsZS1zdGFja3RyYWNlLnJzdD0xNzk9aW5mb3JtYXRpb24gaXMgbm90IGluIGEgY29uc2lzdGVudCBsb2NhdGlvbiBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBlbnRyeVxcbkRvY3VtZW50YXRpb24vbGl2ZXBhdGNoL3JlbGlhYmxlLXN0YWNrdHJhY2UucnN0OjE4MDp0cmFtcG9saW5lIG9yIHJldHVybiB0cmFtcG9saW5lLiBGb3IgZXhhbXBsZSwgY29uc2lkZXJpbmcgdGhlIHg4Nl82NFxcbkRvY3VtZW50YXRpb24vbGl2ZXBhdGNoL3JlbGlhYmxlLXN0YWNrdHJhY2UucnN0LTE4MS0ncmV0dXJuX3RvX2hhbmRsZXInIHJldHVybiB0cmFtcG9saW5lOlxcbi0tXFxuYXJjaC9hcmMvaW5jbHVkZS91YXBpL2FzbS9zaWduYWwuaC0xOC0gKiB3aGljaCBhbGxvd3Mgc2lncmV0dXJuIGJhc2VkIHJlLWVudHJ5IGludG8ga2VybmVsIGFmdGVyIGhhbmRsaW5nIHNpZ25hbC5cXG5hcmNoL2FyYy9pbmNsdWRlL3VhcGkvYXNtL3NpZ25hbC5oOjE5OiAqIFcvbyB0aGlzIGtlcm5lbCBuZWVkcyB0byBcXFwic3ludGhlc2l6ZVxcXCIgdGhlIHNpZ3JldHVybiB0cmFtcG9saW5lIG9uIHVzZXJcXG5hcmNoL2FyYy9pbmNsdWRlL3VhcGkvYXNtL3NpZ25hbC5oLTIwLSAqIG1vZGUgc3RhY2sgd2hpY2ggaW4gdHVybiBmb3JjZXMgdGhlIGZvbGxvd2luZzpcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19LUFJPQkVTKVxcdFxcdCs9IGtwcm9iZXMubyBkZWNvZGUtaW5zbi5vXFx0XFxcXFxcbmFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9NYWtlZmlsZTozOlxcdFxcdFxcdFxcdCAgIGtwcm9iZXNfdHJhbXBvbGluZS5vXFx0XFx0XFxcXFxcbmFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9NYWtlZmlsZS00LVxcdFxcdFxcdFxcdCAgIHNpbXVsYXRlLWluc24ub1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmM9MTQzND1zdGF0aWMgaW50IGdjc19zaWduYWxfZW50cnkoX19zaWdyZXN0b3JlX3Qgc2lndHJhbXAsIHN0cnVjdCBrc2lnbmFsICprc2lnKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmMtMTQ1MS1cXHQvKlxcbmFyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jOjE0NTI6XFx0ICogUHVzaCBhIGNhcCBhbmQgdGhlIEdDUyBlbnRyeSBmb3IgdGhlIHRyYW1wb2xpbmUgb250byB0aGUgR0NTLlxcbmFyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jLTE0NTMtXFx0ICovXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yNTUzPXN0YXRpYyB2b2lkIHN0b3JlX2Z1bmNfbWV0YShzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1NjQgZnVuY19tZXRhLCBpbnQgZnVuY19tZXRhX29mZilcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTI1NjYtICogICBtb3YgeDksIGxyXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MjU2NzogKiAgIGJsICBcXHUwMDNjYnBmX3RyYW1wb2xpbmUgb3IgcGx0XFx1MDAzZVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTI1NjgtICpcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvcHJvYmVzL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX0tQUk9CRVMpXFx0XFx0Kz0ga3Byb2Jlcy5vIGRlY29kZS1pbnNuLm8gc2ltdWxhdGUtaW5zbi5vXFxuYXJjaC9jc2t5L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfS1BST0JFUylcXHRcXHQrPSBrcHJvYmVzX3RyYW1wb2xpbmUub1xcbmFyY2gvY3NreS9rZXJuZWwvcHJvYmVzL01ha2VmaWxlLTQtb2JqLSQoQ09ORklHX0tQUk9CRVNfT05fRlRSQUNFKVxcdCs9IGZ0cmFjZS5vXFxuLS1cXG5hcmNoL2hleGFnb24va2VybmVsL01ha2VmaWxlPTc9b2JqLXkgKz0gc2V0dXAubyBpcnFfY3B1Lm8gdHJhcHMubyBzeXNjYWxsdGFiLm8gc2lnbmFsLm8gdGltZS5vXFxuYXJjaC9oZXhhZ29uL2tlcm5lbC9NYWtlZmlsZTo4Om9iai15ICs9IHByb2Nlc3MubyB0cmFtcG9saW5lLm8gcmVzZXQubyBwdHJhY2UubyB2ZHNvLm9cXG5hcmNoL2hleGFnb24va2VybmVsL01ha2VmaWxlLTktXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU9Mjk9aWZkZWYgQ09ORklHX0ZVTkNUSU9OX1RSQUNFUlxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL01ha2VmaWxlLTQwLSAgQ0ZMQUdTX1JFTU9WRV9yZXRob29rLm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU6NDE6ICBDRkxBR1NfUkVNT1ZFX3JldGhvb2tfdHJhbXBvbGluZS5vID0gJChDQ19GTEFHU19GVFJBQ0UpXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL01ha2VmaWxlLTQyLWVuZGlmXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU9NzY9b2JqLSQoQ09ORklHX0tQUk9CRVMpXFx0XFx0Kz0ga3Byb2Jlcy5vXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL01ha2VmaWxlOjc3Om9iai0kKENPTkZJR19SRVRIT09LKVxcdFxcdCs9IHJldGhvb2subyByZXRob29rX3RyYW1wb2xpbmUub1xcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9NYWtlZmlsZS03OC1vYmotJChDT05GSUdfVVBST0JFUylcXHRcXHQrPSB1cHJvYmVzLm9cXG4tLVxcbmFyY2gvbmlvczIva2VybmVsL3NpZ25hbC5jPTE4Mj1zdGF0aWMgaW50IHNldHVwX3J0X2ZyYW1lKHN0cnVjdCBrc2lnbmFsICprc2lnLCBzaWdzZXRfdCAqc2V0LFxcbi0tXFxuYXJjaC9uaW9zMi9rZXJuZWwvc2lnbmFsLmMtMjAzLVxcdC8qIFNldCB1cCB0byByZXR1cm4gZnJvbSB1c2Vyc3BhY2U7IGp1bXAgdG8gZml4ZWQgYWRkcmVzcyBzaWdyZXR1cm5cXG5hcmNoL25pb3MyL2tlcm5lbC9zaWduYWwuYzoyMDQ6XFx0ICAgdHJhbXBvbGluZSBvbiBrdXNlciBwYWdlLiAgKi9cXG5hcmNoL25pb3MyL2tlcm5lbC9zaWduYWwuYy0yMDUtXFx0cmVncy1cXHUwMDNlcmEgPSAodW5zaWduZWQgbG9uZykgKDB4MTA0NCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTUzNT1ib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNTM4LVxcdCAqIFRPRE86IFJlbW92ZSBhZnRlciB2YWxpZGF0aW5nIHN1cHBvcnRcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jOjUzOTpcXHQgKiBmb3IgZnNlc3Npb24gYW5kIHRyYW1wb2xpbmUgb24gcHBjMzIuXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01NDAtXFx0ICovXFxuLS1cXG5hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfS1BST0JFUylcXHRcXHQrPSBrcHJvYmVzLm8gZGVjb2RlLWluc24ubyBzaW11bGF0ZS1pbnNuLm9cXG5hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfUkVUSE9PSylcXHRcXHQrPSByZXRob29rLm8gcmV0aG9va190cmFtcG9saW5lLm9cXG5hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUtNC1vYmotJChDT05GSUdfVVBST0JFUylcXHRcXHQrPSB1cHJvYmVzLm8gZGVjb2RlLWluc24ubyBzaW11bGF0ZS1pbnNuLm9cXG4tLVxcbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT02PUNGTEFHU19SRU1PVkVfcmV0aG9vay5vID0gJChDQ19GTEFHU19GVFJBQ0UpXFxuYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL01ha2VmaWxlOjc6Q0ZMQUdTX1JFTU9WRV9yZXRob29rX3RyYW1wb2xpbmUubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxcbi0tXFxuYXJjaC9zMzkwL2Jvb3QvTWFrZWZpbGU9MzU9b2JqLXlcXHQrPSB2ZXJzaW9uLm8gcGdtX2NoZWNrLm8gY3R5cGUubyBpcGxfZGF0YS5vIHJlbG9jcy5vIGFsdGVybmF0aXZlLm9cXG5hcmNoL3MzOTAvYm9vdC9NYWtlZmlsZTozNjpvYmoteVxcdCs9IHV2Lm8gcHJpbnRrLm8gdHJhbXBvbGluZS5vXFxuYXJjaC9zMzkwL2Jvb3QvTWFrZWZpbGUtMzctb2JqLSQoQ09ORklHX1JBTkRPTUlaRV9CQVNFKVxcdCs9IGthc2xyLm9cXG4tLVxcbmFyY2gveDg2L2h5cGVydi9NYWtlZmlsZT0xMj1vYmotJChDT05GSUdfUEFSQVZJUlRfU1BJTkxPQ0tTKVxcdCs9IGh2X3NwaW5sb2NrLm9cXG4tLVxcbmFyY2gveDg2L2h5cGVydi9NYWtlZmlsZS0xNC0gaWZkZWYgQ09ORklHX01TSFZfUk9PVFxcbmFyY2gveDg2L2h5cGVydi9NYWtlZmlsZToxNTogIENGTEFHU19SRU1PVkVfaHZfdHJhbXBvbGluZS5vICs9IC1wZ1xcbmFyY2gveDg2L2h5cGVydi9NYWtlZmlsZToxNjogIENGTEFHU19odl90cmFtcG9saW5lLm8gICAgICAgICs9IC1mbm8tc3RhY2stcHJvdGVjdG9yXFxuYXJjaC94ODYvaHlwZXJ2L01ha2VmaWxlOjE3OiAgb2JqLSQoQ09ORklHX0NSQVNIX0RVTVApICAgICAgKz0gaHZfY3Jhc2gubyBodl90cmFtcG9saW5lLm9cXG5hcmNoL3g4Ni9oeXBlcnYvTWFrZWZpbGUtMTgtIGVuZGlmXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmM9MjgzPWV4dGVybiB2b2lkIGZ0cmFjZV9yZWdzX2NhbGxlcl9qbXAodm9pZCk7XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmMtMjkwLSAqIFRoZSBmdHJhY2Vfb3BzIGlzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gY2FsbGJhY2suIFNpbmNlIHRoZVxcbmFyY2gveDg2L2tlcm5lbC9mdHJhY2UuYzoyOTE6ICogdHJhbXBvbGluZSBvbmx5IHNlcnZpY2VzIGEgc2luZ2xlIGZ0cmFjZV9vcHMsIHdlIGNhbiBwYXNzIGluXFxuYXJjaC94ODYva2VybmVsL2Z0cmFjZS5jLTI5Mi0gKiB0aGF0IG9wcyBkaXJlY3RseS5cXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9mdHJhY2UuYz00Nzc9dm9pZCBhcmNoX2Z0cmFjZV91cGRhdGVfdHJhbXBvbGluZShzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL2Z0cmFjZS5jLTQ4NS1cXHRpZiAoIW9wcy1cXHUwMDNldHJhbXBvbGluZSkge1xcbmFyY2gveDg2L2tlcm5lbC9mdHJhY2UuYzo0ODY6XFx0XFx0b3BzLVxcdTAwM2V0cmFtcG9saW5lID0gY3JlYXRlX3RyYW1wb2xpbmUob3BzLCBcXHUwMDI2c2l6ZSk7XFxuYXJjaC94ODYva2VybmVsL2Z0cmFjZS5jLTQ4Ny1cXHRcXHRpZiAoIW9wcy1cXHUwMDNldHJhbXBvbGluZSlcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBkaXNhc20ubyBtcHJvZy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gdHJhbXBvbGluZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz01Nz1zdGF0aWMgdm9pZCB0cmFtcG9saW5lX3VubG9jayhzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjEtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NjI6c3RydWN0IGJwZl90cmFtcG9saW5lX29wcyB7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjMtXFx0aW50ICgqcmVnaXN0ZXJfZmVudHJ5KShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqZGF0YSk7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz03MD1zdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjcxOlxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wb2xpbmVfb3BzICpvcHMsIHZvaWQgKmRhdGEpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjcyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wb2xpbmVfb3BzIHRyYW1wb2xpbmVfb3BzO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTczLVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9OTg9c3RhdGljIGludCBicGZfdHJhbXBfZnRyYWNlX29wc19mdW5jKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHVuc2lnbmVkIGxvbmcgaXAsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTctXFx0XFx0XFx0cmV0ID0gYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHRyLCBmYWxzZSAvKiBsb2NrX2RpcmVjdF9tdXRleCAqLyxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZ0cmFtcG9saW5lX29wcywgTlVMTCk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU5LVxcdFxcdGJyZWFrO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTY0LVxcdFxcdFxcdHJldCA9IGJwZl90cmFtcG9saW5lX3VwZGF0ZSh0ciwgZmFsc2UgLyogbG9ja19kaXJlY3RfbXV0ZXggKi8sXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTY1OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2dHJhbXBvbGluZV9vcHMsIE5VTEwpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2Ni1cXHRcXHRicmVhaztcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTQ3Mz1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTUwMC1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo1MDE6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9vcHMgPSB7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNTAyLVxcdC5yZWdpc3Rlcl9mZW50cnkgICA9IHJlZ2lzdGVyX2ZlbnRyeSxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTY3Mz1zdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjY3NDpcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLCB2b2lkICpkYXRhKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTY3NS17XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz05MDU9c3RhdGljIGludCBfX2JwZl90cmFtcG9saW5lX2xpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05MDctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZyxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo5MDg6XFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTkwOS1cXHRcXHRcXHRcXHQgICAgICB2b2lkICpkYXRhKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9OTQ2PWludCBicGZfdHJhbXBvbGluZV9saW5rX3Byb2coc3RydWN0IGJwZl90cmFtcF9ub2RlICpub2RlLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtOTUyLVxcdHRyYW1wb2xpbmVfbG9jayh0cik7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6OTUzOlxcdGVyciA9IF9fYnBmX3RyYW1wb2xpbmVfbGlua19wcm9nKG5vZGUsIHRyLCB0Z3RfcHJvZywgXFx1MDAyNnRyYW1wb2xpbmVfb3BzLCBOVUxMKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05NTQtXFx0dHJhbXBvbGluZV91bmxvY2sodHIpO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9OTU4PXN0YXRpYyBpbnQgX19icGZfdHJhbXBvbGluZV91bmxpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05NjAtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZyxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo5NjE6XFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTk2Mi1cXHRcXHRcXHRcXHRcXHR2b2lkICpkYXRhKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9OTgzPWludCBicGZfdHJhbXBvbGluZV91bmxpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05ODktXFx0dHJhbXBvbGluZV9sb2NrKHRyKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo5OTA6XFx0ZXJyID0gX19icGZfdHJhbXBvbGluZV91bmxpbmtfcHJvZyhub2RlLCB0ciwgdGd0X3Byb2csIFxcdTAwMjZ0cmFtcG9saW5lX29wcywgTlVMTCk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtOTkxLVxcdHRyYW1wb2xpbmVfdW5sb2NrKHRyKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTEwNzY9aW50IGJwZl90cmFtcG9saW5lX2xpbmtfY2dyb3VwX3NoaW0oc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTExOC1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxMTE5OlxcdGVyciA9IF9fYnBmX3RyYW1wb2xpbmVfbGlua19wcm9nKFxcdTAwMjZzaGltX2xpbmstXFx1MDAzZWxpbmsubm9kZSwgdHIsIE5VTEwsIFxcdTAwMjZ0cmFtcG9saW5lX29wcywgTlVMTCk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTEyMC1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTU1OT1zdGF0aWMgaW50IG1vZGlmeV9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3My1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTc0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wb2xpbmVfb3BzIHRyYW1wb2xpbmVfbXVsdGlfb3BzID0ge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NzUtXFx0LnJlZ2lzdGVyX2ZlbnRyeSAgID0gcmVnaXN0ZXJfZmVudHJ5X211bHRpLFxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjYzNT12b2lkIHVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZShzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI2NTUtXFx0XFx0ICogb3IgTlVMTDsgdGhlIGxhdHRlciBjYXNlIG1lYW5zIHRoYXQgbm9ib2R5IGJ1dCByaS1cXHUwMDNlZnVuY1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjI2NTY6XFx0XFx0ICogY291bGQgaGl0IHRoaXMgdHJhbXBvbGluZSBvbiByZXR1cm4uIFRPRE86IHNpZ2FsdHN0YWNrKCkuXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjY1Ny1cXHRcXHQgKi9cXG4tLVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYz0zMzA9aW50IF9fcmVnaXN0ZXJfZnRyYWNlX2Z1bmN0aW9uKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMpXFxuLS1cXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtMzY0LVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYzozNjU6XFx0ZnRyYWNlX3VwZGF0ZV90cmFtcG9saW5lKG9wcyk7XFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTM2Ni1cXG4tLVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYz0zOTM9c3RhdGljIHZvaWQgZnRyYWNlX3VwZGF0ZV9waWRfZnVuYyh2b2lkKVxcbi0tXFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTQwNC1cXHRcXHRcXHRcXHRmdHJhY2VfcGlkX2Z1bmMgOiBvcC1cXHUwMDNlc2F2ZWRfZnVuYztcXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6NDA1OlxcdFxcdFxcdGZ0cmFjZV91cGRhdGVfdHJhbXBvbGluZShvcCk7XFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTQwNi1cXHRcXHR9XFxuLS1cXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM9ODQxND1zdGF0aWMgdm9pZCBmdHJhY2VfdXBkYXRlX3RyYW1wb2xpbmUoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcylcXG4tLVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYy04NDE3LVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYzo4NDE4OlxcdGFyY2hfZnRyYWNlX3VwZGF0ZV90cmFtcG9saW5lKG9wcyk7XFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTg0MTktXFx0aWYgKG9wcy1cXHUwMDNldHJhbXBvbGluZSBcXHUwMDI2XFx1MDAyNiBvcHMtXFx1MDAzZXRyYW1wb2xpbmUgIT0gdHJhbXBvbGluZSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxudG9vbHMvcGVyZi91dGlsL2Rzby5oPTI4PWVudW0gZHNvX2JpbmFyeV90eXBlIHtcXG4tLVxcbnRvb2xzL3BlcmYvdXRpbC9kc28uaC05Ny1cXHREU09fQklOQVJZX1RZUEVfX0JQRl9QUk9HX0lORk8sXFxudG9vbHMvcGVyZi91dGlsL2Rzby5oOjk4OlxcdC8qKiBARFNPX0JJTkFSWV9UWVBFX19CUEZfSU1BR0U6IGppdHRlZCBCUEYgdHJhbXBvbGluZSBvciBkaXNwYXRjaGVyIGNvZGUuICovXFxudG9vbHMvcGVyZi91dGlsL2Rzby5oLTk5LVxcdERTT19CSU5BUllfVFlQRV9fQlBGX0lNQUdFLFxcbi0tXFxudG9vbHMvcGVyZi91dGlsL21hcC5jPTUyOT11NjQgbWFwX19yaXBfMm9iamR1bXAoY29uc3Qgc3RydWN0IG1hcCAqbWFwLCB1NjQgcmlwKVxcbi0tXFxudG9vbHMvcGVyZi91dGlsL21hcC5jLTUzNS1cXHQgKiB2bWxpbnV4IGRvZXMgbm90IGhhdmUgcHJvZ3JhbSBoZWFkZXJzIGZvciBQVEkgZW50cnkgdHJhbXBvbGluZXMgYW5kXFxudG9vbHMvcGVyZi91dGlsL21hcC5jOjUzNjpcXHQgKiBrY29yZSBtYXkgbm90IGVpdGhlci4gSG93ZXZlciB0aGUgdHJhbXBvbGluZSBvYmplY3QgY29kZSBpcyBvbiB0aGVcXG50b29scy9wZXJmL3V0aWwvbWFwLmMtNTM3LVxcdCAqIG1haW4ga2VybmVsIG1hcCwgc28ganVzdCB1c2UgdGhhdCBpbnN0ZWFkLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMzo0OC43MjkxNzkzMTlaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1MjQzNTAyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEJQRiBKSVQgQ29tcGlsYXRpb24gUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gaG93IHRoZSBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgIGZpbGUgZ2V0cyBjb21waWxlZC4gVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoYXQgaXQncyBjb25kaXRpb25hbCBvbiBgQ09ORklHX0JQRl9KSVRgLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZS4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYGtlcm5lbC9icGYvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGJ1aWxkIHJ1bGVzLiBZZXAsIGBvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gdHJhbXBvbGluZS5vYCBjb25maXJtcyB0aGF0LiBTbyBgQlBGX0pJVGAgaXMgZGVmaW5pdGVseSBhIG5lY2Vzc2FyeSBjb21wb25lbnQuIEhtbSwgYWx0aG91Z2ggYEJQRl9KSVRgIGlzIHR5cGljYWxseSBlbmFibGVkIGJ5IGRlZmF1bHQsIGl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2ggYW5kIGV4cGxpY2l0bHkgaW5jbHVkZSBpdC4gT2theSwgdGltZSB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgYGtlcm5lbC9icGYvS2NvbmZpZ2AgdG8gdmVyaWZ5IHRoZSBleGFjdCBkZWZpbml0aW9uIGFuZCBkZXBlbmRlbmNpZXMgZm9yIGBCUEZfSklUYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyMDQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6NTMuOTgxNjE2NDk0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI1Nzk1NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNTctXFxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cXHRib29sIFxcXCJQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIzOjU1LjYwNzQxNzU5M1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTU4NzIzMzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBCUEYgVHJhY2luZyBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBCUEYgSklUIHNldHVwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBCUEZfSklUYCBpcyBlbmFibGVkLCBvYnZpb3VzbHkuIFRoZW4sIGxldCdzIHJlY2FwIHRoZSByZWxldmFudCBjb25maWdzOiBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGBGVU5DVElPTl9UUkFDRVJgLCBhbmQgaWRlYWxseSwgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYC4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY3J1Y2lhbCBzZXR0aW5ncyBpbiB0aGUgbWl4LiBJIHJlY2FsbCB0aGF0IGBGVFJBQ0VgIGlzIGEgbWVudWNvbmZpZywgd2l0aCBgRlVOQ1RJT05fVFJBQ0VSYCBiZWluZyB0aGUgc3BlY2lmaWMgY29uZmlnIEknbSBhZnRlci5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbjogYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGBtb2RpZnlfZmVudHJ5X211bHRpYCwgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAsIGFuZCBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYC4gSG1tLCB3YWl0IGEgbWludXRlLCBJIGhhdmUgdG8gcmVtZW1iZXIgdGhhdCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCBpcyBhIHBvdGVudGlhbGx5IGhvdC1wYXRoIGZ1bmN0aW9uLCByaWdodD8gTm9wZSwgSSdtIHRoaW5raW5nIG9mIHNvbWV0aGluZyBlbHNlLiBJdCdzIG9ubHkgY2FsbGVkIGR1cmluZyBCUEYgcHJvZ3JhbSBhdHRhY2htZW50IGFuZCBkZXRhY2htZW50IOKAkyBzbG93IHBhdGhzLiBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYCBpcyBhbHNvIGEgc2xvdyBwYXRoLCBhcyBpcyBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYC5cblxuQWxyaWdodCwgSSBzaG91bGQgY29uZmlybSBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCBpcyBzdGF0aWMuIFllcywgaXQgaXMuIEl0J3MgZGVmaW5lZCBzdGF0aWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBBaCwgcmlnaHQsIGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIGNhbGxlZCBieSBgYnBmX3RyYW1wb2xpbmVfbGlua19wcm9nYCBhbmQgYGJwZl90cmFtcG9saW5lX3VubGlua19wcm9nYCwgYW5kIEkgaGF2ZSBteSBsaXN0IG9mIGZ1bmN0aW9uczogYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGBtb2RpZnlfZmVudHJ5X211bHRpYCwgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAsIGFuZCBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYC5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAgaXMgc3RhdGljLiBZZXAsIGRlZmluaXRlbHkgc3RhdGljLiBBbmQsIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgPyBTdGF0aWMgYXMgd2VsbC4gSG93IGFib3V0IGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgPyBObywgdGhhdCBvbmUncyBub3Qgc3RhdGljLiBMb29rcyBsaWtlIGl0J3MgZGVmaW5lZCBpbiBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYCwgc28gSSBzaG91bGQgcHJvYmFibHkgdGFrZSBhIGxvb2sgYXQgaXQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNzUwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjI0OjAyLjc2NjE0MzEyWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI4NDQwNTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFjaW5nX211bHRpX2F0dGFjaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc4OT1pbnQgYnBmX3Vwcm9iZV9tdWx0aV9saW5rX2F0dGFjaChjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc5MDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpO1xcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzkxLSNlbHNlXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTg0OD1zdGF0aWMgaW5saW5lIGludFxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6ODQ5OmJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODUwLXtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTU3NjU9c3RhdGljIGludCBsaW5rX2NyZWF0ZSh1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE1LVxcdFxcdGVsc2UgaWYgKGlzX3RyYWNpbmdfbXVsdGkocHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpKVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjU4MTY6XFx0XFx0XFx0cmV0ID0gYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHByb2csIGF0dHIpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU4MTctXFx0XFx0ZWxzZVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM4MTk9c3RhdGljIGludCBjaGVja19kdXBfaWRzKHUzMiAqaWRzLCB1NjQgKmNvb2tpZXMsIHUzMiBjbnQpXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzgzOS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6Mzg0MDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM4NDEte1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MjktXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM5MzA6aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTMxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjQ6MDQuNTk0NTg5MTI3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzgwMTYwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBEb3VibGUgRGVmaW5pdGlvbiBpbiBCUEYgVHJhY2luZyoqXG5cbk9rYXksIGhvbGQgb24gYSBtaW51dGUuIFRoaXMgZG9lc24ndCBzZWVtIHJpZ2h0LiBUaGUgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgZnVuY3Rpb24uLi4gSSBjb3VsZCBzd2VhciBJIHNhdyB0aGF0IGRlZmluZWQgc29tZXdoZXJlIGJlZm9yZS4gSW4gZmFjdCwgbXkgaW50ZXJuYWwgbGludGluZyBqdXN0IHdlbnQgaGF5d2lyZS4gQW0gSSBzZWVpbmcgZG91YmxlPyBMZXQgbWUgZG91YmxlLWNoZWNrIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgIGFuZCBtYWtlIHN1cmUgbXkgZXllcyBhcmVuJ3QgZGVjZWl2aW5nIG1lLCBlc3BlY2lhbGx5IGFyb3VuZCBsaW5lIG51bWJlcnMgMzg0MCBhbmQgMzkzMC4gU29tZXRoaW5nIGZlZWxzIG9mZiBoZXJlLCBhbmQgSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMgcG90ZW50aWFsIGNvbmZsaWN0IGJlZm9yZSBpdCBjYXVzZXMgYW55IGRvd25zdHJlYW0gaXNzdWVzLiBBIHJlZHVuZGFudCBkZWZpbml0aW9uIGlzIGEgdGlja2luZyB0aW1lLWJvbWIsIGFuZCBJIGRvbid0IHdhbnQgdG8gZGVhbCB3aXRoIHRoYXQgbWVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQyNjUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyNDowOS4wMzI2MDcyNTJaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC90cmFjZS9icGZfdHJhY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODMwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzgzMDpcXHRcXG4zODMxOlxcdFxcdGZvciAoaW50IGkgPSAxOyBpIFxcdTAwM2MgY250OyBpKyspIHtcXG4zODMyOlxcdFxcdFxcdGlmIChpZHNbaV0gPT0gaWRzW2kgLSAxXSkge1xcbjM4MzM6XFx0XFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4zODM0OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjM4MzU6XFx0XFx0XFx0fVxcbjM4MzY6XFx0XFx0fVxcbjM4Mzc6XFx0XFx0cmV0dXJuIGVycjtcXG4zODM4OlxcdH1cXG4zODM5OlxcdFxcbjM4NDA6XFx0aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbjM4NDE6XFx0e1xcbjM4NDI6XFx0XFx0c3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbmsgKmxpbmsgPSBOVUxMO1xcbjM4NDM6XFx0XFx0c3RydWN0IGJwZl90cmFtcF9ub2RlICpmZXhpdHMgPSBOVUxMO1xcbjM4NDQ6XFx0XFx0c3RydWN0IGJwZl9saW5rX3ByaW1lciBsaW5rX3ByaW1lcjtcXG4zODQ1OlxcdFxcdHUzMiBjbnQsICppZHMgPSBOVUxMO1xcbjM4NDY6XFx0XFx0dTY0IF9fdXNlciAqdWNvb2tpZXM7XFxuMzg0NzpcXHRcXHR1NjQgKmNvb2tpZXMgPSBOVUxMO1xcbjM4NDg6XFx0XFx0dTMyIF9fdXNlciAqdWlkcztcXG4zODQ5OlxcdFxcdGludCBlcnI7XFxuMzg1MDpcXHRcXG4zODUxOlxcdFxcdHVpZHMgPSB1NjRfdG9fdXNlcl9wdHIoYXR0ci1cXHUwMDNlbGlua19jcmVhdGUudHJhY2luZ19tdWx0aS5pZHMpO1xcbjM4NTI6XFx0XFx0Y250ID0gYXR0ci1cXHUwMDNlbGlua19jcmVhdGUudHJhY2luZ19tdWx0aS5jbnQ7XFxuMzg1MzpcXHRcXG4zODU0OlxcdFxcdGlmICghY250IHx8ICF1aWRzKVxcbjM4NTU6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMzg1NjpcXHRcXHRpZiAoY250IFxcdTAwM2UgTUFYX1RSQUNJTkdfTVVMVElfQ05UKVxcbjM4NTc6XFx0XFx0XFx0cmV0dXJuIC1FMkJJRztcXG4zODU4OlxcdFxcdGlmIChhdHRyLVxcdTAwM2VsaW5rX2NyZWF0ZS5mbGFncyB8fCBhdHRyLVxcdTAwM2VsaW5rX2NyZWF0ZS50YXJnZXRfZmQpXFxuMzg1OTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zODYwOlxcdFxcbjM4NjE6XFx0XFx0aWRzID0ga3ZtYWxsb2Nfb2JqcygqaWRzLCBjbnQpO1xcbjM4NjI6XFx0XFx0aWYgKCFpZHMpXFxuMzg2MzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4zODY0OlxcdFxcbjM4NjU6XFx0XFx0aWYgKGNvcHlfZnJvbV91c2VyKGlkcywgdWlkcywgY250ICogc2l6ZW9mKCppZHMpKSkge1xcbjM4NjY6XFx0XFx0XFx0ZXJyID0gLUVGQVVMVDtcXG4zODY3OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuMzg2ODpcXHRcXHR9XFxuMzg2OTpcXHRcXG4zODcwOlxcdFxcdHVjb29raWVzID0gdTY0X3RvX3VzZXJfcHRyKGF0dHItXFx1MDAzZWxpbmtfY3JlYXRlLnRyYWNpbmdfbXVsdGkuY29va2llcyk7XFxuMzg3MTpcXHRcXHRpZiAodWNvb2tpZXMpIHtcXG4zODcyOlxcdFxcdFxcdGNvb2tpZXMgPSBrdm1hbGxvY19vYmpzKCpjb29raWVzLCBjbnQpO1xcbjM4NzM6XFx0XFx0XFx0aWYgKCFjb29raWVzKSB7XFxuMzg3NDpcXHRcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjM4NzU6XFx0XFx0XFx0XFx0Z290byBlcnJvcjtcXG4zODc2OlxcdFxcdFxcdH1cXG4zODc3OlxcdFxcdFxcdGlmIChjb3B5X2Zyb21fdXNlcihjb29raWVzLCB1Y29va2llcywgY250ICogc2l6ZW9mKCpjb29raWVzKSkpIHtcXG4zODc4OlxcdFxcdFxcdFxcdGVyciA9IC1FRkFVTFQ7XFxuMzg3OTpcXHRcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjM4ODA6XFx0XFx0XFx0fVxcbjM4ODE6XFx0XFx0fVxcbjM4ODI6XFx0XFxuMzg4MzpcXHRcXHRlcnIgPSBjaGVja19kdXBfaWRzKGlkcywgY29va2llcywgY250KTtcXG4zODg0OlxcdFxcdGlmIChlcnIpXFxuMzg4NTpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjM4ODY6XFx0XFxuMzg4NzpcXHRcXHRpZiAocHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OX01VTFRJKSB7XFxuMzg4ODpcXHRcXHRcXHRmZXhpdHMgPSBrdm1hbGxvY19vYmpzKCpmZXhpdHMsIGNudCk7XFxuMzg4OTpcXHRcXHRcXHRpZiAoIWZleGl0cykge1xcbjM4OTA6XFx0XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4zODkxOlxcdFxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuMzg5MjpcXHRcXHRcXHR9XFxuMzg5MzpcXHRcXHR9XFxuMzg5NDpcXHRcXG4zODk1OlxcdFxcdGxpbmsgPSBrdnphbGxvY19mbGV4KCpsaW5rLCBub2RlcywgY250KTtcXG4zODk2OlxcdFxcdGlmICghbGluaykge1xcbjM4OTc6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4zODk4OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuMzg5OTpcXHRcXHR9XFxuMzkwMDpcXHRcXG4zOTAxOlxcdFxcdGJwZl9saW5rX2luaXQoXFx1MDAyNmxpbmstXFx1MDAzZWxpbmssIEJQRl9MSU5LX1RZUEVfVFJBQ0lOR19NVUxUSSxcXG4zOTAyOlxcdFxcdFxcdCAgICAgIFxcdTAwMjZicGZfdHJhY2luZ19tdWx0aV9saW5rX2xvcHMsIHByb2csIHByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKTtcXG4zOTAzOlxcdFxcbjM5MDQ6XFx0XFx0ZXJyID0gYnBmX2xpbmtfcHJpbWUoXFx1MDAyNmxpbmstXFx1MDAzZWxpbmssIFxcdTAwMjZsaW5rX3ByaW1lcik7XFxuMzkwNTpcXHRcXHRpZiAoZXJyKVxcbjM5MDY6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4zOTA3OlxcdFxcbjM5MDg6XFx0XFx0bGluay1cXHUwMDNlbm9kZXNfY250ID0gY250O1xcbjM5MDk6XFx0XFx0bGluay1cXHUwMDNlY29va2llcyA9IGNvb2tpZXM7XFxuMzkxMDpcXHRcXHRsaW5rLVxcdTAwM2VmZXhpdHMgPSBmZXhpdHM7XFxuMzkxMTpcXHRcXG4zOTEyOlxcdFxcdGVyciA9IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChwcm9nLCBpZHMsIGxpbmspO1xcbjM5MTM6XFx0XFx0a3ZmcmVlKGlkcyk7XFxuMzkxNDpcXHRcXHRpZiAoZXJyKSB7XFxuMzkxNTpcXHRcXHRcXHRicGZfbGlua19jbGVhbnVwKFxcdTAwMjZsaW5rX3ByaW1lcik7XFxuMzkxNjpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjM5MTc6XFx0XFx0fVxcbjM5MTg6XFx0XFx0cmV0dXJuIGJwZl9saW5rX3NldHRsZShcXHUwMDI2bGlua19wcmltZXIpO1xcbjM5MTk6XFx0XFxuMzkyMDpcXHRlcnJvcjpcXG4zOTIxOlxcdFxcdGt2ZnJlZShmZXhpdHMpO1xcbjM5MjI6XFx0XFx0a3ZmcmVlKGNvb2tpZXMpO1xcbjM5MjM6XFx0XFx0a3ZmcmVlKGlkcyk7XFxuMzkyNDpcXHRcXHRrdmZyZWUobGluayk7XFxuMzkyNTpcXHRcXHRyZXR1cm4gZXJyO1xcbjM5MjY6XFx0fVxcbjM5Mjc6XFx0XFxuMzkyODpcXHQjZWxzZVxcbjM5Mjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjI0OjA5LjAzMjc4NjE3MloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQ2ODk1NjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uZGl0aW9uYWwgTG9naWMgaW4gdGhlIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHF1aWNrbHkgaWRlbnRpZmllZCB0aGUgYCNlbHNlYCBibG9jayDigJMgdGhhdCdzIGEga2V5IHBvaW50IG9mIGRpdmVyZ2VuY2UgaW4gdGhlIGxvZ2ljLiBOb3csIHRvIHRydWx5IGdyYXNwIHRoZSBmbG93LCBJIG5lZWQgdG8gem9vbSBpbiBvbiB0aGUgY29yZSBmdW5jdGlvbiBjYWxscy4gTGV0IG1lIHNlZS4uLiB0aGUgb25lcyB0aGF0IGltbWVkaWF0ZWx5IHN0YW5kIG91dCBhcyBjcml0aWNhbCBhcmU6IGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgLCBgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGlgLCBgbW9kaWZ5X2ZlbnRyeV9tdWx0aWAsIGBicGZfdHJhbXBvbGluZV91cGRhdGVgLCBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYCwgYW5kIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hgLiBJJ2xsIHdhbnQgdG8gdHJhY2UgZWFjaCBvZiB0aGVzZSB0byBzZWUgd2hhdCBpcyBoYXBwZW5pbmcuXG5cbkhtbSwgaW50ZXJlc3RpbmcsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hgIGlzIGRlZmluZWQgaW4gYGtlcm5lbC9icGYvdHJhbXBvbGluZS5jYC4gVGhhdCdzIGdvb2QgdG8ga25vdywgdGhhdCdsbCBzYXZlIG1lIHNvbWUgdGltZS4gUmlnaHQsIGxldCBtZSBjaGVjayB0aGF0IGZ1bmN0aW9uIG1vcmUgY2xvc2VseSB0byB1bmRlcnN0YW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU5MjUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyNDoxMi44Nzk2ODM4MTRaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mzg3OTE3MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9MTUyMD1pbnQgYXJjaF9wcmVwYXJlX2JwZl9kaXNwYXRjaGVyKHZvaWQgKmltYWdlLCB2b2lkICpidWYsIHM2NCAqZnVuY3MsIGludCBudW1fZnVuY3MpO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMTUyMS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1MjI6aW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTUyMy1cXHRcXHRcXHRcXHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluayk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTE2MzU9c3RhdGljIGlubGluZSBib29sIGJwZl9wcm9nX2hhc190cmFtcG9saW5lKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTYzOC19XFxuaW5jbHVkZS9saW51eC9icGYuaDoxNjM5OnN0YXRpYyBpbmxpbmUgaW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTY0MC1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluaylcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTc5LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1ODA6c3RhdGljIHZvaWQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2luaXQoc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTgxLXtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1ODUtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU4NjpzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1ODcte1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU5NC1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTk1OnN0YXRpYyB2b2lkIGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFjayhzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1OTYte1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTYxMS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNjEyOmludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjEzLVxcdFxcdFxcdFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTY1OC1cXHRmb3JfZWFjaF9tbm9kZShtbm9kZSwgbGluaykge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2NTk6XFx0XFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2luaXQobW5vZGUtXFx1MDAzZXRyYW1wb2xpbmUpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2NjAtXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjg2LVxcdGZvcl9lYWNoX21ub2RlKG1ub2RlLCBsaW5rKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2ODc6XFx0XFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUobW5vZGUtXFx1MDAzZXRyYW1wb2xpbmUpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2ODgtXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjk2LVxcdFxcdGJwZl90cmFtcG9saW5lX3JlbW92ZV9wcm9nKG1ub2RlLVxcdTAwM2V0cmFtcG9saW5lLCBcXHUwMDI2bW5vZGUtXFx1MDAzZW5vZGUpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2OTc6XFx0XFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrKG1ub2RlLVxcdTAwM2V0cmFtcG9saW5lKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjk4LVxcdH1cXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MTI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTcyMS1cXHRcXHRkYXRhLVxcdTAwM2VlbnRyeSA9IFxcdTAwMjZtbm9kZS1cXHUwMDNlZW50cnk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTcyMjpcXHRcXHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfaW5pdChtbm9kZS1cXHUwMDNldHJhbXBvbGluZSk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTcyMy1cXHRcXHRXQVJOX09OX09OQ0UoX19icGZfdHJhbXBvbGluZV91bmxpbmtfcHJvZyhcXHUwMDI2bW5vZGUtXFx1MDAzZW5vZGUsIG1ub2RlLVxcdTAwM2V0cmFtcG9saW5lLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTczMi1cXHRmb3JfZWFjaF9tbm9kZShtbm9kZSwgbGluaylcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNzMzOlxcdFxcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKG1ub2RlLVxcdTAwM2V0cmFtcG9saW5lKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzM0LVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM4NDA9aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MTEtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM5MTI6XFx0ZXJyID0gYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHByb2csIGlkcywgbGluayk7XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MTMtXFx0a3ZmcmVlKGlkcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjI0OjE0LjUxODQ4Mjk0MloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjcyMzQwNzcyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZpbmluZyB0aGUgQlBGIFRyYW1wb2xpbmUgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHRoaW5raW5nIGFib3V0IHRoZSBiZXN0IHRhcmdldHMgZm9yIGZ1enppbmcgcmVsYXRlZCB0byB0aGlzIEJQRiB0cmFtcG9saW5lIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaGAgYW5kIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIGFyZSBkZWZpbml0ZWx5IGdvb2QgcGxhY2VzIHRvIHN0YXJ0LCBhbmQgdGhhdCBzdGlsbCBob2xkcyB0cnVlLiBMZXQncyBzZWUuLi5cblxuSSBzaG91bGQgc3RhcnQgYnkgc3VtbWFyaXppbmcgdGhlIGZ1bmN0aW9ucyBJJ3ZlIGlkZW50aWZpZWQgYXMgYmVpbmcgcmVsZXZhbnQuIEkgaGF2ZTpcblxuKiAgIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgXG4qICAgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYFxuKiAgIGBtb2RpZnlfZmVudHJ5X211bHRpYFxuKiAgIGBicGZfdHJhbXBvbGluZV91cGRhdGVgXG4qICAgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGBcbiogICBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoYFxuKiAgIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgXG5cbkFsc28sIHRoZSBrZXJuZWwgY29uZmlncyB0aGF0IGFyZSByZWxldmFudCBhcmU6XG4qICAgYEJQRl9TWVNDQUxMYFxuKiAgIGBCUEZfSklUYFxuKiAgIGBGVU5DVElPTl9UUkFDRVJgXG5cbldhaXQsIGhhbmcgb24uLi4gZGlkbid0IEkgc2VlIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgaW4gdGhlIHBhdGNoIGNvbnRleHQ/IEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgcXVpY2suLi4gcmlnaHQsIHRoYXQgb25lIGlzIGBkZWZfYm9vbCB5YCBkZXBlbmRpbmcgb24gYEhBVkVfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLCBtZWFuaW5nIGl0J3Mgbm90IGEgdXNlci1zZWxlY3RhYmxlIGNvbmZpZy4gT2theSwgZ29vZCB0byBrbm93LiBUaGUgbGlzdCBvZiB1c2VyLXNlbGVjdGFibGUgY29uZmlncyBpcyBjb3JyZWN0IHRoZW4uXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmIGFnYWluLlxuXG5gYGBjXG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuKysrIGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbkBAIC0xNTM2LDYgKzE1MzYsNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYVxuIFx0aWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItXHUwMDNlZmxhZ3MpKVxuIFx0XHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XG4gXG4rXHR0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtcbiBcdGZ0cmFjZV9oYXNoX2FkZChkYXRhLVx1MDAzZXJlZywgZGF0YS1cdTAwM2VlbnRyeSwgaXAsIGFkZHIpO1xuIFx0dHItXHUwMDNlY3VyX2ltYWdlID0gaW07XG4gXHRyZXR1cm4gMDtcbmBgYFxuXG5SaWdodCwgdGhpcyBpcyBhYm91dCBmaXhpbmcgYSBidWcsIHdoZXJlIGBmdHJhY2VfbWFuYWdlZGAgd2FzIG5vdCBzZXQgY29ycmVjdGx5IGZvciBtdWx0aS10cmFtcG9saW5lcy4gVGhpcyBoYXMgaW1wbGljYXRpb25zIGZvciBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAgYmVjYXVzZSB0aGV5IHdvdWxkIHJlbHkgb24gdGhlIGBmdHJhY2VfbWFuYWdlZGAgZmxhZyBiZWluZyBzZXQuIFNvLCBib3RoIG9mIHRoZXNlIGFyZSBnb29kIHRhcmdldHMgdG9vLiBBbHNvLCBgdW5yZWdpc3Rlcl9mZW50cnlgIGlzIGNhbGxlZCBmcm9tIGBicGZfdHJhbXBvbGluZV91cGRhdGVgLiBTbyBsZXQncyBpbmNsdWRlIHRob3NlLlxuXG5Pa2F5LCBzbyB0aGUgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGxvb2sgbGlrZTpcblxuKiAgIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgXG4qICAgYHVucmVnaXN0ZXJfZmVudHJ5YFxuKiAgIGBtb2RpZnlfZmVudHJ5YFxuKiAgIGBicGZfdHJhbXBvbGluZV91cGRhdGVgXG4qICAgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGBcbiogICBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoYFxuKiAgIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgXG5cbldlIGRvbid0IHdhbnQgdGhlIHRhcmdldCBsaXN0IHRvIGJlIHRvbyBsb25nLCBzbyBJJ20gZ29pbmcgdG8gcmVmaW5lIHRoaXMgYSBiaXQsIGJ5IHJlbW92aW5nIGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgLlxuXG5UaGUgZmluYWwgbGlzdCBpczpcblxuKiAgIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgXG4qICAgYHVucmVnaXN0ZXJfZmVudHJ5YFxuKiAgIGBtb2RpZnlfZmVudHJ5YFxuKiAgIGBicGZfdHJhbXBvbGluZV91cGRhdGVgXG4qICAgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaGBcbiogICBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYFxuXG5UaGF0IGZlZWxzIHJpZ2h0LlxuXG5Gb3IgY29uZmlncywgd2UgaGF2ZTpcblxuKiAgIGBCUEZfU1lTQ0FMTGBcbiogICBgQlBGX0pJVGBcbiogICBgRlVOQ1RJT05fVFJBQ0VSYFxuXG5UaGUgcmVhc29uaW5nIGhlcmUgaXMgdGhhdCB0aGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYGZ0cmFjZV9tYW5hZ2VkYCB3YXNuJ3QgYmVpbmcgc2V0IGNvcnJlY3RseSBmb3IgbXVsdGktdHJhbXBvbGluZXMsIHdoaWNoIGxlZCB0byBpc3N1ZXMgd2l0aCBob3cgYHVucmVnaXN0ZXJfZmVudHJ5YCBhbmQgYG1vZGlmeV9mZW50cnlgIGZ1bmN0aW9uZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIGluIHRoZSBCUEYgc3Vic3lzdGVtLCB3aGljaCBhYnNvbHV0ZWx5IG1ha2VzIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIEFsc28sIGBDT05GSUdfRlRSQUNFYCBpcyBhIG1lbnVjb25maWcsIGJ1dCBgRlVOQ1RJT05fVFJBQ0VSYCBpcyB0aGUgYWN0dWFsIGNvbmZpZyB0aGF0IGVuYWJsZXMgYENPTkZJR19EWU5BTUlDX0ZUUkFDRWAgYW5kIGBDT05GSUdfRlRSQUNFYC4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgbmVlZGVkIGZvciBlbmFibGluZyB0aGUgQlBGIHN5c2NhbGwuIGBDT05GSUdfQlBGX0pJVGAgaXMgbmVjZXNzYXJ5IGZvciB0aGUgQlBGIEpJVCwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHRyYW1wb2xpbmVzIHRvIHdvcmsuXG5cbk9rYXksIEkgdGhpbmsgSSd2ZSBnb3QgdGhpcyBmdWxseSBzY29wZWQuIExldCdcblxuIiwiSW5wdXRUb2tlbnMiOjM3NTEzLCJPdXRwdXRUb2tlbnMiOjIwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyNDoyNy4yNDE4OTI2ODVaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODQwNDc1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkZVTkNUSU9OX1RSQUNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlZ2lzdGVyX2ZlbnRyeV9tdWx0aVwiLFxuICAgIFwidW5yZWdpc3Rlcl9mZW50cnlcIixcbiAgICBcIm1vZGlmeV9mZW50cnlcIixcbiAgICBcImJwZl90cmFtcG9saW5lX3VwZGF0ZVwiLFxuICAgIFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBCUEYgdHJhbXBvbGluZSBsb2dpYyB3aGVyZSBgZnRyYWNlX21hbmFnZWRgIHdhcyBub3Qgc2V0IHRvIHRydWUgd2hlbiByZWdpc3RlcmluZyBhIG11bHRpIGZlbnRyeS4gVGhpcyBjYXVzZWQgaXNzdWVzIHdoZW4gYXR0YWNoaW5nIGEgc2luZ2xlIGZlbnRyeSB0byBhIGZ1bmN0aW9uIHRoYXQgYWxyZWFkeSBoYWQgYSBtdWx0aSBmZW50cnkgYXR0YWNoZWQsIGFzIGB1bnJlZ2lzdGVyX2ZlbnRyeWAgYW5kIGBtb2RpZnlfZmVudHJ5YCByZWx5IG9uIGBmdHJhY2VfbWFuYWdlZGAgYmVpbmcgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkZVTkNUSU9OX1RSQUNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlZ2lzdGVyX2ZlbnRyeV9tdWx0aVwiLFxuICAgIFwidW5yZWdpc3Rlcl9mZW50cnlcIixcbiAgICBcIm1vZGlmeV9mZW50cnlcIixcbiAgICBcImJwZl90cmFtcG9saW5lX3VwZGF0ZVwiLFxuICAgIFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBCUEYgdHJhbXBvbGluZSBsb2dpYyB3aGVyZSBgZnRyYWNlX21hbmFnZWRgIHdhcyBub3Qgc2V0IHRvIHRydWUgd2hlbiByZWdpc3RlcmluZyBhIG11bHRpIGZlbnRyeS4gVGhpcyBjYXVzZWQgaXNzdWVzIHdoZW4gYXR0YWNoaW5nIGEgc2luZ2xlIGZlbnRyeSB0byBhIGZ1bmN0aW9uIHRoYXQgYWxyZWFkeSBoYWQgYSBtdWx0aSBmZW50cnkgYXR0YWNoZWQsIGFzIGB1bnJlZ2lzdGVyX2ZlbnRyeWAgYW5kIGBtb2RpZnlfZmVudHJ5YCByZWx5IG9uIGBmdHJhY2VfbWFuYWdlZGAgYmVpbmcgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8clj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-12 05:06:01 +0000 UTC FinishedAt: 2026-07-12 05:24:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "520d7d7942025a58a0c79a61b905a556cf3cb524", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT", "FUNCTION_TRACER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "520d7d7942025a58a0c79a61b905a556cf3cb524", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT", "FUNCTION_TRACER" ], "series_id": "25e22dd8-a5c7-4b91-9d47-12eadb2f98dd" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "register_fentry_multi", "unregister_fentry", "modify_fentry", "bpf_trampoline_update", "bpf_trampoline_multi_attach", "bpf_trampoline_multi_detach" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7RlVOQ1RJT05fVFJBQ0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmVnaXN0ZXJfZmVudHJ5X211bHRpJiMzNDssCiAgICAmIzM0O3VucmVnaXN0ZXJfZmVudHJ5JiMzNDssCiAgICAmIzM0O21vZGlmeV9mZW50cnkmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfdXBkYXRlJiMzNDssCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaCYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlBGIHRyYW1wb2xpbmUgbG9naWMgd2hlcmUgYGZ0cmFjZV9tYW5hZ2VkYCB3YXMgbm90IHNldCB0byB0cnVlIHdoZW4gcmVnaXN0ZXJpbmcgYSBtdWx0aSBmZW50cnkuIFRoaXMgY2F1c2VkIGlzc3VlcyB3aGVuIGF0dGFjaGluZyBhIHNpbmdsZSBmZW50cnkgdG8gYSBmdW5jdGlvbiB0aGF0IGFscmVhZHkgaGFkIGEgbXVsdGkgZmVudHJ5IGF0dGFjaGVkLCBhcyBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAgcmVseSBvbiBgZnRyYWNlX21hbmFnZWRgIGJlaW5nIHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMWIxMTkzNjhjNTVlZDcwZGQ4MGRiY2MyZWMwNzVjMTBhMWZjOWVmZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDA1OjIyOjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jIGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbmluZGV4IDFhNzIxZmM0YmVmNTYyLi42ZWFkZjY0ZjdlYzkwZiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuQEAgLTE1MzYsNiAmIzQzOzE1MzYsNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYVxuIFx0aWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItXHUwMDNlZmxhZ3MpKVxuIFx0XHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XG4gXG4mIzQzO1x0dHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZCA9IHRydWU7XG4gXHRmdHJhY2VfaGFzaF9hZGQoZGF0YS1cdTAwM2VyZWcsIGRhdGEtXHUwMDNlZW50cnksIGlwLCBhZGRyKTtcbiBcdHRyLVx1MDAzZWN1cl9pbWFnZSA9IGltO1xuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jXG5pbmRleCBmMDJmZmM3ZjQxZDc4NC4uMGFhOTUzMmEwNWNmZWMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuY1xuQEAgLTQ2MCw2ICYjNDM7NDYwLDczIEBAIHN0YXRpYyB2b2lkIHRlc3RfaW50ZXJzZWN0KHZvaWQpXG4gXHR0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fZGVzdHJveShza2VsKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfZmVudHJ5X2FmdGVyX211bHRpKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGZ1bmNzW10gPSB7XG4mIzQzO1x0XHRcJiMzNDticGZfZmVudHJ5X3Rlc3QxXCYjMzQ7LFxuJiM0MztcdH07XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpmZW50cnlfbGluayA9IE5VTEwsICptdWx0aV9saW5rID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgdHJhY2luZ19tdWx0aV9pbnRlcnNlY3QgKnNrZWwgPSBOVUxMO1xuJiM0MztcdExJQkJQRl9PUFRTKGJwZl90cmFjaW5nX211bHRpX29wdHMsIG9wdHMpO1xuJiM0MztcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyk7XG4mIzQzO1x0X191MzIgKmlkcyA9IE5VTEw7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0c2tlbCA9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X19vcGVuX2FuZF9sb2FkKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X19vcGVuX2FuZF9sb2FkXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0c2tlbC1cdTAwM2Vic3MtXHUwMDNlcGlkID0gZ2V0cGlkKCk7XG4mIzQzO1xuJiM0MztcdGlkcyA9IGdldF9pZHMoZnVuY3MsIEFSUkFZX1NJWkUoZnVuY3MpLCBOVUxMKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoaWRzLCBcJiMzNDtnZXRfaWRzXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gY2xlYW51cDtcbiYjNDM7XG4mIzQzO1x0b3B0cy5pZHMgPSBpZHM7XG4mIzQzO1x0b3B0cy5jbnQgPSBBUlJBWV9TSVpFKGZ1bmNzKTtcbiYjNDM7XHRtdWx0aV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5XzEsIE5VTEwsIFx1MDAyNm9wdHMpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihtdWx0aV9saW5rLCBcJiMzNDthdHRhY2hfbXVsdGlcJiMzNDspKVxuJiM0MztcdFx0Z290byBjbGVhbnVwO1xuJiM0MztcbiYjNDM7XHRmZW50cnlfbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2goc2tlbC1cdTAwM2Vwcm9ncy5mZW50cnkpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihmZW50cnlfbGluaywgXCYjMzQ7YXR0YWNoX2ZlbnRyeVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5XzEpLCBcdTAwMjZ0b3B0cyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDt0ZXN0X3J1blwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeV8xLCAxLCBcJiMzNDttdWx0aV9mZW50cnlcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2V0ZXN0X3Jlc3VsdF9mZW50cnksIDEsIFwmIzM0O2ZlbnRyeVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9saW5rX19kZXN0cm95KGZlbnRyeV9saW5rKTtcbiYjNDM7XHRmZW50cnlfbGluayA9IE5VTEw7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtkZXN0cm95X2ZlbnRyeVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5XzEpLCBcdTAwMjZ0b3B0cyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDt0ZXN0X3J1bl9tdWx0aVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeV8xLCAyLCBcJiMzNDttdWx0aV9mZW50cnlfb25seVwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeSwgMSwgXCYjMzQ7ZmVudHJ5X2RldGFjaGVkXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX2xpbmtfX2Rlc3Ryb3kobXVsdGlfbGluayk7XG4mIzQzO1x0bXVsdGlfbGluayA9IE5VTEw7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtkZXN0cm95X211bHRpXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gY2xlYW51cDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5mZW50cnlfMSksIFx1MDAyNnRvcHRzKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3Rlc3RfcnVuX2RldGFjaGVkXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gY2xlYW51cDtcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNldGVzdF9yZXN1bHRfZmVudHJ5XzEsIDIsIFwmIzM0O211bHRpX2ZlbnRyeV9kZXRhY2hlZFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeSwgMSwgXCYjMzQ7ZmVudHJ5X3N0aWxsX2RldGFjaGVkXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO2NsZWFudXA6XG4mIzQzO1x0YnBmX2xpbmtfX2Rlc3Ryb3koZmVudHJ5X2xpbmspO1xuJiM0MztcdGJwZl9saW5rX19kZXN0cm95KG11bHRpX2xpbmspO1xuJiM0MztcdGZyZWUoaWRzKTtcbiYjNDM7XHR0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fZGVzdHJveShza2VsKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCB0ZXN0X3Nlc3Npb24odm9pZClcbiB7XG4gXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMpO1xuQEAgLTk1Nyw0ICYjNDM7MTAyNCw2IEBAIHZvaWQgdGVzdF90cmFjaW5nX211bHRpX3Rlc3Qodm9pZClcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O2F0dGFjaF9hcGlfZmFpbHNcJiMzNDspKVxuIFx0XHR0ZXN0X2F0dGFjaF9hcGlfZmFpbHMoKTtcbiBcdFJVTl9URVNUUyh0cmFjaW5nX211bHRpX3ZlcmlmaWVyKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtmZW50cnlfYWZ0ZXJfbXVsdGlcJiMzNDspKVxuJiM0MztcdFx0dGVzdF9mZW50cnlfYWZ0ZXJfbXVsdGkoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jXG5pbmRleCBjZDViZTBiYjZmZmRkNy4uNWIwYWY4ZjRjNjJmZjggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guY1xuQEAgLTExLDYgJiM0MzsxMSwxNCBAQCBfX3U2NCB0ZXN0X3Jlc3VsdF9mZW50cnlfMSA9IDA7XG4gX191NjQgdGVzdF9yZXN1bHRfZmVudHJ5XzIgPSAwO1xuIF9fdTY0IHRlc3RfcmVzdWx0X2ZleGl0XzEgPSAwO1xuIF9fdTY0IHRlc3RfcmVzdWx0X2ZleGl0XzIgPSAwO1xuJiM0MztfX3U2NCB0ZXN0X3Jlc3VsdF9mZW50cnkgPSAwO1xuJiM0MztcbiYjNDM7U0VDKFwmIzM0O2ZlbnRyeS9icGZfZmVudHJ5X3Rlc3QxXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coZmVudHJ5KVxuJiM0Mzt7XG4mIzQzO1x0dHJhY2luZ19tdWx0aV9hcmdfY2hlY2soY3R4LCBcdTAwMjZ0ZXN0X3Jlc3VsdF9mZW50cnksIGZhbHNlKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuIFxuIFNFQyhcJiMzNDtmZW50cnkubXVsdGlcJiMzNDspXG4gaW50IEJQRl9QUk9HKGZlbnRyeV8xKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7RlVOQ1RJT05fVFJBQ0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmVnaXN0ZXJfZmVudHJ5X211bHRpJiMzNDssCiAgICAmIzM0O3VucmVnaXN0ZXJfZmVudHJ5JiMzNDssCiAgICAmIzM0O21vZGlmeV9mZW50cnkmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfdXBkYXRlJiMzNDssCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaCYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlBGIHRyYW1wb2xpbmUgbG9naWMgd2hlcmUgYGZ0cmFjZV9tYW5hZ2VkYCB3YXMgbm90IHNldCB0byB0cnVlIHdoZW4gcmVnaXN0ZXJpbmcgYSBtdWx0aSBmZW50cnkuIFRoaXMgY2F1c2VkIGlzc3VlcyB3aGVuIGF0dGFjaGluZyBhIHNpbmdsZSBmZW50cnkgdG8gYSBmdW5jdGlvbiB0aGF0IGFscmVhZHkgaGFkIGEgbXVsdGkgZmVudHJ5IGF0dGFjaGVkLCBhcyBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAgcmVseSBvbiBgZnRyYWNlX21hbmFnZWRgIGJlaW5nIHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxYjExOTM2OGM1NWVkNzBkZDgwZGJjYzJlYzA3NWMxMGExZmM5ZWZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTIgMDU6MjI6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jCmluZGV4IDFhNzIxZmM0YmVmNTYyLi42ZWFkZjY0ZjdlYzkwZiAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi90cmFtcG9saW5lLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi90cmFtcG9saW5lLmMKQEAgLTE1MzYsNiAmIzQzOzE1MzYsNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYQogCWlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLSZndDtmbGFncykpCiAJCWFkZHIgPSBmdHJhY2Vfam1wX3NldChhZGRyKTsKIAomIzQzOwl0ci0mZ3Q7ZnVuYy5mdHJhY2VfbWFuYWdlZCA9IHRydWU7CiAJZnRyYWNlX2hhc2hfYWRkKGRhdGEtJmd0O3JlZywgZGF0YS0mZ3Q7ZW50cnksIGlwLCBhZGRyKTsKIAl0ci0mZ3Q7Y3VyX2ltYWdlID0gaW07CiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMKaW5kZXggZjAyZmZjN2Y0MWQ3ODQuLjBhYTk1MzJhMDVjZmVjIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jCkBAIC00NjAsNiAmIzQzOzQ2MCw3MyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ludGVyc2VjdCh2b2lkKQogCXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X19kZXN0cm95KHNrZWwpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgdGVzdF9mZW50cnlfYWZ0ZXJfbXVsdGkodm9pZCkKJiM0Mzt7CiYjNDM7CXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZnVuY3NbXSA9IHsKJiM0MzsJCSYjMzQ7YnBmX2ZlbnRyeV90ZXN0MSYjMzQ7LAomIzQzOwl9OwomIzQzOwlzdHJ1Y3QgYnBmX2xpbmsgKmZlbnRyeV9saW5rID0gTlVMTCwgKm11bHRpX2xpbmsgPSBOVUxMOwomIzQzOwlzdHJ1Y3QgdHJhY2luZ19tdWx0aV9pbnRlcnNlY3QgKnNrZWwgPSBOVUxMOwomIzQzOwlMSUJCUEZfT1BUUyhicGZfdHJhY2luZ19tdWx0aV9vcHRzLCBvcHRzKTsKJiM0MzsJTElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTsKJiM0MzsJX191MzIgKmlkcyA9IE5VTEw7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CXNrZWwgPSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fb3Blbl9hbmRfbG9hZCgpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgJiMzNDt0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fb3Blbl9hbmRfbG9hZCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJc2tlbC0mZ3Q7YnNzLSZndDtwaWQgPSBnZXRwaWQoKTsKJiM0MzsKJiM0MzsJaWRzID0gZ2V0X2lkcyhmdW5jcywgQVJSQVlfU0laRShmdW5jcyksIE5VTEwpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoaWRzLCAmIzM0O2dldF9pZHMmIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CW9wdHMuaWRzID0gaWRzOwomIzQzOwlvcHRzLmNudCA9IEFSUkFZX1NJWkUoZnVuY3MpOwomIzQzOwltdWx0aV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpKHNrZWwtJmd0O3Byb2dzLmZlbnRyeV8xLCBOVUxMLCAmYW1wO29wdHMpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIobXVsdGlfbGluaywgJiMzNDthdHRhY2hfbXVsdGkmIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CWZlbnRyeV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChza2VsLSZndDtwcm9ncy5mZW50cnkpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoZmVudHJ5X2xpbmssICYjMzQ7YXR0YWNoX2ZlbnRyeSYjMzQ7KSkKJiM0MzsJCWdvdG8gY2xlYW51cDsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhicGZfcHJvZ3JhbV9fZmQoc2tlbC0mZ3Q7cHJvZ3MuZmVudHJ5XzEpLCAmYW1wO3RvcHRzKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O3Rlc3RfcnVuJiMzNDspKQomIzQzOwkJZ290byBjbGVhbnVwOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDt0ZXN0X3Jlc3VsdF9mZW50cnlfMSwgMSwgJiMzNDttdWx0aV9mZW50cnkmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShza2VsLSZndDtic3MtJmd0O3Rlc3RfcmVzdWx0X2ZlbnRyeSwgMSwgJiMzNDtmZW50cnkmIzM0Oyk7CiYjNDM7CiYjNDM7CWVyciA9IGJwZl9saW5rX19kZXN0cm95KGZlbnRyeV9saW5rKTsKJiM0MzsJZmVudHJ5X2xpbmsgPSBOVUxMOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7ZGVzdHJveV9mZW50cnkmIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLmZlbnRyeV8xKSwgJmFtcDt0b3B0cyk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDt0ZXN0X3J1bl9tdWx0aSYjMzQ7KSkKJiM0MzsJCWdvdG8gY2xlYW51cDsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7dGVzdF9yZXN1bHRfZmVudHJ5XzEsIDIsICYjMzQ7bXVsdGlfZmVudHJ5X29ubHkmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShza2VsLSZndDtic3MtJmd0O3Rlc3RfcmVzdWx0X2ZlbnRyeSwgMSwgJiMzNDtmZW50cnlfZGV0YWNoZWQmIzM0Oyk7CiYjNDM7CiYjNDM7CWVyciA9IGJwZl9saW5rX19kZXN0cm95KG11bHRpX2xpbmspOwomIzQzOwltdWx0aV9saW5rID0gTlVMTDsKJiM0MzsJaWYgKCFBU1NFUlRfT0soZXJyLCAmIzM0O2Rlc3Ryb3lfbXVsdGkmIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLmZlbnRyeV8xKSwgJmFtcDt0b3B0cyk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDt0ZXN0X3J1bl9kZXRhY2hlZCYjMzQ7KSkKJiM0MzsJCWdvdG8gY2xlYW51cDsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7dGVzdF9yZXN1bHRfZmVudHJ5XzEsIDIsICYjMzQ7bXVsdGlfZmVudHJ5X2RldGFjaGVkJiMzNDspOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDt0ZXN0X3Jlc3VsdF9mZW50cnksIDEsICYjMzQ7ZmVudHJ5X3N0aWxsX2RldGFjaGVkJiMzNDspOwomIzQzOwomIzQzO2NsZWFudXA6CiYjNDM7CWJwZl9saW5rX19kZXN0cm95KGZlbnRyeV9saW5rKTsKJiM0MzsJYnBmX2xpbmtfX2Rlc3Ryb3kobXVsdGlfbGluayk7CiYjNDM7CWZyZWUoaWRzKTsKJiM0MzsJdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfX2Rlc3Ryb3koc2tlbCk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgdGVzdF9zZXNzaW9uKHZvaWQpCiB7CiAJTElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTsKQEAgLTk1Nyw0ICYjNDM7MTAyNCw2IEBAIHZvaWQgdGVzdF90cmFjaW5nX211bHRpX3Rlc3Qodm9pZCkKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O2F0dGFjaF9hcGlfZmFpbHMmIzM0OykpCiAJCXRlc3RfYXR0YWNoX2FwaV9mYWlscygpOwogCVJVTl9URVNUUyh0cmFjaW5nX211bHRpX3ZlcmlmaWVyKTsKJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtmZW50cnlfYWZ0ZXJfbXVsdGkmIzM0OykpCiYjNDM7CQl0ZXN0X2ZlbnRyeV9hZnRlcl9tdWx0aSgpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jCmluZGV4IGNkNWJlMGJiNmZmZGQ3Li41YjBhZjhmNGM2MmZmOCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYwpAQCAtMTEsNiAmIzQzOzExLDE0IEBAIF9fdTY0IHRlc3RfcmVzdWx0X2ZlbnRyeV8xID0gMDsKIF9fdTY0IHRlc3RfcmVzdWx0X2ZlbnRyeV8yID0gMDsKIF9fdTY0IHRlc3RfcmVzdWx0X2ZleGl0XzEgPSAwOwogX191NjQgdGVzdF9yZXN1bHRfZmV4aXRfMiA9IDA7CiYjNDM7X191NjQgdGVzdF9yZXN1bHRfZmVudHJ5ID0gMDsKJiM0MzsKJiM0MztTRUMoJiMzNDtmZW50cnkvYnBmX2ZlbnRyeV90ZXN0MSYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyhmZW50cnkpCiYjNDM7ewomIzQzOwl0cmFjaW5nX211bHRpX2FyZ19jaGVjayhjdHgsICZhbXA7dGVzdF9yZXN1bHRfZmVudHJ5LCBmYWxzZSk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KIAogU0VDKCYjMzQ7ZmVudHJ5Lm11bHRpJiMzNDspCiBpbnQgQlBGX1BST0coZmVudHJ5XzEpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzOTQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIEJQRiBUcmFtcG9saW5lIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgIGFuZCBzb21lIHJlbGF0ZWQgdGVzdHMgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdGhlIGNvZGUgY2hhbmdlIGl0c2VsZiB3aXRoaW4gdGhhdCBrZXJuZWwgZmlsZS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyBsaWtlIHRoZXJlJiMzOTtzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjaGFuZ2UsIHdoaWNoIGFkZHMgYHRyLSZndDtmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtgLiBUaGlzIGxvb2tzIGxpa2UgaXQgaXMgc2V0dGluZyBhIGZsYWcgb24gdGhlIGJwZiB0cmFtcG9saW5lIHN0cnVjdC4gSSYjMzk7bSBnb2luZyB0byB0cmFjayBkb3duIHdoYXQgdGhhdCBtZWFucy4KClRoaXMgaXMgY29yZSBCUEYgdHJhbXBvbGluZSBsb2dpYywgc28gdW5kZXJzdGFuZGluZyB0aGUgcmFtaWZpY2F0aW9ucyBpcyBwcmV0dHkgaW1wb3J0YW50LgoKVG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9uLCBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgIGZ1bmN0aW9uIGl0c2VsZi4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IG9mIHdoYXQgaXQgZG9lcywgYW5kIGFsc28gd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3Iga2VybmVsIHNldHRpbmdzIGluZmx1ZW5jZSBpdHMgYmVoYXZpb3IuIFRoYXQgZmxhZyBiZWluZyBzZXQgdGhlcmUgbWF5IGhhdmUgYSBkZWVwZXIgaW1wbGljYXRpb24sIHNvIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIGFuZCBob3cgdGhhdCBgdHItJmd0O2Z1bmMuZnRyYWNlX21hbmFnZWRgIG1lbWJlciBpcyB1c2VkIGRvd25zdHJlYW0gZnJvbSB0aGlzIGZ1bmN0aW9uLiBUaGlzIHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gZnRyYWNlIG1hbmFnZW1lbnQsIHNvIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUga2VybmVsIGZlYXR1cmVzIG9yIGJ1aWxkIG9wdGlvbnMgcmVsYXRlZCB0byBmdHJhY2UgdGhhdCBtaWdodCBiZSByZWxldmFudCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlZ2lzdGVyX2ZlbnRyeV9tdWx0aSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTIyPXN0YXRpYyB2b2lkIGZ0cmFjZV9oYXNoX2FkZChzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gsIHN0cnVjdCBmdHJhY2VfZnVuY19lbnRyeSAqZW50cnksXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTUyOS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1MzA6c3RhdGljIGludCByZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnB0cilcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1MzEte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDQtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTQ1OnN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKnB0cilcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDYte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTc1Olx0LnJlZ2lzdGVyX2ZlbnRyeSAgID0gcmVnaXN0ZXJfZmVudHJ5X211bHRpLFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU3NjpcdC51bnJlZ2lzdGVyX2ZlbnRyeSA9IHVucmVnaXN0ZXJfZmVudHJ5X211bHRpLFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3Ny1cdC5tb2RpZnlfZmVudHJ5ICAgICA9IG1vZGlmeV9mZW50cnlfbXVsdGksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI2MgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCBGdW5jdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAgYmVpbmcgY2FsbGVkIHdpdGhpbiBgdHJhbXBvbGluZV9tdWx0aV9vcHNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGF0IGZ1bmN0aW9uIHdvcmtzIGFuZCB3aGVyZSBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGhpbiB0aGlzIGNvbnRleHQuIE15IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvZGUgZGlyZWN0bHkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgc291cmNlIGZpbGUsIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AuIFRoYXQgc2hvdWxkIGNvbnRhaW4gdGhlIGRlZmluaXRpb24gb2YgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAgYW5kLCBjcnVjaWFsbHksIEkgbmVlZCB0byBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIGBmdHJhY2VfbWFuYWdlZGAuIFVuZGVyc3RhbmRpbmcgdGhlaXIgcmVsYXRpb25zaGlwIGlzIHByb2JhYmx5IGtleSB0byBncmFzcGluZyB0aGUgYmVoYXZpb3Igb2YgYHRyYW1wb2xpbmVfbXVsdGlfb3BzYCwgYW5kIGJ5IGV4dGVuc2lvbiwgdGhlIHN5c3RlbSYjMzk7cyBvdmVyYWxsIGZ1bmN0aW9uIGhlcmUuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdHJhY2VfbWFuYWdlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oPTEzODA9c3RydWN0IGJwZl90cmFtcG9saW5lIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzOTItXHRcdHZvaWQgKmFkZHI7XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjEzOTM6XHRcdGJvb2wgZnRyYWNlX21hbmFnZWQ7XG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzOTQtXHR9IGZ1bmM7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDMyPXN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKmRhdGEgX19tYXliZV91bnVzZWQpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDM2LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDM3Olx0aWYgKHRyLVx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MzgtXHRcdHJldCA9IGRpcmVjdF9vcHNfZGVsKHRyLCBvbGRfYWRkcik7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDUwPXN0YXRpYyBpbnQgbW9kaWZ5X2ZlbnRyeShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDU2LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDU3Olx0aWYgKHRyLVx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQpIHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ1OC1cdFx0cmV0ID0gZGlyZWN0X29wc19tb2QodHIsIG5ld19hZGRyLCBsb2NrX2RpcmVjdF9tdXRleCk7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDczPXN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ4NC1cdFx0XHRyZXR1cm4gLUVOT1RTVVBQO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDg1Olx0XHR0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ4Ni1cdH1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ4Ny1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjQ4ODpcdGlmICh0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkKSB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00ODktXHRcdHJldCA9IGRpcmVjdF9vcHNfYWRkKHRyLCBuZXdfYWRkcik7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTUzMD1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcHRyKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1MzgtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTM5Olx0dHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZCA9IHRydWU7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTQwLVx0ZnRyYWNlX2hhc2hfYWRkKGRhdGEtXHUwMDNlcmVnLCBkYXRhLVx1MDAzZWVudHJ5LCBpcCwgYWRkcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE3OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGZlbnRyeWAgUGF0Y2gmIzM5O3MgSW1wbGljYXRpb25zKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc2V0dGluZyBgdHItJmd0O2Z1bmMuZnRyYWNlX21hbmFnZWQgPSB0cnVlYCB3aXRoaW4gYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgcmlwcGxlIGVmZmVjdCwgYXMgSSBrbm93IHRoYXQgYHVucmVnaXN0ZXJfZmVudHJ5YCBhbmQgYG1vZGlmeV9mZW50cnlgIGJvdGggY2hlY2sgdGhpcyBgdHItJmd0O2Z1bmMuZnRyYWNlX21hbmFnZWRgIGZsYWcuIE15IGluaXRpYWwgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgY29uZmxpY3RzLgoKQWgsIGJ1dCBhIGNsb3NlciBsb29rLiBgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGlgIGFuZCBgbW9kaWZ5X2ZlbnRyeV9tdWx0aWAgYXJlIHNwZWNpZmljYWxseSBhc3NvY2lhdGVkIHdpdGggbXVsdGktdHJhbXBvbGluZSBmdW5jdGlvbmFsaXR5LiBUaGF0JiMzOTtzIHRoZSBrZXkgY29udGV4dCBoZXJlLiBOb3cgSSBuZWVkIHRvIGV4YW1pbmUgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBhZGRlZCBmbGFnIGlzIGhhbmRsZWQgcHJvcGVybHkgaW4gdGhlIG11bHRpLXRyYW1wb2xpbmUgY29udGV4dC4gTGV0JiMzOTtzIHNlZSBob3cgdGhpcyBwbGF5cyBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTUzMD1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcHRyKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDQtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTQ1OnN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKnB0cilcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDYte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTc1LVx0LnJlZ2lzdGVyX2ZlbnRyeSAgID0gcmVnaXN0ZXJfZmVudHJ5X211bHRpLFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU3NjpcdC51bnJlZ2lzdGVyX2ZlbnRyeSA9IHVucmVnaXN0ZXJfZmVudHJ5X211bHRpLFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3Ny1cdC5tb2RpZnlfZmVudHJ5ICAgICA9IG1vZGlmeV9mZW50cnlfbXVsdGksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc0MgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipBbmFseXppbmcgRnRyYWNlIEZ1bmN0aW9uIFVucmVnaXN0cmF0aW9uIGFuZCBNb2RpZmljYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBmdHJhY2UgY29kZSBhbmQgc29tZXRoaW5nJiMzOTtzIGltbWVkaWF0ZWx5IGNhdGNoaW5nIG15IGF0dGVudGlvbi4gSSBzZWUgdGhhdCB0aGUgYHRyLSZndDtmdW5jLmZ0cmFjZV9tYW5hZ2VkYCBmbGFnIGlzIGJlaW5nIGV4cGxpY2l0bHkgY2hlY2tlZCBpbiBib3RoIGB1bnJlZ2lzdGVyX2ZlbnRyeWAgYW5kIGBtb2RpZnlfZmVudHJ5YCDigJMgY2xhc3NpYyBjaGVja3MgZm9yIG1hbmFnZWQgZnRyYWNlIGVudHJpZXMsIGFzIEkmIzM5O2QgZXhwZWN0LiBIb3dldmVyLCB3aGVuIEkgbG9vayBhdCBob3cgdGhlIG11bHRpLWZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgdmlhIHRoZSBgdHJhbXBvbGluZV9tdWx0aV9vcHNgLCBJIHNlZSB0aGF0IGl0IHVzZXMgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCBhbmQgYG1vZGlmeV9mZW50cnlfbXVsdGlgIGluc3RlYWQuCgpTbywgdGhlIHF1ZXN0aW9uIHRoYXQmIzM5O3MgYnViYmxpbmcgdXAgaW4gbXkgbWluZCBpcyB0aGlzOiBBcmUgdGhlIGluZGl2aWR1YWwgYHVucmVnaXN0ZXJfZmVudHJ5YCBvciBgbW9kaWZ5X2ZlbnRyeWAgZnVuY3Rpb25zIGFjdHVhbGx5IGV2ZXIgKnVzZWQqIG9uIHRoZXNlIG11bHRpLXRyYW1wb2xpbmVzPyBBbmQgaWYgbm90LCBpcyB0aGlzIGBmdHJhY2VfbWFuYWdlZGAgZmxhZyBiZWluZyB1c2VkICphbnl3aGVyZSogZWxzZSBpbiByZWxhdGlvbiB0byB0aGlzIG11bHRpLXRyYW1wb2xpbmUgc2V0dXA/IEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSB1c2FnZSBhbmQgZGV0ZXJtaW5lIGlmIHRoZXJlJiMzOTtzIGEgZGlzY29ubmVjdCBvciBhIHBvdGVudGlhbCBvdmVyc2lnaHQgaW4gaG93IHRoZXNlIGRpZmZlcmVudCBmdW5jdGlvbiBzZXRzIGludGVyYWN0LiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZSBmdHJhY2UgaW5mcmFzdHJ1Y3R1cmUgYW5kIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGluZyBvZiBtYW5hZ2VkIGVudHJpZXMgYWNyb3NzIGRpZmZlcmVudCB0cmFtcG9saW5lIGNvbmZpZ3VyYXRpb25zLiBUaW1lIHRvIGRpZyBkZWVwZXIuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dW5yZWdpc3Rlcl9mZW50cnkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi90cmFtcG9saW5lLmM9NjI9c3RydWN0IGJwZl90cmFtcG9saW5lX29wcyB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy02My1cdGludCAoKnJlZ2lzdGVyX2ZlbnRyeSkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKmRhdGEpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NjQ6XHRpbnQgKCp1bnJlZ2lzdGVyX2ZlbnRyeSkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKmRhdGEpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjUtXHRpbnQgKCptb2RpZnlfZmVudHJ5KShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDMwPXN0YXRpYyB2b2lkIGJwZl90cmFtcF9pbWFnZV9wdXQoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0pO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDMxLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDMyOnN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKmRhdGEgX19tYXliZV91bnVzZWQpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MzMte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTUwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyB0cmFtcG9saW5lX29wcyA9IHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTUwMi1cdC5yZWdpc3Rlcl9mZW50cnkgICA9IHJlZ2lzdGVyX2ZlbnRyeSxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjUwMzpcdC51bnJlZ2lzdGVyX2ZlbnRyeSA9IHVucmVnaXN0ZXJfZmVudHJ5LFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNTA0LVx0Lm1vZGlmeV9mZW50cnkgICAgID0gbW9kaWZ5X2ZlbnRyeSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz02NzM9c3RhdGljIGludCBicGZfdHJhbXBvbGluZV91cGRhdGUoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgYm9vbCBsb2NrX2RpcmVjdF9tdXRleCxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy02ODYtXHRpZiAodG90YWwgPT0gMCkge1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6Njg3Olx0XHRlcnIgPSBvcHMtXHUwMDNldW5yZWdpc3Rlcl9mZW50cnkodHIsIG9yaWdfZmxhZ3MsIGRhdGEpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjg4LVx0XHRnb3RvIG91dDtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTMwPXN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5X211bHRpKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICpwdHIpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU0NC1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1NDU6c3RhdGljIGludCB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgdm9pZCAqcHRyKVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU0Ni17XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTU3ND1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyB0cmFtcG9saW5lX211bHRpX29wcyA9IHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NzUtXHQucmVnaXN0ZXJfZmVudHJ5ICAgPSByZWdpc3Rlcl9mZW50cnlfbXVsdGksXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTc2Olx0LnVucmVnaXN0ZXJfZmVudHJ5ID0gdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGksXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTc3LVx0Lm1vZGlmeV9mZW50cnkgICAgID0gbW9kaWZ5X2ZlbnRyeV9tdWx0aSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkwOQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBJbnRlcmFjdGlvbiBvZiBgZnRyYWNlX21hbmFnZWRgIGFuZCBUcmFtcG9saW5lIE9wZXJhdGlvbnMqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGZ1bGx5IHVuZGVyc3RhbmQgdGhpcy4gSXQganVzdCBoaXQgbWU6IGB1bnJlZ2lzdGVyX2ZlbnRyeWAgcmVsaWVzIG9uIGB0ci0mZ3Q7ZnVuYy5mdHJhY2VfbWFuYWdlZGAuIEFuZCBJIHJlY2FsbCB0aGF0IGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgICpzZXRzKiBgdHItJmd0O2Z1bmMuZnRyYWNlX21hbmFnZWRgIHRvIGB0cnVlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBkb2VzIHRoYXQgc2V0IGhhdmUgYW55IHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGZvciBgdW5yZWdpc3Rlcl9mZW50cnlgPyBJIGhhdmUgYSBmZWVsaW5nIHRoZSBhbnN3ZXIgd2lsbCBiZSBOTyBidXQgYmVzdCB0byBjaGVjay4KCldhaXQsIG5vdyB0aGF0IEkgdGhpbmsgYWJvdXQgaXQsIGB1bnJlZ2lzdGVyX2ZlbnRyeWAgaXMgYnVyaWVkIGF3YXkgaW4gdGhlIGB0cmFtcG9saW5lX29wc2Agc3RydWN0dXJlLiBXaGVyZWFzLCBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCByZXNpZGVzIGluIGB0cmFtcG9saW5lX211bHRpX29wc2AuIEhtbSwgc28gZXZlbiBpZiB0aGUgZm9ybWVyIGZ1bmN0aW9uIHJlbGllcyBvbiB0aGUgbGF0dGVyIHZhcmlhYmxlIGl0IHNob3VsZCBiZSBvaywgdW5sZXNzLi4uIHdoYXQgaGFwcGVucyBpZiBhIHRyYW1wb2xpbmUgaXMgc3dpdGNoZWQgZnJvbSB0aGUgbXVsdGkgdmVyc2lvbiB0byB0aGUgc2luZ2xlIHZlcnNpb24gb2YgdGhlIGltcGxlbWVudGF0aW9uPyBPciBpZiBgZnRyYWNlX21hbmFnZWRgIGlzIGNoZWNrZWQgKmVsc2V3aGVyZSo/CgpPa2F5LCB0aW1lIHRvIGdldCBzZXJpb3VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBldmVyeXdoZXJlIHRoYXQgYGZ0cmFjZV9tYW5hZ2VkYCBpcyBhY3R1YWxseSB1c2VkLiBUaGF0JiMzOTtzIHRoZSBvbmx5IHdheSBJJiMzOTtsbCBoYXZlIGEgY2xlYXIgcGljdHVyZS4gR290dGEgZGlnIGludG8gdGhlIGNvZGUgYW5kIGZpbmQgYWxsIHRoZSBjYWxscy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSB0aG9yb3VnaCBzZWFyY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z0cmFjZV9tYW5hZ2VkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmLmg9MTM4MD1zdHJ1Y3QgYnBmX3RyYW1wb2xpbmUge1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMTM5Mi1cdFx0dm9pZCAqYWRkcjtcbmluY2x1ZGUvbGludXgvYnBmLmg6MTM5MzpcdFx0Ym9vbCBmdHJhY2VfbWFuYWdlZDtcbmluY2x1ZGUvbGludXgvYnBmLmgtMTM5NC1cdH0gZnVuYztcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz00MzI9c3RhdGljIGludCB1bnJlZ2lzdGVyX2ZlbnRyeShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgdm9pZCAqZGF0YSBfX21heWJlX3VudXNlZClcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MzYtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0Mzc6XHRpZiAodHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZClcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQzOC1cdFx0cmV0ID0gZGlyZWN0X29wc19kZWwodHIsIG9sZF9hZGRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz00NTA9c3RhdGljIGludCBtb2RpZnlfZmVudHJ5KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBvcmlnX2ZsYWdzLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00NTYtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0NTc6XHRpZiAodHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZCkge1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDU4LVx0XHRyZXQgPSBkaXJlY3Rfb3BzX21vZCh0ciwgbmV3X2FkZHIsIGxvY2tfZGlyZWN0X211dGV4KTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz00NzM9c3RhdGljIGludCByZWdpc3Rlcl9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDg0LVx0XHRcdHJldHVybiAtRU5PVFNVUFA7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0ODU6XHRcdHRyLVx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQgPSB0cnVlO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDg2LVx0fVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDg3LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDg4Olx0aWYgKHRyLVx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQpIHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ4OS1cdFx0cmV0ID0gZGlyZWN0X29wc19hZGQodHIsIG5ld19hZGRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTMwPXN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5X211bHRpKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICpwdHIpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTUzOC1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1Mzk6XHR0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDAtXHRmdHJhY2VfaGFzaF9hZGQoZGF0YS1cdTAwM2VyZWcsIGRhdGEtXHUwMDNlZW50cnksIGlwLCBhZGRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAxMgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipFeGFtaW5pbmcgZnRyYWNlX21hbmFnZWQgVXNhZ2UqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYGZ0cmFjZV9tYW5hZ2VkYCBmbGFnIGFuZCBpdHMgdXNlIGluIHRoZSBmdHJhY2Ugc3Vic3lzdGVtLiBJJiMzOTt2ZSBvYnNlcnZlZCB0aGF0IGBmdHJhY2VfbWFuYWdlZGAgaXMgb25seSByZWZlcmVuY2VkIHdpdGhpbiBgdW5yZWdpc3Rlcl9mZW50cnlgLCBgbW9kaWZ5X2ZlbnRyeWAsIGFuZCBgcmVnaXN0ZXJfZmVudHJ5YC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIEJ1dCB3YWl0IGEgbWludXRlLi4uIEkgbmVlZCB0byBjb25zaWRlciBhIHBvdGVudGlhbCBlZGdlIGNhc2UuIElmIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgICphbHNvKiBzZXRzIGB0ci0mZ3Q7ZnVuYy5mdHJhY2VfbWFuYWdlZCA9IHRydWVgLCBhbmQgdGhlbiBhICpzaW5nbGUqIGBmZW50cnlgIGlzIGF0dGFjaGVkIHRvIHRoZSAqc2FtZSogZnVuY3Rpb24gdmlhIHNvbWUgb3RoZXIgbWVhbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gVGhlcmUgY291bGQgYmUgY29uZmxpY3RzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIFRoaXMgbWlnaHQgcG9pbnQgdG8gYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgYW4gdW5oYW5kbGVkIHN0YXRlLiBJIGJldHRlciBpbnZlc3RpZ2F0ZSB0aGUgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAgZnVuY3Rpb24gdG8gc2VlIGlmIGl0IGhhbmRsZXMgdGhpcyBzY2VuYXJpby4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3RyYW1wb2xpbmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY0MDpcdFx0XHRnb3RvIG91dDtcbiA2NDE6XHRcbiA2NDI6XHRcdGVyciA9IGJwZl9qaXRfY2hhcmdlX21vZG1lbShzaXplKTtcbiA2NDM6XHRcdGlmIChlcnIpXG4gNjQ0Olx0XHRcdGdvdG8gb3V0X2ZyZWVfaW07XG4gNjQ1Olx0XHRpbS1cdTAwM2VzaXplID0gc2l6ZTtcbiA2NDY6XHRcbiA2NDc6XHRcdGVyciA9IC1FTk9NRU07XG4gNjQ4Olx0XHRpbS1cdTAwM2VpbWFnZSA9IGltYWdlID0gYXJjaF9hbGxvY19icGZfdHJhbXBvbGluZShzaXplKTtcbiA2NDk6XHRcdGlmICghaW1hZ2UpXG4gNjUwOlx0XHRcdGdvdG8gb3V0X3VuY2hhcmdlO1xuIDY1MTpcdFxuIDY1MjpcdFx0ZXJyID0gcGVyY3B1X3JlZl9pbml0KFx1MDAyNmltLVx1MDAzZXBjcmVmLCBfX2JwZl90cmFtcF9pbWFnZV9yZWxlYXNlLCAwLCBHRlBfS0VSTkVMKTtcbiA2NTM6XHRcdGlmIChlcnIpXG4gNjU0Olx0XHRcdGdvdG8gb3V0X2ZyZWVfaW1hZ2U7XG4gNjU1Olx0XG4gNjU2Olx0XHRrc3ltID0gXHUwMDI2aW0tXHUwMDNla3N5bTtcbiA2NTc6XHRcdElOSVRfTElTVF9IRUFEX1JDVShcdTAwMjZrc3ltLVx1MDAzZWxub2RlKTtcbiA2NTg6XHRcdHNucHJpbnRmKGtzeW0tXHUwMDNlbmFtZSwgS1NZTV9OQU1FX0xFTiwgXCYjMzQ7YnBmX3RyYW1wb2xpbmVfJWxsdVwmIzM0Oywga2V5KTtcbiA2NTk6XHRcdGJwZl9pbWFnZV9rc3ltX2luaXQoaW1hZ2UsIHNpemUsIGtzeW0pO1xuIDY2MDpcdFx0YnBmX2ltYWdlX2tzeW1fYWRkKGtzeW0pO1xuIDY2MTpcdFx0cmV0dXJuIGltO1xuIDY2MjpcdFxuIDY2MzpcdG91dF9mcmVlX2ltYWdlOlxuIDY2NDpcdFx0YXJjaF9mcmVlX2JwZl90cmFtcG9saW5lKGltLVx1MDAzZWltYWdlLCBpbS1cdTAwM2VzaXplKTtcbiA2NjU6XHRvdXRfdW5jaGFyZ2U6XG4gNjY2Olx0XHRicGZfaml0X3VuY2hhcmdlX21vZG1lbShzaXplKTtcbiA2Njc6XHRvdXRfZnJlZV9pbTpcbiA2Njg6XHRcdGtmcmVlKGltKTtcbiA2Njk6XHRvdXQ6XG4gNjcwOlx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIDY3MTpcdH1cbiA2NzI6XHRcbiA2NzM6XHRzdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxuIDY3NDpcdFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgKm9wcywgdm9pZCAqZGF0YSlcbiA2NzU6XHR7XG4gNjc2Olx0XHRzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbTtcbiA2Nzc6XHRcdHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKnRub2RlcztcbiA2Nzg6XHRcdHUzMiBvcmlnX2ZsYWdzID0gdHItXHUwMDNlZmxhZ3M7XG4gNjc5Olx0XHRib29sIGlwX2FyZyA9IGZhbHNlO1xuIDY4MDpcdFx0aW50IGVyciwgdG90YWwsIHNpemU7XG4gNjgxOlx0XG4gNjgyOlx0XHR0bm9kZXMgPSBicGZfdHJhbXBvbGluZV9nZXRfcHJvZ3ModHIsIFx1MDAyNnRvdGFsLCBcdTAwMjZpcF9hcmcpO1xuIDY4MzpcdFx0aWYgKElTX0VSUih0bm9kZXMpKVxuIDY4NDpcdFx0XHRyZXR1cm4gUFRSX0VSUih0bm9kZXMpO1xuIDY4NTpcdFxuIDY4NjpcdFx0aWYgKHRvdGFsID09IDApIHtcbiA2ODc6XHRcdFx0ZXJyID0gb3BzLVx1MDAzZXVucmVnaXN0ZXJfZmVudHJ5KHRyLCBvcmlnX2ZsYWdzLCBkYXRhKTtcbiA2ODg6XHRcdFx0Z290byBvdXQ7XG4gNjg5Olx0XHR9XG4gNjkwOlx0XG4gNjkxOlx0XHQvKiBjbGVhciBhbGwgYml0cyBleGNlcHQgU0hBUkVfSVBNT0RJRlkgYW5kIFRBSUxfQ0FMTF9DVFggKi9cbiA2OTI6XHRcdHRyLVx1MDAzZWZsYWdzIFx1MDAyNj0gKEJQRl9UUkFNUF9GX1NIQVJFX0lQTU9ESUZZIHwgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCk7XG4gNjkzOlx0XG4gNjk0Olx0XHRpZiAodG5vZGVzW0JQRl9UUkFNUF9GRVhJVF0ubnJfbm9kZXMgfHxcbiA2OTU6XHRcdCAgICB0bm9kZXNbQlBGX1RSQU1QX01PRElGWV9SRVRVUk5dLm5yX25vZGVzKSB7XG4gNjk2Olx0XHRcdC8qIE5PVEU6IEJQRl9UUkFNUF9GX1JFU1RPUkVfUkVHUyBhbmQgQlBGX1RSQU1QX0ZfU0tJUF9GUkFNRVxuIDY5NzpcdFx0XHQgKiBzaG91bGQgbm90IGJlIHNldCB0b2dldGhlci5cbiA2OTg6XHRcdFx0ICovXG4gNjk5Olx0XHRcdHRyLVx1MDAzZWZsYWdzIHw9IEJQRl9UUkFNUF9GX0NBTExfT1JJRyB8IEJQRl9UUkFNUF9GX1NLSVBfRlJBTUU7XG4gNzAwOlx0XHR9IGVsc2Uge1xuIDcwMTpcdFx0XHR0ci1cdTAwM2VmbGFncyB8PSBCUEZfVFJBTVBfRl9SRVNUT1JFX1JFR1M7XG4gNzAyOlx0XHR9XG4gNzAzOlx0XG4gNzA0Olx0XHRpZiAoaXBfYXJnKVxuIDcwNTpcdFx0XHR0ci1cdTAwM2VmbGFncyB8PSBCUEZfVFJBTVBfRl9JUF9BUkc7XG4gNzA2Olx0XG4gNzA3Olx0I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xuIDcwODpcdGFnYWluOlxuIDcwOTpcdFx0aWYgKHRyLVx1MDAzZWZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9DQUxMX09SSUcpIHtcbiA3MTA6XHRcdFx0aWYgKHRyLVx1MDAzZWZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9TSEFSRV9JUE1PRElGWSkge1xuIDcxMTpcdFx0XHRcdC8qIFRoZSBCUEZfVFJBTVBfRl9TS0lQX0ZSQU1FIGNhbiBiZSBjbGVhcmVkIGluIHRoZVxuIDcxMjpcdFx0XHRcdCAqIGZpcnN0IHRyeSwgcmVzZXQgaXQgaW4gdGhlIHNlY29uZCB0cnkuXG4gNzEzOlx0XHRcdFx0ICovXG4gNzE0Olx0XHRcdFx0dHItXHUwMDNlZmxhZ3MgfD0gQlBGX1RSQU1QX0ZfT1JJR19TVEFDSyB8IEJQRl9UUkFNUF9GX1NLSVBfRlJBTUU7XG4gNzE1Olx0XHRcdH0gZWxzZSBpZiAoSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVApKSB7XG4gNzE2Olx0XHRcdFx0LyogVXNlIFwmIzM0O2ptcFwmIzM0OyBpbnN0ZWFkIG9mIFwmIzM0O2NhbGxcJiMzNDsgZm9yIHRoZSB0cmFtcG9saW5lXG4gNzE3Olx0XHRcdFx0ICogaW4gdGhlIG9yaWdpbiBjYWxsIGNhc2UsIGFuZCB3ZSBkb24mIzM5O3QgbmVlZCB0b1xuIDcxODpcdFx0XHRcdCAqIHNraXAgdGhlIGZyYW1lLlxuIDcxOTpcdFx0XHRcdCAqL1xuIDcyMDpcdFx0XHRcdHRyLVx1MDAzZWZsYWdzIFx1MDAyNj0gfkJQRl9UUkFNUF9GX1NLSVBfRlJBTUU7XG4gNzIxOlx0XHRcdH1cbiA3MjI6XHRcdH1cbiA3MjM6XHQjZW5kaWZcbiA3MjQ6XHRcbiA3MjU6XHRcdHNpemUgPSBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoXHUwMDI2dHItXHUwMDNlZnVuYy5tb2RlbCwgdHItXHUwMDNlZmxhZ3MsXG4gNzI2Olx0XHRcdFx0XHRcdHRub2RlcywgdHItXHUwMDNlZnVuYy5hZGRyKTtcbiA3Mjc6XHRcdGlmIChzaXplIFx1MDAzYyAwKSB7XG4gNzI4Olx0XHRcdGVyciA9IHNpemU7XG4gNzI5Olx0XHRcdGdvdG8gb3V0O1xuIDczMDpcdFx0fVxuIDczMTpcdFxuIDczMjpcdFx0aWYgKHNpemUgXHUwMDNlIFBBR0VfU0laRSkge1xuIDczMzpcdFx0XHRlcnIgPSAtRTJCSUc7XG4gNzM0Olx0XHRcdGdvdG8gb3V0O1xuIDczNTpcdFx0fVxuIDczNjpcdFxuIDczNzpcdFx0aW0gPSBicGZfdHJhbXBfaW1hZ2VfYWxsb2ModHItXHUwMDNla2V5LCBzaXplKTtcbiA3Mzg6XHRcdGlmIChJU19FUlIoaW0pKSB7XG4gNzM5Olx0XHRcdGVyciA9IFBUUl9FUlIoaW0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTgxCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBUcmFtcG9saW5lIEJ1ZyBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IGFwcGVhcnMgdG8gYWRkcmVzcyBhIGJ1ZyBpbiB0aGUgQlBGIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgZmVudHJ5IG1lY2hhbmlzbS4gSSBzZWUgdGhhdCBgdHItJmd0O2Z1bmMuZnRyYWNlX21hbmFnZWRgIHdhc24mIzM5O3QgYmVpbmcgc2V0IHRvIGB0cnVlYCBpbiBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgd2hpY2ggaXMgZGVmaW5pdGVseSBhIHByb2JsZW0uIFRoaXMgb21pc3Npb24gY291bGQgbGVhZCB0byBpbmNvcnJlY3QgYmVoYXZpb3Igd2hlbiBtdWx0aXBsZSBmZW50cmllcyBhcmUgaW52b2x2ZWQuCgpUaGUgY29yZSBvZiB0aGUgaXNzdWUgc2VlbXMgdG8gYXJpc2Ugd2hlbiBhIHNpbmdsZSBmZW50cnkgaXMgYXR0YWNoZWQgdG8gYSBmdW5jdGlvbiB0aGF0IGFscmVhZHkgaGFzIGEgbXVsdGkgZmVudHJ5LCB0cmlnZ2VyaW5nIGBicGZfdHJhbXBvbGluZV91cGRhdGVgLiBJbnRlcmVzdGluZy4gV2FpdCBhIG1pbnV0ZSwgdGhlIGB0ZXN0X2ZlbnRyeV9hZnRlcl9tdWx0aWAgdGVzdCBjYXNlIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBwcm92b2tlICp0aGlzKiBzY2VuYXJpbywgc3RlcCBieSBzdGVwISBJdCBhdHRhY2hlcyBhIGBmZW50cnkubXVsdGlgLCB0aGVuIGEgc2luZ2xlIGBmZW50cnlgLCBkZXRhY2hlcyB0aGUgc2luZ2xlIGBmZW50cnlgLCBhbmQgdGhlbiBkZXRhY2hlcyB0aGUgYGZlbnRyeS5tdWx0aWAuIFRoYXQmIzM5O3MgcHJlY2lzZWx5IHRoZSBzaXR1YXRpb24gYmVpbmcgZmxhZ2dlZCBoZXJlLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIG1vZGlmaWNhdGlvbiB0byBob3cgQlBGIHRyYW1wb2xpbmVzIGFyZSBtYW5hZ2VkLCBzcGVjaWZpY2FsbHkgZm9yIHByb2dyYW1zIHVzaW5nIGBmZW50cnkubXVsdGlgLiBOb3cgSSBuZWVkIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBjb3JyZWN0bHkgbWFuYWdlcyB0aGUgZmVudHJ5IHN0YXRlLgoKSSYjMzk7bSBtYWtpbmcgYSBtZW50YWwgbm90ZSB0aGF0IHRoaXMgcGF0Y2ggcmVxdWlyZXMgdGhlIGNvbmZpZ3VyYXRpb25zIGBCUEZfU1lTQ0FMTGAsIGBGVFJBQ0VgLCBhbmQgcG90ZW50aWFsbHkgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYC4gVGltZSB0byBkb3VibGUtY2hlY2sgYGtlcm5lbC9icGYvdHJhbXBvbGluZS5jYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoZSBvdmVyYWxsIGltcGFjdCBvbiB0aGUgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfLipGVFJBQ0UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDMwODIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91c2IvZHdjMy5yc3Q9NTM3PWluZm9ybWF0aW9uIGFib3V0IHRoZSBiZWhhdmlvciBvZiB0aGUgZHJpdmVyIGR1cmluZyBydW50aW1lLlxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3VzYi9kd2MzLnJzdC01MzgtXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2R3YzMucnN0OjUzOTpJbiBvcmRlciB0byB1c2UgdGhlc2UgZXZlbnRzLCB5b3UgbXVzdCBlbmFibGUgYGBDT05GSUdfRlRSQUNFYGAgaW5cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS91c2IvZHdjMy5yc3QtNTQwLXlvdXIga2VybmVsIGNvbmZpZy5cbi0tXG5Eb2N1bWVudGF0aW9uL2xpdmVwYXRjaC9saXZlcGF0Y2gucnN0PTQ0PWEgYmFzZS4gQSBLcHJvYmUgaXMgcmVnaXN0ZXJlZCBhcyBhIGZ0cmFjZSBoYW5kbGVyIHdoZW4gdGhlIGZ1bmN0aW9uIGVudHJ5XG5Eb2N1bWVudGF0aW9uL2xpdmVwYXRjaC9saXZlcGF0Y2gucnN0OjQ1OmlzIHByb2JlZCwgc2VlIENPTkZJR19LUFJPQkVTX09OX0ZUUkFDRS4gQWxzbyBhbiBhbHRlcm5hdGl2ZSBmdW5jdGlvbiBmcm9tXG5Eb2N1bWVudGF0aW9uL2xpdmVwYXRjaC9saXZlcGF0Y2gucnN0LTQ2LWEgbGl2ZSBwYXRjaCBpcyBjYWxsZWQgd2l0aCB0aGUgaGVscCBvZiBhIGN1c3RvbSBmdHJhY2UgaGFuZGxlci4gQnV0IHRoZXJlIGFyZVxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZWJ1Z2dpbmcvZHJpdmVyX2RldmVsb3BtZW50X2RlYnVnZ2luZ19ndWlkZS5yc3Q9NTI9VHJhY2VfcHJpbnRrXG4tLVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlYnVnZ2luZy9kcml2ZXJfZGV2ZWxvcG1lbnRfZGVidWdnaW5nX2d1aWRlLnJzdC01NC1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZWJ1Z2dpbmcvZHJpdmVyX2RldmVsb3BtZW50X2RlYnVnZ2luZ19ndWlkZS5yc3Q6NTU6UHJlcmVxdWlzaXRlOiBgYENPTkZJR19EWU5BTUlDX0ZUUkFDRWBgIFx1MDAyNiBgYCNpbmNsdWRlIFx1MDAzY2xpbnV4L2Z0cmFjZS5oXHUwMDNlYGBcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZWJ1Z2dpbmcvZHJpdmVyX2RldmVsb3BtZW50X2RlYnVnZ2luZ19ndWlkZS5yc3QtNTYtXG4tLVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlYnVnZ2luZy91c2Vyc3BhY2VfZGVidWdnaW5nX2d1aWRlLnJzdD02Mz1GdHJhY2Vcbi0tXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVidWdnaW5nL3VzZXJzcGFjZV9kZWJ1Z2dpbmdfZ3VpZGUucnN0LTY1LVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlYnVnZ2luZy91c2Vyc3BhY2VfZGVidWdnaW5nX2d1aWRlLnJzdDo2NjpQcmVyZXF1aXNpdGU6IGBgQ09ORklHX0RZTkFNSUNfRlRSQUNFYGBcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZWJ1Z2dpbmcvdXNlcnNwYWNlX2RlYnVnZ2luZ19ndWlkZS5yc3QtNjctXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UtdXNlcy5yc3Q9MTM4PWZ0cmFjZV90ZXN0X3JlY3Vyc2lvbl90cnlsb2NrKCkgdG8gcmVjb3JkIHdoZXJlIHRoZSByZWN1cnNpb24gaGFwcGVuZWRcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLXVzZXMucnN0OjEzOTooaWYgQ09ORklHX0ZUUkFDRV9SRUNPUkRfUkVDVVJTSU9OIGlzIHNldCkuXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS11c2VzLnJzdC0xNDAtXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0PTI5NjI9ZHluYW1pYyBmdHJhY2Vcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3QtMjk2NC1cbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLnJzdDoyOTY1OklmIENPTkZJR19EWU5BTUlDX0ZUUkFDRSBpcyBzZXQsIHRoZSBzeXN0ZW0gd2lsbCBydW4gd2l0aFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTI5NjYtdmlydHVhbGx5IG5vIG92ZXJoZWFkIHdoZW4gZnVuY3Rpb24gdHJhY2luZyBpcyBkaXNhYmxlZC4gVGhlIHdheVxuLS1cbk1ha2VmaWxlPTEwMjk9aWZkZWYgQ09ORklHX0ZVTkNUSU9OX1RSQUNFUlxuTWFrZWZpbGU6MTAzMDppZmRlZiBDT05GSUdfRlRSQUNFX01DT1VOVF9VU0VfQ0Ncbk1ha2VmaWxlLTEwMzEtICBDQ19GTEFHU19GVFJBQ0VcdCYjNDM7PSAtbXJlY29yZC1tY291bnRcbi0tXG5NYWtlZmlsZT0xMDM4PWVuZGlmXG5NYWtlZmlsZToxMDM5OmlmZGVmIENPTkZJR19GVFJBQ0VfTUNPVU5UX1VTRV9PQkpUT09MXG5NYWtlZmlsZS0xMDQwLSAgaWZkZWYgQ09ORklHX0hBVkVfT0JKVE9PTF9OT1BfTUNPVU5UXG4tLVxuTWFrZWZpbGU9MTA0Mz1lbmRpZlxuTWFrZWZpbGU6MTA0NDppZmRlZiBDT05GSUdfRlRSQUNFX01DT1VOVF9VU0VfUkVDT1JETUNPVU5UXG5NYWtlZmlsZS0xMDQ1LSAgaWZkZWYgQ09ORklHX0hBVkVfQ19SRUNPUkRNQ09VTlRcbi0tXG5hcmNoL2FyYy9jb25maWdzL2F4czEwMV9kZWZjb25maWc9MTAyPUNPTkZJR19ERUZBVUxUX0hVTkdfVEFTS19USU1FT1VUPTEwXG4tLVxuYXJjaC9hcmMvY29uZmlncy9heHMxMDFfZGVmY29uZmlnLTEwNC0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAxX2RlZmNvbmZpZzoxMDU6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbi0tXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19kZWZjb25maWc9MTAwPUNPTkZJR19ERUZBVUxUX0hVTkdfVEFTS19USU1FT1VUPTEwXG4tLVxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfZGVmY29uZmlnLTEwMi0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAzX2RlZmNvbmZpZzoxMDM6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbi0tXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19zbXBfZGVmY29uZmlnPTEwMj1DT05GSUdfREVGQVVMVF9IVU5HX1RBU0tfVElNRU9VVD0xMFxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAzX3NtcF9kZWZjb25maWctMTA0LSMgQ09ORklHX0RFQlVHX1BSRUVNUFQgaXMgbm90IHNldFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfc21wX2RlZmNvbmZpZzoxMDU6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbi0tXG5hcmNoL2FyYy9jb25maWdzL2hzZGtfZGVmY29uZmlnPTg5PUNPTkZJR19ERUZBVUxUX0hVTkdfVEFTS19USU1FT1VUPTEwXG4tLVxuYXJjaC9hcmMvY29uZmlncy9oc2RrX2RlZmNvbmZpZy05MS0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWc6OTI6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWctOTMtQ09ORklHX0NSWVBUT19FQ0hBSU5JVj15XG4tLVxuYXJjaC9hcmMvY29uZmlncy9uc2ltb3NjaV9oc19zbXBfZGVmY29uZmlnPTcyPUNPTkZJR19ORlNfVjNfQUNMPXlcbmFyY2gvYXJjL2NvbmZpZ3MvbnNpbW9zY2lfaHNfc21wX2RlZmNvbmZpZzo3MzpDT05GSUdfRlRSQUNFPXlcbmFyY2gvYXJjL2NvbmZpZ3MvbnNpbW9zY2lfaHNfc21wX2RlZmNvbmZpZy03NC0jIENPTkZJR19ORVRfVkVORE9SX0NBREVOQ0UgaXMgbm90IHNldFxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvdmRrX2hzMzhfZGVmY29uZmlnPTkxPUNPTkZJR19ERUZBVUxUX0hVTkdfVEFTS19USU1FT1VUPTEwXG4tLVxuYXJjaC9hcmMvY29uZmlncy92ZGtfaHMzOF9kZWZjb25maWctOTMtIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XG5hcmNoL2FyYy9jb25maWdzL3Zka19oczM4X2RlZmNvbmZpZzo5NDojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvdmRrX2hzMzhfc21wX2RlZmNvbmZpZz05Nz1DT05GSUdfREVGQVVMVF9IVU5HX1RBU0tfVElNRU9VVD0xMFxuLS1cbmFyY2gvYXJjL2NvbmZpZ3MvdmRrX2hzMzhfc21wX2RlZmNvbmZpZy05OS0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcbmFyY2gvYXJjL2NvbmZpZ3MvdmRrX2hzMzhfc21wX2RlZmNvbmZpZzoxMDA6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbi0tXG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc9MjgwPUNPTkZJR19QU1RPUkVfUE1TRz15XG5hcmNoL2FybS9jb25maWdzL2FzcGVlZF9nNV9kZWZjb25maWc6MjgxOkNPTkZJR19QU1RPUkVfRlRSQUNFPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy0yODItQ09ORklHX1BTVE9SRV9SQU09eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvYXQ5MV9kdF9kZWZjb25maWc9MjQwPUNPTkZJR19ERUJVR19GUz15XG5hcmNoL2FybS9jb25maWdzL2F0OTFfZHRfZGVmY29uZmlnLTI0MS0jIENPTkZJR19TQ0hFRF9ERUJVRyBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL2F0OTFfZHRfZGVmY29uZmlnOjI0MjojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9hdDkxX2R0X2RlZmNvbmZpZy0yNDMtQ09ORklHX0RFQlVHX1VTRVI9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWc9MjI5PUNPTkZJR19SQ1VfQ1BVX1NUQUxMX1RJTUVPVVQ9NjBcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWc6MjMwOiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnLTIzMS1DT05GSUdfREVCVUdfVVNFUj15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9jbHBzNzExeF9kZWZjb25maWc9NzI9Q09ORklHX01JTklYX0ZTPXlcbmFyY2gvYXJtL2NvbmZpZ3MvY2xwczcxMXhfZGVmY29uZmlnLTczLSMgQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVMgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9jbHBzNzExeF9kZWZjb25maWc6NzQ6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvY2xwczcxMXhfZGVmY29uZmlnLTc1LUNPTkZJR19ERUJVR19VU0VSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL2lteF92Nl92N19kZWZjb25maWc9NDc5PUNPTkZJR19ERUJVR19GUz15XG5hcmNoL2FybS9jb25maWdzL2lteF92Nl92N19kZWZjb25maWctNDgwLSMgQ09ORklHX1NMVUJfREVCVUcgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnOjQ4MTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mvam9ybmFkYTcyMF9kZWZjb25maWc9OTI9Q09ORklHX0RFQlVHX0tFUk5FTD15XG5hcmNoL2FybS9jb25maWdzL2pvcm5hZGE3MjBfZGVmY29uZmlnOjkzOiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL2pvcm5hZGE3MjBfZGVmY29uZmlnLTk0LUNPTkZJR19ERUJVR19MTD15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9scGMzMnh4X2RlZmNvbmZpZz0xODc9Q09ORklHX1BBTklDX1RJTUVPVVQ9NVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbHBjMzJ4eF9kZWZjb25maWctMTg5LSMgQ09ORklHX0RFQlVHX1BSRUVNUFQgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9scGMzMnh4X2RlZmNvbmZpZzoxOTA6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvbHBjMzJ4eF9kZWZjb25maWctMTkxLUNPTkZJR19ERUJVR19MTD15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NHRfZGVmY29uZmlnPTkzPUNPTkZJR19NSU5JWF9GUz15XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y0dF9kZWZjb25maWc6OTQ6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjR0X2RlZmNvbmZpZy05NS1DT05GSUdfREVCVUdfVVNFUj15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NV9kZWZjb25maWc9MjkyPUNPTkZJR19ERUJVR19GUz15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NV9kZWZjb25maWctMjk0LSMgQ09ORklHX0RFQlVHX1BSRUVNUFQgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NV9kZWZjb25maWc6Mjk1OiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y1X2RlZmNvbmZpZy0yOTYtQ09ORklHX0RFQlVHX1VTRVI9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjVfZGVmY29uZmlnPTE5MT1DT05GSUdfREVCVUdfRlM9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjVfZGVmY29uZmlnLTE5My0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjVfZGVmY29uZmlnOjE5NDojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9tdmVidV92NV9kZWZjb25maWctMTk1LUNPTkZJR19ERUJVR19VU0VSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL29yaW9uNXhfZGVmY29uZmlnPTE0Mz1DT05GSUdfTEFURU5DWVRPUD15XG5hcmNoL2FybS9jb25maWdzL29yaW9uNXhfZGVmY29uZmlnOjE0NDojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9vcmlvbjV4X2RlZmNvbmZpZy0xNDUtQ09ORklHX0RFQlVHX1VTRVI9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvcHhhM3h4X2RlZmNvbmZpZz0xMDY9Q09ORklHX0RFQlVHX1NQSU5MT0NLX1NMRUVQPXlcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhM3h4X2RlZmNvbmZpZzoxMDc6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhM3h4X2RlZmNvbmZpZy0xMDgtQ09ORklHX0RFQlVHX1VTRVI9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZz02NjU9Q09ORklHX0ZVTkNUSU9OX1RSQUNFUj15XG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc6NjY2OkNPTkZJR19GVFJBQ0VfU1lTQ0FMTFM9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvcmVhbHZpZXdfZGVmY29uZmlnPTk3PUNPTkZJR19ERUJVR19GUz15XG5hcmNoL2FybS9jb25maWdzL3JlYWx2aWV3X2RlZmNvbmZpZy05OC0jIENPTkZJR19TQ0hFRF9ERUJVRyBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL3JlYWx2aWV3X2RlZmNvbmZpZzo5OTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9yZWFsdmlld19kZWZjb25maWctMTAwLUNPTkZJR19ERUJVR19VU0VSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NhbWE1X2RlZmNvbmZpZz0yNTE9Q09ORklHX0RFQlVHX01FTU9SWV9JTklUPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTVfZGVmY29uZmlnLTI1Mi0jIENPTkZJR19TQ0hFRF9ERUJVRyBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL3NhbWE1X2RlZmNvbmZpZzoyNTM6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTVfZGVmY29uZmlnLTI1NC1DT05GSUdfREVCVUdfVVNFUj15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWc9MjQ4PUNPTkZJR19TVEFDS1RSQUNFPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTdfZGVmY29uZmlnOjI0OTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWctMjUwLUNPTkZJR19ERUJVR19VU0VSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZz0yMzU9Q09ORklHX01BR0lDX1NZU1JRPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnLTIzNi0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnOjIzNzojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvdTg1MDBfZGVmY29uZmlnPTE5MD1DT05GSUdfREVCVUdfRlM9eVxuYXJjaC9hcm0vY29uZmlncy91ODUwMF9kZWZjb25maWctMTkxLSMgQ09ORklHX1NDSEVEX0RFQlVHIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3MvdTg1MDBfZGVmY29uZmlnOjE5MjojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy91ODUwMF9kZWZjb25maWctMTkzLUNPTkZJR19ERUJVR19VU0VSPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnPTE5Nj1DT05GSUdfREVCVUdfRlM9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3Mvd3BjbTQ1MF9kZWZjb25maWctMTk4LSMgQ09ORklHX0RFQlVHX1BSRUVNUFQgaXMgbm90IHNldFxuYXJjaC9hcm0vY29uZmlncy93cGNtNDUwX2RlZmNvbmZpZzoxOTk6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtL2NvbmZpZ3Mvd3BjbTQ1MF9kZWZjb25maWctMjAwLUNPTkZJR19JT19TVFJJQ1RfREVWTUVNPXlcbi0tXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9mdHJhY2UuaC02LVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vZnRyYWNlLmg6NzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xuYXJjaC9hcm0vaW5jbHVkZS9hc20vZnRyYWNlLmgtOC0jZGVmaW5lIEFSQ0hfU1VQUE9SVFNfRlRSQUNFX09QUyAxXG4tLVxuYXJjaC9hcm0vaW5jbHVkZS9hc20vZnRyYWNlLmg9MTY9ZXh0ZXJuIHZvaWQgX19nbnVfbWNvdW50X25jKHZvaWQpO1xuYXJjaC9hcm0vaW5jbHVkZS9hc20vZnRyYWNlLmgtMTctXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9mdHJhY2UuaDoxODojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9mdHJhY2UuaC0xOS1zdHJ1Y3QgZHluX2FyY2hfZnRyYWNlIHtcbi0tXG5hcmNoL2FybS9rZXJuZWwvTWFrZWZpbGU9NTk9b2JqLSQoQ09ORklHX0ZVTkNUSU9OX1RSQUNFUilcdCYjNDM7PSBlbnRyeS1mdHJhY2Uub1xuYXJjaC9hcm0va2VybmVsL01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19EWU5BTUlDX0ZUUkFDRSlcdCYjNDM7PSBmdHJhY2UubyBpbnNuLm8gcGF0Y2gub1xuYXJjaC9hcm0va2VybmVsL01ha2VmaWxlLTYxLW9iai0kKENPTkZJR19GVU5DVElPTl9HUkFQSF9UUkFDRVIpXHQmIzQzOz0gZnRyYWNlLm8gaW5zbi5vIHBhdGNoLm9cbi0tXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtNjItXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM6NjM6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1NcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy02NC1cbi0tXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM9MTA0PVRIVU1CKFx0bm9wLndcdFx0KVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNDQtXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTQ1OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTQ2LVx0bGRyX3ZhXHRyMiwgZnVuY3Rpb25fdHJhY2Vfb3BcdFx0QCBwb2ludGVyIHRvIHRoZSBjdXJyZW50XG4tLVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TPTE1OT1USFVNQihcdG5vcC53XHRcdClcbi0tXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTcwLSNlbmRpZlxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjE3MTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTcyLVx0QCBjYWxsZWQgZnJvbSBfX2Z0cmFjZV9jYWxsZXIsIHNhdmVkIGluIG1jb3VudF9lbnRlclxuLS1cbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0yMTA9VU5XSU5EKC5mbnN0YXJ0KVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjIxMTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjEyLVx0cHVzaFx0e2xyfVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0yMTk9RU5EUFJPQyhfX2dudV9tY291bnRfbmMpXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjIwLVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjIyMTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjIyLUVOVFJZKGZ0cmFjZV9jYWxsZXIpXG4tLVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TPTIyNj1FTkRQUk9DKGZ0cmFjZV9jYWxsZXIpXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjI3LVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjIyODojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTIyOS1FTlRSWShmdHJhY2VfcmVnc19jYWxsZXIpXG4tLVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TPTI0Mz1FTkRQUk9DKGZ0cmFjZV9ncmFwaF9jYWxsZXIpXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjQ0LVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjI0NTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTI0Ni1FTlRSWShmdHJhY2VfZ3JhcGhfcmVnc19jYWxsZXIpXG4tLVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TPTI4Nj1FTkRQUk9DKGZ0cmFjZV9zdHViX2dyYXBoKVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTI4Ny1cbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoyODg6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRVxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTI4OS1cbi0tXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM9Mjk1PUVORFBST0MoXFxkc3RcXCgpX2Zyb21faW5pdClcbi0tXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjk4LVx0aW5pdF90cmFtcFx0ZnRyYWNlX2NhbGxlclxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjI5OTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTMwMC1cdGluaXRfdHJhbXBcdGZ0cmFjZV9yZWdzX2NhbGxlclxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy00NC1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYzo0NTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtNDYtXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTY5PXN0YXRpYyB1bnNpZ25lZCBsb25nIF9fcmVmIGFkanVzdF9hZGRyZXNzKHN0cnVjdCBkeW5fZnRyYWNlICpyZWMsXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTcxLXtcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYzo3MjpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0UpIHx8XG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtNzMtXHQgICAgc3lzdGVtX3N0YXRlIFx1MDAzZT0gU1lTVEVNX0ZSRUVJTkdfSU5JVE1FTSB8fFxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy03NS1cdFx0cmV0dXJuIGFkZHI7XG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6NzY6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHUykgfHxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy03Ny1cdCAgICBhZGRyID09ICh1bnNpZ25lZCBsb25nKVx1MDAyNmZ0cmFjZV9jYWxsZXIpXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTEyMj1pbnQgZnRyYWNlX3VwZGF0ZV9mdHJhY2VfZnVuYyhmdHJhY2VfZnVuY190IGZ1bmMpXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTEzMi1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYzoxMzM6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1NcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0xMzQtXHRpZiAoIXJldCkge1xuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYz0xNDU9aW50IGZ0cmFjZV9tYWtlX2NhbGwoc3RydWN0IGR5bl9mdHJhY2UgKnJlYywgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0xNjgtXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6MTY5OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtMTcwLVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYz0xODY9aW50IGZ0cmFjZV9tYWtlX25vcChzdHJ1Y3QgbW9kdWxlICptb2QsXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTIyMi19XG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6MjIzOiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0UgKi9cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0yMjQtXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTIyNz12b2lkIHByZXBhcmVfZnRyYWNlX3JldHVybih1bnNpZ25lZCBsb25nICpwYXJlbnQsIHVuc2lnbmVkIGxvbmcgc2VsZl9hZGRyLFxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0yNzMtXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6Mjc0OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0yNzUtZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZnRyYWNlX2dyYXBoX2NhbGw7XG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTI5ND1zdGF0aWMgaW50IGZ0cmFjZV9tb2RpZnlfZ3JhcGhfY2FsbGVyKGJvb2wgZW5hYmxlKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0zMDEtXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6MzAyOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtMzAzLVx0aWYgKCFyZXQpXG4tLVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTMxOD1pbnQgZnRyYWNlX2Rpc2FibGVfZnRyYWNlX2dyYXBoX2NhbGxlcih2b2lkKVxuLS1cbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0zMjEtfVxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jOjMyMjojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFICovXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtMzIzLSNlbmRpZiAvKiBDT05GSUdfRlVOQ1RJT05fR1JBUEhfVFJBQ0VSICovXG4tLVxuYXJjaC9hcm0va2VybmVsL21vZHVsZS1wbHRzLmM9MjQ9c3RhdGljIGNvbnN0IHUzMiBmaXhlZF9wbHRzW10gPSB7XG5hcmNoL2FybS9rZXJuZWwvbW9kdWxlLXBsdHMuYzoyNTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2FybS9rZXJuZWwvbW9kdWxlLXBsdHMuYy0yNi1cdEZUUkFDRV9BRERSLFxuLS1cbmFyY2gvYXJtNjQvTWFrZWZpbGU9MTQxPUNIRUNLRkxBR1NcdCYjNDM7PSAtRF9fYWFyY2g2NF9fXG5hcmNoL2FybTY0L01ha2VmaWxlLTE0Mi1cbmFyY2gvYXJtNjQvTWFrZWZpbGU6MTQzOmlmZXEgKCQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQ0FMTF9PUFMpLHkpXG5hcmNoL2FybTY0L01ha2VmaWxlLTE0NC0gIEtCVUlMRF9DUFBGTEFHUyAmIzQzOz0gLURDQ19VU0lOR19QQVRDSEFCTEVfRlVOQ1RJT05fRU5UUllcbmFyY2gvYXJtNjQvTWFrZWZpbGUtMTQ1LSAgQ0NfRkxBR1NfRlRSQUNFIDo9IC1mcGF0Y2hhYmxlLWZ1bmN0aW9uLWVudHJ5PTQsMlxuYXJjaC9hcm02NC9NYWtlZmlsZToxNDY6ZWxzZSBpZmVxICgkKENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0FSR1MpLHkpXG5hcmNoL2FybTY0L01ha2VmaWxlLTE0Ny0gIEtCVUlMRF9DUFBGTEFHUyAmIzQzOz0gLURDQ19VU0lOR19QQVRDSEFCTEVfRlVOQ1RJT05fRU5UUllcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTE5NTk9Q09ORklHX0RFQlVHX0ZTPXlcbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTE5NjEtIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE5NjI6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTk2My1DT05GSUdfQ09SRVNJR0hUPW1cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE0LVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaDoxNTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC0xNi0jZGVmaW5lIEFSQ0hfU1VQUE9SVFNfRlRSQUNFX09QUyAxXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaD01NT11bnNpZ25lZCBsb25nIGFyY2hfZnRyYWNlX2dldF9zeW1hZGRyKHVuc2lnbmVkIGxvbmcgZmVudHJ5X2lwKTtcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTU3LVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaDo1ODojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC01OS0jZGVmaW5lIEhBVkVfQVJDSF9GVFJBQ0VfUkVHU1xuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg9NzE9c3RydWN0IF9fYXJjaF9mdHJhY2VfcmVncyB7XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC03NC1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg6NzU6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC03Ni1cdHVuc2lnbmVkIGxvbmcgZGlyZWN0X3RyYW1wO1xuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg9MTcyPXZvaWQgZnRyYWNlX2dyYXBoX2Z1bmModW5zaWduZWQgbG9uZyBpcCwgdW5zaWduZWQgbG9uZyBwYXJlbnRfaXAsXG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC0xNzUtXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oOjE3NjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE3Ny1zdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9mdHJhY2Vfc2V0X2RpcmVjdF9jYWxsZXIoc3RydWN0IGZ0cmFjZV9yZWdzICpmcmVncyxcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE4NS19XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oOjE4NjojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTICovXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE4Ny1cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21vZHVsZS5oPTE2PXN0cnVjdCBtb2RfYXJjaF9zcGVjaWZpYyB7XG4tLVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tb2R1bGUuaC0xOS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW9kdWxlLmg6MjA6XHQvKiBmb3IgQ09ORklHX0RZTkFNSUNfRlRSQUNFICovXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21vZHVsZS5oLTIxLVx0c3RydWN0IHBsdF9lbnRyeVx0KmZ0cmFjZV90cmFtcG9saW5lcztcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jPTI3PWludCBtYWluKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy04Mi0gIEJMQU5LKCk7XG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jOjgzOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTg0LSAgREVGSU5FKEZSRUdTX1gwLFx0XHRvZmZzZXRvZihzdHJ1Y3QgX19hcmNoX2Z0cmFjZV9yZWdzLCByZWdzWzBdKSk7XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy05Mi0gIERFRklORShGUkVHU19QQyxcdFx0b2Zmc2V0b2Yoc3RydWN0IF9fYXJjaF9mdHJhY2VfcmVncywgcGMpKTtcbmFyY2gvYXJtNjQva2VybmVsL2FzbS1vZmZzZXRzLmM6OTM6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy05NC0gIERFRklORShGUkVHU19ESVJFQ1RfVFJBTVAsXHRvZmZzZXRvZihzdHJ1Y3QgX19hcmNoX2Z0cmFjZV9yZWdzLCBkaXJlY3RfdHJhbXApKTtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE4Mi0gIEJMQU5LKCk7XG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jOjE4MzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE4NC0gIERFRklORShGVFJBQ0VfT1BTX0RJUkVDVF9DQUxMLFx0b2Zmc2V0b2Yoc3RydWN0IGZ0cmFjZV9vcHMsIGRpcmVjdF9jYWxsKSk7XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTUtXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoxNjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTctLypcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0zNj1TWU1fQ09ERV9TVEFSVChmdHJhY2VfY2FsbGVyKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTM4LVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6Mzk6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0NBTExfT1BTXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy00MC1cdC8qXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtNTMtXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzo1NDojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy01NS1cdC8qXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtNzYtXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzo3NzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy03OC1cdHN0clx0eHpyLCBbc3AsICNGUkVHU19ESVJFQ1RfVFJBTVBdXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTAxLVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTAyOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QU1xuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTAzLVx0bW92XHR4MiwgeDExXHRcdFx0XHRcdC8vIG9wXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM9MTEwPVNZTV9JTk5FUl9MQUJFTChmdHJhY2VfY2FsbCwgU1lNX0xfR0xPQkFMKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTEyOC1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TOjEyOTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xMzAtXHRsZHJcdHgxNywgW3NwLCAjRlJFR1NfRElSRUNUX1RSQU1QXVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTE0Mi1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TOjE0MzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNDQtU1lNX0lOTkVSX0xBQkVMKGZ0cmFjZV9jYWxsZXJfZGlyZWN0X2xhdGUsIFNZTV9MX0xPQ0FMKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TPTE2MT1TWU1fSU5ORVJfTEFCRUwoZnRyYWNlX2NhbGxlcl9kaXJlY3QsIFNZTV9MX0xPQ0FMKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTE2OC1cdGJyXHR4MTdcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TOjE2OTojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTICovXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNzAtU1lNX0NPREVfRU5EKGZ0cmFjZV9jYWxsZXIpXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNzEtXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoxNzI6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTczLVNZTV9DT0RFX1NUQVJUKGZ0cmFjZV9zdHViX2RpcmVjdF90cmFtcClcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0xNzg9U1lNX0NPREVfRU5EKGZ0cmFjZV9zdHViX2RpcmVjdF90cmFtcClcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TOjE3OTojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTICovXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xODAtXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoxODE6I2Vsc2UgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHUyAqL1xuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTgyLVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TPTMxMj1TWU1fRlVOQ19FTkQoZnRyYWNlX2dyYXBoX2NhbGxlcilcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTMxMy0jZW5kaWYgLyogQ09ORklHX0ZVTkNUSU9OX0dSQVBIX1RSQUNFUiAqL1xuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MzE0OiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTICovXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0zMTUtXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMTktXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYzoyMDojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMjEtc3RydWN0IGZyZWdzX29mZnNldCB7XG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM9NjM9dW5zaWduZWQgbG9uZyBmdHJhY2VfY2FsbF9hZGp1c3QodW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTY4LVx0ICovXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYzo2OTpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTKSlcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTcwLVx0XHRyZXR1cm4gYWRkcjtcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy05MC1cdCAqL1xuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6OTE6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQ0FMTF9PUFMpKVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtOTItXHRcdHJldHVybiBhZGRyICYjNDM7IEFBUkNINjRfSU5TTl9TSVpFO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTE0Nz11bnNpZ25lZCBsb25nIGFyY2hfZnRyYWNlX2dldF9zeW1hZGRyKHVuc2lnbmVkIGxvbmcgZmVudHJ5X2lwKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTE2OC1cdCAqL1xuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6MTY5Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0NBTExfT1BTKSlcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTE3MC1cdFx0cmV0dXJuIGZlbnRyeV9pcCAtIEFBUkNINjRfSU5TTl9TSVpFO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTI0Mj1pbnQgZnRyYWNlX3VwZGF0ZV9mdHJhY2VfZnVuYyhmdHJhY2VfZnVuY190IGZ1bmMpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMjUwLVx0ICovXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYzoyNTE6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QUykpXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy0yNTItXHRcdHJldHVybiAwO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTI5NT1zdGF0aWMgYm9vbCBmdHJhY2VfZmluZF9jYWxsYWJsZV9hZGRyKHN0cnVjdCBkeW5fZnRyYWNlICpyZWMsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMzUxLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6MzUyOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QU1xuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMzUzLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnRyYWNlX29wcyAqYXJtNjRfcmVjX2dldF9vcHMoc3RydWN0IGR5bl9mdHJhY2UgKnJlYylcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYz0zOTM9aW50IGZ0cmFjZV9tYWtlX2NhbGwoc3RydWN0IGR5bl9mdHJhY2UgKnJlYywgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTQxMS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjQxMjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQ0FMTF9PUFNcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTQxMy1pbnQgZnRyYWNlX21vZGlmeV9jYWxsKHN0cnVjdCBkeW5fZnRyYWNlICpyZWMsIHVuc2lnbmVkIGxvbmcgb2xkX2FkZHIsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNDM2LVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6NDM3OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy00MzgtLypcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYz00ODE9aW50IGZ0cmFjZV9tYWtlX25vcChzdHJ1Y3QgbW9kdWxlICptb2QsIHN0cnVjdCBkeW5fZnRyYWNlICpyZWMsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNTAyLVx0ICovXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYzo1MDM6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHUykgXHUwMDI2XHUwMDI2IG1vZClcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTUwNC1cdFx0cmV0dXJuIGFhcmNoNjRfaW5zbl9wYXRjaF90ZXh0X25vc3luYygodm9pZCAqKXBjLCBuZXcpO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTUyNz12b2lkIHByZXBhcmVfZnRyYWNlX3JldHVybih1bnNpZ25lZCBsb25nIHNlbGZfYWRkciwgdW5zaWduZWQgbG9uZyAqcGFyZW50LFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTU0OC1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjU0OTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNTUwLXZvaWQgZnRyYWNlX2dyYXBoX2Z1bmModW5zaWduZWQgbG9uZyBpcCwgdW5zaWduZWQgbG9uZyBwYXJlbnRfaXAsXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM9NTk0PWludCBmdHJhY2VfZGlzYWJsZV9mdHJhY2VfZ3JhcGhfY2FsbGVyKHZvaWQpXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNTk3LX1cbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjU5ODojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHUyAqL1xuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNTk5LSNlbmRpZiAvKiBDT05GSUdfRlVOQ1RJT05fR1JBUEhfVFJBQ0VSICovXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmM9NDUyPXN0YXRpYyBpbnQgbW9kdWxlX2luaXRfZnRyYWNlX3BsdChjb25zdCBFbGZfRWhkciAqaGRyLFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL21vZHVsZS5jLTQ1NS17XG5hcmNoL2FybTY0L2tlcm5lbC9tb2R1bGUuYzo0NTY6I2lmIGRlZmluZWQoQ09ORklHX0RZTkFNSUNfRlRSQUNFKVxuYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmMtNDU3LVx0Y29uc3QgRWxmX1NoZHIgKnM7XG4tLVxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TPTkyPUVORChmdHJhY2Vfc3R1YilcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy05My1cbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUzo5NDojaWZuZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRVxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TLTk1LUVOVFJZKF9tY291bnQpXG4tLVxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TPTEzMj1FTkQoX21jb3VudClcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUzoxMzM6I2Vsc2UgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFICovXG5hcmNoL2Nza3kvYWJpdjIvbWNvdW50LlMtMTM0LUVOVFJZKF9tY291bnQpXG4tLVxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TPTE2MT1FTkRQUk9DKGZ0cmFjZV9jYWxsZXIpXG5hcmNoL2Nza3kvYWJpdjIvbWNvdW50LlM6MTYyOiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0UgKi9cbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy0xNjMtXG4tLVxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TPTE4Mj1FTkQocmV0dXJuX3RvX2hhbmRsZXIpXG4tLVxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TLTE4NC1cbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUzoxODU6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1NcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy0xODYtRU5UUlkoZnRyYWNlX3JlZ3NfY2FsbGVyKVxuLS1cbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUz0yMTA9RU5EUFJPQyhmdHJhY2VfcmVnc19jYWxsZXIpXG5hcmNoL2Nza3kvYWJpdjIvbWNvdW50LlM6MjExOiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0UgKi9cbi0tXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jLTgtXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jOjk6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRVxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xMC1cbi0tXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jPTEyNz1pbnQgZnRyYWNlX3VwZGF0ZV9mdHJhY2VfZnVuYyhmdHJhY2VfZnVuY190IGZ1bmMpXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xMzUtfVxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYzoxMzY6I2VuZGlmIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRSAqL1xuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xMzctXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jOjEzODojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xMzktaW50IGZ0cmFjZV9tb2RpZnlfY2FsbChzdHJ1Y3QgZHluX2Z0cmFjZSAqcmVjLCB1bnNpZ25lZCBsb25nIG9sZF9hZGRyLFxuLS1cbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmM9MTQ3PXZvaWQgcHJlcGFyZV9mdHJhY2VfcmV0dXJuKHVuc2lnbmVkIGxvbmcgKnBhcmVudCwgdW5zaWduZWQgbG9uZyBzZWxmX2FkZHIsXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xODUtXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jOjE4NjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jLTE4Ny1pbnQgZnRyYWNlX2VuYWJsZV9mdHJhY2VfZ3JhcGhfY2FsbGVyKHZvaWQpXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYz0xOTM9aW50IGZ0cmFjZV9kaXNhYmxlX2Z0cmFjZV9ncmFwaF9jYWxsZXIodm9pZClcbi0tXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jLTE5Ny19XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1MDkKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBUcmFtcG9saW5lIENvbmZpZ3VyYXRpb24gUmVxdWlyZW1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgaGVyZS4gSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19GVFJBQ0VgLCBhbmQgYENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AuIFRoYXQgbGFzdCBvbmUsIGVuYWJsaW5nIGRpcmVjdCBjYWxscyBmb3IgdHJhbXBvbGluZXMsIGNhdGNoZXMgbXkgZXllLiBIb2xkIG9uLCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCBzZWVtcyB0byBzcGVjaWZpY2FsbHkgdXNlICpib3RoKiBgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYCBhbmQgYENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0pNUGAuIEhtbSwgdGhhdCBzZWVtcyBvZGQuCgpJIG5lZWQgdG8gY29uZmlybSB3aGF0IGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgcmVhbGx5IGRvZXMuIEkgc2hvdWxkIGNoZWNrIGVpdGhlciBga2VybmVsL2JwZi9LY29uZmlnYCBvciBga2VybmVsL3RyYWNlL0tjb25maWdgIHRvIGJlIGNlcnRhaW4uIFdhaXQsIGxldCYjMzk7cyBzdGVwIGJhY2sgYSBtb21lbnQgYW5kIHJlY29uc2lkZXIuIE1heWJlIGBCUEZfU1lTQ0FMTGAgYW5kIGBGVU5DVElPTl9UUkFDRVJgIGFsb25lIGFyZSBzdWZmaWNpZW50IGZvciBub3cuIEkmIzM5O20gb3ZlcnRoaW5raW5nIHRoaXMuCgpBaCwgYnV0IHRoZXJlJiMzOTtzIG1vcmUgdG8gaXQuIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItJmd0O2ZsYWdzKWAgaXMgZW1wbG95ZWQgaW4gYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAuIFRoYXQmIzM5O3MgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBjb250cm9scyB0aGUgdXNlIG9mIGBicGZfdHJhbXBvbGluZV91c2Vfam1wYC4gU28gbm93IEkgbmVlZCB0byBkaWcgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgYnBmX3RyYW1wb2xpbmVfdXNlX2ptcGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90cmFtcG9saW5lX3VzZV9qbXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTI5OTY9c3RhdGljIHZvaWQgc2F2ZV9hcmdzKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTggKipwcm9nLFxuLS1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0yOTk5LVx0aW50IGFyZ19yZWdzLCBmaXJzdF9vZmYgPSAwLCBucl9yZWdzID0gMCwgbnJfc3RhY2tfc2xvdHMgPSAwO1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjMwMDA6XHRib29sIHVzZV9qbXAgPSBicGZfdHJhbXBvbGluZV91c2Vfam1wKGZsYWdzKTtcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zMDAxLVx0aW50IGksIGo7XG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTMzNDY9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcndfaW1hZ2UsXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM0NDctXHRcdCAqL1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjM0NDg6XHRcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKGZsYWdzKSkge1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM0NDktXHRcdFx0Lyogbm8gcmlwIGluIHRoZSBcJiMzNDtqbXBcJiMzNDsgY2FzZSAqL1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MTMzMz1icGZfdHJhbXBvbGluZV9leGl0X3QgYnBmX3RyYW1wb2xpbmVfZXhpdChjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMTMzNS0jaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfSk1QXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjEzMzY6c3RhdGljIGlubGluZSBib29sIGJwZl90cmFtcG9saW5lX3VzZV9qbXAodTY0IGZsYWdzKVxuaW5jbHVkZS9saW51eC9icGYuaC0xMzM3LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzNDAtI2Vsc2VcbmluY2x1ZGUvbGludXgvYnBmLmg6MTM0MTpzdGF0aWMgaW5saW5lIGJvb2wgYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh1NjQgZmxhZ3MpXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzNDIte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTIzNz1zdGF0aWMgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoX2Zyb21faXAoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdm9pZCAqcHRyKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTI0Ny1cdFx0cmV0dXJuIE5VTEw7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoyNDg6XHRpZiAoYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh0ci1cdTAwM2VmbGFncykpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0yNDktXHRcdGFkZHIgPSBmdHJhY2Vfam1wX3NldChhZGRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0zMTc9c3RhdGljIGludCBkaXJlY3Rfb3BzX2FkZChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB2b2lkICpwdHIpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMzIyLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MzIzOlx0aWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItXHUwMDNlZmxhZ3MpKVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMzI0LVx0XHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MzM3PXN0YXRpYyBpbnQgZGlyZWN0X29wc19tb2Qoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdm9pZCAqcHRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4KVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTM0MS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjM0MjpcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVx1MDAzZWZsYWdzKSlcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTM0My1cdFx0YWRkciA9IGZ0cmFjZV9qbXBfc2V0KGFkZHIpO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTQxMT1zdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZV9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDE4LVx0XHRuZXdfdCA9IEJQRl9NT0RfTk9QO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDE5Olx0ZWxzZSBpZiAoYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh0ci1cdTAwM2VmbGFncykpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MjAtXHRcdG5ld190ID0gQlBGX01PRF9KVU1QO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQyMy1cdFx0b2xkX3QgPSBCUEZfTU9EX05PUDtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjQyNDpcdGVsc2UgaWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAob3JpZ19mbGFncykpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MjUtXHRcdG9sZF90ID0gQlBGX01PRF9KVU1QO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1MzA9c3RhdGljIGludCByZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnB0cilcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTM1LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTUzNjpcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVx1MDAzZWZsYWdzKSlcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1MzctXHRcdGFkZHIgPSBmdHJhY2Vfam1wX3NldChhZGRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTQ1PXN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKnB0cilcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTUwLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU1MTpcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVx1MDAzZWZsYWdzKSlcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NTItXHRcdGFkZHIgPSBmdHJhY2Vfam1wX3NldChhZGRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTU5PXN0YXRpYyBpbnQgbW9kaWZ5X2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU2NS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1NjY6XHRpZiAoYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh0ci1cdTAwM2VmbGFncykpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTY3LVx0XHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTMwCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBEeW5hbWljIFRyYWNpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9uczogYEJQRl9TWVNDQUxMYCwgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYCwgYERZTkFNSUNfRlRSQUNFX1dJVEhfSk1QYCwgYW5kIGp1c3QgcGxhaW4gb2xkIGBGVFJBQ0VgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHplcm8gaW4gb24gYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYC4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoYXQgdGhpcyAqaXMqIGFjdHVhbGx5IGEgdmFsaWQgY29uZmlndXJhdGlvbiBvcHRpb24gd2l0aGluIHRoaXMgc3BlY2lmaWMga2VybmVsIGJ1aWxkIGVudmlyb25tZW50LiBJdCYjMzk7cyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgY2FwYWJpbGl0aWVzIGZvciBkeW5hbWljIHRyYWNpbmcgYW5kIGhvdyB0byBiZXN0IGFwcHJvYWNoIHRoZSBpbnN0cnVtZW50YXRpb24gc3RyYXRlZ3kuIE5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgaXTigJlzIGRlZmluZWQgYW5kIHN1cHBvcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9LY29uZmlnPTMyND1jb25maWcgRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctMzI4LVxua2VybmVsL3RyYWNlL0tjb25maWc6MzI5OmNvbmZpZyBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xua2VybmVsL3RyYWNlL0tjb25maWctMzMwLVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg1NgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXM6CgoqKkNvbnNpZGVyaW5nIHRoZSBGdHJhY2UgTGFuZHNjYXBlKioKClllcywgdGhhdCYjMzk7cyBleGFjdGx5IHJpZ2h0LiBUaGUgc2l0dWF0aW9uIGlzIGFzIEkgZXhwZWN0ZWQgaXQgdG8gYmUuCgpOb3csIGxldCYjMzk7cyBzZWUuLi4gYW5kIHdoYXQgYWJvdXQgdGhlIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0pNUGAgb3B0aW9uIGluIHJlbGF0aW9uIHRvIHRoaXM/IFRoYXQmIzM5O3MgdGhlIG5leHQga2V5IGZhY3RvciB0byBhc3Nlc3MuIEdvdHRhIGtlZXAgdGhhdCBpbiBtaW5kLCBpdHMgaW1wbGljYXRpb25zIGFyZSBzaWduaWZpY2FudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERZTkFNSUNfRlRSQUNFX1dJVEhfSk1QJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9LY29uZmlnPTMzOD1jb25maWcgRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctMzQyLVxua2VybmVsL3RyYWNlL0tjb25maWc6MzQzOmNvbmZpZyBEWU5BTUlDX0ZUUkFDRV9XSVRIX0pNUFxua2VybmVsL3RyYWNlL0tjb25maWctMzQ0LVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA4OQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipLZXJuZWwgVHJhY2luZyBDb25maWd1cmF0aW9uIC0gQSBRdWljayBDaGVjayoqCgpSaWdodCwgKnllcyouIFRpbWUgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGVzZSB0cmFjaW5nIGNvbmZpZ3VyYXRpb25zLiBgQlBGX1NZU0NBTExgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVBgLCB0aG9zZSBhbGwgc2VlbSBsaWtlIHN0cm9uZyBjYW5kaWRhdGVzIGZvciBhIHJvYnVzdCB0cmFjaW5nIHNldHVwLiBCdXQgaGFuZyBvbiBhIHNlY29uZC4uLiBgRlRSQUNFYCBpc24mIzM5O3QgYSAqY29uZmlnKiBpdHNlbGYsIGlzIGl0PyBJdOKAmXMgbW9yZSBvZiBhIGdlbmVyYWwgdGVybSBlbmNvbXBhc3NpbmcgZmVhdHVyZXMgbGlrZSBgRlVOQ1RJT05fVFJBQ0VSYCBvciBgRFlOQU1JQ19GVFJBQ0VgLiBJIG5lZWQgdG8gYmUgcHJlY2lzZSBoZXJlLgoKVG8gY29uZmlybSBhbmQgcGlucG9pbnQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLCBJIHNob3VsZCBpbW1lZGlhdGVseSBjb25zdWx0IGBrZXJuZWwvdHJhY2UvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgdGhlIGRlZmluaXRpdmUgc291cmNlLiBJJiMzOTtsbCBoZWFkIG92ZXIgdGhlcmUgdG8gdmVyaWZ5IHdoYXQmIzM5O3Mgd2hhdCBhbmQgZW5zdXJlIEkmIzM5O20gdXNpbmcgdGhlIGNvcnJlY3QgdGVybWlub2xvZ3kgd2hlbiBkaXNjdXNzaW5nIEZ0cmFjZSYjMzk7cyBidWlsZGluZyBibG9ja3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGVFJBQ0UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL0tjb25maWc9MTk4PWNvbmZpZyBUUkFDSU5HX1NVUFBPUlRcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0yMDMtXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoyMDQ6bWVudWNvbmZpZyBGVFJBQ0Vcbmtlcm5lbC90cmFjZS9LY29uZmlnLTIwNS1cdGJvb2wgXCYjMzQ7VHJhY2Vyc1wmIzM0O1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnPTU4OD1jb25maWcgRU5BQkxFX0RFRkFVTFRfVFJBQ0VSU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTU5Ni1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjU5Nzpjb25maWcgRlRSQUNFX1NZU0NBTExTXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy01OTgtXHRib29sIFwmIzM0O1RyYWNlIHN5c2NhbGxzXCYjMzQ7XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWc9ODY4PWNvbmZpZyBCUEZfS1BST0JFX09WRVJSSURFXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODc2LVxua2VybmVsL3RyYWNlL0tjb25maWc6ODc3OmNvbmZpZyBGVFJBQ0VfTUNPVU5UX1VTRV9QQVRDSEFCTEVfRlVOQ1RJT05fRU5UUllcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg3OC1cdGJvb2xcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04ODAtXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4ODE6Y29uZmlnIEZUUkFDRV9NQ09VTlRfVVNFX0NDXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04ODItXHRkZWZfYm9vbCB5XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODg2LVxua2VybmVsL3RyYWNlL0tjb25maWc6ODg3OmNvbmZpZyBGVFJBQ0VfTUNPVU5UX1VTRV9PQkpUT09MXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04ODgtXHRkZWZfYm9vbCB5XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODk0LVxua2VybmVsL3RyYWNlL0tjb25maWc6ODk1OmNvbmZpZyBGVFJBQ0VfTUNPVU5UX1VTRV9SRUNPUkRNQ09VTlRcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg5Ni1cdGRlZl9ib29sIHlcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz0xMDIxPWNvbmZpZyBUUkFDRV9FVkFMX01BUF9GSUxFXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctMTA0OC1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjEwNDk6Y29uZmlnIEZUUkFDRV9SRUNPUkRfUkVDVVJTSU9OXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMDUwLVx0Ym9vbCBcJiMzNDtSZWNvcmQgZnVuY3Rpb25zIHRoYXQgcmVjdXJzZSBpbiBmdW5jdGlvbiB0cmFjaW5nXCYjMzQ7XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctMTA2Mi1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjEwNjM6Y29uZmlnIEZUUkFDRV9SRUNPUkRfUkVDVVJTSU9OX1NJWkVcbmtlcm5lbC90cmFjZS9LY29uZmlnLTEwNjQtXHRpbnQgXCYjMzQ7TWF4IG51bWJlciBvZiByZWN1cnNlZCBmdW5jdGlvbnMgdG8gcmVjb3JkXCYjMzQ7XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctMTA3My1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjEwNzQ6Y29uZmlnIEZUUkFDRV9WQUxJREFURV9SQ1VfSVNfV0FUQ0hJTkdcbmtlcm5lbC90cmFjZS9LY29uZmlnLTEwNzUtXHRib29sIFwmIzM0O1ZhbGlkYXRlIFJDVSBpcyBvbiBkdXJpbmcgZnRyYWNlIGV4ZWN1dGlvblwmIzM0O1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnPTExMDE9Y29uZmlnIEdDT1ZfUFJPRklMRV9GVFJBQ0Vcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMTEyLVxua2VybmVsL3RyYWNlL0tjb25maWc6MTExMzpjb25maWcgRlRSQUNFX1NFTEZURVNUXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMTE0LVx0Ym9vbFxua2VybmVsL3RyYWNlL0tjb25maWctMTExNS1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjExMTY6Y29uZmlnIEZUUkFDRV9TVEFSVFVQX1RFU1Rcbmtlcm5lbC90cmFjZS9LY29uZmlnLTExMTctXHRib29sIFwmIzM0O1BlcmZvcm0gYSBzdGFydHVwIHRlc3Qgb24gZnRyYWNlXCYjMzQ7XG4tLVxua2VybmVsL3RyYWNlL0tjb25maWc9MTEzNj1jb25maWcgRVZFTlRfVFJBQ0VfVEVTVF9TWVNDQUxMU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTExNDctXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoxMTQ4OmNvbmZpZyBGVFJBQ0VfU09SVF9TVEFSVFVQX1RFU1Rcbmtlcm5lbC90cmFjZS9LY29uZmlnLTExNDktICAgICAgIGJvb2wgXCYjMzQ7VmVyaWZ5IGNvbXBpbGUgdGltZSBzb3J0aW5nIG9mIGZ0cmFjZSBmdW5jdGlvbnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyMzAKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIFRyYWNpbmcgQ29uZmlndXJhdGlvbiBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBiYWNrIGludG8gdGhpcyBrZXJuZWwgdHJhY2luZyBzZXR1cC4gUmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdDogYEZUUkFDRWAgaXMganVzdCB0aGUgdG9wLWxldmVsIG1lbnVjb25maWcsIGJ1dCB0aGUgcmVhbCBwbGF5ZXJzIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgYEZVTkNUSU9OX1RSQUNFUmAgYW5kIGBEWU5BTUlDX0ZUUkFDRWAuIFRob3NlIGFyZSB0aGUgYWN0dWFsIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zLiBBbmQsIG9mIGNvdXJzZSwgYEJQRl9TWVNDQUxMYCDigJMgdGhhdCYjMzk7cyB0aGUgYmlnIG9uZS4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBoZXJlPyBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgcmVhbGx5IHplcm8gaW4gb24gYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGFuZCBgbW9kaWZ5X2ZlbnRyeV9tdWx0aWAuIFRob3NlIHNlZW0gbGlrZSB0aGUgY29yZSBvcGVyYXRpb25zIGZvciBtYW5hZ2luZyB0aGVzZSBgZmVudHJ5YCB0cmFjaW5nIGluc3RhbmNlcy4gQWxzbywgSSBzaG91bGQgY2hlY2sgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAgYW5kIGBicGZfdHJhbXBvbGluZV91cGRhdGVfZmVudHJ5YCBhcyB0aGV5IGFyZSByZWxhdGVkLgoKT24gdGhlIGxpYmJwZiBzaWRlLCBgYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpYCBpcyBsaWtlbHkgaW52b2x2ZWQsIGJ1dCB0aGUga2VybmVsLXNpZGUgZXF1aXZhbGVudC4uLiBsZXQmIzM5O3Mgc2VlLCBpdCYjMzk7cyBwcm9iYWJseSBzb21ldGhpbmcgbGlrZSBgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2hgIG9yIGEgc2ltaWxhciBmdW5jdGlvbiwgaGFuZGxpbmcgdGhlIGFjdHVhbCBhdHRhY2guCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgc291cmNlLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byBga2VybmVsL2JwZi9zeXNjYWxsLmNgIGFuZCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgaG93IHRoZSBgZmVudHJ5Lm11bHRpYCBhdHRhY2htZW50cyBhcmUgaGFuZGxlZC4gSSBiZXQgdGhlIHBsdW1iaW5nIGlzIGFsbCBpbiB0aGVyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHRoZSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdHJhY2luZ19wcm9nX2F0dGFjaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3N5c2NhbGwuYz0zNjAzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2xpbmtfb3BzIGJwZl90cmFjaW5nX2xpbmtfbG9wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zNjA5LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MzYxMDpzdGF0aWMgaW50IGJwZl90cmFjaW5nX3Byb2dfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM2MTEtXHRcdFx0XHQgICBpbnQgdGd0X3Byb2dfZmQsXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NDI3Mz1zdGF0aWMgaW50IGJwZl9yYXdfdHBfbGlua19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQyOTctXHRcdH1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjQyOTg6XHRcdHJldHVybiBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChwcm9nLCAwLCAwLCAwLCBhdHRhY2hfdHlwZSk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00Mjk5LVx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTU3NjU9c3RhdGljIGludCBsaW5rX2NyZWF0ZSh1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTc5NS1cdGNhc2UgQlBGX1BST0dfVFlQRV9FWFQ6XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1Nzk2Olx0XHRyZXQgPSBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChwcm9nLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTc5Ny1cdFx0XHRcdFx0ICAgICAgYXR0ci1cdTAwM2VsaW5rX2NyZWF0ZS50YXJnZXRfZmQsXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTgxNy1cdFx0ZWxzZVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTgxODpcdFx0XHRyZXQgPSBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChwcm9nLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTgxOS1cdFx0XHRcdFx0XHQgICAgICBhdHRyLVx1MDAzZWxpbmtfY3JlYXRlLnRhcmdldF9mZCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yZWN1cnNpdmVfYXR0YWNoLmM9OTk9dm9pZCB0ZXN0X3JlY3Vyc2l2ZV9mZW50cnkodm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yZWN1cnNpdmVfYXR0YWNoLmMtMTEwLSAqIFwmIzM0O3Byb2ctXHUwMDNlYXV4LVx1MDAzZWRzdF90cmFtcG9saW5lIGFuZCB0Z3RfcHJvZyBpcyBOVUxMXCYjMzQ7IGJyYW5jaCBpblxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmVjdXJzaXZlX2F0dGFjaC5jOjExMTogKiBicGZfdHJhY2luZ19wcm9nX2F0dGFjaCkgZG9lcyBub3QgbGVhZCB0byBhIGNyYXNoIGR1ZSB0byBtaXNzaW5nIGF0dGFjaF9idGZcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3JlY3Vyc2l2ZV9hdHRhY2guYy0xMTItICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MzM4CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgc2l0dWF0aW9uIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBhIEJQRiBUcmFjZXBvaW50IExpbmsqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gU29tZXRoaW5nJiMzOTtzIG5hZ2dpbmcgYXQgbWUgYWJvdXQgdGhpcyBgZmVudHJ5Lm11bHRpYCB0cmFjZXBvaW50IEkmIzM5O20gbG9va2luZyBhdC4gSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0IGl0JiMzOTtzIGJlaW5nIGhvb2tlZCB1cCB1c2luZyBgYnBmX2xpbmtfY3JlYXRlYCwgcHJvYmFibHkgd2l0aCBzb21ldGhpbmcgbGlrZSBgQlBGX1RSQUNFX0ZFTlRSWV9NVUxUSWAgb3IgYSBzaW1pbGFyIGZsYWcgZm9yIG11bHRpcGxlIGZ1bmN0aW9uIGVudHJ5IHBvaW50cy4gUmlnaHQ/CgpMZXQmIzM5O3MgY29uZmlybSB0aGF0IGh5cG90aGVzaXMuIFRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIGF1dGhvcml0YXRpdmUgZGVmaW5pdGlvbiBhbmQgaGFuZGxpbmcgb2YgdGhpcyBpcyBnb2luZyB0byBiZSBpbiB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AuIEkgbmVlZCB0byB0cmFjayBkb3duIGhvdyBgbXVsdGlgIGlzIGhhbmRsZWQgaW4gcmVsYXRpb24gdG8gYGJwZl9saW5rX2NyZWF0ZWAgaW4gdGhhdCBmaWxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBkZWZpbml0aXZlIGFuc3dlciBvbiBob3cgdGhpcyB0cmFjZXBvaW50IGlzIGVzdGFibGlzaGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdHJhY2luZ19tdWx0aV9hdHRhY2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03ODk9aW50IGJwZl91cHJvYmVfbXVsdGlfbGlua19hdHRhY2goY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc5MDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpO1xuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03OTEtI2Vsc2Vcbi0tXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTg0OD1zdGF0aWMgaW5saW5lIGludFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo4NDk6YnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTg1MC17XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTc2NT1zdGF0aWMgaW50IGxpbmtfY3JlYXRlKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE1LVx0XHRlbHNlIGlmIChpc190cmFjaW5nX211bHRpKHByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpKVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTgxNjpcdFx0XHRyZXQgPSBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2gocHJvZywgYXR0cik7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE3LVx0XHRlbHNlXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM4MTk9c3RhdGljIGludCBjaGVja19kdXBfaWRzKHUzMiAqaWRzLCB1NjQgKmNvb2tpZXMsIHUzMiBjbnQpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM4MzktXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6Mzg0MDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzg0MS17XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MjktXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MzkzMDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkzMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTE4CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkluaXRpYWwgRXhwbG9yYXRpb24gb2YgQlBGIE11bHRpLUF0dGFjaG1lbnQqKgoKUmlnaHQsIHNvIEkmIzM5O20gc3RhcnRpbmcgYXQgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBtdWx0aS1hdHRhY2htZW50IGJ1c2luZXNzLiBUaGUga2V5IHNlZW1zIHRvIGJlIGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGxvb2sgYXQgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAgYW5kIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgIGFzIHBvdGVudGlhbCBjb250cmlidXRpbmcgZnVuY3Rpb25zLiBUaGUgZmlyc3Qgb25lIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpcyBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYCwgYW5kIEkga25vdyBmcm9tIHBhc3QgZXhwZXJpZW5jZSBpdCBzaG91bGQgYmUgaW4gYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AuIFRpbWUgdG8gZGlnIGluIHRoZXJlIGFuZCBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdHJhY2luZ19tdWx0aV9hdHRhY2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03ODk9aW50IGJwZl91cHJvYmVfbXVsdGlfbGlua19hdHRhY2goY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc5MDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpO1xuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03OTEtI2Vsc2Vcbi0tXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTg0OD1zdGF0aWMgaW5saW5lIGludFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo4NDk6YnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTg1MC17XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTc2NT1zdGF0aWMgaW50IGxpbmtfY3JlYXRlKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE1LVx0XHRlbHNlIGlmIChpc190cmFjaW5nX211bHRpKHByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpKVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTgxNjpcdFx0XHRyZXQgPSBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2gocHJvZywgYXR0cik7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE3LVx0XHRlbHNlXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM4MTk9c3RhdGljIGludCBjaGVja19kdXBfaWRzKHUzMiAqaWRzLCB1NjQgKmNvb2tpZXMsIHUzMiBjbnQpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM4MzktXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6Mzg0MDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzg0MS17XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MjktXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MzkzMDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkzMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2ODU3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBGdW5jdGlvbiBFbnRyeSBQb2ludCBNYW5hZ2VtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUga2V5IGZ1bmN0aW9ucyBoZXJlOiBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgYG1vZGlmeV9mZW50cnlfbXVsdGlgLCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCwgYW5kIGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgLiBUaGVzZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciBtYW5hZ2luZyBmdW5jdGlvbiBlbnRyeSBwb2ludHMgd2l0aCBCUEYsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBpbnRlcmFjdGlvbnMgdGhvcm91Z2hseS4KCkkgYWxzbyBzZWUgYSBmZXcgY3J1Y2lhbCBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgY2FyZWZ1bCBjb25zaWRlcmF0aW9uOiBgQlBGX1NZU0NBTExgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVBgLCBhbmQgYEZVTkNUSU9OX1RSQUNFUmAuIAoKV2FpdCBhIG1pbnV0ZSwgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYCBhbmQgYERZTkFNSUNfRlRSQUNFX1dJVEhfSk1QYCBhcmUgKmRlZl9ib29sIHkqIG9uIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLiBNZWFuaW5nIHRoZXkgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBpZiB0aGUgYXJjaGl0ZWN0dXJlIHN1cHBvcnRzIGl0LiBXZSBkb24mIzM5O3QgaGF2ZSB0byBleHBsaWNpdGx5IGNvbmZpZ3VyZSB0aGVtLCBidXQgaXQgaXNuJiMzOTt0IGdvaW5nIHRvIGJlIGhhcm1mdWwgaWYgdGhleSBhcmUgYWxzbyBkZWZpbmVkLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdywgc2ltcGxpZmllcyB0aGUgY29uZmlndXJhdGlvbiBzb21ld2hhdC4gSG1tLCBJIHRoaW5rIGBGUFJPQkVgIG9yIGBGVFJBQ0VgIG1pZ2h0IGFsc28gY29tZSBpbnRvIHBsYXksIHBvdGVudGlhbGx5LCBhbmQgY2xlYXJseSwgYEZVTkNUSU9OX1RSQUNFUmAgaXMgdGhlIG1haW4gZW5hYmxlciBoZXJlLgoKTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYGtlcm5lbC9icGYvS2NvbmZpZ2AgZmlsZSwgSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmUgYSBnb29kIGdyYXNwIG9uIGBCUEZfU1lTQ0FMTGAg4oCTIG5lZWQgdG8gYmUgY3J5c3RhbCBjbGVhciBvbiBob3cgdGhhdCYjMzk7cyB0aWVkIGludG8gdGhpcyB3aG9sZSBlY29zeXN0ZW0uIEdvdHRhIGVuc3VyZSBJJiMzOTttIGdldHRpbmcgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb24gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTI5CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJJiMzOTttIHRoaW5raW5nIGl0OgoKKipUcmFjaW5nIE15IFN0ZXBzOiBGdW5jdGlvbiBUcmFjZXIgSW52ZXN0aWdhdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzdGF0dXMgb2YgdGhlIGBGVU5DVElPTl9UUkFDRVJgLiBUaGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaXMgdGhlIGBLY29uZmlnYCBmaWxlLCBwYXJ0aWN1bGFybHkgd2l0aGluIHRoZSB0cmFjaW5nIHN1YnN5c3RlbS4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IGluc2lnaHQgaW50byB3aGV0aGVyIHRoaXMgZmVhdHVyZSBpcyBlbmFibGVkLCBkaXNhYmxlZCwgb3IgY29uZGl0aW9uYWxseSBjb21waWxlZC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBga2VybmVsL3RyYWNlL0tjb25maWdgLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gYW5kIHNob3VsZCBoYXZlIGFsbCB0aGUgYW5zd2Vycy4gSSBleHBlY3QgdGhhdCBJJiMzOTtsbCBmaW5kIGl0cyBkZWZpbml0aW9uIGluIGhlcmUuIExldCYjMzk7cyBnbyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZVTkNUSU9OX1RSQUNFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZz0yMjY9Y29uZmlnIEJPT1RUSU1FX1RSQUNJTkdcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0yMzQtXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoyMzU6Y29uZmlnIEZVTkNUSU9OX1RSQUNFUlxua2VybmVsL3RyYWNlL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtLZXJuZWwgRnVuY3Rpb24gVHJhY2VyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3Nzk4CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqRGVsdmluZyBpbnRvIEJQRiBUcmFjZXBvaW50cyoqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoZXNlIHRyYWNpbmcgaG9va3Mgd29yaywgYW5kIGl0IGxvb2tzIGxpa2UgYEJQRl9TWVNDQUxMYCBhbmQgYEZVTkNUSU9OX1RSQUNFUmAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBrZWVwIHRob3NlIGluIG1pbmQgYXMgSSB0cmFjZSB0aGlzLgoKSGFuZyBvbi4uLiBJJiMzOTttIGxvb2tpbmcgYXQgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAsIGFuZCBpdCYjMzk7cyBkZWZpbmVkIGluIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIG1ha2VzIG1lIHdvbmRlciBpZiBgdHJhbXBvbGluZS5jYCBpcyBjb21waWxlZCBjb25kaXRpb25hbGx5LiBJIG5lZWQgdG8gY2hlY2sgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gc2VlIGlmIHRob3NlIGNvbmZpZ3MgSSBtZW50aW9uZWQgaGF2ZSBhbiBpbXBhY3QgaGVyZS4gVGhpcyBtaWdodCBleHBsYWluIHNvbWUgb2YgdGhlIGNvbmRpdGlvbmFsIGJlaGF2aW9yIEkmIzM5O3ZlIGJlZW4gc2VlaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGF0IGxvZ2ljIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJhbXBvbGluZS5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbGl2ZXBhdGNoL3JlbGlhYmxlLXN0YWNrdHJhY2UucnN0PTE3OT1pbmZvcm1hdGlvbiBpcyBub3QgaW4gYSBjb25zaXN0ZW50IGxvY2F0aW9uIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGVudHJ5XG5Eb2N1bWVudGF0aW9uL2xpdmVwYXRjaC9yZWxpYWJsZS1zdGFja3RyYWNlLnJzdDoxODA6dHJhbXBvbGluZSBvciByZXR1cm4gdHJhbXBvbGluZS4gRm9yIGV4YW1wbGUsIGNvbnNpZGVyaW5nIHRoZSB4ODZfNjRcbkRvY3VtZW50YXRpb24vbGl2ZXBhdGNoL3JlbGlhYmxlLXN0YWNrdHJhY2UucnN0LTE4MS0mIzM5O3JldHVybl90b19oYW5kbGVyJiMzOTsgcmV0dXJuIHRyYW1wb2xpbmU6XG4tLVxuYXJjaC9hcmMvaW5jbHVkZS91YXBpL2FzbS9zaWduYWwuaC0xOC0gKiB3aGljaCBhbGxvd3Mgc2lncmV0dXJuIGJhc2VkIHJlLWVudHJ5IGludG8ga2VybmVsIGFmdGVyIGhhbmRsaW5nIHNpZ25hbC5cbmFyY2gvYXJjL2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmg6MTk6ICogVy9vIHRoaXMga2VybmVsIG5lZWRzIHRvIFwmIzM0O3N5bnRoZXNpemVcJiMzNDsgdGhlIHNpZ3JldHVybiB0cmFtcG9saW5lIG9uIHVzZXJcbmFyY2gvYXJjL2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgtMjAtICogbW9kZSBzdGFjayB3aGljaCBpbiB0dXJuIGZvcmNlcyB0aGUgZm9sbG93aW5nOlxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19LUFJPQkVTKVx0XHQmIzQzOz0ga3Byb2Jlcy5vIGRlY29kZS1pbnNuLm9cdFxcXG5hcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6MzpcdFx0XHRcdCAgIGtwcm9iZXNfdHJhbXBvbGluZS5vXHRcdFxcXG5hcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUtNC1cdFx0XHRcdCAgIHNpbXVsYXRlLWluc24ub1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jPTE0MzQ9c3RhdGljIGludCBnY3Nfc2lnbmFsX2VudHJ5KF9fc2lncmVzdG9yZV90IHNpZ3RyYW1wLCBzdHJ1Y3Qga3NpZ25hbCAqa3NpZylcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9zaWduYWwuYy0xNDUxLVx0LypcbmFyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jOjE0NTI6XHQgKiBQdXNoIGEgY2FwIGFuZCB0aGUgR0NTIGVudHJ5IGZvciB0aGUgdHJhbXBvbGluZSBvbnRvIHRoZSBHQ1MuXG5hcmNoL2FybTY0L2tlcm5lbC9zaWduYWwuYy0xNDUzLVx0ICovXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MjU1Mz1zdGF0aWMgdm9pZCBzdG9yZV9mdW5jX21ldGEoc3RydWN0IGppdF9jdHggKmN0eCwgdTY0IGZ1bmNfbWV0YSwgaW50IGZ1bmNfbWV0YV9vZmYpXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjU2Ni0gKiAgIG1vdiB4OSwgbHJcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjI1Njc6ICogICBibCAgXHUwMDNjYnBmX3RyYW1wb2xpbmUgb3IgcGx0XHUwMDNlXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yNTY4LSAqXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfS1BST0JFUylcdFx0JiM0Mzs9IGtwcm9iZXMubyBkZWNvZGUtaW5zbi5vIHNpbXVsYXRlLWluc24ub1xuYXJjaC9jc2t5L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfS1BST0JFUylcdFx0JiM0Mzs9IGtwcm9iZXNfdHJhbXBvbGluZS5vXG5hcmNoL2Nza3kva2VybmVsL3Byb2Jlcy9NYWtlZmlsZS00LW9iai0kKENPTkZJR19LUFJPQkVTX09OX0ZUUkFDRSlcdCYjNDM7PSBmdHJhY2Uub1xuLS1cbmFyY2gvaGV4YWdvbi9rZXJuZWwvTWFrZWZpbGU9Nz1vYmoteSAmIzQzOz0gc2V0dXAubyBpcnFfY3B1Lm8gdHJhcHMubyBzeXNjYWxsdGFiLm8gc2lnbmFsLm8gdGltZS5vXG5hcmNoL2hleGFnb24va2VybmVsL01ha2VmaWxlOjg6b2JqLXkgJiM0Mzs9IHByb2Nlc3MubyB0cmFtcG9saW5lLm8gcmVzZXQubyBwdHJhY2UubyB2ZHNvLm9cbmFyY2gvaGV4YWdvbi9rZXJuZWwvTWFrZWZpbGUtOS1cbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU9Mjk9aWZkZWYgQ09ORklHX0ZVTkNUSU9OX1RSQUNFUlxuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9NYWtlZmlsZS00MC0gIENGTEFHU19SRU1PVkVfcmV0aG9vay5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU6NDE6ICBDRkxBR1NfUkVNT1ZFX3JldGhvb2tfdHJhbXBvbGluZS5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGUtNDItZW5kaWZcbi0tXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU9NzY9b2JqLSQoQ09ORklHX0tQUk9CRVMpXHRcdCYjNDM7PSBrcHJvYmVzLm9cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9NYWtlZmlsZTo3NzpvYmotJChDT05GSUdfUkVUSE9PSylcdFx0JiM0Mzs9IHJldGhvb2subyByZXRob29rX3RyYW1wb2xpbmUub1xuYXJjaC9sb29uZ2FyY2gva2VybmVsL01ha2VmaWxlLTc4LW9iai0kKENPTkZJR19VUFJPQkVTKVx0XHQmIzQzOz0gdXByb2Jlcy5vXG4tLVxuYXJjaC9uaW9zMi9rZXJuZWwvc2lnbmFsLmM9MTgyPXN0YXRpYyBpbnQgc2V0dXBfcnRfZnJhbWUoc3RydWN0IGtzaWduYWwgKmtzaWcsIHNpZ3NldF90ICpzZXQsXG4tLVxuYXJjaC9uaW9zMi9rZXJuZWwvc2lnbmFsLmMtMjAzLVx0LyogU2V0IHVwIHRvIHJldHVybiBmcm9tIHVzZXJzcGFjZTsganVtcCB0byBmaXhlZCBhZGRyZXNzIHNpZ3JldHVyblxuYXJjaC9uaW9zMi9rZXJuZWwvc2lnbmFsLmM6MjA0Olx0ICAgdHJhbXBvbGluZSBvbiBrdXNlciBwYWdlLiAgKi9cbmFyY2gvbmlvczIva2VybmVsL3NpZ25hbC5jLTIwNS1cdHJlZ3MtXHUwMDNlcmEgPSAodW5zaWduZWQgbG9uZykgKDB4MTA0NCk7XG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz01MzU9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01MzgtXHQgKiBUT0RPOiBSZW1vdmUgYWZ0ZXIgdmFsaWRhdGluZyBzdXBwb3J0XG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jOjUzOTpcdCAqIGZvciBmc2Vzc2lvbiBhbmQgdHJhbXBvbGluZSBvbiBwcGMzMi5cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNTQwLVx0ICovXG4tLVxuYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX0tQUk9CRVMpXHRcdCYjNDM7PSBrcHJvYmVzLm8gZGVjb2RlLWluc24ubyBzaW11bGF0ZS1pbnNuLm9cbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZTozOm9iai0kKENPTkZJR19SRVRIT09LKVx0XHQmIzQzOz0gcmV0aG9vay5vIHJldGhvb2tfdHJhbXBvbGluZS5vXG5hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUtNC1vYmotJChDT05GSUdfVVBST0JFUylcdFx0JiM0Mzs9IHVwcm9iZXMubyBkZWNvZGUtaW5zbi5vIHNpbXVsYXRlLWluc24ub1xuLS1cbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT02PUNGTEFHU19SRU1PVkVfcmV0aG9vay5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6NzpDRkxBR1NfUkVNT1ZFX3JldGhvb2tfdHJhbXBvbGluZS5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG4tLVxuYXJjaC9zMzkwL2Jvb3QvTWFrZWZpbGU9MzU9b2JqLXlcdCYjNDM7PSB2ZXJzaW9uLm8gcGdtX2NoZWNrLm8gY3R5cGUubyBpcGxfZGF0YS5vIHJlbG9jcy5vIGFsdGVybmF0aXZlLm9cbmFyY2gvczM5MC9ib290L01ha2VmaWxlOjM2Om9iai15XHQmIzQzOz0gdXYubyBwcmludGsubyB0cmFtcG9saW5lLm9cbmFyY2gvczM5MC9ib290L01ha2VmaWxlLTM3LW9iai0kKENPTkZJR19SQU5ET01JWkVfQkFTRSlcdCYjNDM7PSBrYXNsci5vXG4tLVxuYXJjaC94ODYvaHlwZXJ2L01ha2VmaWxlPTEyPW9iai0kKENPTkZJR19QQVJBVklSVF9TUElOTE9DS1MpXHQmIzQzOz0gaHZfc3BpbmxvY2sub1xuLS1cbmFyY2gveDg2L2h5cGVydi9NYWtlZmlsZS0xNC0gaWZkZWYgQ09ORklHX01TSFZfUk9PVFxuYXJjaC94ODYvaHlwZXJ2L01ha2VmaWxlOjE1OiAgQ0ZMQUdTX1JFTU9WRV9odl90cmFtcG9saW5lLm8gJiM0Mzs9IC1wZ1xuYXJjaC94ODYvaHlwZXJ2L01ha2VmaWxlOjE2OiAgQ0ZMQUdTX2h2X3RyYW1wb2xpbmUubyAgICAgICAgJiM0Mzs9IC1mbm8tc3RhY2stcHJvdGVjdG9yXG5hcmNoL3g4Ni9oeXBlcnYvTWFrZWZpbGU6MTc6ICBvYmotJChDT05GSUdfQ1JBU0hfRFVNUCkgICAgICAmIzQzOz0gaHZfY3Jhc2gubyBodl90cmFtcG9saW5lLm9cbmFyY2gveDg2L2h5cGVydi9NYWtlZmlsZS0xOC0gZW5kaWZcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmM9MjgzPWV4dGVybiB2b2lkIGZ0cmFjZV9yZWdzX2NhbGxlcl9qbXAodm9pZCk7XG4tLVxuYXJjaC94ODYva2VybmVsL2Z0cmFjZS5jLTI5MC0gKiBUaGUgZnRyYWNlX29wcyBpcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGNhbGxiYWNrLiBTaW5jZSB0aGVcbmFyY2gveDg2L2tlcm5lbC9mdHJhY2UuYzoyOTE6ICogdHJhbXBvbGluZSBvbmx5IHNlcnZpY2VzIGEgc2luZ2xlIGZ0cmFjZV9vcHMsIHdlIGNhbiBwYXNzIGluXG5hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmMtMjkyLSAqIHRoYXQgb3BzIGRpcmVjdGx5LlxuLS1cbmFyY2gveDg2L2tlcm5lbC9mdHJhY2UuYz00Nzc9dm9pZCBhcmNoX2Z0cmFjZV91cGRhdGVfdHJhbXBvbGluZShzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9mdHJhY2UuYy00ODUtXHRpZiAoIW9wcy1cdTAwM2V0cmFtcG9saW5lKSB7XG5hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmM6NDg2Olx0XHRvcHMtXHUwMDNldHJhbXBvbGluZSA9IGNyZWF0ZV90cmFtcG9saW5lKG9wcywgXHUwMDI2c2l6ZSk7XG5hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmMtNDg3LVx0XHRpZiAoIW9wcy1cdTAwM2V0cmFtcG9saW5lKVxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gZGlzYXNtLm8gbXByb2cub1xua2VybmVsL2JwZi9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IHRyYW1wb2xpbmUub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTU3PXN0YXRpYyB2b2lkIHRyYW1wb2xpbmVfdW5sb2NrKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjEtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo2MjpzdHJ1Y3QgYnBmX3RyYW1wb2xpbmVfb3BzIHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTYzLVx0aW50ICgqcmVnaXN0ZXJfZmVudHJ5KShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqZGF0YSk7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NzA9c3RhdGljIGludCBicGZfdHJhbXBvbGluZV91cGRhdGUoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgYm9vbCBsb2NrX2RpcmVjdF9tdXRleCxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjcxOlx0XHRcdFx0IGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgKm9wcywgdm9pZCAqZGF0YSk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo3MjpzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyB0cmFtcG9saW5lX29wcztcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTczLVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTk4PXN0YXRpYyBpbnQgYnBmX3RyYW1wX2Z0cmFjZV9vcHNfZnVuYyhzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCB1bnNpZ25lZCBsb25nIGlwLFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1Ny1cdFx0XHRyZXQgPSBicGZfdHJhbXBvbGluZV91cGRhdGUodHIsIGZhbHNlIC8qIGxvY2tfZGlyZWN0X211dGV4ICovLFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU4Olx0XHRcdFx0XHRcdCAgICBcdTAwMjZ0cmFtcG9saW5lX29wcywgTlVMTCk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTktXHRcdGJyZWFrO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2NC1cdFx0XHRyZXQgPSBicGZfdHJhbXBvbGluZV91cGRhdGUodHIsIGZhbHNlIC8qIGxvY2tfZGlyZWN0X211dGV4ICovLFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTY1Olx0XHRcdFx0XHRcdCAgICBcdTAwMjZ0cmFtcG9saW5lX29wcywgTlVMTCk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjYtXHRcdGJyZWFrO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTQ3Mz1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy01MDAtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo1MDE6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9vcHMgPSB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy01MDItXHQucmVnaXN0ZXJfZmVudHJ5ICAgPSByZWdpc3Rlcl9mZW50cnksXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NjczPXN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIGJvb2wgbG9ja19kaXJlY3RfbXV0ZXgsXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo2NzQ6XHRcdFx0XHQgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLCB2b2lkICpkYXRhKVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjc1LXtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz05MDU9c3RhdGljIGludCBfX2JwZl90cmFtcG9saW5lX2xpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtOTA3LVx0XHRcdFx0ICAgICAgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZyxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjkwODpcdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgKm9wcyxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTkwOS1cdFx0XHRcdCAgICAgIHZvaWQgKmRhdGEpXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9OTQ2PWludCBicGZfdHJhbXBvbGluZV9saW5rX3Byb2coc3RydWN0IGJwZl90cmFtcF9ub2RlICpub2RlLFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTk1Mi1cdHRyYW1wb2xpbmVfbG9jayh0cik7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo5NTM6XHRlcnIgPSBfX2JwZl90cmFtcG9saW5lX2xpbmtfcHJvZyhub2RlLCB0ciwgdGd0X3Byb2csIFx1MDAyNnRyYW1wb2xpbmVfb3BzLCBOVUxMKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTk1NC1cdHRyYW1wb2xpbmVfdW5sb2NrKHRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz05NTg9c3RhdGljIGludCBfX2JwZl90cmFtcG9saW5lX3VubGlua19wcm9nKHN0cnVjdCBicGZfdHJhbXBfbm9kZSAqbm9kZSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05NjAtXHRcdFx0XHRcdHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo5NjE6XHRcdFx0XHRcdGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgKm9wcyxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTk2Mi1cdFx0XHRcdFx0dm9pZCAqZGF0YSlcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz05ODM9aW50IGJwZl90cmFtcG9saW5lX3VubGlua19wcm9nKHN0cnVjdCBicGZfdHJhbXBfbm9kZSAqbm9kZSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05ODktXHR0cmFtcG9saW5lX2xvY2sodHIpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6OTkwOlx0ZXJyID0gX19icGZfdHJhbXBvbGluZV91bmxpbmtfcHJvZyhub2RlLCB0ciwgdGd0X3Byb2csIFx1MDAyNnRyYW1wb2xpbmVfb3BzLCBOVUxMKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTk5MS1cdHRyYW1wb2xpbmVfdW5sb2NrKHRyKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xMDc2PWludCBicGZfdHJhbXBvbGluZV9saW5rX2Nncm91cF9zaGltKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xMTE4LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTExOTpcdGVyciA9IF9fYnBmX3RyYW1wb2xpbmVfbGlua19wcm9nKFx1MDAyNnNoaW1fbGluay1cdTAwM2VsaW5rLm5vZGUsIHRyLCBOVUxMLCBcdTAwMjZ0cmFtcG9saW5lX29wcywgTlVMTCk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xMTIwLVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTU5PXN0YXRpYyBpbnQgbW9kaWZ5X2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3My1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1NzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTc1LVx0LnJlZ2lzdGVyX2ZlbnRyeSAgID0gcmVnaXN0ZXJfZmVudHJ5X211bHRpLFxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTI2MzU9dm9pZCB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjY1NS1cdFx0ICogb3IgTlVMTDsgdGhlIGxhdHRlciBjYXNlIG1lYW5zIHRoYXQgbm9ib2R5IGJ1dCByaS1cdTAwM2VmdW5jXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyNjU2Olx0XHQgKiBjb3VsZCBoaXQgdGhpcyB0cmFtcG9saW5lIG9uIHJldHVybi4gVE9ETzogc2lnYWx0c3RhY2soKS5cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI2NTctXHRcdCAqL1xuLS1cbmtlcm5lbC90cmFjZS9mdHJhY2UuYz0zMzA9aW50IF9fcmVnaXN0ZXJfZnRyYWNlX2Z1bmN0aW9uKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMpXG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTM2NC1cbmtlcm5lbC90cmFjZS9mdHJhY2UuYzozNjU6XHRmdHJhY2VfdXBkYXRlX3RyYW1wb2xpbmUob3BzKTtcbmtlcm5lbC90cmFjZS9mdHJhY2UuYy0zNjYtXG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jPTM5Mz1zdGF0aWMgdm9pZCBmdHJhY2VfdXBkYXRlX3BpZF9mdW5jKHZvaWQpXG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTQwNC1cdFx0XHRcdGZ0cmFjZV9waWRfZnVuYyA6IG9wLVx1MDAzZXNhdmVkX2Z1bmM7XG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6NDA1Olx0XHRcdGZ0cmFjZV91cGRhdGVfdHJhbXBvbGluZShvcCk7XG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNDA2LVx0XHR9XG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jPTg0MTQ9c3RhdGljIHZvaWQgZnRyYWNlX3VwZGF0ZV90cmFtcG9saW5lKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMpXG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTg0MTctXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6ODQxODpcdGFyY2hfZnRyYWNlX3VwZGF0ZV90cmFtcG9saW5lKG9wcyk7XG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtODQxOS1cdGlmIChvcHMtXHUwMDNldHJhbXBvbGluZSBcdTAwMjZcdTAwMjYgb3BzLVx1MDAzZXRyYW1wb2xpbmUgIT0gdHJhbXBvbGluZSBcdTAwMjZcdTAwMjZcbi0tXG50b29scy9wZXJmL3V0aWwvZHNvLmg9Mjg9ZW51bSBkc29fYmluYXJ5X3R5cGUge1xuLS1cbnRvb2xzL3BlcmYvdXRpbC9kc28uaC05Ny1cdERTT19CSU5BUllfVFlQRV9fQlBGX1BST0dfSU5GTyxcbnRvb2xzL3BlcmYvdXRpbC9kc28uaDo5ODpcdC8qKiBARFNPX0JJTkFSWV9UWVBFX19CUEZfSU1BR0U6IGppdHRlZCBCUEYgdHJhbXBvbGluZSBvciBkaXNwYXRjaGVyIGNvZGUuICovXG50b29scy9wZXJmL3V0aWwvZHNvLmgtOTktXHREU09fQklOQVJZX1RZUEVfX0JQRl9JTUFHRSxcbi0tXG50b29scy9wZXJmL3V0aWwvbWFwLmM9NTI5PXU2NCBtYXBfX3JpcF8yb2JqZHVtcChjb25zdCBzdHJ1Y3QgbWFwICptYXAsIHU2NCByaXApXG4tLVxudG9vbHMvcGVyZi91dGlsL21hcC5jLTUzNS1cdCAqIHZtbGludXggZG9lcyBub3QgaGF2ZSBwcm9ncmFtIGhlYWRlcnMgZm9yIFBUSSBlbnRyeSB0cmFtcG9saW5lcyBhbmRcbnRvb2xzL3BlcmYvdXRpbC9tYXAuYzo1MzY6XHQgKiBrY29yZSBtYXkgbm90IGVpdGhlci4gSG93ZXZlciB0aGUgdHJhbXBvbGluZSBvYmplY3QgY29kZSBpcyBvbiB0aGVcbnRvb2xzL3BlcmYvdXRpbC9tYXAuYy01MzctXHQgKiBtYWluIGtlcm5lbCBtYXAsIHNvIGp1c3QgdXNlIHRoYXQgaW5zdGVhZC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyMDQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBCUEYgSklUIENvbXBpbGF0aW9uIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gaG93IHRoZSBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgIGZpbGUgZ2V0cyBjb21waWxlZC4gVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoYXQgaXQmIzM5O3MgY29uZGl0aW9uYWwgb24gYENPTkZJR19CUEZfSklUYC4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBrZXJuZWwvYnBmL01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBidWlsZCBydWxlcy4gWWVwLCBgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSB0cmFtcG9saW5lLm9gIGNvbmZpcm1zIHRoYXQuIFNvIGBCUEZfSklUYCBpcyBkZWZpbml0ZWx5IGEgbmVjZXNzYXJ5IGNvbXBvbmVudC4gSG1tLCBhbHRob3VnaCBgQlBGX0pJVGAgaXMgdHlwaWNhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2ggYW5kIGV4cGxpY2l0bHkgaW5jbHVkZSBpdC4gT2theSwgdGltZSB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgYGtlcm5lbC9icGYvS2NvbmZpZ2AgdG8gdmVyaWZ5IHRoZSBleGFjdCBkZWZpbml0aW9uIGFuZCBkZXBlbmRlbmNpZXMgZm9yIGBCUEZfSklUYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9KSVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7UGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxua2VybmVsL2JwZi9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjc1MAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDQ2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLZXJuZWwgQlBGIFRyYWNpbmcgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBCUEYgSklUIHNldHVwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBCUEZfSklUYCBpcyBlbmFibGVkLCBvYnZpb3VzbHkuIFRoZW4sIGxldCYjMzk7cyByZWNhcCB0aGUgcmVsZXZhbnQgY29uZmlnczogYEJQRl9TWVNDQUxMYCwgYEJQRl9KSVRgLCBgRlVOQ1RJT05fVFJBQ0VSYCwgYW5kIGlkZWFsbHksIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBjcnVjaWFsIHNldHRpbmdzIGluIHRoZSBtaXguIEkgcmVjYWxsIHRoYXQgYEZUUkFDRWAgaXMgYSBtZW51Y29uZmlnLCB3aXRoIGBGVU5DVElPTl9UUkFDRVJgIGJlaW5nIHRoZSBzcGVjaWZpYyBjb25maWcgSSYjMzk7bSBhZnRlci4KCk5vdywgbGV0JiMzOTtzIGdldCBpbnRvIHRoZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uOiBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgYG1vZGlmeV9mZW50cnlfbXVsdGlgLCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCwgYW5kIGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgLiBIbW0sIHdhaXQgYSBtaW51dGUsIEkgaGF2ZSB0byByZW1lbWJlciB0aGF0IGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIGEgcG90ZW50aWFsbHkgaG90LXBhdGggZnVuY3Rpb24sIHJpZ2h0PyBOb3BlLCBJJiMzOTttIHRoaW5raW5nIG9mIHNvbWV0aGluZyBlbHNlLiBJdCYjMzk7cyBvbmx5IGNhbGxlZCBkdXJpbmcgQlBGIHByb2dyYW0gYXR0YWNobWVudCBhbmQgZGV0YWNobWVudCDigJMgc2xvdyBwYXRocy4gYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgaXMgYWxzbyBhIHNsb3cgcGF0aCwgYXMgaXMgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAuCgpBbHJpZ2h0LCBJIHNob3VsZCBjb25maXJtIGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIHN0YXRpYy4gWWVzLCBpdCBpcy4gSXQmIzM5O3MgZGVmaW5lZCBzdGF0aWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBBaCwgcmlnaHQsIGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIGNhbGxlZCBieSBgYnBmX3RyYW1wb2xpbmVfbGlua19wcm9nYCBhbmQgYGJwZl90cmFtcG9saW5lX3VubGlua19wcm9nYCwgYW5kIEkgaGF2ZSBteSBsaXN0IG9mIGZ1bmN0aW9uczogYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGBtb2RpZnlfZmVudHJ5X211bHRpYCwgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAsIGFuZCBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIHN0YXRpYy4gWWVwLCBkZWZpbml0ZWx5IHN0YXRpYy4gQW5kLCBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYD8gU3RhdGljIGFzIHdlbGwuIEhvdyBhYm91dCBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYD8gTm8sIHRoYXQgb25lJiMzOTtzIG5vdCBzdGF0aWMuIExvb2tzIGxpa2UgaXQmIzM5O3MgZGVmaW5lZCBpbiBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYCwgc28gSSBzaG91bGQgcHJvYmFibHkgdGFrZSBhIGxvb2sgYXQgaXQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90cmFjaW5nX211bHRpX2F0dGFjaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc4OT1pbnQgYnBmX3Vwcm9iZV9tdWx0aV9saW5rX2F0dGFjaChjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6NzkwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cik7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc5MS0jZWxzZVxuLS1cbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9ODQ4PXN0YXRpYyBpbmxpbmUgaW50XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjg0OTpicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODUwLXtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NzY1PXN0YXRpYyBpbnQgbGlua19jcmVhdGUodW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU4MTUtXHRcdGVsc2UgaWYgKGlzX3RyYWNpbmdfbXVsdGkocHJvZy1cdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZSkpXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1ODE2Olx0XHRcdHJldCA9IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChwcm9nLCBhdHRyKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU4MTctXHRcdGVsc2Vcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MzgxOT1zdGF0aWMgaW50IGNoZWNrX2R1cF9pZHModTMyICppZHMsIHU2NCAqY29va2llcywgdTMyIGNudClcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzgzOS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozODQwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zODQxLXtcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkyOS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozOTMwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTMxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDU6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQyNjUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgYSBQb3RlbnRpYWwgRG91YmxlIERlZmluaXRpb24gaW4gQlBGIFRyYWNpbmcqKgoKT2theSwgaG9sZCBvbiBhIG1pbnV0ZS4gVGhpcyBkb2VzbiYjMzk7dCBzZWVtIHJpZ2h0LiBUaGUgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgZnVuY3Rpb24uLi4gSSBjb3VsZCBzd2VhciBJIHNhdyB0aGF0IGRlZmluZWQgc29tZXdoZXJlIGJlZm9yZS4gSW4gZmFjdCwgbXkgaW50ZXJuYWwgbGludGluZyBqdXN0IHdlbnQgaGF5d2lyZS4gQW0gSSBzZWVpbmcgZG91YmxlPyBMZXQgbWUgZG91YmxlLWNoZWNrIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgIGFuZCBtYWtlIHN1cmUgbXkgZXllcyBhcmVuJiMzOTt0IGRlY2VpdmluZyBtZSwgZXNwZWNpYWxseSBhcm91bmQgbGluZSBudW1iZXJzIDM4NDAgYW5kIDM5MzAuIFNvbWV0aGluZyBmZWVscyBvZmYgaGVyZSwgYW5kIEkgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzIHBvdGVudGlhbCBjb25mbGljdCBiZWZvcmUgaXQgY2F1c2VzIGFueSBkb3duc3RyZWFtIGlzc3Vlcy4gQSByZWR1bmRhbnQgZGVmaW5pdGlvbiBpcyBhIHRpY2tpbmcgdGltZS1ib21iLCBhbmQgSSBkb24mIzM5O3Qgd2FudCB0byBkZWFsIHdpdGggdGhhdCBtZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4MzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM4MzA6XHRcbjM4MzE6XHRcdGZvciAoaW50IGkgPSAxOyBpIFx1MDAzYyBjbnQ7IGkmIzQzOyYjNDM7KSB7XG4zODMyOlx0XHRcdGlmIChpZHNbaV0gPT0gaWRzW2kgLSAxXSkge1xuMzgzMzpcdFx0XHRcdGVyciA9IC1FSU5WQUw7XG4zODM0Olx0XHRcdFx0YnJlYWs7XG4zODM1Olx0XHRcdH1cbjM4MzY6XHRcdH1cbjM4Mzc6XHRcdHJldHVybiBlcnI7XG4zODM4Olx0fVxuMzgzOTpcdFxuMzg0MDpcdGludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbjM4NDE6XHR7XG4zODQyOlx0XHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluayA9IE5VTEw7XG4zODQzOlx0XHRzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKmZleGl0cyA9IE5VTEw7XG4zODQ0Olx0XHRzdHJ1Y3QgYnBmX2xpbmtfcHJpbWVyIGxpbmtfcHJpbWVyO1xuMzg0NTpcdFx0dTMyIGNudCwgKmlkcyA9IE5VTEw7XG4zODQ2Olx0XHR1NjQgX191c2VyICp1Y29va2llcztcbjM4NDc6XHRcdHU2NCAqY29va2llcyA9IE5VTEw7XG4zODQ4Olx0XHR1MzIgX191c2VyICp1aWRzO1xuMzg0OTpcdFx0aW50IGVycjtcbjM4NTA6XHRcbjM4NTE6XHRcdHVpZHMgPSB1NjRfdG9fdXNlcl9wdHIoYXR0ci1cdTAwM2VsaW5rX2NyZWF0ZS50cmFjaW5nX211bHRpLmlkcyk7XG4zODUyOlx0XHRjbnQgPSBhdHRyLVx1MDAzZWxpbmtfY3JlYXRlLnRyYWNpbmdfbXVsdGkuY250O1xuMzg1MzpcdFxuMzg1NDpcdFx0aWYgKCFjbnQgfHwgIXVpZHMpXG4zODU1Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzg1NjpcdFx0aWYgKGNudCBcdTAwM2UgTUFYX1RSQUNJTkdfTVVMVElfQ05UKVxuMzg1NzpcdFx0XHRyZXR1cm4gLUUyQklHO1xuMzg1ODpcdFx0aWYgKGF0dHItXHUwMDNlbGlua19jcmVhdGUuZmxhZ3MgfHwgYXR0ci1cdTAwM2VsaW5rX2NyZWF0ZS50YXJnZXRfZmQpXG4zODU5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMzg2MDpcdFxuMzg2MTpcdFx0aWRzID0ga3ZtYWxsb2Nfb2JqcygqaWRzLCBjbnQpO1xuMzg2MjpcdFx0aWYgKCFpZHMpXG4zODYzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMzg2NDpcdFxuMzg2NTpcdFx0aWYgKGNvcHlfZnJvbV91c2VyKGlkcywgdWlkcywgY250ICogc2l6ZW9mKCppZHMpKSkge1xuMzg2NjpcdFx0XHRlcnIgPSAtRUZBVUxUO1xuMzg2NzpcdFx0XHRnb3RvIGVycm9yO1xuMzg2ODpcdFx0fVxuMzg2OTpcdFxuMzg3MDpcdFx0dWNvb2tpZXMgPSB1NjRfdG9fdXNlcl9wdHIoYXR0ci1cdTAwM2VsaW5rX2NyZWF0ZS50cmFjaW5nX211bHRpLmNvb2tpZXMpO1xuMzg3MTpcdFx0aWYgKHVjb29raWVzKSB7XG4zODcyOlx0XHRcdGNvb2tpZXMgPSBrdm1hbGxvY19vYmpzKCpjb29raWVzLCBjbnQpO1xuMzg3MzpcdFx0XHRpZiAoIWNvb2tpZXMpIHtcbjM4NzQ6XHRcdFx0XHRlcnIgPSAtRU5PTUVNO1xuMzg3NTpcdFx0XHRcdGdvdG8gZXJyb3I7XG4zODc2Olx0XHRcdH1cbjM4Nzc6XHRcdFx0aWYgKGNvcHlfZnJvbV91c2VyKGNvb2tpZXMsIHVjb29raWVzLCBjbnQgKiBzaXplb2YoKmNvb2tpZXMpKSkge1xuMzg3ODpcdFx0XHRcdGVyciA9IC1FRkFVTFQ7XG4zODc5Olx0XHRcdFx0Z290byBlcnJvcjtcbjM4ODA6XHRcdFx0fVxuMzg4MTpcdFx0fVxuMzg4MjpcdFxuMzg4MzpcdFx0ZXJyID0gY2hlY2tfZHVwX2lkcyhpZHMsIGNvb2tpZXMsIGNudCk7XG4zODg0Olx0XHRpZiAoZXJyKVxuMzg4NTpcdFx0XHRnb3RvIGVycm9yO1xuMzg4NjpcdFxuMzg4NzpcdFx0aWYgKHByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OX01VTFRJKSB7XG4zODg4Olx0XHRcdGZleGl0cyA9IGt2bWFsbG9jX29ianMoKmZleGl0cywgY250KTtcbjM4ODk6XHRcdFx0aWYgKCFmZXhpdHMpIHtcbjM4OTA6XHRcdFx0XHRlcnIgPSAtRU5PTUVNO1xuMzg5MTpcdFx0XHRcdGdvdG8gZXJyb3I7XG4zODkyOlx0XHRcdH1cbjM4OTM6XHRcdH1cbjM4OTQ6XHRcbjM4OTU6XHRcdGxpbmsgPSBrdnphbGxvY19mbGV4KCpsaW5rLCBub2RlcywgY250KTtcbjM4OTY6XHRcdGlmICghbGluaykge1xuMzg5NzpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuMzg5ODpcdFx0XHRnb3RvIGVycm9yO1xuMzg5OTpcdFx0fVxuMzkwMDpcdFxuMzkwMTpcdFx0YnBmX2xpbmtfaW5pdChcdTAwMjZsaW5rLVx1MDAzZWxpbmssIEJQRl9MSU5LX1RZUEVfVFJBQ0lOR19NVUxUSSxcbjM5MDI6XHRcdFx0ICAgICAgXHUwMDI2YnBmX3RyYWNpbmdfbXVsdGlfbGlua19sb3BzLCBwcm9nLCBwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKTtcbjM5MDM6XHRcbjM5MDQ6XHRcdGVyciA9IGJwZl9saW5rX3ByaW1lKFx1MDAyNmxpbmstXHUwMDNlbGluaywgXHUwMDI2bGlua19wcmltZXIpO1xuMzkwNTpcdFx0aWYgKGVycilcbjM5MDY6XHRcdFx0Z290byBlcnJvcjtcbjM5MDc6XHRcbjM5MDg6XHRcdGxpbmstXHUwMDNlbm9kZXNfY250ID0gY250O1xuMzkwOTpcdFx0bGluay1cdTAwM2Vjb29raWVzID0gY29va2llcztcbjM5MTA6XHRcdGxpbmstXHUwMDNlZmV4aXRzID0gZmV4aXRzO1xuMzkxMTpcdFxuMzkxMjpcdFx0ZXJyID0gYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHByb2csIGlkcywgbGluayk7XG4zOTEzOlx0XHRrdmZyZWUoaWRzKTtcbjM5MTQ6XHRcdGlmIChlcnIpIHtcbjM5MTU6XHRcdFx0YnBmX2xpbmtfY2xlYW51cChcdTAwMjZsaW5rX3ByaW1lcik7XG4zOTE2Olx0XHRcdHJldHVybiBlcnI7XG4zOTE3Olx0XHR9XG4zOTE4Olx0XHRyZXR1cm4gYnBmX2xpbmtfc2V0dGxlKFx1MDAyNmxpbmtfcHJpbWVyKTtcbjM5MTk6XHRcbjM5MjA6XHRlcnJvcjpcbjM5MjE6XHRcdGt2ZnJlZShmZXhpdHMpO1xuMzkyMjpcdFx0a3ZmcmVlKGNvb2tpZXMpO1xuMzkyMzpcdFx0a3ZmcmVlKGlkcyk7XG4zOTI0Olx0XHRrdmZyZWUobGluayk7XG4zOTI1Olx0XHRyZXR1cm4gZXJyO1xuMzkyNjpcdH1cbjM5Mjc6XHRcbjM5Mjg6XHQjZWxzZVxuMzkyOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTkyNQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbmRpdGlvbmFsIExvZ2ljIGluIHRoZSBDb2RlKioKCk9rYXksIHNvIEkmIzM5O3ZlIHF1aWNrbHkgaWRlbnRpZmllZCB0aGUgYCNlbHNlYCBibG9jayDigJMgdGhhdCYjMzk7cyBhIGtleSBwb2ludCBvZiBkaXZlcmdlbmNlIGluIHRoZSBsb2dpYy4gTm93LCB0byB0cnVseSBncmFzcCB0aGUgZmxvdywgSSBuZWVkIHRvIHpvb20gaW4gb24gdGhlIGNvcmUgZnVuY3Rpb24gY2FsbHMuIExldCBtZSBzZWUuLi4gdGhlIG9uZXMgdGhhdCBpbW1lZGlhdGVseSBzdGFuZCBvdXQgYXMgY3JpdGljYWwgYXJlOiBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgYG1vZGlmeV9mZW50cnlfbXVsdGlgLCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCwgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAsIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoYC4gSSYjMzk7bGwgd2FudCB0byB0cmFjZSBlYWNoIG9mIHRoZXNlIHRvIHNlZSB3aGF0IGlzIGhhcHBlbmluZy4KCkhtbSwgaW50ZXJlc3RpbmcsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hgIGlzIGRlZmluZWQgaW4gYGtlcm5lbC9icGYvdHJhbXBvbGluZS5jYC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIHRoYXQmIzM5O2xsIHNhdmUgbWUgc29tZSB0aW1lLiBSaWdodCwgbGV0IG1lIGNoZWNrIHRoYXQgZnVuY3Rpb24gbW9yZSBjbG9zZWx5IHRvIHVuZGVyc3RhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2gmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9icGYuaD0xNTIwPWludCBhcmNoX3ByZXBhcmVfYnBmX2Rpc3BhdGNoZXIodm9pZCAqaW1hZ2UsIHZvaWQgKmJ1ZiwgczY0ICpmdW5jcywgaW50IG51bV9mdW5jcyk7XG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1MjEtXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1MjI6aW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxuaW5jbHVkZS9saW51eC9icGYuaC0xNTIzLVx0XHRcdFx0c3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbmsgKmxpbmspO1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MTYzNT1zdGF0aWMgaW5saW5lIGJvb2wgYnBmX3Byb2dfaGFzX3RyYW1wb2xpbmUoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMTYzOC19XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE2Mzk6c3RhdGljIGlubGluZSBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE2NDAtXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3OS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1ODA6c3RhdGljIHZvaWQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2luaXQoc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1ODEte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1ODUtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTg2OnN0YXRpYyB2b2lkIGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTg3LXtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTk0LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU5NTpzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2soc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1OTYte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2MTEtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNjEyOmludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2MTMtXHRcdFx0XHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluaylcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjU4LVx0Zm9yX2VhY2hfbW5vZGUobW5vZGUsIGxpbmspIHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2NTk6XHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9pbml0KG1ub2RlLVx1MDAzZXRyYW1wb2xpbmUpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTY2MC1cbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjg2LVx0Zm9yX2VhY2hfbW5vZGUobW5vZGUsIGxpbmspXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNjg3Olx0XHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZShtbm9kZS1cdTAwM2V0cmFtcG9saW5lKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2ODgtXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTY5Ni1cdFx0YnBmX3RyYW1wb2xpbmVfcmVtb3ZlX3Byb2cobW5vZGUtXHUwMDNldHJhbXBvbGluZSwgXHUwMDI2bW5vZGUtXHUwMDNlbm9kZSk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNjk3Olx0XHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sobW5vZGUtXHUwMDNldHJhbXBvbGluZSk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjk4LVx0fVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MTI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MjEtXHRcdGRhdGEtXHUwMDNlZW50cnkgPSBcdTAwMjZtbm9kZS1cdTAwM2VlbnRyeTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3MjI6XHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9pbml0KG1ub2RlLVx1MDAzZXRyYW1wb2xpbmUpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTcyMy1cdFx0V0FSTl9PTl9PTkNFKF9fYnBmX3RyYW1wb2xpbmVfdW5saW5rX3Byb2coXHUwMDI2bW5vZGUtXHUwMDNlbm9kZSwgbW5vZGUtXHUwMDNldHJhbXBvbGluZSxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzMyLVx0Zm9yX2VhY2hfbW5vZGUobW5vZGUsIGxpbmspXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNzMzOlx0XHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZShtbm9kZS1cdTAwM2V0cmFtcG9saW5lKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MzQtXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM4NDA9aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTExLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM5MTI6XHRlcnIgPSBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2gocHJvZywgaWRzLCBsaW5rKTtcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTEzLVx0a3ZmcmVlKGlkcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDA1OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NTEzCgkJCQkJCQlvdXRwdXQ6IDIwNAoJCQkJCQkJdGhvdWdodHM6IDk5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgQlBGIFRyYW1wb2xpbmUgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gdGhpbmtpbmcgYWJvdXQgdGhlIGJlc3QgdGFyZ2V0cyBmb3IgZnV6emluZyByZWxhdGVkIHRvIHRoaXMgQlBGIHRyYW1wb2xpbmUgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoYCBhbmQgYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAgYXJlIGRlZmluaXRlbHkgZ29vZCBwbGFjZXMgdG8gc3RhcnQsIGFuZCB0aGF0IHN0aWxsIGhvbGRzIHRydWUuIExldCYjMzk7cyBzZWUuLi4KCkkgc2hvdWxkIHN0YXJ0IGJ5IHN1bW1hcml6aW5nIHRoZSBmdW5jdGlvbnMgSSYjMzk7dmUgaWRlbnRpZmllZCBhcyBiZWluZyByZWxldmFudC4gSSBoYXZlOgoKKiAgIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgCiogICBgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGlgCiogICBgbW9kaWZ5X2ZlbnRyeV9tdWx0aWAKKiAgIGBicGZfdHJhbXBvbGluZV91cGRhdGVgCiogICBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYAoqICAgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaGAKKiAgIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgCgpBbHNvLCB0aGUga2VybmVsIGNvbmZpZ3MgdGhhdCBhcmUgcmVsZXZhbnQgYXJlOgoqICAgYEJQRl9TWVNDQUxMYAoqICAgYEJQRl9KSVRgCiogICBgRlVOQ1RJT05fVFJBQ0VSYAoKV2FpdCwgaGFuZyBvbi4uLiBkaWRuJiMzOTt0IEkgc2VlIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgaW4gdGhlIHBhdGNoIGNvbnRleHQ/IEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgcXVpY2suLi4gcmlnaHQsIHRoYXQgb25lIGlzIGBkZWZfYm9vbCB5YCBkZXBlbmRpbmcgb24gYEhBVkVfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLCBtZWFuaW5nIGl0JiMzOTtzIG5vdCBhIHVzZXItc2VsZWN0YWJsZSBjb25maWcuIE9rYXksIGdvb2QgdG8ga25vdy4gVGhlIGxpc3Qgb2YgdXNlci1zZWxlY3RhYmxlIGNvbmZpZ3MgaXMgY29ycmVjdCB0aGVuLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmIGFnYWluLgoKYGBgYwotLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYwpAQCAtMTUzNiw2ICYjNDM7MTUzNiw3IEBAIHN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5X211bHRpKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hCiAJaWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItJmd0O2ZsYWdzKSkKIAkJYWRkciA9IGZ0cmFjZV9qbXBfc2V0KGFkZHIpOwogCiYjNDM7CXRyLSZndDtmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTsKIAlmdHJhY2VfaGFzaF9hZGQoZGF0YS0mZ3Q7cmVnLCBkYXRhLSZndDtlbnRyeSwgaXAsIGFkZHIpOwogCXRyLSZndDtjdXJfaW1hZ2UgPSBpbTsKIAlyZXR1cm4gMDsKYGBgCgpSaWdodCwgdGhpcyBpcyBhYm91dCBmaXhpbmcgYSBidWcsIHdoZXJlIGBmdHJhY2VfbWFuYWdlZGAgd2FzIG5vdCBzZXQgY29ycmVjdGx5IGZvciBtdWx0aS10cmFtcG9saW5lcy4gVGhpcyBoYXMgaW1wbGljYXRpb25zIGZvciBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAgYmVjYXVzZSB0aGV5IHdvdWxkIHJlbHkgb24gdGhlIGBmdHJhY2VfbWFuYWdlZGAgZmxhZyBiZWluZyBzZXQuIFNvLCBib3RoIG9mIHRoZXNlIGFyZSBnb29kIHRhcmdldHMgdG9vLiBBbHNvLCBgdW5yZWdpc3Rlcl9mZW50cnlgIGlzIGNhbGxlZCBmcm9tIGBicGZfdHJhbXBvbGluZV91cGRhdGVgLiBTbyBsZXQmIzM5O3MgaW5jbHVkZSB0aG9zZS4KCk9rYXksIHNvIHRoZSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gbG9vayBsaWtlOgoKKiAgIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgCiogICBgdW5yZWdpc3Rlcl9mZW50cnlgCiogICBgbW9kaWZ5X2ZlbnRyeWAKKiAgIGBicGZfdHJhbXBvbGluZV91cGRhdGVgCiogICBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYAoqICAgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaGAKKiAgIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgCgpXZSBkb24mIzM5O3Qgd2FudCB0aGUgdGFyZ2V0IGxpc3QgdG8gYmUgdG9vIGxvbmcsIHNvIEkmIzM5O20gZ29pbmcgdG8gcmVmaW5lIHRoaXMgYSBiaXQsIGJ5IHJlbW92aW5nIGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgLgoKVGhlIGZpbmFsIGxpc3QgaXM6CgoqICAgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAKKiAgIGB1bnJlZ2lzdGVyX2ZlbnRyeWAKKiAgIGBtb2RpZnlfZmVudHJ5YAoqICAgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAKKiAgIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hgCiogICBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYAoKVGhhdCBmZWVscyByaWdodC4KCkZvciBjb25maWdzLCB3ZSBoYXZlOgoKKiAgIGBCUEZfU1lTQ0FMTGAKKiAgIGBCUEZfSklUYAoqICAgYEZVTkNUSU9OX1RSQUNFUmAKClRoZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBgZnRyYWNlX21hbmFnZWRgIHdhc24mIzM5O3QgYmVpbmcgc2V0IGNvcnJlY3RseSBmb3IgbXVsdGktdHJhbXBvbGluZXMsIHdoaWNoIGxlZCB0byBpc3N1ZXMgd2l0aCBob3cgYHVucmVnaXN0ZXJfZmVudHJ5YCBhbmQgYG1vZGlmeV9mZW50cnlgIGZ1bmN0aW9uZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIGluIHRoZSBCUEYgc3Vic3lzdGVtLCB3aGljaCBhYnNvbHV0ZWx5IG1ha2VzIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIEFsc28sIGBDT05GSUdfRlRSQUNFYCBpcyBhIG1lbnVjb25maWcsIGJ1dCBgRlVOQ1RJT05fVFJBQ0VSYCBpcyB0aGUgYWN0dWFsIGNvbmZpZyB0aGF0IGVuYWJsZXMgYENPTkZJR19EWU5BTUlDX0ZUUkFDRWAgYW5kIGBDT05GSUdfRlRSQUNFYC4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgbmVlZGVkIGZvciBlbmFibGluZyB0aGUgQlBGIHN5c2NhbGwuIGBDT05GSUdfQlBGX0pJVGAgaXMgbmVjZXNzYXJ5IGZvciB0aGUgQlBGIEpJVCwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHRyYW1wb2xpbmVzIHRvIHdvcmsuCgpPa2F5LCBJIHRoaW5rIEkmIzM5O3ZlIGdvdCB0aGlzIGZ1bGx5IHNjb3BlZC4gTGV0JiMzOTsKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwNToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7LAogICAgJiMzNDtGVU5DVElPTl9UUkFDRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZWdpc3Rlcl9mZW50cnlfbXVsdGkmIzM0OywKICAgICYjMzQ7dW5yZWdpc3Rlcl9mZW50cnkmIzM0OywKICAgICYjMzQ7bW9kaWZ5X2ZlbnRyeSYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV91cGRhdGUmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoJiMzNDssCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX211bHRpX2RldGFjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBCUEYgdHJhbXBvbGluZSBsb2dpYyB3aGVyZSBgZnRyYWNlX21hbmFnZWRgIHdhcyBub3Qgc2V0IHRvIHRydWUgd2hlbiByZWdpc3RlcmluZyBhIG11bHRpIGZlbnRyeS4gVGhpcyBjYXVzZWQgaXNzdWVzIHdoZW4gYXR0YWNoaW5nIGEgc2luZ2xlIGZlbnRyeSB0byBhIGZ1bmN0aW9uIHRoYXQgYWxyZWFkeSBoYWQgYSBtdWx0aSBmZW50cnkgYXR0YWNoZWQsIGFzIGB1bnJlZ2lzdGVyX2ZlbnRyeWAgYW5kIGBtb2RpZnlfZmVudHJ5YCByZWx5IG9uIGBmdHJhY2VfbWFuYWdlZGAgYmVpbmcgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7RlVOQ1RJT05fVFJBQ0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmVnaXN0ZXJfZmVudHJ5X211bHRpJiMzNDssCiAgICAmIzM0O3VucmVnaXN0ZXJfZmVudHJ5JiMzNDssCiAgICAmIzM0O21vZGlmeV9mZW50cnkmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfdXBkYXRlJiMzNDssCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaCYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlBGIHRyYW1wb2xpbmUgbG9naWMgd2hlcmUgYGZ0cmFjZV9tYW5hZ2VkYCB3YXMgbm90IHNldCB0byB0cnVlIHdoZW4gcmVnaXN0ZXJpbmcgYSBtdWx0aSBmZW50cnkuIFRoaXMgY2F1c2VkIGlzc3VlcyB3aGVuIGF0dGFjaGluZyBhIHNpbmdsZSBmZW50cnkgdG8gYSBmdW5jdGlvbiB0aGF0IGFscmVhZHkgaGFkIGEgbXVsdGkgZmVudHJ5IGF0dGFjaGVkLCBhcyBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAgcmVseSBvbiBgZnRyYWNlX21hbmFnZWRgIGJlaW5nIHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjI6MTIuNzg5NzgxNzkxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0NTIwNTI2ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJGVU5DVElPTl9UUkFDRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZWdpc3Rlcl9mZW50cnlfbXVsdGlcIixcbiAgICBcInVucmVnaXN0ZXJfZmVudHJ5XCIsXG4gICAgXCJtb2RpZnlfZmVudHJ5XCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV91cGRhdGVcIixcbiAgICBcImJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaFwiLFxuICAgIFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gQlBGIHRyYW1wb2xpbmUgbG9naWMgd2hlcmUgYGZ0cmFjZV9tYW5hZ2VkYCB3YXMgbm90IHNldCB0byB0cnVlIHdoZW4gcmVnaXN0ZXJpbmcgYSBtdWx0aSBmZW50cnkuIFRoaXMgY2F1c2VkIGlzc3VlcyB3aGVuIGF0dGFjaGluZyBhIHNpbmdsZSBmZW50cnkgdG8gYSBmdW5jdGlvbiB0aGF0IGFscmVhZHkgaGFkIGEgbXVsdGkgZmVudHJ5IGF0dGFjaGVkLCBhcyBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAgcmVseSBvbiBgZnRyYWNlX21hbmFnZWRgIGJlaW5nIHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjoxMi43ODk3ODYzMjFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MTgwODE1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFiMTE5MzY4YzU1ZWQ3MGRkODBkYmNjMmVjMDc1YzEwYTFmYzllZmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTIgMDU6MjI6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi90cmFtcG9saW5lLmMgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xcbmluZGV4IDFhNzIxZmM0YmVmNTYyLi42ZWFkZjY0ZjdlYzkwZiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xcbisrKyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXFxuQEAgLTE1MzYsNiArMTUzNiw3IEBAIHN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5X211bHRpKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hXFxuIFxcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVxcdTAwM2VmbGFncykpXFxuIFxcdFxcdGFkZHIgPSBmdHJhY2Vfam1wX3NldChhZGRyKTtcXG4gXFxuK1xcdHRyLVxcdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtcXG4gXFx0ZnRyYWNlX2hhc2hfYWRkKGRhdGEtXFx1MDAzZXJlZywgZGF0YS1cXHUwMDNlZW50cnksIGlwLCBhZGRyKTtcXG4gXFx0dHItXFx1MDAzZWN1cl9pbWFnZSA9IGltO1xcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jXFxuaW5kZXggZjAyZmZjN2Y0MWQ3ODQuLjBhYTk1MzJhMDVjZmVjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuY1xcbkBAIC00NjAsNiArNDYwLDczIEBAIHN0YXRpYyB2b2lkIHRlc3RfaW50ZXJzZWN0KHZvaWQpXFxuIFxcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X19kZXN0cm95KHNrZWwpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0ZXN0X2ZlbnRyeV9hZnRlcl9tdWx0aSh2b2lkKVxcbit7XFxuK1xcdHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZnVuY3NbXSA9IHtcXG4rXFx0XFx0XFxcImJwZl9mZW50cnlfdGVzdDFcXFwiLFxcbitcXHR9O1xcbitcXHRzdHJ1Y3QgYnBmX2xpbmsgKmZlbnRyeV9saW5rID0gTlVMTCwgKm11bHRpX2xpbmsgPSBOVUxMO1xcbitcXHRzdHJ1Y3QgdHJhY2luZ19tdWx0aV9pbnRlcnNlY3QgKnNrZWwgPSBOVUxMO1xcbitcXHRMSUJCUEZfT1BUUyhicGZfdHJhY2luZ19tdWx0aV9vcHRzLCBvcHRzKTtcXG4rXFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTtcXG4rXFx0X191MzIgKmlkcyA9IE5VTEw7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRza2VsID0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfX29wZW5fYW5kX2xvYWQoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJ0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fb3Blbl9hbmRfbG9hZFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXBpZCA9IGdldHBpZCgpO1xcbitcXG4rXFx0aWRzID0gZ2V0X2lkcyhmdW5jcywgQVJSQVlfU0laRShmdW5jcyksIE5VTEwpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoaWRzLCBcXFwiZ2V0X2lkc1xcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcbitcXHRvcHRzLmlkcyA9IGlkcztcXG4rXFx0b3B0cy5jbnQgPSBBUlJBWV9TSVpFKGZ1bmNzKTtcXG4rXFx0bXVsdGlfbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2luZ19tdWx0aShza2VsLVxcdTAwM2Vwcm9ncy5mZW50cnlfMSwgTlVMTCwgXFx1MDAyNm9wdHMpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIobXVsdGlfbGluaywgXFxcImF0dGFjaF9tdWx0aVxcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcbitcXHRmZW50cnlfbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2goc2tlbC1cXHUwMDNlcHJvZ3MuZmVudHJ5KTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKGZlbnRyeV9saW5rLCBcXFwiYXR0YWNoX2ZlbnRyeVxcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcbitcXHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy5mZW50cnlfMSksIFxcdTAwMjZ0b3B0cyk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcInRlc3RfcnVuXFxcIikpXFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNldGVzdF9yZXN1bHRfZmVudHJ5XzEsIDEsIFxcXCJtdWx0aV9mZW50cnlcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNldGVzdF9yZXN1bHRfZmVudHJ5LCAxLCBcXFwiZmVudHJ5XFxcIik7XFxuK1xcbitcXHRlcnIgPSBicGZfbGlua19fZGVzdHJveShmZW50cnlfbGluayk7XFxuK1xcdGZlbnRyeV9saW5rID0gTlVMTDtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiZGVzdHJveV9mZW50cnlcXFwiKSlcXG4rXFx0XFx0Z290byBjbGVhbnVwO1xcbitcXG4rXFx0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhicGZfcHJvZ3JhbV9fZmQoc2tlbC1cXHUwMDNlcHJvZ3MuZmVudHJ5XzEpLCBcXHUwMDI2dG9wdHMpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJ0ZXN0X3J1bl9tdWx0aVxcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeV8xLCAyLCBcXFwibXVsdGlfZmVudHJ5X29ubHlcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNldGVzdF9yZXN1bHRfZmVudHJ5LCAxLCBcXFwiZmVudHJ5X2RldGFjaGVkXFxcIik7XFxuK1xcbitcXHRlcnIgPSBicGZfbGlua19fZGVzdHJveShtdWx0aV9saW5rKTtcXG4rXFx0bXVsdGlfbGluayA9IE5VTEw7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImRlc3Ryb3lfbXVsdGlcXFwiKSlcXG4rXFx0XFx0Z290byBjbGVhbnVwO1xcbitcXG4rXFx0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhicGZfcHJvZ3JhbV9fZmQoc2tlbC1cXHUwMDNlcHJvZ3MuZmVudHJ5XzEpLCBcXHUwMDI2dG9wdHMpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJ0ZXN0X3J1bl9kZXRhY2hlZFxcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeV8xLCAyLCBcXFwibXVsdGlfZmVudHJ5X2RldGFjaGVkXFxcIik7XFxuK1xcdEFTU0VSVF9FUShza2VsLVxcdTAwM2Vic3MtXFx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeSwgMSwgXFxcImZlbnRyeV9zdGlsbF9kZXRhY2hlZFxcXCIpO1xcbitcXG4rY2xlYW51cDpcXG4rXFx0YnBmX2xpbmtfX2Rlc3Ryb3koZmVudHJ5X2xpbmspO1xcbitcXHRicGZfbGlua19fZGVzdHJveShtdWx0aV9saW5rKTtcXG4rXFx0ZnJlZShpZHMpO1xcbitcXHR0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fZGVzdHJveShza2VsKTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgdGVzdF9zZXNzaW9uKHZvaWQpXFxuIHtcXG4gXFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTtcXG5AQCAtOTU3LDQgKzEwMjQsNiBAQCB2b2lkIHRlc3RfdHJhY2luZ19tdWx0aV90ZXN0KHZvaWQpXFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJhdHRhY2hfYXBpX2ZhaWxzXFxcIikpXFxuIFxcdFxcdHRlc3RfYXR0YWNoX2FwaV9mYWlscygpO1xcbiBcXHRSVU5fVEVTVFModHJhY2luZ19tdWx0aV92ZXJpZmllcik7XFxuK1xcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJmZW50cnlfYWZ0ZXJfbXVsdGlcXFwiKSlcXG4rXFx0XFx0dGVzdF9mZW50cnlfYWZ0ZXJfbXVsdGkoKTtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmNcXG5pbmRleCBjZDViZTBiYjZmZmRkNy4uNWIwYWY4ZjRjNjJmZjggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jXFxuQEAgLTExLDYgKzExLDE0IEBAIF9fdTY0IHRlc3RfcmVzdWx0X2ZlbnRyeV8xID0gMDtcXG4gX191NjQgdGVzdF9yZXN1bHRfZmVudHJ5XzIgPSAwO1xcbiBfX3U2NCB0ZXN0X3Jlc3VsdF9mZXhpdF8xID0gMDtcXG4gX191NjQgdGVzdF9yZXN1bHRfZmV4aXRfMiA9IDA7XFxuK19fdTY0IHRlc3RfcmVzdWx0X2ZlbnRyeSA9IDA7XFxuK1xcbitTRUMoXFxcImZlbnRyeS9icGZfZmVudHJ5X3Rlc3QxXFxcIilcXG4raW50IEJQRl9QUk9HKGZlbnRyeSlcXG4re1xcbitcXHR0cmFjaW5nX211bHRpX2FyZ19jaGVjayhjdHgsIFxcdTAwMjZ0ZXN0X3Jlc3VsdF9mZW50cnksIGZhbHNlKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4gXFxuIFNFQyhcXFwiZmVudHJ5Lm11bHRpXFxcIilcXG4gaW50IEJQRl9QUk9HKGZlbnRyeV8xKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjoxMy4xNjIyMTE5MjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNDE0ODA4ODkwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiRlVOQ1RJT05fVFJBQ0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVnaXN0ZXJfZmVudHJ5X211bHRpXCIsXG4gICAgXCJ1bnJlZ2lzdGVyX2ZlbnRyeVwiLFxuICAgIFwibW9kaWZ5X2ZlbnRyeVwiLFxuICAgIFwiYnBmX3RyYW1wb2xpbmVfdXBkYXRlXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hcIixcbiAgICBcImJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIEJQRiB0cmFtcG9saW5lIGxvZ2ljIHdoZXJlIGBmdHJhY2VfbWFuYWdlZGAgd2FzIG5vdCBzZXQgdG8gdHJ1ZSB3aGVuIHJlZ2lzdGVyaW5nIGEgbXVsdGkgZmVudHJ5LiBUaGlzIGNhdXNlZCBpc3N1ZXMgd2hlbiBhdHRhY2hpbmcgYSBzaW5nbGUgZmVudHJ5IHRvIGEgZnVuY3Rpb24gdGhhdCBhbHJlYWR5IGhhZCBhIG11bHRpIGZlbnRyeSBhdHRhY2hlZCwgYXMgYHVucmVnaXN0ZXJfZmVudHJ5YCBhbmQgYG1vZGlmeV9mZW50cnlgIHJlbHkgb24gYGZ0cmFjZV9tYW5hZ2VkYCBiZWluZyBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxYjExOTM2OGM1NWVkNzBkZDgwZGJjYzJlYzA3NWMxMGExZmM5ZWZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMDU6MjI6MTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXG5pbmRleCAxYTcyMWZjNGJlZjU2Mi4uNmVhZGY2NGY3ZWM5MGYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuKysrIGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbkBAIC0xNTM2LDYgKzE1MzYsNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYVxuIFx0aWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItXHUwMDNlZmxhZ3MpKVxuIFx0XHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XG4gXG4rXHR0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtcbiBcdGZ0cmFjZV9oYXNoX2FkZChkYXRhLVx1MDAzZXJlZywgZGF0YS1cdTAwM2VlbnRyeSwgaXAsIGFkZHIpO1xuIFx0dHItXHUwMDNlY3VyX2ltYWdlID0gaW07XG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX211bHRpLmNcbmluZGV4IGYwMmZmYzdmNDFkNzg0Li4wYWE5NTMyYTA1Y2ZlYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfbXVsdGkuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19tdWx0aS5jXG5AQCAtNDYwLDYgKzQ2MCw3MyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ludGVyc2VjdCh2b2lkKVxuIFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfX2Rlc3Ryb3koc2tlbCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHRlc3RfZmVudHJ5X2FmdGVyX211bHRpKHZvaWQpXG4re1xuK1x0c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBmdW5jc1tdID0ge1xuK1x0XHRcImJwZl9mZW50cnlfdGVzdDFcIixcbitcdH07XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmZlbnRyeV9saW5rID0gTlVMTCwgKm11bHRpX2xpbmsgPSBOVUxMO1xuK1x0c3RydWN0IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0ICpza2VsID0gTlVMTDtcbitcdExJQkJQRl9PUFRTKGJwZl90cmFjaW5nX211bHRpX29wdHMsIG9wdHMpO1xuK1x0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTtcbitcdF9fdTMyICppZHMgPSBOVUxMO1xuK1x0aW50IGVycjtcbitcbitcdHNrZWwgPSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fb3Blbl9hbmRfbG9hZCgpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwidHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfX29wZW5fYW5kX2xvYWRcIikpXG4rXHRcdHJldHVybjtcbitcbitcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZXBpZCA9IGdldHBpZCgpO1xuK1xuK1x0aWRzID0gZ2V0X2lkcyhmdW5jcywgQVJSQVlfU0laRShmdW5jcyksIE5VTEwpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKGlkcywgXCJnZXRfaWRzXCIpKVxuK1x0XHRnb3RvIGNsZWFudXA7XG4rXG4rXHRvcHRzLmlkcyA9IGlkcztcbitcdG9wdHMuY250ID0gQVJSQVlfU0laRShmdW5jcyk7XG4rXHRtdWx0aV9saW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjaW5nX211bHRpKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5XzEsIE5VTEwsIFx1MDAyNm9wdHMpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKG11bHRpX2xpbmssIFwiYXR0YWNoX211bHRpXCIpKVxuK1x0XHRnb3RvIGNsZWFudXA7XG4rXG4rXHRmZW50cnlfbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2goc2tlbC1cdTAwM2Vwcm9ncy5mZW50cnkpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKGZlbnRyeV9saW5rLCBcImF0dGFjaF9mZW50cnlcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcbitcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5XzEpLCBcdTAwMjZ0b3B0cyk7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwidGVzdF9ydW5cIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2V0ZXN0X3Jlc3VsdF9mZW50cnlfMSwgMSwgXCJtdWx0aV9mZW50cnlcIik7XG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNldGVzdF9yZXN1bHRfZmVudHJ5LCAxLCBcImZlbnRyeVwiKTtcbitcbitcdGVyciA9IGJwZl9saW5rX19kZXN0cm95KGZlbnRyeV9saW5rKTtcbitcdGZlbnRyeV9saW5rID0gTlVMTDtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJkZXN0cm95X2ZlbnRyeVwiKSlcbitcdFx0Z290byBjbGVhbnVwO1xuK1xuK1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy5mZW50cnlfMSksIFx1MDAyNnRvcHRzKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJ0ZXN0X3J1bl9tdWx0aVwiKSlcbitcdFx0Z290byBjbGVhbnVwO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeV8xLCAyLCBcIm11bHRpX2ZlbnRyeV9vbmx5XCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZXRlc3RfcmVzdWx0X2ZlbnRyeSwgMSwgXCJmZW50cnlfZGV0YWNoZWRcIik7XG4rXG4rXHRlcnIgPSBicGZfbGlua19fZGVzdHJveShtdWx0aV9saW5rKTtcbitcdG11bHRpX2xpbmsgPSBOVUxMO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcImRlc3Ryb3lfbXVsdGlcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcbitcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5XzEpLCBcdTAwMjZ0b3B0cyk7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwidGVzdF9ydW5fZGV0YWNoZWRcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2V0ZXN0X3Jlc3VsdF9mZW50cnlfMSwgMiwgXCJtdWx0aV9mZW50cnlfZGV0YWNoZWRcIik7XG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNldGVzdF9yZXN1bHRfZmVudHJ5LCAxLCBcImZlbnRyeV9zdGlsbF9kZXRhY2hlZFwiKTtcbitcbitjbGVhbnVwOlxuK1x0YnBmX2xpbmtfX2Rlc3Ryb3koZmVudHJ5X2xpbmspO1xuK1x0YnBmX2xpbmtfX2Rlc3Ryb3kobXVsdGlfbGluayk7XG4rXHRmcmVlKGlkcyk7XG4rXHR0cmFjaW5nX211bHRpX2ludGVyc2VjdF9fZGVzdHJveShza2VsKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgdGVzdF9zZXNzaW9uKHZvaWQpXG4ge1xuIFx0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTtcbkBAIC05NTcsNCArMTAyNCw2IEBAIHZvaWQgdGVzdF90cmFjaW5nX211bHRpX3Rlc3Qodm9pZClcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwiYXR0YWNoX2FwaV9mYWlsc1wiKSlcbiBcdFx0dGVzdF9hdHRhY2hfYXBpX2ZhaWxzKCk7XG4gXHRSVU5fVEVTVFModHJhY2luZ19tdWx0aV92ZXJpZmllcik7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcImZlbnRyeV9hZnRlcl9tdWx0aVwiKSlcbitcdFx0dGVzdF9mZW50cnlfYWZ0ZXJfbXVsdGkoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5jXG5pbmRleCBjZDViZTBiYjZmZmRkNy4uNWIwYWY4ZjRjNjJmZjggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guY1xuQEAgLTExLDYgKzExLDE0IEBAIF9fdTY0IHRlc3RfcmVzdWx0X2ZlbnRyeV8xID0gMDtcbiBfX3U2NCB0ZXN0X3Jlc3VsdF9mZW50cnlfMiA9IDA7XG4gX191NjQgdGVzdF9yZXN1bHRfZmV4aXRfMSA9IDA7XG4gX191NjQgdGVzdF9yZXN1bHRfZmV4aXRfMiA9IDA7XG4rX191NjQgdGVzdF9yZXN1bHRfZmVudHJ5ID0gMDtcbitcbitTRUMoXCJmZW50cnkvYnBmX2ZlbnRyeV90ZXN0MVwiKVxuK2ludCBCUEZfUFJPRyhmZW50cnkpXG4re1xuK1x0dHJhY2luZ19tdWx0aV9hcmdfY2hlY2soY3R4LCBcdTAwMjZ0ZXN0X3Jlc3VsdF9mZW50cnksIGZhbHNlKTtcbitcdHJldHVybiAwO1xuK31cbiBcbiBTRUMoXCJmZW50cnkubXVsdGlcIilcbiBpbnQgQlBGX1BST0coZmVudHJ5XzEpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjoxMy4xNjIyMTMyMDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzg1NzUwNzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBCUEYgVHJhbXBvbGluZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AgYW5kIHNvbWUgcmVsYXRlZCB0ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0aGUgY29kZSBjaGFuZ2UgaXRzZWxmIHdpdGhpbiB0aGF0IGtlcm5lbCBmaWxlLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhlcmUncyBhIG1vZGlmaWNhdGlvbiB0byB0aGUgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2hhbmdlLCB3aGljaCBhZGRzIGB0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtgLiBUaGlzIGxvb2tzIGxpa2UgaXQgaXMgc2V0dGluZyBhIGZsYWcgb24gdGhlIGJwZiB0cmFtcG9saW5lIHN0cnVjdC4gSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gd2hhdCB0aGF0IG1lYW5zLlxuXG5UaGlzIGlzIGNvcmUgQlBGIHRyYW1wb2xpbmUgbG9naWMsIHNvIHVuZGVyc3RhbmRpbmcgdGhlIHJhbWlmaWNhdGlvbnMgaXMgcHJldHR5IGltcG9ydGFudC5cblxuVG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9uLCBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgIGZ1bmN0aW9uIGl0c2VsZi4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQgb2Ygd2hhdCBpdCBkb2VzLCBhbmQgYWxzbyB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBrZXJuZWwgc2V0dGluZ3MgaW5mbHVlbmNlIGl0cyBiZWhhdmlvci4gVGhhdCBmbGFnIGJlaW5nIHNldCB0aGVyZSBtYXkgaGF2ZSBhIGRlZXBlciBpbXBsaWNhdGlvbiwgc28gSSdsbCBiZSBsb29raW5nIGZvciB3aGVyZSBhbmQgaG93IHRoYXQgYHRyLVx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWRgIG1lbWJlciBpcyB1c2VkIGRvd25zdHJlYW0gZnJvbSB0aGlzIGZ1bmN0aW9uLiBUaGlzIHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gZnRyYWNlIG1hbmFnZW1lbnQsIHNvIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUga2VybmVsIGZlYXR1cmVzIG9yIGJ1aWxkIG9wdGlvbnMgcmVsYXRlZCB0byBmdHJhY2UgdGhhdCBtaWdodCBiZSByZWxldmFudCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzk0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjI6MTcuNTQ3OTY1NTU3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODUyMzI2MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVnaXN0ZXJfZmVudHJ5X211bHRpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1MjI9c3RhdGljIHZvaWQgZnRyYWNlX2hhc2hfYWRkKHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCwgc3RydWN0IGZ0cmFjZV9mdW5jX2VudHJ5ICplbnRyeSxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1MjktXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTUzMDpzdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcHRyKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1MzEte1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU0NC1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTQ1OnN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTQ2LXtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU3NTpcXHQucmVnaXN0ZXJfZmVudHJ5ICAgPSByZWdpc3Rlcl9mZW50cnlfbXVsdGksXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU3NjpcXHQudW5yZWdpc3Rlcl9mZW50cnkgPSB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aSxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTc3LVxcdC5tb2RpZnlfZmVudHJ5ICAgICA9IG1vZGlmeV9mZW50cnlfbXVsdGksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIyOjE5LjMzMzIwMjQ0NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4OTI1MjYyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCBGdW5jdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gc2VlaW5nIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgIGJlaW5nIGNhbGxlZCB3aXRoaW4gYHRyYW1wb2xpbmVfbXVsdGlfb3BzYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhhdCBmdW5jdGlvbiB3b3JrcyBhbmQgd2hlcmUgaXQncyBiZWluZyB1c2VkIHdpdGhpbiB0aGlzIGNvbnRleHQuIE15IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvZGUgZGlyZWN0bHkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgc291cmNlIGZpbGUsIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AuIFRoYXQgc2hvdWxkIGNvbnRhaW4gdGhlIGRlZmluaXRpb24gb2YgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAgYW5kLCBjcnVjaWFsbHksIEkgbmVlZCB0byBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIGBmdHJhY2VfbWFuYWdlZGAuIFVuZGVyc3RhbmRpbmcgdGhlaXIgcmVsYXRpb25zaGlwIGlzIHByb2JhYmx5IGtleSB0byBncmFzcGluZyB0aGUgYmVoYXZpb3Igb2YgYHRyYW1wb2xpbmVfbXVsdGlfb3BzYCwgYW5kIGJ5IGV4dGVuc2lvbiwgdGhlIHN5c3RlbSdzIG92ZXJhbGwgZnVuY3Rpb24gaGVyZS4gVGltZSB0byBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjYyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjI6MjIuMjI1NzMwNTc3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzAzODA3NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnRyYWNlX21hbmFnZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9icGYuaD0xMzgwPXN0cnVjdCBicGZfdHJhbXBvbGluZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzOTItXFx0XFx0dm9pZCAqYWRkcjtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjEzOTM6XFx0XFx0Ym9vbCBmdHJhY2VfbWFuYWdlZDtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzOTQtXFx0fSBmdW5jO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDMyPXN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKmRhdGEgX19tYXliZV91bnVzZWQpXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MzYtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDM3OlxcdGlmICh0ci1cXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZClcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MzgtXFx0XFx0cmV0ID0gZGlyZWN0X29wc19kZWwodHIsIG9sZF9hZGRyKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTQ1MD1zdGF0aWMgaW50IG1vZGlmeV9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDU2LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjQ1NzpcXHRpZiAodHItXFx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQpIHtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00NTgtXFx0XFx0cmV0ID0gZGlyZWN0X29wc19tb2QodHIsIG5ld19hZGRyLCBsb2NrX2RpcmVjdF9tdXRleCk7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz00NzM9c3RhdGljIGludCByZWdpc3Rlcl9mZW50cnkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00ODQtXFx0XFx0XFx0cmV0dXJuIC1FTk9UU1VQUDtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0ODU6XFx0XFx0dHItXFx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQgPSB0cnVlO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ4Ni1cXHR9XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDg3LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjQ4ODpcXHRpZiAodHItXFx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQpIHtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00ODktXFx0XFx0cmV0ID0gZGlyZWN0X29wc19hZGQodHIsIG5ld19hZGRyKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1MzA9c3RhdGljIGludCByZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnB0cilcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1MzgtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTUzOTpcXHR0ci1cXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZCA9IHRydWU7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU0MC1cXHRmdHJhY2VfaGFzaF9hZGQoZGF0YS1cXHUwMDNlcmVnLCBkYXRhLVxcdTAwM2VlbnRyeSwgaXAsIGFkZHIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjoyMy45OTYxMTU2NDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM1OTg2Njc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGZlbnRyeWAgUGF0Y2gncyBJbXBsaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHNldHRpbmcgYHRyLVx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQgPSB0cnVlYCB3aXRoaW4gYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAuIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgcmlwcGxlIGVmZmVjdCwgYXMgSSBrbm93IHRoYXQgYHVucmVnaXN0ZXJfZmVudHJ5YCBhbmQgYG1vZGlmeV9mZW50cnlgIGJvdGggY2hlY2sgdGhpcyBgdHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZGAgZmxhZy4gTXkgaW5pdGlhbCBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBpbnRyb2R1Y2VzIGFueSBjb25mbGljdHMuXG5cbkFoLCBidXQgYSBjbG9zZXIgbG9vay4gYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCBhbmQgYG1vZGlmeV9mZW50cnlfbXVsdGlgIGFyZSBzcGVjaWZpY2FsbHkgYXNzb2NpYXRlZCB3aXRoIG11bHRpLXRyYW1wb2xpbmUgZnVuY3Rpb25hbGl0eS4gVGhhdCdzIHRoZSBrZXkgY29udGV4dCBoZXJlLiBOb3cgSSBuZWVkIHRvIGV4YW1pbmUgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBhZGRlZCBmbGFnIGlzIGhhbmRsZWQgcHJvcGVybHkgaW4gdGhlIG11bHRpLXRyYW1wb2xpbmUgY29udGV4dC4gTGV0J3Mgc2VlIGhvdyB0aGlzIHBsYXlzIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE3OSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIyOjI3LjEzMjEwMzg4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU5MjE4MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVucmVnaXN0ZXJfZmVudHJ5X211bHRpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1MzA9c3RhdGljIGludCByZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnB0cilcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDQtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU0NTpzdGF0aWMgaW50IHVucmVnaXN0ZXJfZmVudHJ5X211bHRpKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBvcmlnX2ZsYWdzLCB2b2lkICpwdHIpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU0Ni17XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wb2xpbmVfb3BzIHRyYW1wb2xpbmVfbXVsdGlfb3BzID0ge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NzUtXFx0LnJlZ2lzdGVyX2ZlbnRyeSAgID0gcmVnaXN0ZXJfZmVudHJ5X211bHRpLFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1NzY6XFx0LnVucmVnaXN0ZXJfZmVudHJ5ID0gdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGksXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3Ny1cXHQubW9kaWZ5X2ZlbnRyeSAgICAgPSBtb2RpZnlfZmVudHJ5X211bHRpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjoyOC43OTEzMjY2NzFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk0Mjk0MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkFuYWx5emluZyBGdHJhY2UgRnVuY3Rpb24gVW5yZWdpc3RyYXRpb24gYW5kIE1vZGlmaWNhdGlvbioqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyBmdHJhY2UgY29kZSBhbmQgc29tZXRoaW5nJ3MgaW1tZWRpYXRlbHkgY2F0Y2hpbmcgbXkgYXR0ZW50aW9uLiBJIHNlZSB0aGF0IHRoZSBgdHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZGAgZmxhZyBpcyBiZWluZyBleHBsaWNpdGx5IGNoZWNrZWQgaW4gYm90aCBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAg4oCTIGNsYXNzaWMgY2hlY2tzIGZvciBtYW5hZ2VkIGZ0cmFjZSBlbnRyaWVzLCBhcyBJJ2QgZXhwZWN0LiBIb3dldmVyLCB3aGVuIEkgbG9vayBhdCBob3cgdGhlIG11bHRpLWZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgdmlhIHRoZSBgdHJhbXBvbGluZV9tdWx0aV9vcHNgLCBJIHNlZSB0aGF0IGl0IHVzZXMgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYCBhbmQgYG1vZGlmeV9mZW50cnlfbXVsdGlgIGluc3RlYWQuXG5cblNvLCB0aGUgcXVlc3Rpb24gdGhhdCdzIGJ1YmJsaW5nIHVwIGluIG15IG1pbmQgaXMgdGhpczogQXJlIHRoZSBpbmRpdmlkdWFsIGB1bnJlZ2lzdGVyX2ZlbnRyeWAgb3IgYG1vZGlmeV9mZW50cnlgIGZ1bmN0aW9ucyBhY3R1YWxseSBldmVyICp1c2VkKiBvbiB0aGVzZSBtdWx0aS10cmFtcG9saW5lcz8gQW5kIGlmIG5vdCwgaXMgdGhpcyBgZnRyYWNlX21hbmFnZWRgIGZsYWcgYmVpbmcgdXNlZCAqYW55d2hlcmUqIGVsc2UgaW4gcmVsYXRpb24gdG8gdGhpcyBtdWx0aS10cmFtcG9saW5lIHNldHVwPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgdXNhZ2UgYW5kIGRldGVybWluZSBpZiB0aGVyZSdzIGEgZGlzY29ubmVjdCBvciBhIHBvdGVudGlhbCBvdmVyc2lnaHQgaW4gaG93IHRoZXNlIGRpZmZlcmVudCBmdW5jdGlvbiBzZXRzIGludGVyYWN0LiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIGZ0cmFjZSBpbmZyYXN0cnVjdHVyZSBhbmQgdGhlIGFwcHJvcHJpYXRlIGhhbmRsaW5nIG9mIG1hbmFnZWQgZW50cmllcyBhY3Jvc3MgZGlmZmVyZW50IHRyYW1wb2xpbmUgY29uZmlndXJhdGlvbnMuIFRpbWUgdG8gZGlnIGRlZXBlci4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzQyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjI6MzIuMzg1NjIyOTM5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM2MDc0ODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVucmVnaXN0ZXJfZmVudHJ5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTYyPXN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTYzLVxcdGludCAoKnJlZ2lzdGVyX2ZlbnRyeSkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKmRhdGEpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjY0OlxcdGludCAoKnVucmVnaXN0ZXJfZmVudHJ5KShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgdm9pZCAqZGF0YSk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjUtXFx0aW50ICgqbW9kaWZ5X2ZlbnRyeSkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDMwPXN0YXRpYyB2b2lkIGJwZl90cmFtcF9pbWFnZV9wdXQoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0pO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQzMS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0MzI6c3RhdGljIGludCB1bnJlZ2lzdGVyX2ZlbnRyeShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncywgdm9pZCAqZGF0YSBfX21heWJlX3VudXNlZClcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00MzMte1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NTAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wb2xpbmVfb3BzIHRyYW1wb2xpbmVfb3BzID0ge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTUwMi1cXHQucmVnaXN0ZXJfZmVudHJ5ICAgPSByZWdpc3Rlcl9mZW50cnksXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NTAzOlxcdC51bnJlZ2lzdGVyX2ZlbnRyeSA9IHVucmVnaXN0ZXJfZmVudHJ5LFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTUwNC1cXHQubW9kaWZ5X2ZlbnRyeSAgICAgPSBtb2RpZnlfZmVudHJ5LFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NjczPXN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIGJvb2wgbG9ja19kaXJlY3RfbXV0ZXgsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy02ODYtXFx0aWYgKHRvdGFsID09IDApIHtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo2ODc6XFx0XFx0ZXJyID0gb3BzLVxcdTAwM2V1bnJlZ2lzdGVyX2ZlbnRyeSh0ciwgb3JpZ19mbGFncywgZGF0YSk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjg4LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTUzMD1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcHRyKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU0NC1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTQ1OnN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTQ2LXtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3NS1cXHQucmVnaXN0ZXJfZmVudHJ5ICAgPSByZWdpc3Rlcl9mZW50cnlfbXVsdGksXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU3NjpcXHQudW5yZWdpc3Rlcl9mZW50cnkgPSB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aSxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTc3LVxcdC5tb2RpZnlfZmVudHJ5ICAgICA9IG1vZGlmeV9mZW50cnlfbXVsdGksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIyOjM0LjAyMTcwMzMyN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQyODgxODY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIEludGVyYWN0aW9uIG9mIGBmdHJhY2VfbWFuYWdlZGAgYW5kIFRyYW1wb2xpbmUgT3BlcmF0aW9ucyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBmdWxseSB1bmRlcnN0YW5kIHRoaXMuIEl0IGp1c3QgaGl0IG1lOiBgdW5yZWdpc3Rlcl9mZW50cnlgIHJlbGllcyBvbiBgdHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZGAuIEFuZCBJIHJlY2FsbCB0aGF0IGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgICpzZXRzKiBgdHItXHUwMDNlZnVuYy5mdHJhY2VfbWFuYWdlZGAgdG8gYHRydWVgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGRvZXMgdGhhdCBzZXQgaGF2ZSBhbnkgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMgZm9yIGB1bnJlZ2lzdGVyX2ZlbnRyeWA/IEkgaGF2ZSBhIGZlZWxpbmcgdGhlIGFuc3dlciB3aWxsIGJlIE5PIGJ1dCBiZXN0IHRvIGNoZWNrLlxuXG5XYWl0LCBub3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBgdW5yZWdpc3Rlcl9mZW50cnlgIGlzIGJ1cmllZCBhd2F5IGluIHRoZSBgdHJhbXBvbGluZV9vcHNgIHN0cnVjdHVyZS4gV2hlcmVhcywgYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAgcmVzaWRlcyBpbiBgdHJhbXBvbGluZV9tdWx0aV9vcHNgLiBIbW0sIHNvIGV2ZW4gaWYgdGhlIGZvcm1lciBmdW5jdGlvbiByZWxpZXMgb24gdGhlIGxhdHRlciB2YXJpYWJsZSBpdCBzaG91bGQgYmUgb2ssIHVubGVzcy4uLiB3aGF0IGhhcHBlbnMgaWYgYSB0cmFtcG9saW5lIGlzIHN3aXRjaGVkIGZyb20gdGhlIG11bHRpIHZlcnNpb24gdG8gdGhlIHNpbmdsZSB2ZXJzaW9uIG9mIHRoZSBpbXBsZW1lbnRhdGlvbj8gT3IgaWYgYGZ0cmFjZV9tYW5hZ2VkYCBpcyBjaGVja2VkICplbHNld2hlcmUqP1xuXG5Pa2F5LCB0aW1lIHRvIGdldCBzZXJpb3VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBldmVyeXdoZXJlIHRoYXQgYGZ0cmFjZV9tYW5hZ2VkYCBpcyBhY3R1YWxseSB1c2VkLiBUaGF0J3MgdGhlIG9ubHkgd2F5IEknbGwgaGF2ZSBhIGNsZWFyIHBpY3R1cmUuIEdvdHRhIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBmaW5kIGFsbCB0aGUgY2FsbHMuIExldCdzIHN0YXJ0IHdpdGggYSB0aG9yb3VnaCBzZWFyY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MDksIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjI6MzcuOTY0NTg3ODAzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM3MzI1ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ0cmFjZV9tYW5hZ2VkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9MTM4MD1zdHJ1Y3QgYnBmX3RyYW1wb2xpbmUge1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMzkyLVxcdFxcdHZvaWQgKmFkZHI7XFxuaW5jbHVkZS9saW51eC9icGYuaDoxMzkzOlxcdFxcdGJvb2wgZnRyYWNlX21hbmFnZWQ7XFxuaW5jbHVkZS9saW51eC9icGYuaC0xMzk0LVxcdH0gZnVuYztcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTQzMj1zdGF0aWMgaW50IHVucmVnaXN0ZXJfZmVudHJ5KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBvcmlnX2ZsYWdzLCB2b2lkICpkYXRhIF9fbWF5YmVfdW51c2VkKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDM2LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjQzNzpcXHRpZiAodHItXFx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDM4LVxcdFxcdHJldCA9IGRpcmVjdF9vcHNfZGVsKHRyLCBvbGRfYWRkcik7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz00NTA9c3RhdGljIGludCBtb2RpZnlfZmVudHJ5KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBvcmlnX2ZsYWdzLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ1Ni1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0NTc6XFx0aWYgKHRyLVxcdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkKSB7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDU4LVxcdFxcdHJldCA9IGRpcmVjdF9vcHNfbW9kKHRyLCBuZXdfYWRkciwgbG9ja19kaXJlY3RfbXV0ZXgpO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDczPXN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDg0LVxcdFxcdFxcdHJldHVybiAtRU5PVFNVUFA7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDg1OlxcdFxcdHRyLVxcdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy00ODYtXFx0fVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQ4Ny1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo0ODg6XFx0aWYgKHRyLVxcdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkKSB7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDg5LVxcdFxcdHJldCA9IGRpcmVjdF9vcHNfYWRkKHRyLCBuZXdfYWRkcik7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTMwPXN0YXRpYyBpbnQgcmVnaXN0ZXJfZmVudHJ5X211bHRpKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICpwdHIpXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTM4LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1Mzk6XFx0dHItXFx1MDAzZWZ1bmMuZnRyYWNlX21hbmFnZWQgPSB0cnVlO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NDAtXFx0ZnRyYWNlX2hhc2hfYWRkKGRhdGEtXFx1MDAzZXJlZywgZGF0YS1cXHUwMDNlZW50cnksIGlwLCBhZGRyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjI6MzkuNjAxOTIwNTcyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTMyMTU4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipFeGFtaW5pbmcgZnRyYWNlX21hbmFnZWQgVXNhZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIGBmdHJhY2VfbWFuYWdlZGAgZmxhZyBhbmQgaXRzIHVzZSBpbiB0aGUgZnRyYWNlIHN1YnN5c3RlbS4gSSd2ZSBvYnNlcnZlZCB0aGF0IGBmdHJhY2VfbWFuYWdlZGAgaXMgb25seSByZWZlcmVuY2VkIHdpdGhpbiBgdW5yZWdpc3Rlcl9mZW50cnlgLCBgbW9kaWZ5X2ZlbnRyeWAsIGFuZCBgcmVnaXN0ZXJfZmVudHJ5YC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIEJ1dCB3YWl0IGEgbWludXRlLi4uIEkgbmVlZCB0byBjb25zaWRlciBhIHBvdGVudGlhbCBlZGdlIGNhc2UuIElmIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgICphbHNvKiBzZXRzIGB0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZWAsIGFuZCB0aGVuIGEgKnNpbmdsZSogYGZlbnRyeWAgaXMgYXR0YWNoZWQgdG8gdGhlICpzYW1lKiBmdW5jdGlvbiB2aWEgc29tZSBvdGhlciBtZWFucywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBUaGVyZSBjb3VsZCBiZSBjb25mbGljdHMgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhpcyBtaWdodCBwb2ludCB0byBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBhbiB1bmhhbmRsZWQgc3RhdGUuIEkgYmV0dGVyIGludmVzdGlnYXRlIHRoZSBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCBmdW5jdGlvbiB0byBzZWUgaWYgaXQgaGFuZGxlcyB0aGlzIHNjZW5hcmlvLiBMZXQncyBkaWcgaW50byB0aGF0IGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwMTIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjo0My4wNTUxMzkxOThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9icGYvdHJhbXBvbGluZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY0MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2NDA6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDY0MTpcXHRcXG4gNjQyOlxcdFxcdGVyciA9IGJwZl9qaXRfY2hhcmdlX21vZG1lbShzaXplKTtcXG4gNjQzOlxcdFxcdGlmIChlcnIpXFxuIDY0NDpcXHRcXHRcXHRnb3RvIG91dF9mcmVlX2ltO1xcbiA2NDU6XFx0XFx0aW0tXFx1MDAzZXNpemUgPSBzaXplO1xcbiA2NDY6XFx0XFxuIDY0NzpcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiA2NDg6XFx0XFx0aW0tXFx1MDAzZWltYWdlID0gaW1hZ2UgPSBhcmNoX2FsbG9jX2JwZl90cmFtcG9saW5lKHNpemUpO1xcbiA2NDk6XFx0XFx0aWYgKCFpbWFnZSlcXG4gNjUwOlxcdFxcdFxcdGdvdG8gb3V0X3VuY2hhcmdlO1xcbiA2NTE6XFx0XFxuIDY1MjpcXHRcXHRlcnIgPSBwZXJjcHVfcmVmX2luaXQoXFx1MDAyNmltLVxcdTAwM2VwY3JlZiwgX19icGZfdHJhbXBfaW1hZ2VfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCk7XFxuIDY1MzpcXHRcXHRpZiAoZXJyKVxcbiA2NTQ6XFx0XFx0XFx0Z290byBvdXRfZnJlZV9pbWFnZTtcXG4gNjU1OlxcdFxcbiA2NTY6XFx0XFx0a3N5bSA9IFxcdTAwMjZpbS1cXHUwMDNla3N5bTtcXG4gNjU3OlxcdFxcdElOSVRfTElTVF9IRUFEX1JDVShcXHUwMDI2a3N5bS1cXHUwMDNlbG5vZGUpO1xcbiA2NTg6XFx0XFx0c25wcmludGYoa3N5bS1cXHUwMDNlbmFtZSwgS1NZTV9OQU1FX0xFTiwgXFxcImJwZl90cmFtcG9saW5lXyVsbHVcXFwiLCBrZXkpO1xcbiA2NTk6XFx0XFx0YnBmX2ltYWdlX2tzeW1faW5pdChpbWFnZSwgc2l6ZSwga3N5bSk7XFxuIDY2MDpcXHRcXHRicGZfaW1hZ2Vfa3N5bV9hZGQoa3N5bSk7XFxuIDY2MTpcXHRcXHRyZXR1cm4gaW07XFxuIDY2MjpcXHRcXG4gNjYzOlxcdG91dF9mcmVlX2ltYWdlOlxcbiA2NjQ6XFx0XFx0YXJjaF9mcmVlX2JwZl90cmFtcG9saW5lKGltLVxcdTAwM2VpbWFnZSwgaW0tXFx1MDAzZXNpemUpO1xcbiA2NjU6XFx0b3V0X3VuY2hhcmdlOlxcbiA2NjY6XFx0XFx0YnBmX2ppdF91bmNoYXJnZV9tb2RtZW0oc2l6ZSk7XFxuIDY2NzpcXHRvdXRfZnJlZV9pbTpcXG4gNjY4OlxcdFxcdGtmcmVlKGltKTtcXG4gNjY5OlxcdG91dDpcXG4gNjcwOlxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuIDY3MTpcXHR9XFxuIDY3MjpcXHRcXG4gNjczOlxcdHN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIGJvb2wgbG9ja19kaXJlY3RfbXV0ZXgsXFxuIDY3NDpcXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLCB2b2lkICpkYXRhKVxcbiA2NzU6XFx0e1xcbiA2NzY6XFx0XFx0c3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW07XFxuIDY3NzpcXHRcXHRzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICp0bm9kZXM7XFxuIDY3ODpcXHRcXHR1MzIgb3JpZ19mbGFncyA9IHRyLVxcdTAwM2VmbGFncztcXG4gNjc5OlxcdFxcdGJvb2wgaXBfYXJnID0gZmFsc2U7XFxuIDY4MDpcXHRcXHRpbnQgZXJyLCB0b3RhbCwgc2l6ZTtcXG4gNjgxOlxcdFxcbiA2ODI6XFx0XFx0dG5vZGVzID0gYnBmX3RyYW1wb2xpbmVfZ2V0X3Byb2dzKHRyLCBcXHUwMDI2dG90YWwsIFxcdTAwMjZpcF9hcmcpO1xcbiA2ODM6XFx0XFx0aWYgKElTX0VSUih0bm9kZXMpKVxcbiA2ODQ6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIodG5vZGVzKTtcXG4gNjg1OlxcdFxcbiA2ODY6XFx0XFx0aWYgKHRvdGFsID09IDApIHtcXG4gNjg3OlxcdFxcdFxcdGVyciA9IG9wcy1cXHUwMDNldW5yZWdpc3Rlcl9mZW50cnkodHIsIG9yaWdfZmxhZ3MsIGRhdGEpO1xcbiA2ODg6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDY4OTpcXHRcXHR9XFxuIDY5MDpcXHRcXG4gNjkxOlxcdFxcdC8qIGNsZWFyIGFsbCBiaXRzIGV4Y2VwdCBTSEFSRV9JUE1PRElGWSBhbmQgVEFJTF9DQUxMX0NUWCAqL1xcbiA2OTI6XFx0XFx0dHItXFx1MDAzZWZsYWdzIFxcdTAwMjY9IChCUEZfVFJBTVBfRl9TSEFSRV9JUE1PRElGWSB8IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpO1xcbiA2OTM6XFx0XFxuIDY5NDpcXHRcXHRpZiAodG5vZGVzW0JQRl9UUkFNUF9GRVhJVF0ubnJfbm9kZXMgfHxcXG4gNjk1OlxcdFxcdCAgICB0bm9kZXNbQlBGX1RSQU1QX01PRElGWV9SRVRVUk5dLm5yX25vZGVzKSB7XFxuIDY5NjpcXHRcXHRcXHQvKiBOT1RFOiBCUEZfVFJBTVBfRl9SRVNUT1JFX1JFR1MgYW5kIEJQRl9UUkFNUF9GX1NLSVBfRlJBTUVcXG4gNjk3OlxcdFxcdFxcdCAqIHNob3VsZCBub3QgYmUgc2V0IHRvZ2V0aGVyLlxcbiA2OTg6XFx0XFx0XFx0ICovXFxuIDY5OTpcXHRcXHRcXHR0ci1cXHUwMDNlZmxhZ3MgfD0gQlBGX1RSQU1QX0ZfQ0FMTF9PUklHIHwgQlBGX1RSQU1QX0ZfU0tJUF9GUkFNRTtcXG4gNzAwOlxcdFxcdH0gZWxzZSB7XFxuIDcwMTpcXHRcXHRcXHR0ci1cXHUwMDNlZmxhZ3MgfD0gQlBGX1RSQU1QX0ZfUkVTVE9SRV9SRUdTO1xcbiA3MDI6XFx0XFx0fVxcbiA3MDM6XFx0XFxuIDcwNDpcXHRcXHRpZiAoaXBfYXJnKVxcbiA3MDU6XFx0XFx0XFx0dHItXFx1MDAzZWZsYWdzIHw9IEJQRl9UUkFNUF9GX0lQX0FSRztcXG4gNzA2OlxcdFxcbiA3MDc6XFx0I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xcbiA3MDg6XFx0YWdhaW46XFxuIDcwOTpcXHRcXHRpZiAodHItXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfQ0FMTF9PUklHKSB7XFxuIDcxMDpcXHRcXHRcXHRpZiAodHItXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfU0hBUkVfSVBNT0RJRlkpIHtcXG4gNzExOlxcdFxcdFxcdFxcdC8qIFRoZSBCUEZfVFJBTVBfRl9TS0lQX0ZSQU1FIGNhbiBiZSBjbGVhcmVkIGluIHRoZVxcbiA3MTI6XFx0XFx0XFx0XFx0ICogZmlyc3QgdHJ5LCByZXNldCBpdCBpbiB0aGUgc2Vjb25kIHRyeS5cXG4gNzEzOlxcdFxcdFxcdFxcdCAqL1xcbiA3MTQ6XFx0XFx0XFx0XFx0dHItXFx1MDAzZWZsYWdzIHw9IEJQRl9UUkFNUF9GX09SSUdfU1RBQ0sgfCBCUEZfVFJBTVBfRl9TS0lQX0ZSQU1FO1xcbiA3MTU6XFx0XFx0XFx0fSBlbHNlIGlmIChJU19FTkFCTEVEKENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0pNUCkpIHtcXG4gNzE2OlxcdFxcdFxcdFxcdC8qIFVzZSBcXFwiam1wXFxcIiBpbnN0ZWFkIG9mIFxcXCJjYWxsXFxcIiBmb3IgdGhlIHRyYW1wb2xpbmVcXG4gNzE3OlxcdFxcdFxcdFxcdCAqIGluIHRoZSBvcmlnaW4gY2FsbCBjYXNlLCBhbmQgd2UgZG9uJ3QgbmVlZCB0b1xcbiA3MTg6XFx0XFx0XFx0XFx0ICogc2tpcCB0aGUgZnJhbWUuXFxuIDcxOTpcXHRcXHRcXHRcXHQgKi9cXG4gNzIwOlxcdFxcdFxcdFxcdHRyLVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+QlBGX1RSQU1QX0ZfU0tJUF9GUkFNRTtcXG4gNzIxOlxcdFxcdFxcdH1cXG4gNzIyOlxcdFxcdH1cXG4gNzIzOlxcdCNlbmRpZlxcbiA3MjQ6XFx0XFxuIDcyNTpcXHRcXHRzaXplID0gYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKFxcdTAwMjZ0ci1cXHUwMDNlZnVuYy5tb2RlbCwgdHItXFx1MDAzZWZsYWdzLFxcbiA3MjY6XFx0XFx0XFx0XFx0XFx0XFx0dG5vZGVzLCB0ci1cXHUwMDNlZnVuYy5hZGRyKTtcXG4gNzI3OlxcdFxcdGlmIChzaXplIFxcdTAwM2MgMCkge1xcbiA3Mjg6XFx0XFx0XFx0ZXJyID0gc2l6ZTtcXG4gNzI5OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA3MzA6XFx0XFx0fVxcbiA3MzE6XFx0XFxuIDczMjpcXHRcXHRpZiAoc2l6ZSBcXHUwMDNlIFBBR0VfU0laRSkge1xcbiA3MzM6XFx0XFx0XFx0ZXJyID0gLUUyQklHO1xcbiA3MzQ6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDczNTpcXHRcXHR9XFxuIDczNjpcXHRcXG4gNzM3OlxcdFxcdGltID0gYnBmX3RyYW1wX2ltYWdlX2FsbG9jKHRyLVxcdTAwM2VrZXksIHNpemUpO1xcbiA3Mzg6XFx0XFx0aWYgKElTX0VSUihpbSkpIHtcXG4gNzM5OlxcdFxcdFxcdGVyciA9IFBUUl9FUlIoaW0pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjo0My4wNTUyNjc5MjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg3MTI3MjA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgVHJhbXBvbGluZSBCdWcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgYXBwZWFycyB0byBhZGRyZXNzIGEgYnVnIGluIHRoZSBCUEYgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBmZW50cnkgbWVjaGFuaXNtLiBJIHNlZSB0aGF0IGB0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkYCB3YXNuJ3QgYmVpbmcgc2V0IHRvIGB0cnVlYCBpbiBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYCwgd2hpY2ggaXMgZGVmaW5pdGVseSBhIHByb2JsZW0uIFRoaXMgb21pc3Npb24gY291bGQgbGVhZCB0byBpbmNvcnJlY3QgYmVoYXZpb3Igd2hlbiBtdWx0aXBsZSBmZW50cmllcyBhcmUgaW52b2x2ZWQuXG5cblRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBzZWVtcyB0byBhcmlzZSB3aGVuIGEgc2luZ2xlIGZlbnRyeSBpcyBhdHRhY2hlZCB0byBhIGZ1bmN0aW9uIHRoYXQgYWxyZWFkeSBoYXMgYSBtdWx0aSBmZW50cnksIHRyaWdnZXJpbmcgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAuIEludGVyZXN0aW5nLiBXYWl0IGEgbWludXRlLCB0aGUgYHRlc3RfZmVudHJ5X2FmdGVyX211bHRpYCB0ZXN0IGNhc2UgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHByb3Zva2UgKnRoaXMqIHNjZW5hcmlvLCBzdGVwIGJ5IHN0ZXAhIEl0IGF0dGFjaGVzIGEgYGZlbnRyeS5tdWx0aWAsIHRoZW4gYSBzaW5nbGUgYGZlbnRyeWAsIGRldGFjaGVzIHRoZSBzaW5nbGUgYGZlbnRyeWAsIGFuZCB0aGVuIGRldGFjaGVzIHRoZSBgZmVudHJ5Lm11bHRpYC4gVGhhdCdzIHByZWNpc2VseSB0aGUgc2l0dWF0aW9uIGJlaW5nIGZsYWdnZWQgaGVyZS5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIG1vZGlmaWNhdGlvbiB0byBob3cgQlBGIHRyYW1wb2xpbmVzIGFyZSBtYW5hZ2VkLCBzcGVjaWZpY2FsbHkgZm9yIHByb2dyYW1zIHVzaW5nIGBmZW50cnkubXVsdGlgLiBOb3cgSSBuZWVkIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBjb3JyZWN0bHkgbWFuYWdlcyB0aGUgZmVudHJ5IHN0YXRlLlxuXG5JJ20gbWFraW5nIGEgbWVudGFsIG5vdGUgdGhhdCB0aGlzIHBhdGNoIHJlcXVpcmVzIHRoZSBjb25maWd1cmF0aW9ucyBgQlBGX1NZU0NBTExgLCBgRlRSQUNFYCwgYW5kIHBvdGVudGlhbGx5IGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AuIFRpbWUgdG8gZG91YmxlLWNoZWNrIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGFuZCB0aGUgb3ZlcmFsbCBpbXBhY3Qgb24gdGhlIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk4MSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIyOjQ3LjkyNjU0MTgxN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3Njk3NDkyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfLipGVFJBQ0VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzMDgyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2R3YzMucnN0PTUzNz1pbmZvcm1hdGlvbiBhYm91dCB0aGUgYmVoYXZpb3Igb2YgdGhlIGRyaXZlciBkdXJpbmcgcnVudGltZS5cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2R3YzMucnN0LTUzOC1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2R3YzMucnN0OjUzOTpJbiBvcmRlciB0byB1c2UgdGhlc2UgZXZlbnRzLCB5b3UgbXVzdCBlbmFibGUgYGBDT05GSUdfRlRSQUNFYGAgaW5cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdXNiL2R3YzMucnN0LTU0MC15b3VyIGtlcm5lbCBjb25maWcuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2xpdmVwYXRjaC9saXZlcGF0Y2gucnN0PTQ0PWEgYmFzZS4gQSBLcHJvYmUgaXMgcmVnaXN0ZXJlZCBhcyBhIGZ0cmFjZSBoYW5kbGVyIHdoZW4gdGhlIGZ1bmN0aW9uIGVudHJ5XFxuRG9jdW1lbnRhdGlvbi9saXZlcGF0Y2gvbGl2ZXBhdGNoLnJzdDo0NTppcyBwcm9iZWQsIHNlZSBDT05GSUdfS1BST0JFU19PTl9GVFJBQ0UuIEFsc28gYW4gYWx0ZXJuYXRpdmUgZnVuY3Rpb24gZnJvbVxcbkRvY3VtZW50YXRpb24vbGl2ZXBhdGNoL2xpdmVwYXRjaC5yc3QtNDYtYSBsaXZlIHBhdGNoIGlzIGNhbGxlZCB3aXRoIHRoZSBoZWxwIG9mIGEgY3VzdG9tIGZ0cmFjZSBoYW5kbGVyLiBCdXQgdGhlcmUgYXJlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVidWdnaW5nL2RyaXZlcl9kZXZlbG9wbWVudF9kZWJ1Z2dpbmdfZ3VpZGUucnN0PTUyPVRyYWNlX3ByaW50a1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlYnVnZ2luZy9kcml2ZXJfZGV2ZWxvcG1lbnRfZGVidWdnaW5nX2d1aWRlLnJzdC01NC1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVidWdnaW5nL2RyaXZlcl9kZXZlbG9wbWVudF9kZWJ1Z2dpbmdfZ3VpZGUucnN0OjU1OlByZXJlcXVpc2l0ZTogYGBDT05GSUdfRFlOQU1JQ19GVFJBQ0VgYCBcXHUwMDI2IGBgI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Z0cmFjZS5oXFx1MDAzZWBgXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlYnVnZ2luZy9kcml2ZXJfZGV2ZWxvcG1lbnRfZGVidWdnaW5nX2d1aWRlLnJzdC01Ni1cXG4tLVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZWJ1Z2dpbmcvdXNlcnNwYWNlX2RlYnVnZ2luZ19ndWlkZS5yc3Q9NjM9RnRyYWNlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvZGVidWdnaW5nL3VzZXJzcGFjZV9kZWJ1Z2dpbmdfZ3VpZGUucnN0LTY1LVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9kZWJ1Z2dpbmcvdXNlcnNwYWNlX2RlYnVnZ2luZ19ndWlkZS5yc3Q6NjY6UHJlcmVxdWlzaXRlOiBgYENPTkZJR19EWU5BTUlDX0ZUUkFDRWBgXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2RlYnVnZ2luZy91c2Vyc3BhY2VfZGVidWdnaW5nX2d1aWRlLnJzdC02Ny1cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLXVzZXMucnN0PTEzOD1mdHJhY2VfdGVzdF9yZWN1cnNpb25fdHJ5bG9jaygpIHRvIHJlY29yZCB3aGVyZSB0aGUgcmVjdXJzaW9uIGhhcHBlbmVkXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UtdXNlcy5yc3Q6MTM5OihpZiBDT05GSUdfRlRSQUNFX1JFQ09SRF9SRUNVUlNJT04gaXMgc2V0KS5cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS11c2VzLnJzdC0xNDAtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS5yc3Q9Mjk2Mj1keW5hbWljIGZ0cmFjZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTI5NjQtXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0OjI5NjU6SWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFIGlzIHNldCwgdGhlIHN5c3RlbSB3aWxsIHJ1biB3aXRoXFxuRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UucnN0LTI5NjYtdmlydHVhbGx5IG5vIG92ZXJoZWFkIHdoZW4gZnVuY3Rpb24gdHJhY2luZyBpcyBkaXNhYmxlZC4gVGhlIHdheVxcbi0tXFxuTWFrZWZpbGU9MTAyOT1pZmRlZiBDT05GSUdfRlVOQ1RJT05fVFJBQ0VSXFxuTWFrZWZpbGU6MTAzMDppZmRlZiBDT05GSUdfRlRSQUNFX01DT1VOVF9VU0VfQ0NcXG5NYWtlZmlsZS0xMDMxLSAgQ0NfRkxBR1NfRlRSQUNFXFx0Kz0gLW1yZWNvcmQtbWNvdW50XFxuLS1cXG5NYWtlZmlsZT0xMDM4PWVuZGlmXFxuTWFrZWZpbGU6MTAzOTppZmRlZiBDT05GSUdfRlRSQUNFX01DT1VOVF9VU0VfT0JKVE9PTFxcbk1ha2VmaWxlLTEwNDAtICBpZmRlZiBDT05GSUdfSEFWRV9PQkpUT09MX05PUF9NQ09VTlRcXG4tLVxcbk1ha2VmaWxlPTEwNDM9ZW5kaWZcXG5NYWtlZmlsZToxMDQ0OmlmZGVmIENPTkZJR19GVFJBQ0VfTUNPVU5UX1VTRV9SRUNPUkRNQ09VTlRcXG5NYWtlZmlsZS0xMDQ1LSAgaWZkZWYgQ09ORklHX0hBVkVfQ19SRUNPUkRNQ09VTlRcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAxX2RlZmNvbmZpZz0xMDI9Q09ORklHX0RFRkFVTFRfSFVOR19UQVNLX1RJTUVPVVQ9MTBcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvYXhzMTAxX2RlZmNvbmZpZy0xMDQtIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDFfZGVmY29uZmlnOjEwNTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfZGVmY29uZmlnPTEwMD1DT05GSUdfREVGQVVMVF9IVU5HX1RBU0tfVElNRU9VVD0xMFxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfZGVmY29uZmlnLTEwMi0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19kZWZjb25maWc6MTAzOiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL2F4czEwM19zbXBfZGVmY29uZmlnPTEwMj1DT05GSUdfREVGQVVMVF9IVU5HX1RBU0tfVElNRU9VVD0xMFxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfc21wX2RlZmNvbmZpZy0xMDQtIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9heHMxMDNfc21wX2RlZmNvbmZpZzoxMDU6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWc9ODk9Q09ORklHX0RFRkFVTFRfSFVOR19UQVNLX1RJTUVPVVQ9MTBcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWctOTEtIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy9oc2RrX2RlZmNvbmZpZzo5MjojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbmFyY2gvYXJjL2NvbmZpZ3MvaHNka19kZWZjb25maWctOTMtQ09ORklHX0NSWVBUT19FQ0hBSU5JVj15XFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX3NtcF9kZWZjb25maWc9NzI9Q09ORklHX05GU19WM19BQ0w9eVxcbmFyY2gvYXJjL2NvbmZpZ3MvbnNpbW9zY2lfaHNfc21wX2RlZmNvbmZpZzo3MzpDT05GSUdfRlRSQUNFPXlcXG5hcmNoL2FyYy9jb25maWdzL25zaW1vc2NpX2hzX3NtcF9kZWZjb25maWctNzQtIyBDT05GSUdfTkVUX1ZFTkRPUl9DQURFTkNFIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJjL2NvbmZpZ3MvdmRrX2hzMzhfZGVmY29uZmlnPTkxPUNPTkZJR19ERUZBVUxUX0hVTkdfVEFTS19USU1FT1VUPTEwXFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL3Zka19oczM4X2RlZmNvbmZpZy05My0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcXG5hcmNoL2FyYy9jb25maWdzL3Zka19oczM4X2RlZmNvbmZpZzo5NDojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9hcmMvY29uZmlncy92ZGtfaHMzOF9zbXBfZGVmY29uZmlnPTk3PUNPTkZJR19ERUZBVUxUX0hVTkdfVEFTS19USU1FT1VUPTEwXFxuLS1cXG5hcmNoL2FyYy9jb25maWdzL3Zka19oczM4X3NtcF9kZWZjb25maWctOTktIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XFxuYXJjaC9hcmMvY29uZmlncy92ZGtfaHMzOF9zbXBfZGVmY29uZmlnOjEwMDojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9hc3BlZWRfZzVfZGVmY29uZmlnPTI4MD1DT05GSUdfUFNUT1JFX1BNU0c9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZzoyODE6Q09ORklHX1BTVE9SRV9GVFJBQ0U9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXNwZWVkX2c1X2RlZmNvbmZpZy0yODItQ09ORklHX1BTVE9SRV9SQU09eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9hdDkxX2R0X2RlZmNvbmZpZz0yNDA9Q09ORklHX0RFQlVHX0ZTPXlcXG5hcmNoL2FybS9jb25maWdzL2F0OTFfZHRfZGVmY29uZmlnLTI0MS0jIENPTkZJR19TQ0hFRF9ERUJVRyBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9hdDkxX2R0X2RlZmNvbmZpZzoyNDI6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL2F0OTFfZHRfZGVmY29uZmlnLTI0My1DT05GSUdfREVCVUdfVVNFUj15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTIyOT1DT05GSUdfUkNVX0NQVV9TVEFMTF9USU1FT1VUPTYwXFxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZzoyMzA6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnLTIzMS1DT05GSUdfREVCVUdfVVNFUj15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2NscHM3MTF4X2RlZmNvbmZpZz03Mj1DT05GSUdfTUlOSVhfRlM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvY2xwczcxMXhfZGVmY29uZmlnLTczLSMgQ09ORklHX05FVFdPUktfRklMRVNZU1RFTVMgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvY2xwczcxMXhfZGVmY29uZmlnOjc0OiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9jbHBzNzExeF9kZWZjb25maWctNzUtQ09ORklHX0RFQlVHX1VTRVI9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnPTQ3OT1DT05GSUdfREVCVUdfRlM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvaW14X3Y2X3Y3X2RlZmNvbmZpZy00ODAtIyBDT05GSUdfU0xVQl9ERUJVRyBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9pbXhfdjZfdjdfZGVmY29uZmlnOjQ4MTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9qb3JuYWRhNzIwX2RlZmNvbmZpZz05Mj1DT05GSUdfREVCVUdfS0VSTkVMPXlcXG5hcmNoL2FybS9jb25maWdzL2pvcm5hZGE3MjBfZGVmY29uZmlnOjkzOiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9qb3JuYWRhNzIwX2RlZmNvbmZpZy05NC1DT05GSUdfREVCVUdfTEw9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9scGMzMnh4X2RlZmNvbmZpZz0xODc9Q09ORklHX1BBTklDX1RJTUVPVVQ9NVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9scGMzMnh4X2RlZmNvbmZpZy0xODktIyBDT05GSUdfREVCVUdfUFJFRU1QVCBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9scGMzMnh4X2RlZmNvbmZpZzoxOTA6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL2xwYzMyeHhfZGVmY29uZmlnLTE5MS1DT05GSUdfREVCVUdfTEw9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NHRfZGVmY29uZmlnPTkzPUNPTkZJR19NSU5JWF9GUz15XFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NHRfZGVmY29uZmlnOjk0OiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NHRfZGVmY29uZmlnLTk1LUNPTkZJR19ERUJVR19VU0VSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjVfZGVmY29uZmlnPTI5Mj1DT05GSUdfREVCVUdfRlM9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92NV9kZWZjb25maWctMjk0LSMgQ09ORklHX0RFQlVHX1BSRUVNUFQgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjVfZGVmY29uZmlnOjI5NTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjVfZGVmY29uZmlnLTI5Ni1DT05GSUdfREVCVUdfVVNFUj15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y1X2RlZmNvbmZpZz0xOTE9Q09ORklHX0RFQlVHX0ZTPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXZlYnVfdjVfZGVmY29uZmlnLTE5My0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y1X2RlZmNvbmZpZzoxOTQ6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL212ZWJ1X3Y1X2RlZmNvbmZpZy0xOTUtQ09ORklHX0RFQlVHX1VTRVI9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9vcmlvbjV4X2RlZmNvbmZpZz0xNDM9Q09ORklHX0xBVEVOQ1lUT1A9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb3Jpb241eF9kZWZjb25maWc6MTQ0OiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9vcmlvbjV4X2RlZmNvbmZpZy0xNDUtQ09ORklHX0RFQlVHX1VTRVI9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9weGEzeHhfZGVmY29uZmlnPTEwNj1DT05GSUdfREVCVUdfU1BJTkxPQ0tfU0xFRVA9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhM3h4X2RlZmNvbmZpZzoxMDc6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL3B4YTN4eF9kZWZjb25maWctMTA4LUNPTkZJR19ERUJVR19VU0VSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZz02NjU9Q09ORklHX0ZVTkNUSU9OX1RSQUNFUj15XFxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnOjY2NjpDT05GSUdfRlRSQUNFX1NZU0NBTExTPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvcmVhbHZpZXdfZGVmY29uZmlnPTk3PUNPTkZJR19ERUJVR19GUz15XFxuYXJjaC9hcm0vY29uZmlncy9yZWFsdmlld19kZWZjb25maWctOTgtIyBDT05GSUdfU0NIRURfREVCVUcgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3MvcmVhbHZpZXdfZGVmY29uZmlnOjk5OiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9yZWFsdmlld19kZWZjb25maWctMTAwLUNPTkZJR19ERUJVR19VU0VSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTVfZGVmY29uZmlnPTI1MT1DT05GSUdfREVCVUdfTUVNT1JZX0lOSVQ9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTVfZGVmY29uZmlnLTI1Mi0jIENPTkZJR19TQ0hFRF9ERUJVRyBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9zYW1hNV9kZWZjb25maWc6MjUzOiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9zYW1hNV9kZWZjb25maWctMjU0LUNPTkZJR19ERUJVR19VU0VSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc2FtYTdfZGVmY29uZmlnPTI0OD1DT05GSUdfU1RBQ0tUUkFDRT15XFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWc6MjQ5OiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy9zYW1hN19kZWZjb25maWctMjUwLUNPTkZJR19ERUJVR19VU0VSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnPTIzNT1DT05GSUdfTUFHSUNfU1lTUlE9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnLTIzNi0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZzoyMzc6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3MvdTg1MDBfZGVmY29uZmlnPTE5MD1DT05GSUdfREVCVUdfRlM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvdTg1MDBfZGVmY29uZmlnLTE5MS0jIENPTkZJR19TQ0hFRF9ERUJVRyBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy91ODUwMF9kZWZjb25maWc6MTkyOiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0XFxuYXJjaC9hcm0vY29uZmlncy91ODUwMF9kZWZjb25maWctMTkzLUNPTkZJR19ERUJVR19VU0VSPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvd3BjbTQ1MF9kZWZjb25maWc9MTk2PUNPTkZJR19ERUJVR19GUz15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnLTE5OC0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcXG5hcmNoL2FybS9jb25maWdzL3dwY200NTBfZGVmY29uZmlnOjE5OTojIENPTkZJR19GVFJBQ0UgaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3Mvd3BjbTQ1MF9kZWZjb25maWctMjAwLUNPTkZJR19JT19TVFJJQ1RfREVWTUVNPXlcXG4tLVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTYtXFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vZnRyYWNlLmg6NzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTgtI2RlZmluZSBBUkNIX1NVUFBPUlRTX0ZUUkFDRV9PUFMgMVxcbi0tXFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vZnRyYWNlLmg9MTY9ZXh0ZXJuIHZvaWQgX19nbnVfbWNvdW50X25jKHZvaWQpO1xcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE3LVxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL2Z0cmFjZS5oOjE4OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS9mdHJhY2UuaC0xOS1zdHJ1Y3QgZHluX2FyY2hfZnRyYWNlIHtcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9NYWtlZmlsZT01OT1vYmotJChDT05GSUdfRlVOQ1RJT05fVFJBQ0VSKVxcdCs9IGVudHJ5LWZ0cmFjZS5vXFxuYXJjaC9hcm0va2VybmVsL01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19EWU5BTUlDX0ZUUkFDRSlcXHQrPSBmdHJhY2UubyBpbnNuLm8gcGF0Y2gub1xcbmFyY2gvYXJtL2tlcm5lbC9NYWtlZmlsZS02MS1vYmotJChDT05GSUdfRlVOQ1RJT05fR1JBUEhfVFJBQ0VSKVxcdCs9IGZ0cmFjZS5vIGluc24ubyBwYXRjaC5vXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtNjItXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjYzOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTY0LVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TPTEwND1USFVNQihcXHRub3Aud1xcdFxcdClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNDQtXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjE0NTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNDYtXFx0bGRyX3ZhXFx0cjIsIGZ1bmN0aW9uX3RyYWNlX29wXFx0XFx0QCBwb2ludGVyIHRvIHRoZSBjdXJyZW50XFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM9MTU5PVRIVU1CKFxcdG5vcC53XFx0XFx0KVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTE3MC0jZW5kaWZcXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTcxOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTcyLVxcdEAgY2FsbGVkIGZyb20gX19mdHJhY2VfY2FsbGVyLCBzYXZlZCBpbiBtY291bnRfZW50ZXJcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0yMTA9VU5XSU5EKC5mbnN0YXJ0KVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoyMTE6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0yMTItXFx0cHVzaFxcdHtscn1cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0yMTk9RU5EUFJPQyhfX2dudV9tY291bnRfbmMpXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTIyMC1cXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM6MjIxOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjIyLUVOVFJZKGZ0cmFjZV9jYWxsZXIpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM9MjI2PUVORFBST0MoZnRyYWNlX2NhbGxlcilcXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjI3LVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoyMjg6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1NcXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlMtMjI5LUVOVFJZKGZ0cmFjZV9yZWdzX2NhbGxlcilcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0yNDM9RU5EUFJPQyhmdHJhY2VfZ3JhcGhfY2FsbGVyKVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0yNDQtXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjI0NTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0yNDYtRU5UUlkoZnRyYWNlX2dyYXBoX3JlZ3NfY2FsbGVyKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TPTI4Nj1FTkRQUk9DKGZ0cmFjZV9zdHViX2dyYXBoKVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0yODctXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TOjI4ODojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTI4OS1cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0yOTU9RU5EUFJPQyhcXFxcZHN0XFxcXCgpX2Zyb21faW5pdClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0yOTgtXFx0aW5pdF90cmFtcFxcdGZ0cmFjZV9jYWxsZXJcXG5hcmNoL2FybS9rZXJuZWwvZW50cnktZnRyYWNlLlM6Mjk5OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuYXJjaC9hcm0va2VybmVsL2VudHJ5LWZ0cmFjZS5TLTMwMC1cXHRpbml0X3RyYW1wXFx0ZnRyYWNlX3JlZ3NfY2FsbGVyXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtNDQtXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jOjQ1OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtNDYtXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM9Njk9c3RhdGljIHVuc2lnbmVkIGxvbmcgX19yZWYgYWRqdXN0X2FkZHJlc3Moc3RydWN0IGR5bl9mdHJhY2UgKnJlYyxcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy03MS17XFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jOjcyOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0UpIHx8XFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTczLVxcdCAgICBzeXN0ZW1fc3RhdGUgXFx1MDAzZT0gU1lTVEVNX0ZSRUVJTkdfSU5JVE1FTSB8fFxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTc1LVxcdFxcdHJldHVybiBhZGRyO1xcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYzo3NjpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHUykgfHxcXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtNzctXFx0ICAgIGFkZHIgPT0gKHVuc2lnbmVkIGxvbmcpXFx1MDAyNmZ0cmFjZV9jYWxsZXIpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM9MTIyPWludCBmdHJhY2VfdXBkYXRlX2Z0cmFjZV9mdW5jKGZ0cmFjZV9mdW5jX3QgZnVuYylcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0xMzItXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jOjEzMzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0xMzQtXFx0aWYgKCFyZXQpIHtcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYz0xNDU9aW50IGZ0cmFjZV9tYWtlX2NhbGwoc3RydWN0IGR5bl9mdHJhY2UgKnJlYywgdW5zaWduZWQgbG9uZyBhZGRyKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTE2OC1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6MTY5OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTE3MC1cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYz0xODY9aW50IGZ0cmFjZV9tYWtlX25vcChzdHJ1Y3QgbW9kdWxlICptb2QsXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtMjIyLX1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6MjIzOiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0UgKi9cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtMjI0LVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTIyNz12b2lkIHByZXBhcmVfZnRyYWNlX3JldHVybih1bnNpZ25lZCBsb25nICpwYXJlbnQsIHVuc2lnbmVkIGxvbmcgc2VsZl9hZGRyLFxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTI3My1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6Mjc0OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmMtMjc1LWV4dGVybiB1bnNpZ25lZCBsb25nIGZ0cmFjZV9ncmFwaF9jYWxsO1xcbi0tXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jPTI5ND1zdGF0aWMgaW50IGZ0cmFjZV9tb2RpZnlfZ3JhcGhfY2FsbGVyKGJvb2wgZW5hYmxlKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTMwMS1cXG5hcmNoL2FybS9rZXJuZWwvZnRyYWNlLmM6MzAyOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuYXJjaC9hcm0va2VybmVsL2Z0cmFjZS5jLTMwMy1cXHRpZiAoIXJldClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYz0zMTg9aW50IGZ0cmFjZV9kaXNhYmxlX2Z0cmFjZV9ncmFwaF9jYWxsZXIodm9pZClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0zMjEtfVxcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYzozMjI6I2VuZGlmIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRSAqL1xcbmFyY2gvYXJtL2tlcm5lbC9mdHJhY2UuYy0zMjMtI2VuZGlmIC8qIENPTkZJR19GVU5DVElPTl9HUkFQSF9UUkFDRVIgKi9cXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC9tb2R1bGUtcGx0cy5jPTI0PXN0YXRpYyBjb25zdCB1MzIgZml4ZWRfcGx0c1tdID0ge1xcbmFyY2gvYXJtL2tlcm5lbC9tb2R1bGUtcGx0cy5jOjI1OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2FybS9rZXJuZWwvbW9kdWxlLXBsdHMuYy0yNi1cXHRGVFJBQ0VfQUREUixcXG4tLVxcbmFyY2gvYXJtNjQvTWFrZWZpbGU9MTQxPUNIRUNLRkxBR1NcXHQrPSAtRF9fYWFyY2g2NF9fXFxuYXJjaC9hcm02NC9NYWtlZmlsZS0xNDItXFxuYXJjaC9hcm02NC9NYWtlZmlsZToxNDM6aWZlcSAoJChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QUykseSlcXG5hcmNoL2FybTY0L01ha2VmaWxlLTE0NC0gIEtCVUlMRF9DUFBGTEFHUyArPSAtRENDX1VTSU5HX1BBVENIQUJMRV9GVU5DVElPTl9FTlRSWVxcbmFyY2gvYXJtNjQvTWFrZWZpbGUtMTQ1LSAgQ0NfRkxBR1NfRlRSQUNFIDo9IC1mcGF0Y2hhYmxlLWZ1bmN0aW9uLWVudHJ5PTQsMlxcbmFyY2gvYXJtNjQvTWFrZWZpbGU6MTQ2OmVsc2UgaWZlcSAoJChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTKSx5KVxcbmFyY2gvYXJtNjQvTWFrZWZpbGUtMTQ3LSAgS0JVSUxEX0NQUEZMQUdTICs9IC1EQ0NfVVNJTkdfUEFUQ0hBQkxFX0ZVTkNUSU9OX0VOVFJZXFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTE5NTk9Q09ORklHX0RFQlVHX0ZTPXlcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTk2MS0jIENPTkZJR19ERUJVR19QUkVFTVBUIGlzIG5vdCBzZXRcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE5NjI6IyBDT05GSUdfRlRSQUNFIGlzIG5vdCBzZXRcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTE5NjMtQ09ORklHX0NPUkVTSUdIVD1tXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE0LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg6MTU6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0FSR1NcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE2LSNkZWZpbmUgQVJDSF9TVVBQT1JUU19GVFJBQ0VfT1BTIDFcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg9NTU9dW5zaWduZWQgbG9uZyBhcmNoX2Z0cmFjZV9nZXRfc3ltYWRkcih1bnNpZ25lZCBsb25nIGZlbnRyeV9pcCk7XFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTU3LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg6NTg6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0FSR1NcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTU5LSNkZWZpbmUgSEFWRV9BUkNIX0ZUUkFDRV9SRUdTXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oPTcxPXN0cnVjdCBfX2FyY2hfZnRyYWNlX3JlZ3Mge1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC03NC1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oOjc1OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTc2LVxcdHVuc2lnbmVkIGxvbmcgZGlyZWN0X3RyYW1wO1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaD0xNzI9dm9pZCBmdHJhY2VfZ3JhcGhfZnVuYyh1bnNpZ25lZCBsb25nIGlwLCB1bnNpZ25lZCBsb25nIHBhcmVudF9pcCxcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmgtMTc1LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmg6MTc2OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oLTE3Ny1zdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9mdHJhY2Vfc2V0X2RpcmVjdF9jYWxsZXIoc3RydWN0IGZ0cmFjZV9yZWdzICpmcmVncyxcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vZnRyYWNlLmgtMTg1LX1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Z0cmFjZS5oOjE4NjojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTICovXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9mdHJhY2UuaC0xODctXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21vZHVsZS5oPTE2PXN0cnVjdCBtb2RfYXJjaF9zcGVjaWZpYyB7XFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21vZHVsZS5oLTE5LVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW9kdWxlLmg6MjA6XFx0LyogZm9yIENPTkZJR19EWU5BTUlDX0ZUUkFDRSAqL1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW9kdWxlLmgtMjEtXFx0c3RydWN0IHBsdF9lbnRyeVxcdCpmdHJhY2VfdHJhbXBvbGluZXM7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jPTI3PWludCBtYWluKHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTgyLSAgQkxBTksoKTtcXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jOjgzOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTXFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy04NC0gIERFRklORShGUkVHU19YMCxcXHRcXHRvZmZzZXRvZihzdHJ1Y3QgX19hcmNoX2Z0cmFjZV9yZWdzLCByZWdzWzBdKSk7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTkyLSAgREVGSU5FKEZSRUdTX1BDLFxcdFxcdG9mZnNldG9mKHN0cnVjdCBfX2FyY2hfZnRyYWNlX3JlZ3MsIHBjKSk7XFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYzo5MzojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYy05NC0gIERFRklORShGUkVHU19ESVJFQ1RfVFJBTVAsXFx0b2Zmc2V0b2Yoc3RydWN0IF9fYXJjaF9mdHJhY2VfcmVncywgZGlyZWN0X3RyYW1wKSk7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jLTE4Mi0gIEJMQU5LKCk7XFxuYXJjaC9hcm02NC9rZXJuZWwvYXNtLW9mZnNldHMuYzoxODM6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xcbmFyY2gvYXJtNjQva2VybmVsL2FzbS1vZmZzZXRzLmMtMTg0LSAgREVGSU5FKEZUUkFDRV9PUFNfRElSRUNUX0NBTEwsXFx0b2Zmc2V0b2Yoc3RydWN0IGZ0cmFjZV9vcHMsIGRpcmVjdF9jYWxsKSk7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoxNjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTE3LS8qXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0zNj1TWU1fQ09ERV9TVEFSVChmdHJhY2VfY2FsbGVyKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMzgtXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6Mzk6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0NBTExfT1BTXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtNDAtXFx0LypcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTUzLVxcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TOjU0OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy01NS1cXHQvKlxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtNzYtXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6Nzc6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTc4LVxcdHN0clxcdHh6ciwgW3NwLCAjRlJFR1NfRElSRUNUX1RSQU1QXVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMTAxLVxcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TOjEwMjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQ0FMTF9PUFNcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xMDMtXFx0bW92XFx0eDIsIHgxMVxcdFxcdFxcdFxcdFxcdC8vIG9wXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0xMTA9U1lNX0lOTkVSX0xBQkVMKGZ0cmFjZV9jYWxsLCBTWU1fTF9HTE9CQUwpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xMjgtXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTI5OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xMzAtXFx0bGRyXFx0eDE3LCBbc3AsICNGUkVHU19ESVJFQ1RfVFJBTVBdXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNDItXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTQzOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNDQtU1lNX0lOTkVSX0xBQkVMKGZ0cmFjZV9jYWxsZXJfZGlyZWN0X2xhdGUsIFNZTV9MX0xPQ0FMKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM9MTYxPVNZTV9JTk5FUl9MQUJFTChmdHJhY2VfY2FsbGVyX2RpcmVjdCwgU1lNX0xfTE9DQUwpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNjgtXFx0YnJcXHR4MTdcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUzoxNjk6I2VuZGlmIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMUyAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2VudHJ5LWZ0cmFjZS5TLTE3MC1TWU1fQ09ERV9FTkQoZnRyYWNlX2NhbGxlcilcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNzEtXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTcyOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xNzMtU1lNX0NPREVfU1RBUlQoZnRyYWNlX3N0dWJfZGlyZWN0X3RyYW1wKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM9MTc4PVNZTV9DT0RFX0VORChmdHJhY2Vfc3R1Yl9kaXJlY3RfdHJhbXApXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTc5OiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFMgKi9cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xODAtXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MTgxOiNlbHNlIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0FSR1MgKi9cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUy0xODItXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9lbnRyeS1mdHJhY2UuUz0zMTI9U1lNX0ZVTkNfRU5EKGZ0cmFjZV9ncmFwaF9jYWxsZXIpXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMzEzLSNlbmRpZiAvKiBDT05GSUdfRlVOQ1RJT05fR1JBUEhfVFJBQ0VSICovXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlM6MzE0OiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTICovXFxuYXJjaC9hcm02NC9rZXJuZWwvZW50cnktZnRyYWNlLlMtMzE1LVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMTktXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6MjA6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0FSR1NcXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy0yMS1zdHJ1Y3QgZnJlZ3Nfb2Zmc2V0IHtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTYzPXVuc2lnbmVkIGxvbmcgZnRyYWNlX2NhbGxfYWRqdXN0KHVuc2lnbmVkIGxvbmcgYWRkcilcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTY4LVxcdCAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjY5OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTKSlcXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy03MC1cXHRcXHRyZXR1cm4gYWRkcjtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTkwLVxcdCAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjkxOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QUykpXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtOTItXFx0XFx0cmV0dXJuIGFkZHIgKyBBQVJDSDY0X0lOU05fU0laRTtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTE0Nz11bnNpZ25lZCBsb25nIGFyY2hfZnRyYWNlX2dldF9zeW1hZGRyKHVuc2lnbmVkIGxvbmcgZmVudHJ5X2lwKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMTY4LVxcdCAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjE2OTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQ0FMTF9PUFMpKVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTE3MC1cXHRcXHRyZXR1cm4gZmVudHJ5X2lwIC0gQUFSQ0g2NF9JTlNOX1NJWkU7XFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYz0yNDI9aW50IGZ0cmFjZV91cGRhdGVfZnRyYWNlX2Z1bmMoZnRyYWNlX2Z1bmNfdCBmdW5jKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMjUwLVxcdCAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjI1MTpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QUykpXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMjUyLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM9Mjk1PXN0YXRpYyBib29sIGZ0cmFjZV9maW5kX2NhbGxhYmxlX2FkZHIoc3RydWN0IGR5bl9mdHJhY2UgKnJlYyxcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTM1MS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYzozNTI6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0NBTExfT1BTXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtMzUzLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnRyYWNlX29wcyAqYXJtNjRfcmVjX2dldF9vcHMoc3RydWN0IGR5bl9mdHJhY2UgKnJlYylcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTM5Mz1pbnQgZnRyYWNlX21ha2VfY2FsbChzdHJ1Y3QgZHluX2Z0cmFjZSAqcmVjLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy00MTEtXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6NDEyOiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9DQUxMX09QU1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTQxMy1pbnQgZnRyYWNlX21vZGlmeV9jYWxsKHN0cnVjdCBkeW5fZnRyYWNlICpyZWMsIHVuc2lnbmVkIGxvbmcgb2xkX2FkZHIsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy00MzYtXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6NDM3OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNDM4LS8qXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYz00ODE9aW50IGZ0cmFjZV9tYWtlX25vcChzdHJ1Y3QgbW9kdWxlICptb2QsIHN0cnVjdCBkeW5fZnRyYWNlICpyZWMsXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy01MDItXFx0ICovXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM6NTAzOlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9BUkdTKSBcXHUwMDI2XFx1MDAyNiBtb2QpXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNTA0LVxcdFxcdHJldHVybiBhYXJjaDY0X2luc25fcGF0Y2hfdGV4dF9ub3N5bmMoKHZvaWQgKilwYywgbmV3KTtcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jPTUyNz12b2lkIHByZXBhcmVfZnRyYWNlX3JldHVybih1bnNpZ25lZCBsb25nIHNlbGZfYWRkciwgdW5zaWduZWQgbG9uZyAqcGFyZW50LFxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmMtNTQ4LVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjU0OTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTU1MC12b2lkIGZ0cmFjZV9ncmFwaF9mdW5jKHVuc2lnbmVkIGxvbmcgaXAsIHVuc2lnbmVkIGxvbmcgcGFyZW50X2lwLFxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZnRyYWNlLmM9NTk0PWludCBmdHJhY2VfZGlzYWJsZV9mdHJhY2VfZ3JhcGhfY2FsbGVyKHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC9mdHJhY2UuYy01OTctfVxcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jOjU5ODojZW5kaWYgLyogQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfQVJHUyAqL1xcbmFyY2gvYXJtNjQva2VybmVsL2Z0cmFjZS5jLTU5OS0jZW5kaWYgLyogQ09ORklHX0ZVTkNUSU9OX0dSQVBIX1RSQUNFUiAqL1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmM9NDUyPXN0YXRpYyBpbnQgbW9kdWxlX2luaXRfZnRyYWNlX3BsdChjb25zdCBFbGZfRWhkciAqaGRyLFxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmMtNDU1LXtcXG5hcmNoL2FybTY0L2tlcm5lbC9tb2R1bGUuYzo0NTY6I2lmIGRlZmluZWQoQ09ORklHX0RZTkFNSUNfRlRSQUNFKVxcbmFyY2gvYXJtNjQva2VybmVsL21vZHVsZS5jLTQ1Ny1cXHRjb25zdCBFbGZfU2hkciAqcztcXG4tLVxcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUz05Mj1FTkQoZnRyYWNlX3N0dWIpXFxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TLTkzLVxcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUzo5NDojaWZuZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRVxcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy05NS1FTlRSWShfbWNvdW50KVxcbi0tXFxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TPTEzMj1FTkQoX21jb3VudClcXG5hcmNoL2Nza3kvYWJpdjIvbWNvdW50LlM6MTMzOiNlbHNlIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRSAqL1xcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy0xMzQtRU5UUlkoX21jb3VudClcXG4tLVxcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUz0xNjE9RU5EUFJPQyhmdHJhY2VfY2FsbGVyKVxcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUzoxNjI6I2VuZGlmIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRSAqL1xcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy0xNjMtXFxuLS1cXG5hcmNoL2Nza3kvYWJpdjIvbWNvdW50LlM9MTgyPUVORChyZXR1cm5fdG9faGFuZGxlcilcXG4tLVxcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy0xODQtXFxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TOjE4NTojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xcbmFyY2gvY3NreS9hYml2Mi9tY291bnQuUy0xODYtRU5UUlkoZnRyYWNlX3JlZ3NfY2FsbGVyKVxcbi0tXFxuYXJjaC9jc2t5L2FiaXYyL21jb3VudC5TPTIxMD1FTkRQUk9DKGZ0cmFjZV9yZWdzX2NhbGxlcilcXG5hcmNoL2Nza3kvYWJpdjIvbWNvdW50LlM6MjExOiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0UgKi9cXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmMtOC1cXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jOjk6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRVxcbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmMtMTAtXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jPTEyNz1pbnQgZnRyYWNlX3VwZGF0ZV9mdHJhY2VfZnVuYyhmdHJhY2VfZnVuY190IGZ1bmMpXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jLTEzNS19XFxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYzoxMzY6I2VuZGlmIC8qIENPTkZJR19EWU5BTUlDX0ZUUkFDRSAqL1xcbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmMtMTM3LVxcbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmM6MTM4OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xMzktaW50IGZ0cmFjZV9tb2RpZnlfY2FsbChzdHJ1Y3QgZHluX2Z0cmFjZSAqcmVjLCB1bnNpZ25lZCBsb25nIG9sZF9hZGRyLFxcbi0tXFxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYz0xNDc9dm9pZCBwcmVwYXJlX2Z0cmFjZV9yZXR1cm4odW5zaWduZWQgbG9uZyAqcGFyZW50LCB1bnNpZ25lZCBsb25nIHNlbGZfYWRkcixcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmMtMTg1LVxcbmFyY2gvY3NreS9rZXJuZWwvZnRyYWNlLmM6MTg2OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jLTE4Ny1pbnQgZnRyYWNlX2VuYWJsZV9mdHJhY2VfZ3JhcGhfY2FsbGVyKHZvaWQpXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL2Z0cmFjZS5jPTE5Mz1pbnQgZnRyYWNlX2Rpc2FibGVfZnRyYWNlX2dyYXBoX2NhbGxlcih2b2lkKVxcbi0tXFxuYXJjaC9jc2t5L2tlcm5lbC9mdHJhY2UuYy0xOTctfVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjo1MC4xMDM1MjQyOTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAxODI2MjQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIFRyYW1wb2xpbmUgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgaGVyZS4gSSBzZWUgd2UncmUgZGVhbGluZyB3aXRoIGBDT05GSUdfQlBGX1NZU0NBTExgLCBgQ09ORklHX0ZUUkFDRWAsIGFuZCBgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYC4gVGhhdCBsYXN0IG9uZSwgZW5hYmxpbmcgZGlyZWN0IGNhbGxzIGZvciB0cmFtcG9saW5lcywgY2F0Y2hlcyBteSBleWUuIEhvbGQgb24sIGBicGZfdHJhbXBvbGluZV91cGRhdGVgIHNlZW1zIHRvIHNwZWNpZmljYWxseSB1c2UgKmJvdGgqIGBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgIGFuZCBgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfSk1QYC4gSG1tLCB0aGF0IHNlZW1zIG9kZC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gd2hhdCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgIHJlYWxseSBkb2VzLiBJIHNob3VsZCBjaGVjayBlaXRoZXIgYGtlcm5lbC9icGYvS2NvbmZpZ2Agb3IgYGtlcm5lbC90cmFjZS9LY29uZmlnYCB0byBiZSBjZXJ0YWluLiBXYWl0LCBsZXQncyBzdGVwIGJhY2sgYSBtb21lbnQgYW5kIHJlY29uc2lkZXIuIE1heWJlIGBCUEZfU1lTQ0FMTGAgYW5kIGBGVU5DVElPTl9UUkFDRVJgIGFsb25lIGFyZSBzdWZmaWNpZW50IGZvciBub3cuIEknbSBvdmVydGhpbmtpbmcgdGhpcy5cblxuQWgsIGJ1dCB0aGVyZSdzIG1vcmUgdG8gaXQuIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItXHUwMDNlZmxhZ3MpYCBpcyBlbXBsb3llZCBpbiBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYC4gVGhhdCdzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY3kuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29udHJvbHMgdGhlIHVzZSBvZiBgYnBmX3RyYW1wb2xpbmVfdXNlX2ptcGAuIFNvIG5vdyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGRlZmluaXRpb24gb2YgYGJwZl90cmFtcG9saW5lX3VzZV9qbXBgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDUwOSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjo1NS4xMjE3ODk0NTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzM2ODc5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3RyYW1wb2xpbmVfdXNlX2ptcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9Mjk5Nj1zdGF0aWMgdm9pZCBzYXZlX2FyZ3MoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1OCAqKnByb2csXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMjk5OS1cXHRpbnQgYXJnX3JlZ3MsIGZpcnN0X29mZiA9IDAsIG5yX3JlZ3MgPSAwLCBucl9zdGFja19zbG90cyA9IDA7XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjMwMDA6XFx0Ym9vbCB1c2Vfam1wID0gYnBmX3RyYW1wb2xpbmVfdXNlX2ptcChmbGFncyk7XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTMwMDEtXFx0aW50IGksIGo7XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MzM0Nj1zdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICpyd19pbWFnZSxcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNDQ3LVxcdFxcdCAqL1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNDQ4OlxcdFxcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKGZsYWdzKSkge1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNDQ5LVxcdFxcdFxcdC8qIG5vIHJpcCBpbiB0aGUgXFxcImptcFxcXCIgY2FzZSAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0xMzMzPWJwZl90cmFtcG9saW5lX2V4aXRfdCBicGZfdHJhbXBvbGluZV9leGl0KGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEzMzUtI2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0pNUFxcbmluY2x1ZGUvbGludXgvYnBmLmg6MTMzNjpzdGF0aWMgaW5saW5lIGJvb2wgYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh1NjQgZmxhZ3MpXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMzM3LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTM0MC0jZWxzZVxcbmluY2x1ZGUvbGludXgvYnBmLmg6MTM0MTpzdGF0aWMgaW5saW5lIGJvb2wgYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh1NjQgZmxhZ3MpXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMzQyLXtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTIzNz1zdGF0aWMgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoX2Zyb21faXAoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdm9pZCAqcHRyKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMjQ3LVxcdFxcdHJldHVybiBOVUxMO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjI0ODpcXHRpZiAoYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh0ci1cXHUwMDNlZmxhZ3MpKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTI0OS1cXHRcXHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0zMTc9c3RhdGljIGludCBkaXJlY3Rfb3BzX2FkZChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB2b2lkICpwdHIpXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0zMjItXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MzIzOlxcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVxcdTAwM2VmbGFncykpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMzI0LVxcdFxcdGFkZHIgPSBmdHJhY2Vfam1wX3NldChhZGRyKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTMzNz1zdGF0aWMgaW50IGRpcmVjdF9vcHNfbW9kKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHZvaWQgKnB0ciwgYm9vbCBsb2NrX2RpcmVjdF9tdXRleClcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTM0MS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzozNDI6XFx0aWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItXFx1MDAzZWZsYWdzKSlcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0zNDMtXFx0XFx0YWRkciA9IGZ0cmFjZV9qbXBfc2V0KGFkZHIpO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9NDExPXN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlX2ZlbnRyeShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgb3JpZ19mbGFncyxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTQxOC1cXHRcXHRuZXdfdCA9IEJQRl9NT0RfTk9QO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjQxOTpcXHRlbHNlIGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVxcdTAwM2VmbGFncykpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDIwLVxcdFxcdG5ld190ID0gQlBGX01PRF9KVU1QO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDIzLVxcdFxcdG9sZF90ID0gQlBGX01PRF9OT1A7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NDI0OlxcdGVsc2UgaWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAob3JpZ19mbGFncykpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNDI1LVxcdFxcdG9sZF90ID0gQlBGX01PRF9KVU1QO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTUzMD1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcHRyKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTUzNS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTM2OlxcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVxcdTAwM2VmbGFncykpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTUzNy1cXHRcXHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTQ1PXN0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHZvaWQgKnB0cilcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NTAtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU1MTpcXHRpZiAoYnBmX3RyYW1wb2xpbmVfdXNlX2ptcCh0ci1cXHUwMDNlZmxhZ3MpKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NTItXFx0XFx0YWRkciA9IGZ0cmFjZV9qbXBfc2V0KGFkZHIpO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTU1OT1zdGF0aWMgaW50IG1vZGlmeV9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU2NS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTY2OlxcdGlmIChicGZfdHJhbXBvbGluZV91c2Vfam1wKHRyLVxcdTAwM2VmbGFncykpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU2Ny1cXHRcXHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIyOjU2Ljc1NTQ4MzY3MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTMwMjA3Nzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgRHluYW1pYyBUcmFjaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2Uga2VybmVsIGNvbmZpZ3VyYXRpb25zOiBgQlBGX1NZU0NBTExgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVBgLCBhbmQganVzdCBwbGFpbiBvbGQgYEZUUkFDRWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyB6ZXJvIGluIG9uIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGF0IHRoaXMgKmlzKiBhY3R1YWxseSBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdpdGhpbiB0aGlzIHNwZWNpZmljIGtlcm5lbCBidWlsZCBlbnZpcm9ubWVudC4gSXQncyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgY2FwYWJpbGl0aWVzIGZvciBkeW5hbWljIHRyYWNpbmcgYW5kIGhvdyB0byBiZXN0IGFwcHJvYWNoIHRoZSBpbnN0cnVtZW50YXRpb24gc3RyYXRlZ3kuIE5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgaXTigJlzIGRlZmluZWQgYW5kIHN1cHBvcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI1MzAsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMjo1OS42ODU2OTM5MTlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjcwODU5MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTMyND1jb25maWcgRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0zMjgtXFxua2VybmVsL3RyYWNlL0tjb25maWc6MzI5OmNvbmZpZyBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTMzMC1cXHRkZWZfYm9vbCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIzOjAxLjU1Mjc4NjE0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc5NTQ0MTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgYXMgaWYgSSdtIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBGdHJhY2UgTGFuZHNjYXBlKipcblxuWWVzLCB0aGF0J3MgZXhhY3RseSByaWdodC4gVGhlIHNpdHVhdGlvbiBpcyBhcyBJIGV4cGVjdGVkIGl0IHRvIGJlLlxuXG5Ob3csIGxldCdzIHNlZS4uLiBhbmQgd2hhdCBhYm91dCB0aGUgYERZTkFNSUNfRlRSQUNFX1dJVEhfSk1QYCBvcHRpb24gaW4gcmVsYXRpb24gdG8gdGhpcz8gVGhhdCdzIHRoZSBuZXh0IGtleSBmYWN0b3IgdG8gYXNzZXNzLiBHb3R0YSBrZWVwIHRoYXQgaW4gbWluZCwgaXRzIGltcGxpY2F0aW9ucyBhcmUgc2lnbmlmaWNhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODU2LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6MDQuNDMyMzMyMDE2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk0NzM0NDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEWU5BTUlDX0ZUUkFDRV9XSVRIX0pNUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvS2NvbmZpZz0zMzg9Y29uZmlnIERZTkFNSUNfRlRSQUNFX1dJVEhfQVJHU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctMzQyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjM0Mzpjb25maWcgRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVBcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0zNDQtXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMzowNi4xMjcwNzE3MzFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA1Mjg2MjY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKktlcm5lbCBUcmFjaW5nIENvbmZpZ3VyYXRpb24gLSBBIFF1aWNrIENoZWNrKipcblxuUmlnaHQsICp5ZXMqLiBUaW1lIHRvIHNvbGlkaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlc2UgdHJhY2luZyBjb25maWd1cmF0aW9ucy4gYEJQRl9TWVNDQUxMYCwgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYCwgYERZTkFNSUNfRlRSQUNFX1dJVEhfSk1QYCwgdGhvc2UgYWxsIHNlZW0gbGlrZSBzdHJvbmcgY2FuZGlkYXRlcyBmb3IgYSByb2J1c3QgdHJhY2luZyBzZXR1cC4gQnV0IGhhbmcgb24gYSBzZWNvbmQuLi4gYEZUUkFDRWAgaXNuJ3QgYSAqY29uZmlnKiBpdHNlbGYsIGlzIGl0PyBJdOKAmXMgbW9yZSBvZiBhIGdlbmVyYWwgdGVybSBlbmNvbXBhc3NpbmcgZmVhdHVyZXMgbGlrZSBgRlVOQ1RJT05fVFJBQ0VSYCBvciBgRFlOQU1JQ19GVFJBQ0VgLiBJIG5lZWQgdG8gYmUgcHJlY2lzZSBoZXJlLlxuXG5UbyBjb25maXJtIGFuZCBwaW5wb2ludCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIEkgc2hvdWxkIGltbWVkaWF0ZWx5IGNvbnN1bHQgYGtlcm5lbC90cmFjZS9LY29uZmlnYC4gVGhhdCdzIHRoZSBkZWZpbml0aXZlIHNvdXJjZS4gSSdsbCBoZWFkIG92ZXIgdGhlcmUgdG8gdmVyaWZ5IHdoYXQncyB3aGF0IGFuZCBlbnN1cmUgSSdtIHVzaW5nIHRoZSBjb3JyZWN0IHRlcm1pbm9sb2d5IHdoZW4gZGlzY3Vzc2luZyBGdHJhY2UncyBidWlsZGluZyBibG9ja3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDg5LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6MTAuMTc5OTQxNTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzE5NjQyNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZUUkFDRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvS2NvbmZpZz0xOTg9Y29uZmlnIFRSQUNJTkdfU1VQUE9SVFxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctMjAzLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjIwNDptZW51Y29uZmlnIEZUUkFDRVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTIwNS1cXHRib29sIFxcXCJUcmFjZXJzXFxcIlxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWc9NTg4PWNvbmZpZyBFTkFCTEVfREVGQVVMVF9UUkFDRVJTXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy01OTYtXFxua2VybmVsL3RyYWNlL0tjb25maWc6NTk3OmNvbmZpZyBGVFJBQ0VfU1lTQ0FMTFNcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy01OTgtXFx0Ym9vbCBcXFwiVHJhY2Ugc3lzY2FsbHNcXFwiXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz04Njg9Y29uZmlnIEJQRl9LUFJPQkVfT1ZFUlJJREVcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg3Ni1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4Nzc6Y29uZmlnIEZUUkFDRV9NQ09VTlRfVVNFX1BBVENIQUJMRV9GVU5DVElPTl9FTlRSWVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg3OC1cXHRib29sXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04ODAtXFxua2VybmVsL3RyYWNlL0tjb25maWc6ODgxOmNvbmZpZyBGVFJBQ0VfTUNPVU5UX1VTRV9DQ1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg4Mi1cXHRkZWZfYm9vbCB5XFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04ODYtXFxua2VybmVsL3RyYWNlL0tjb25maWc6ODg3OmNvbmZpZyBGVFJBQ0VfTUNPVU5UX1VTRV9PQkpUT09MXFxua2VybmVsL3RyYWNlL0tjb25maWctODg4LVxcdGRlZl9ib29sIHlcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg5NC1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4OTU6Y29uZmlnIEZUUkFDRV9NQ09VTlRfVVNFX1JFQ09SRE1DT1VOVFxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg5Ni1cXHRkZWZfYm9vbCB5XFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz0xMDIxPWNvbmZpZyBUUkFDRV9FVkFMX01BUF9GSUxFXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMDQ4LVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjEwNDk6Y29uZmlnIEZUUkFDRV9SRUNPUkRfUkVDVVJTSU9OXFxua2VybmVsL3RyYWNlL0tjb25maWctMTA1MC1cXHRib29sIFxcXCJSZWNvcmQgZnVuY3Rpb25zIHRoYXQgcmVjdXJzZSBpbiBmdW5jdGlvbiB0cmFjaW5nXFxcIlxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctMTA2Mi1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoxMDYzOmNvbmZpZyBGVFJBQ0VfUkVDT1JEX1JFQ1VSU0lPTl9TSVpFXFxua2VybmVsL3RyYWNlL0tjb25maWctMTA2NC1cXHRpbnQgXFxcIk1heCBudW1iZXIgb2YgcmVjdXJzZWQgZnVuY3Rpb25zIHRvIHJlY29yZFxcXCJcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTEwNzMtXFxua2VybmVsL3RyYWNlL0tjb25maWc6MTA3NDpjb25maWcgRlRSQUNFX1ZBTElEQVRFX1JDVV9JU19XQVRDSElOR1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTEwNzUtXFx0Ym9vbCBcXFwiVmFsaWRhdGUgUkNVIGlzIG9uIGR1cmluZyBmdHJhY2UgZXhlY3V0aW9uXFxcIlxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWc9MTEwMT1jb25maWcgR0NPVl9QUk9GSUxFX0ZUUkFDRVxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctMTExMi1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoxMTEzOmNvbmZpZyBGVFJBQ0VfU0VMRlRFU1RcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMTE0LVxcdGJvb2xcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMTE1LVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjExMTY6Y29uZmlnIEZUUkFDRV9TVEFSVFVQX1RFU1RcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMTE3LVxcdGJvb2wgXFxcIlBlcmZvcm0gYSBzdGFydHVwIHRlc3Qgb24gZnRyYWNlXFxcIlxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWc9MTEzNj1jb25maWcgRVZFTlRfVFJBQ0VfVEVTVF9TWVNDQUxMU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctMTE0Ny1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoxMTQ4OmNvbmZpZyBGVFJBQ0VfU09SVF9TVEFSVFVQX1RFU1RcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy0xMTQ5LSAgICAgICBib29sIFxcXCJWZXJpZnkgY29tcGlsZSB0aW1lIHNvcnRpbmcgb2YgZnRyYWNlIGZ1bmN0aW9uc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6MTEuODUxOTEzMzk3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NzE5NTgwNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIFRyYWNpbmcgQ29uZmlndXJhdGlvbiBFeHBsb3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgYmFjayBpbnRvIHRoaXMga2VybmVsIHRyYWNpbmcgc2V0dXAuIFJpZ2h0LCBmaXJzdCB0aGluZ3MgZmlyc3Q6IGBGVFJBQ0VgIGlzIGp1c3QgdGhlIHRvcC1sZXZlbCBtZW51Y29uZmlnLCBidXQgdGhlIHJlYWwgcGxheWVycyBJIG5lZWQgdG8gZm9jdXMgb24gYXJlIGBGVU5DVElPTl9UUkFDRVJgIGFuZCBgRFlOQU1JQ19GVFJBQ0VgLiBUaG9zZSBhcmUgdGhlIGFjdHVhbCBlbmFibGluZyBjb25maWd1cmF0aW9ucy4gQW5kLCBvZiBjb3Vyc2UsIGBCUEZfU1lTQ0FMTGAg4oCTIHRoYXQncyB0aGUgYmlnIG9uZS5cblxuTm93LCB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGhlcmU/IExldCdzIHNlZS4uLiBJJ20gdGhpbmtpbmcgSSBzaG91bGQgcmVhbGx5IHplcm8gaW4gb24gYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGFuZCBgbW9kaWZ5X2ZlbnRyeV9tdWx0aWAuIFRob3NlIHNlZW0gbGlrZSB0aGUgY29yZSBvcGVyYXRpb25zIGZvciBtYW5hZ2luZyB0aGVzZSBgZmVudHJ5YCB0cmFjaW5nIGluc3RhbmNlcy4gQWxzbywgSSBzaG91bGQgY2hlY2sgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAgYW5kIGBicGZfdHJhbXBvbGluZV91cGRhdGVfZmVudHJ5YCBhcyB0aGV5IGFyZSByZWxhdGVkLlxuXG5PbiB0aGUgbGliYnBmIHNpZGUsIGBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNpbmdfbXVsdGlgIGlzIGxpa2VseSBpbnZvbHZlZCwgYnV0IHRoZSBrZXJuZWwtc2lkZSBlcXVpdmFsZW50Li4uIGxldCdzIHNlZSwgaXQncyBwcm9iYWJseSBzb21ldGhpbmcgbGlrZSBgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2hgIG9yIGEgc2ltaWxhciBmdW5jdGlvbiwgaGFuZGxpbmcgdGhlIGFjdHVhbCBhdHRhY2guXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBzb3VyY2UuIEknbSBnb2luZyB0byBqdW1wIGludG8gYGtlcm5lbC9icGYvc3lzY2FsbC5jYCBhbmQgc3BlY2lmaWNhbGx5IGxvb2sgZm9yIGhvdyB0aGUgYGZlbnRyeS5tdWx0aWAgYXR0YWNobWVudHMgYXJlIGhhbmRsZWQuIEkgYmV0IHRoZSBwbHVtYmluZyBpcyBhbGwgaW4gdGhlcmUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQyMzAsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6MTcuODIzODczNDc2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjkyMzQxMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFjaW5nX3Byb2dfYXR0YWNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvc3lzY2FsbC5jPTM2MDM9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfbGlua19vcHMgYnBmX3RyYWNpbmdfbGlua19sb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzYwOS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozNjEwOnN0YXRpYyBpbnQgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM2MTEtXFx0XFx0XFx0XFx0ICAgaW50IHRndF9wcm9nX2ZkLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9NDI3Mz1zdGF0aWMgaW50IGJwZl9yYXdfdHBfbGlua19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNDI5Ny1cXHRcXHR9XFxua2VybmVsL2JwZi9zeXNjYWxsLmM6NDI5ODpcXHRcXHRyZXR1cm4gYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2gocHJvZywgMCwgMCwgMCwgYXR0YWNoX3R5cGUpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQyOTktXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1JBV19UUkFDRVBPSU5UOlxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTc2NT1zdGF0aWMgaW50IGxpbmtfY3JlYXRlKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU3OTUtXFx0Y2FzZSBCUEZfUFJPR19UWVBFX0VYVDpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1Nzk2OlxcdFxcdHJldCA9IGJwZl90cmFjaW5nX3Byb2dfYXR0YWNoKHByb2csXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTc5Ny1cXHRcXHRcXHRcXHRcXHQgICAgICBhdHRyLVxcdTAwM2VsaW5rX2NyZWF0ZS50YXJnZXRfZmQsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE3LVxcdFxcdGVsc2VcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1ODE4OlxcdFxcdFxcdHJldCA9IGJwZl90cmFjaW5nX3Byb2dfYXR0YWNoKHByb2csXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTgxOS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBhdHRyLVxcdTAwM2VsaW5rX2NyZWF0ZS50YXJnZXRfZmQsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yZWN1cnNpdmVfYXR0YWNoLmM9OTk9dm9pZCB0ZXN0X3JlY3Vyc2l2ZV9mZW50cnkodm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3JlY3Vyc2l2ZV9hdHRhY2guYy0xMTAtICogXFxcInByb2ctXFx1MDAzZWF1eC1cXHUwMDNlZHN0X3RyYW1wb2xpbmUgYW5kIHRndF9wcm9nIGlzIE5VTExcXFwiIGJyYW5jaCBpblxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3JlY3Vyc2l2ZV9hdHRhY2guYzoxMTE6ICogYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2gpIGRvZXMgbm90IGxlYWQgdG8gYSBjcmFzaCBkdWUgdG8gbWlzc2luZyBhdHRhY2hfYnRmXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvcmVjdXJzaXZlX2F0dGFjaC5jLTExMi0gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6MTkuNTE2MjIwMjUxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NDE4NjM1NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBzaXR1YXRpb24gbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgYSBCUEYgVHJhY2Vwb2ludCBMaW5rKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gU29tZXRoaW5nJ3MgbmFnZ2luZyBhdCBtZSBhYm91dCB0aGlzIGBmZW50cnkubXVsdGlgIHRyYWNlcG9pbnQgSSdtIGxvb2tpbmcgYXQuIEknbSBwcmV0dHkgc3VyZSB0aGF0IGl0J3MgYmVpbmcgaG9va2VkIHVwIHVzaW5nIGBicGZfbGlua19jcmVhdGVgLCBwcm9iYWJseSB3aXRoIHNvbWV0aGluZyBsaWtlIGBCUEZfVFJBQ0VfRkVOVFJZX01VTFRJYCBvciBhIHNpbWlsYXIgZmxhZyBmb3IgbXVsdGlwbGUgZnVuY3Rpb24gZW50cnkgcG9pbnRzLiBSaWdodD9cblxuTGV0J3MgY29uZmlybSB0aGF0IGh5cG90aGVzaXMuIFRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIGF1dGhvcml0YXRpdmUgZGVmaW5pdGlvbiBhbmQgaGFuZGxpbmcgb2YgdGhpcyBpcyBnb2luZyB0byBiZSBpbiB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AuIEkgbmVlZCB0byB0cmFjayBkb3duIGhvdyBgbXVsdGlgIGlzIGhhbmRsZWQgaW4gcmVsYXRpb24gdG8gYGJwZl9saW5rX2NyZWF0ZWAgaW4gdGhhdCBmaWxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBkZWZpbml0aXZlIGFuc3dlciBvbiBob3cgdGhpcyB0cmFjZXBvaW50IGlzIGVzdGFibGlzaGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTMzOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIzOjI0LjI1ODA4NjM2N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3NjMzNTg4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03ODk9aW50IGJwZl91cHJvYmVfbXVsdGlfbGlua19hdHRhY2goY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo3OTA6aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKTtcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc5MS0jZWxzZVxcbi0tXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD04NDg9c3RhdGljIGlubGluZSBpbnRcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjg0OTpicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTg1MC17XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NzY1PXN0YXRpYyBpbnQgbGlua19jcmVhdGUodW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTgxNS1cXHRcXHRlbHNlIGlmIChpc190cmFjaW5nX211bHRpKHByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKSlcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1ODE2OlxcdFxcdFxcdHJldCA9IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChwcm9nLCBhdHRyKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE3LVxcdFxcdGVsc2VcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0zODE5PXN0YXRpYyBpbnQgY2hlY2tfZHVwX2lkcyh1MzIgKmlkcywgdTY0ICpjb29raWVzLCB1MzIgY250KVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM4MzktXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM4NDA6aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zODQxLXtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTI5LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozOTMwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkzMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIzOjI1LjkzNDQyNjg3M1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg0MzI3NTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW5pdGlhbCBFeHBsb3JhdGlvbiBvZiBCUEYgTXVsdGktQXR0YWNobWVudCoqXG5cblJpZ2h0LCBzbyBJJ20gc3RhcnRpbmcgYXQgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhpcyBtdWx0aS1hdHRhY2htZW50IGJ1c2luZXNzLiBUaGUga2V5IHNlZW1zIHRvIGJlIGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGxvb2sgYXQgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAgYW5kIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgIGFzIHBvdGVudGlhbCBjb250cmlidXRpbmcgZnVuY3Rpb25zLiBUaGUgZmlyc3Qgb25lIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpcyBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYCwgYW5kIEkga25vdyBmcm9tIHBhc3QgZXhwZXJpZW5jZSBpdCBzaG91bGQgYmUgaW4gYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AuIFRpbWUgdG8gZGlnIGluIHRoZXJlIGFuZCBzZWUgaG93IHRoaXMgYWxsIGNvbm5lY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjExOCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIzOjI4LjgxODc1NjUzNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwMDY3NTU5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD03ODk9aW50IGJwZl91cHJvYmVfbXVsdGlfbGlua19hdHRhY2goY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo3OTA6aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKTtcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc5MS0jZWxzZVxcbi0tXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaD04NDg9c3RhdGljIGlubGluZSBpbnRcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjg0OTpicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTg1MC17XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NzY1PXN0YXRpYyBpbnQgbGlua19jcmVhdGUodW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTgxNS1cXHRcXHRlbHNlIGlmIChpc190cmFjaW5nX211bHRpKHByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKSlcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1ODE2OlxcdFxcdFxcdHJldCA9IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChwcm9nLCBhdHRyKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE3LVxcdFxcdGVsc2VcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0zODE5PXN0YXRpYyBpbnQgY2hlY2tfZHVwX2lkcyh1MzIgKmlkcywgdTY0ICpjb29raWVzLCB1MzIgY250KVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM4MzktXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM4NDA6aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zODQxLXtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTI5LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozOTMwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkzMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIzOjMwLjQxOTQzOTAyNVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDYwNjQ1NzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBGdW5jdGlvbiBFbnRyeSBQb2ludCBNYW5hZ2VtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGtleSBmdW5jdGlvbnMgaGVyZTogYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGBtb2RpZnlfZmVudHJ5X211bHRpYCwgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAsIGFuZCBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYC4gVGhlc2UgYXJlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgbWFuYWdpbmcgZnVuY3Rpb24gZW50cnkgcG9pbnRzIHdpdGggQlBGLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgaW50ZXJhY3Rpb25zIHRob3JvdWdobHkuXG5cbkkgYWxzbyBzZWUgYSBmZXcgY3J1Y2lhbCBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgY2FyZWZ1bCBjb25zaWRlcmF0aW9uOiBgQlBGX1NZU0NBTExgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVBgLCBhbmQgYEZVTkNUSU9OX1RSQUNFUmAuIFxuXG5XYWl0IGEgbWludXRlLCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgIGFuZCBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9KTVBgIGFyZSAqZGVmX2Jvb2wgeSogb24gc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuIE1lYW5pbmcgdGhleSBzaG91bGQgYmUgYXV0b21hdGljYWxseSBlbmFibGVkIGlmIHRoZSBhcmNoaXRlY3R1cmUgc3VwcG9ydHMgaXQuIFdlIGRvbid0IGhhdmUgdG8gZXhwbGljaXRseSBjb25maWd1cmUgdGhlbSwgYnV0IGl0IGlzbid0IGdvaW5nIHRvIGJlIGhhcm1mdWwgaWYgdGhleSBhcmUgYWxzbyBkZWZpbmVkLiBUaGF0J3MgZ29vZCB0byBrbm93LCBzaW1wbGlmaWVzIHRoZSBjb25maWd1cmF0aW9uIHNvbWV3aGF0LiBIbW0sIEkgdGhpbmsgYEZQUk9CRWAgb3IgYEZUUkFDRWAgbWlnaHQgYWxzbyBjb21lIGludG8gcGxheSwgcG90ZW50aWFsbHksIGFuZCBjbGVhcmx5LCBgRlVOQ1RJT05fVFJBQ0VSYCBpcyB0aGUgbWFpbiBlbmFibGVyIGhlcmUuXG5cbkxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGBrZXJuZWwvYnBmL0tjb25maWdgIGZpbGUsIEkgd2FudCB0byBtYWtlIHN1cmUgSSBoYXZlIGEgZ29vZCBncmFzcCBvbiBgQlBGX1NZU0NBTExgIOKAkyBuZWVkIHRvIGJlIGNyeXN0YWwgY2xlYXIgb24gaG93IHRoYXQncyB0aWVkIGludG8gdGhpcyB3aG9sZSBlY29zeXN0ZW0uIEdvdHRhIGVuc3VyZSBJJ20gZ2V0dGluZyB0aGUgY29tcGxldGUgcGljdHVyZSBvbiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjg1NywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMzozNi40ODAwODY2MloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyOTQ0NTg3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMzozOC4xMDk1MzY5NDlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY0NjM2ODk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgaWYgSSdtIHRoaW5raW5nIGl0OlxuXG4qKlRyYWNpbmcgTXkgU3RlcHM6IEZ1bmN0aW9uIFRyYWNlciBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3RhdHVzIG9mIHRoZSBgRlVOQ1RJT05fVFJBQ0VSYC4gVGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGlzIHRoZSBgS2NvbmZpZ2AgZmlsZSwgcGFydGljdWxhcmx5IHdpdGhpbiB0aGUgdHJhY2luZyBzdWJzeXN0ZW0uIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBpbnNpZ2h0IGludG8gd2hldGhlciB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBga2VybmVsL3RyYWNlL0tjb25maWdgLiBJdCdzIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBhbmQgc2hvdWxkIGhhdmUgYWxsIHRoZSBhbnN3ZXJzLiBJIGV4cGVjdCB0aGF0IEknbGwgZmluZCBpdHMgZGVmaW5pdGlvbiBpbiBoZXJlLiBMZXQncyBnbyFcblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1MjksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMzo0MC43NTU5MDgwMTVaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDY4OTc0MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZVTkNUSU9OX1RSQUNFUlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvS2NvbmZpZz0yMjY9Y29uZmlnIEJPT1RUSU1FX1RSQUNJTkdcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTIzNC1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzoyMzU6Y29uZmlnIEZVTkNUSU9OX1RSQUNFUlxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTIzNi1cXHRib29sIFxcXCJLZXJuZWwgRnVuY3Rpb24gVHJhY2VyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMzo0Mi41MDI4MTE0OTZaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0ODY4MDU4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqRGVsdmluZyBpbnRvIEJQRiBUcmFjZXBvaW50cyoqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGVzZSB0cmFjaW5nIGhvb2tzIHdvcmssIGFuZCBpdCBsb29rcyBsaWtlIGBCUEZfU1lTQ0FMTGAgYW5kIGBGVU5DVElPTl9UUkFDRVJgIGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kIGFzIEkgdHJhY2UgdGhpcy5cblxuSGFuZyBvbi4uLiBJJ20gbG9va2luZyBhdCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCwgYW5kIGl0J3MgZGVmaW5lZCBpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIG1ha2VzIG1lIHdvbmRlciBpZiBgdHJhbXBvbGluZS5jYCBpcyBjb21waWxlZCBjb25kaXRpb25hbGx5LiBJIG5lZWQgdG8gY2hlY2sgdGhlIGJ1aWxkIHByb2Nlc3MgdG8gc2VlIGlmIHRob3NlIGNvbmZpZ3MgSSBtZW50aW9uZWQgaGF2ZSBhbiBpbXBhY3QgaGVyZS4gVGhpcyBtaWdodCBleHBsYWluIHNvbWUgb2YgdGhlIGNvbmRpdGlvbmFsIGJlaGF2aW9yIEkndmUgYmVlbiBzZWVpbmcuIEknbGwgbmVlZCB0byBmb2xsb3cgdGhhdCBsb2dpYyB0byBmdWxseSB1bmRlcnN0YW5kIHRoaXMgaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3Nzk4LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6NDYuMjUxNDk0NDc0WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc3Njc5Mzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyYW1wb2xpbmUub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2xpdmVwYXRjaC9yZWxpYWJsZS1zdGFja3RyYWNlLnJzdD0xNzk9aW5mb3JtYXRpb24gaXMgbm90IGluIGEgY29uc2lzdGVudCBsb2NhdGlvbiBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBlbnRyeVxcbkRvY3VtZW50YXRpb24vbGl2ZXBhdGNoL3JlbGlhYmxlLXN0YWNrdHJhY2UucnN0OjE4MDp0cmFtcG9saW5lIG9yIHJldHVybiB0cmFtcG9saW5lLiBGb3IgZXhhbXBsZSwgY29uc2lkZXJpbmcgdGhlIHg4Nl82NFxcbkRvY3VtZW50YXRpb24vbGl2ZXBhdGNoL3JlbGlhYmxlLXN0YWNrdHJhY2UucnN0LTE4MS0ncmV0dXJuX3RvX2hhbmRsZXInIHJldHVybiB0cmFtcG9saW5lOlxcbi0tXFxuYXJjaC9hcmMvaW5jbHVkZS91YXBpL2FzbS9zaWduYWwuaC0xOC0gKiB3aGljaCBhbGxvd3Mgc2lncmV0dXJuIGJhc2VkIHJlLWVudHJ5IGludG8ga2VybmVsIGFmdGVyIGhhbmRsaW5nIHNpZ25hbC5cXG5hcmNoL2FyYy9pbmNsdWRlL3VhcGkvYXNtL3NpZ25hbC5oOjE5OiAqIFcvbyB0aGlzIGtlcm5lbCBuZWVkcyB0byBcXFwic3ludGhlc2l6ZVxcXCIgdGhlIHNpZ3JldHVybiB0cmFtcG9saW5lIG9uIHVzZXJcXG5hcmNoL2FyYy9pbmNsdWRlL3VhcGkvYXNtL3NpZ25hbC5oLTIwLSAqIG1vZGUgc3RhY2sgd2hpY2ggaW4gdHVybiBmb3JjZXMgdGhlIGZvbGxvd2luZzpcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19LUFJPQkVTKVxcdFxcdCs9IGtwcm9iZXMubyBkZWNvZGUtaW5zbi5vXFx0XFxcXFxcbmFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9NYWtlZmlsZTozOlxcdFxcdFxcdFxcdCAgIGtwcm9iZXNfdHJhbXBvbGluZS5vXFx0XFx0XFxcXFxcbmFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9NYWtlZmlsZS00LVxcdFxcdFxcdFxcdCAgIHNpbXVsYXRlLWluc24ub1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmM9MTQzND1zdGF0aWMgaW50IGdjc19zaWduYWxfZW50cnkoX19zaWdyZXN0b3JlX3Qgc2lndHJhbXAsIHN0cnVjdCBrc2lnbmFsICprc2lnKVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvc2lnbmFsLmMtMTQ1MS1cXHQvKlxcbmFyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jOjE0NTI6XFx0ICogUHVzaCBhIGNhcCBhbmQgdGhlIEdDUyBlbnRyeSBmb3IgdGhlIHRyYW1wb2xpbmUgb250byB0aGUgR0NTLlxcbmFyY2gvYXJtNjQva2VybmVsL3NpZ25hbC5jLTE0NTMtXFx0ICovXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yNTUzPXN0YXRpYyB2b2lkIHN0b3JlX2Z1bmNfbWV0YShzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1NjQgZnVuY19tZXRhLCBpbnQgZnVuY19tZXRhX29mZilcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTI1NjYtICogICBtb3YgeDksIGxyXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MjU2NzogKiAgIGJsICBcXHUwMDNjYnBmX3RyYW1wb2xpbmUgb3IgcGx0XFx1MDAzZVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTI1NjgtICpcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvcHJvYmVzL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX0tQUk9CRVMpXFx0XFx0Kz0ga3Byb2Jlcy5vIGRlY29kZS1pbnNuLm8gc2ltdWxhdGUtaW5zbi5vXFxuYXJjaC9jc2t5L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfS1BST0JFUylcXHRcXHQrPSBrcHJvYmVzX3RyYW1wb2xpbmUub1xcbmFyY2gvY3NreS9rZXJuZWwvcHJvYmVzL01ha2VmaWxlLTQtb2JqLSQoQ09ORklHX0tQUk9CRVNfT05fRlRSQUNFKVxcdCs9IGZ0cmFjZS5vXFxuLS1cXG5hcmNoL2hleGFnb24va2VybmVsL01ha2VmaWxlPTc9b2JqLXkgKz0gc2V0dXAubyBpcnFfY3B1Lm8gdHJhcHMubyBzeXNjYWxsdGFiLm8gc2lnbmFsLm8gdGltZS5vXFxuYXJjaC9oZXhhZ29uL2tlcm5lbC9NYWtlZmlsZTo4Om9iai15ICs9IHByb2Nlc3MubyB0cmFtcG9saW5lLm8gcmVzZXQubyBwdHJhY2UubyB2ZHNvLm9cXG5hcmNoL2hleGFnb24va2VybmVsL01ha2VmaWxlLTktXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU9Mjk9aWZkZWYgQ09ORklHX0ZVTkNUSU9OX1RSQUNFUlxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL01ha2VmaWxlLTQwLSAgQ0ZMQUdTX1JFTU9WRV9yZXRob29rLm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU6NDE6ICBDRkxBR1NfUkVNT1ZFX3JldGhvb2tfdHJhbXBvbGluZS5vID0gJChDQ19GTEFHU19GVFJBQ0UpXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL01ha2VmaWxlLTQyLWVuZGlmXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU9NzY9b2JqLSQoQ09ORklHX0tQUk9CRVMpXFx0XFx0Kz0ga3Byb2Jlcy5vXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL01ha2VmaWxlOjc3Om9iai0kKENPTkZJR19SRVRIT09LKVxcdFxcdCs9IHJldGhvb2subyByZXRob29rX3RyYW1wb2xpbmUub1xcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9NYWtlZmlsZS03OC1vYmotJChDT05GSUdfVVBST0JFUylcXHRcXHQrPSB1cHJvYmVzLm9cXG4tLVxcbmFyY2gvbmlvczIva2VybmVsL3NpZ25hbC5jPTE4Mj1zdGF0aWMgaW50IHNldHVwX3J0X2ZyYW1lKHN0cnVjdCBrc2lnbmFsICprc2lnLCBzaWdzZXRfdCAqc2V0LFxcbi0tXFxuYXJjaC9uaW9zMi9rZXJuZWwvc2lnbmFsLmMtMjAzLVxcdC8qIFNldCB1cCB0byByZXR1cm4gZnJvbSB1c2Vyc3BhY2U7IGp1bXAgdG8gZml4ZWQgYWRkcmVzcyBzaWdyZXR1cm5cXG5hcmNoL25pb3MyL2tlcm5lbC9zaWduYWwuYzoyMDQ6XFx0ICAgdHJhbXBvbGluZSBvbiBrdXNlciBwYWdlLiAgKi9cXG5hcmNoL25pb3MyL2tlcm5lbC9zaWduYWwuYy0yMDUtXFx0cmVncy1cXHUwMDNlcmEgPSAodW5zaWduZWQgbG9uZykgKDB4MTA0NCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTUzNT1ib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNTM4LVxcdCAqIFRPRE86IFJlbW92ZSBhZnRlciB2YWxpZGF0aW5nIHN1cHBvcnRcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jOjUzOTpcXHQgKiBmb3IgZnNlc3Npb24gYW5kIHRyYW1wb2xpbmUgb24gcHBjMzIuXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01NDAtXFx0ICovXFxuLS1cXG5hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfS1BST0JFUylcXHRcXHQrPSBrcHJvYmVzLm8gZGVjb2RlLWluc24ubyBzaW11bGF0ZS1pbnNuLm9cXG5hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfUkVUSE9PSylcXHRcXHQrPSByZXRob29rLm8gcmV0aG9va190cmFtcG9saW5lLm9cXG5hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUtNC1vYmotJChDT05GSUdfVVBST0JFUylcXHRcXHQrPSB1cHJvYmVzLm8gZGVjb2RlLWluc24ubyBzaW11bGF0ZS1pbnNuLm9cXG4tLVxcbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT02PUNGTEFHU19SRU1PVkVfcmV0aG9vay5vID0gJChDQ19GTEFHU19GVFJBQ0UpXFxuYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL01ha2VmaWxlOjc6Q0ZMQUdTX1JFTU9WRV9yZXRob29rX3RyYW1wb2xpbmUubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxcbi0tXFxuYXJjaC9zMzkwL2Jvb3QvTWFrZWZpbGU9MzU9b2JqLXlcXHQrPSB2ZXJzaW9uLm8gcGdtX2NoZWNrLm8gY3R5cGUubyBpcGxfZGF0YS5vIHJlbG9jcy5vIGFsdGVybmF0aXZlLm9cXG5hcmNoL3MzOTAvYm9vdC9NYWtlZmlsZTozNjpvYmoteVxcdCs9IHV2Lm8gcHJpbnRrLm8gdHJhbXBvbGluZS5vXFxuYXJjaC9zMzkwL2Jvb3QvTWFrZWZpbGUtMzctb2JqLSQoQ09ORklHX1JBTkRPTUlaRV9CQVNFKVxcdCs9IGthc2xyLm9cXG4tLVxcbmFyY2gveDg2L2h5cGVydi9NYWtlZmlsZT0xMj1vYmotJChDT05GSUdfUEFSQVZJUlRfU1BJTkxPQ0tTKVxcdCs9IGh2X3NwaW5sb2NrLm9cXG4tLVxcbmFyY2gveDg2L2h5cGVydi9NYWtlZmlsZS0xNC0gaWZkZWYgQ09ORklHX01TSFZfUk9PVFxcbmFyY2gveDg2L2h5cGVydi9NYWtlZmlsZToxNTogIENGTEFHU19SRU1PVkVfaHZfdHJhbXBvbGluZS5vICs9IC1wZ1xcbmFyY2gveDg2L2h5cGVydi9NYWtlZmlsZToxNjogIENGTEFHU19odl90cmFtcG9saW5lLm8gICAgICAgICs9IC1mbm8tc3RhY2stcHJvdGVjdG9yXFxuYXJjaC94ODYvaHlwZXJ2L01ha2VmaWxlOjE3OiAgb2JqLSQoQ09ORklHX0NSQVNIX0RVTVApICAgICAgKz0gaHZfY3Jhc2gubyBodl90cmFtcG9saW5lLm9cXG5hcmNoL3g4Ni9oeXBlcnYvTWFrZWZpbGUtMTgtIGVuZGlmXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmM9MjgzPWV4dGVybiB2b2lkIGZ0cmFjZV9yZWdzX2NhbGxlcl9qbXAodm9pZCk7XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvZnRyYWNlLmMtMjkwLSAqIFRoZSBmdHJhY2Vfb3BzIGlzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gY2FsbGJhY2suIFNpbmNlIHRoZVxcbmFyY2gveDg2L2tlcm5lbC9mdHJhY2UuYzoyOTE6ICogdHJhbXBvbGluZSBvbmx5IHNlcnZpY2VzIGEgc2luZ2xlIGZ0cmFjZV9vcHMsIHdlIGNhbiBwYXNzIGluXFxuYXJjaC94ODYva2VybmVsL2Z0cmFjZS5jLTI5Mi0gKiB0aGF0IG9wcyBkaXJlY3RseS5cXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9mdHJhY2UuYz00Nzc9dm9pZCBhcmNoX2Z0cmFjZV91cGRhdGVfdHJhbXBvbGluZShzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL2Z0cmFjZS5jLTQ4NS1cXHRpZiAoIW9wcy1cXHUwMDNldHJhbXBvbGluZSkge1xcbmFyY2gveDg2L2tlcm5lbC9mdHJhY2UuYzo0ODY6XFx0XFx0b3BzLVxcdTAwM2V0cmFtcG9saW5lID0gY3JlYXRlX3RyYW1wb2xpbmUob3BzLCBcXHUwMDI2c2l6ZSk7XFxuYXJjaC94ODYva2VybmVsL2Z0cmFjZS5jLTQ4Ny1cXHRcXHRpZiAoIW9wcy1cXHUwMDNldHJhbXBvbGluZSlcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBkaXNhc20ubyBtcHJvZy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gdHJhbXBvbGluZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz01Nz1zdGF0aWMgdm9pZCB0cmFtcG9saW5lX3VubG9jayhzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjEtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6NjI6c3RydWN0IGJwZl90cmFtcG9saW5lX29wcyB7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjMtXFx0aW50ICgqcmVnaXN0ZXJfZmVudHJ5KShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqZGF0YSk7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz03MD1zdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjcxOlxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wb2xpbmVfb3BzICpvcHMsIHZvaWQgKmRhdGEpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjcyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wb2xpbmVfb3BzIHRyYW1wb2xpbmVfb3BzO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTczLVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9OTg9c3RhdGljIGludCBicGZfdHJhbXBfZnRyYWNlX29wc19mdW5jKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHVuc2lnbmVkIGxvbmcgaXAsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTctXFx0XFx0XFx0cmV0ID0gYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHRyLCBmYWxzZSAvKiBsb2NrX2RpcmVjdF9tdXRleCAqLyxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZ0cmFtcG9saW5lX29wcywgTlVMTCk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU5LVxcdFxcdGJyZWFrO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTY0LVxcdFxcdFxcdHJldCA9IGJwZl90cmFtcG9saW5lX3VwZGF0ZSh0ciwgZmFsc2UgLyogbG9ja19kaXJlY3RfbXV0ZXggKi8sXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTY1OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2dHJhbXBvbGluZV9vcHMsIE5VTEwpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2Ni1cXHRcXHRicmVhaztcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTQ3Mz1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTUwMC1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo1MDE6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9vcHMgPSB7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNTAyLVxcdC5yZWdpc3Rlcl9mZW50cnkgICA9IHJlZ2lzdGVyX2ZlbnRyeSxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTY3Mz1zdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjY3NDpcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLCB2b2lkICpkYXRhKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTY3NS17XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz05MDU9c3RhdGljIGludCBfX2JwZl90cmFtcG9saW5lX2xpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05MDctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZyxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo5MDg6XFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTkwOS1cXHRcXHRcXHRcXHQgICAgICB2b2lkICpkYXRhKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9OTQ2PWludCBicGZfdHJhbXBvbGluZV9saW5rX3Byb2coc3RydWN0IGJwZl90cmFtcF9ub2RlICpub2RlLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtOTUyLVxcdHRyYW1wb2xpbmVfbG9jayh0cik7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6OTUzOlxcdGVyciA9IF9fYnBmX3RyYW1wb2xpbmVfbGlua19wcm9nKG5vZGUsIHRyLCB0Z3RfcHJvZywgXFx1MDAyNnRyYW1wb2xpbmVfb3BzLCBOVUxMKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05NTQtXFx0dHJhbXBvbGluZV91bmxvY2sodHIpO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9OTU4PXN0YXRpYyBpbnQgX19icGZfdHJhbXBvbGluZV91bmxpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05NjAtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZyxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo5NjE6XFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTk2Mi1cXHRcXHRcXHRcXHRcXHR2b2lkICpkYXRhKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9OTgzPWludCBicGZfdHJhbXBvbGluZV91bmxpbmtfcHJvZyhzdHJ1Y3QgYnBmX3RyYW1wX25vZGUgKm5vZGUsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy05ODktXFx0dHJhbXBvbGluZV9sb2NrKHRyKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzo5OTA6XFx0ZXJyID0gX19icGZfdHJhbXBvbGluZV91bmxpbmtfcHJvZyhub2RlLCB0ciwgdGd0X3Byb2csIFxcdTAwMjZ0cmFtcG9saW5lX29wcywgTlVMTCk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtOTkxLVxcdHRyYW1wb2xpbmVfdW5sb2NrKHRyKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTEwNzY9aW50IGJwZl90cmFtcG9saW5lX2xpbmtfY2dyb3VwX3NoaW0oc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTExOC1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxMTE5OlxcdGVyciA9IF9fYnBmX3RyYW1wb2xpbmVfbGlua19wcm9nKFxcdTAwMjZzaGltX2xpbmstXFx1MDAzZWxpbmsubm9kZSwgdHIsIE5VTEwsIFxcdTAwMjZ0cmFtcG9saW5lX29wcywgTlVMTCk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTEyMC1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTU1OT1zdGF0aWMgaW50IG1vZGlmeV9mZW50cnlfbXVsdGkoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIG9yaWdfZmxhZ3MsIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU3My1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTc0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wb2xpbmVfb3BzIHRyYW1wb2xpbmVfbXVsdGlfb3BzID0ge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1NzUtXFx0LnJlZ2lzdGVyX2ZlbnRyeSAgID0gcmVnaXN0ZXJfZmVudHJ5X211bHRpLFxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjYzNT12b2lkIHVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZShzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI2NTUtXFx0XFx0ICogb3IgTlVMTDsgdGhlIGxhdHRlciBjYXNlIG1lYW5zIHRoYXQgbm9ib2R5IGJ1dCByaS1cXHUwMDNlZnVuY1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjI2NTY6XFx0XFx0ICogY291bGQgaGl0IHRoaXMgdHJhbXBvbGluZSBvbiByZXR1cm4uIFRPRE86IHNpZ2FsdHN0YWNrKCkuXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjY1Ny1cXHRcXHQgKi9cXG4tLVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYz0zMzA9aW50IF9fcmVnaXN0ZXJfZnRyYWNlX2Z1bmN0aW9uKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMpXFxuLS1cXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtMzY0LVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYzozNjU6XFx0ZnRyYWNlX3VwZGF0ZV90cmFtcG9saW5lKG9wcyk7XFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTM2Ni1cXG4tLVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYz0zOTM9c3RhdGljIHZvaWQgZnRyYWNlX3VwZGF0ZV9waWRfZnVuYyh2b2lkKVxcbi0tXFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTQwNC1cXHRcXHRcXHRcXHRmdHJhY2VfcGlkX2Z1bmMgOiBvcC1cXHUwMDNlc2F2ZWRfZnVuYztcXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6NDA1OlxcdFxcdFxcdGZ0cmFjZV91cGRhdGVfdHJhbXBvbGluZShvcCk7XFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTQwNi1cXHRcXHR9XFxuLS1cXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM9ODQxND1zdGF0aWMgdm9pZCBmdHJhY2VfdXBkYXRlX3RyYW1wb2xpbmUoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcylcXG4tLVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYy04NDE3LVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYzo4NDE4OlxcdGFyY2hfZnRyYWNlX3VwZGF0ZV90cmFtcG9saW5lKG9wcyk7XFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTg0MTktXFx0aWYgKG9wcy1cXHUwMDNldHJhbXBvbGluZSBcXHUwMDI2XFx1MDAyNiBvcHMtXFx1MDAzZXRyYW1wb2xpbmUgIT0gdHJhbXBvbGluZSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxudG9vbHMvcGVyZi91dGlsL2Rzby5oPTI4PWVudW0gZHNvX2JpbmFyeV90eXBlIHtcXG4tLVxcbnRvb2xzL3BlcmYvdXRpbC9kc28uaC05Ny1cXHREU09fQklOQVJZX1RZUEVfX0JQRl9QUk9HX0lORk8sXFxudG9vbHMvcGVyZi91dGlsL2Rzby5oOjk4OlxcdC8qKiBARFNPX0JJTkFSWV9UWVBFX19CUEZfSU1BR0U6IGppdHRlZCBCUEYgdHJhbXBvbGluZSBvciBkaXNwYXRjaGVyIGNvZGUuICovXFxudG9vbHMvcGVyZi91dGlsL2Rzby5oLTk5LVxcdERTT19CSU5BUllfVFlQRV9fQlBGX0lNQUdFLFxcbi0tXFxudG9vbHMvcGVyZi91dGlsL21hcC5jPTUyOT11NjQgbWFwX19yaXBfMm9iamR1bXAoY29uc3Qgc3RydWN0IG1hcCAqbWFwLCB1NjQgcmlwKVxcbi0tXFxudG9vbHMvcGVyZi91dGlsL21hcC5jLTUzNS1cXHQgKiB2bWxpbnV4IGRvZXMgbm90IGhhdmUgcHJvZ3JhbSBoZWFkZXJzIGZvciBQVEkgZW50cnkgdHJhbXBvbGluZXMgYW5kXFxudG9vbHMvcGVyZi91dGlsL21hcC5jOjUzNjpcXHQgKiBrY29yZSBtYXkgbm90IGVpdGhlci4gSG93ZXZlciB0aGUgdHJhbXBvbGluZSBvYmplY3QgY29kZSBpcyBvbiB0aGVcXG50b29scy9wZXJmL3V0aWwvbWFwLmMtNTM3LVxcdCAqIG1haW4ga2VybmVsIG1hcCwgc28ganVzdCB1c2UgdGhhdCBpbnN0ZWFkLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyMzo0OC43MjkxNzkzMTlaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI1MjQzNTAyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEJQRiBKSVQgQ29tcGlsYXRpb24gUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gaG93IHRoZSBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgIGZpbGUgZ2V0cyBjb21waWxlZC4gVGhlIGZpcnN0IHRoaW5nIEkgc2VlIGlzIHRoYXQgaXQncyBjb25kaXRpb25hbCBvbiBgQ09ORklHX0JQRl9KSVRgLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZS4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYGtlcm5lbC9icGYvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGJ1aWxkIHJ1bGVzLiBZZXAsIGBvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gdHJhbXBvbGluZS5vYCBjb25maXJtcyB0aGF0LiBTbyBgQlBGX0pJVGAgaXMgZGVmaW5pdGVseSBhIG5lY2Vzc2FyeSBjb21wb25lbnQuIEhtbSwgYWx0aG91Z2ggYEJQRl9KSVRgIGlzIHR5cGljYWxseSBlbmFibGVkIGJ5IGRlZmF1bHQsIGl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2ggYW5kIGV4cGxpY2l0bHkgaW5jbHVkZSBpdC4gT2theSwgdGltZSB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgYGtlcm5lbC9icGYvS2NvbmZpZ2AgdG8gdmVyaWZ5IHRoZSBleGFjdCBkZWZpbml0aW9uIGFuZCBkZXBlbmRlbmNpZXMgZm9yIGBCUEZfSklUYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyMDQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjM6NTMuOTgxNjE2NDk0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI1Nzk1NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNTctXFxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cXHRib29sIFxcXCJQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjIzOjU1LjYwNzQxNzU5M1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTU4NzIzMzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBCUEYgVHJhY2luZyBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbiBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBCUEYgSklUIHNldHVwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBCUEZfSklUYCBpcyBlbmFibGVkLCBvYnZpb3VzbHkuIFRoZW4sIGxldCdzIHJlY2FwIHRoZSByZWxldmFudCBjb25maWdzOiBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGBGVU5DVElPTl9UUkFDRVJgLCBhbmQgaWRlYWxseSwgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYC4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY3J1Y2lhbCBzZXR0aW5ncyBpbiB0aGUgbWl4LiBJIHJlY2FsbCB0aGF0IGBGVFJBQ0VgIGlzIGEgbWVudWNvbmZpZywgd2l0aCBgRlVOQ1RJT05fVFJBQ0VSYCBiZWluZyB0aGUgc3BlY2lmaWMgY29uZmlnIEknbSBhZnRlci5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbjogYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGBtb2RpZnlfZmVudHJ5X211bHRpYCwgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAsIGFuZCBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYC4gSG1tLCB3YWl0IGEgbWludXRlLCBJIGhhdmUgdG8gcmVtZW1iZXIgdGhhdCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCBpcyBhIHBvdGVudGlhbGx5IGhvdC1wYXRoIGZ1bmN0aW9uLCByaWdodD8gTm9wZSwgSSdtIHRoaW5raW5nIG9mIHNvbWV0aGluZyBlbHNlLiBJdCdzIG9ubHkgY2FsbGVkIGR1cmluZyBCUEYgcHJvZ3JhbSBhdHRhY2htZW50IGFuZCBkZXRhY2htZW50IOKAkyBzbG93IHBhdGhzLiBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYCBpcyBhbHNvIGEgc2xvdyBwYXRoLCBhcyBpcyBgcmVnaXN0ZXJfZmVudHJ5X211bHRpYC5cblxuQWxyaWdodCwgSSBzaG91bGQgY29uZmlybSBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYCBpcyBzdGF0aWMuIFllcywgaXQgaXMuIEl0J3MgZGVmaW5lZCBzdGF0aWNhbGx5IHdpdGhpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBBaCwgcmlnaHQsIGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIGNhbGxlZCBieSBgYnBmX3RyYW1wb2xpbmVfbGlua19wcm9nYCBhbmQgYGJwZl90cmFtcG9saW5lX3VubGlua19wcm9nYCwgYW5kIEkgaGF2ZSBteSBsaXN0IG9mIGZ1bmN0aW9uczogYHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aWAsIGBtb2RpZnlfZmVudHJ5X211bHRpYCwgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAsIGFuZCBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYC5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYGJwZl90cmFtcG9saW5lX3VwZGF0ZWAgaXMgc3RhdGljLiBZZXAsIGRlZmluaXRlbHkgc3RhdGljLiBBbmQsIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgPyBTdGF0aWMgYXMgd2VsbC4gSG93IGFib3V0IGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgPyBObywgdGhhdCBvbmUncyBub3Qgc3RhdGljLiBMb29rcyBsaWtlIGl0J3MgZGVmaW5lZCBpbiBga2VybmVsL3RyYWNlL2JwZl90cmFjZS5jYCwgc28gSSBzaG91bGQgcHJvYmFibHkgdGFrZSBhIGxvb2sgYXQgaXQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNzUwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjI0OjAyLjc2NjE0MzEyWiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI4NDQwNTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFjaW5nX211bHRpX2F0dGFjaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc4OT1pbnQgYnBmX3Vwcm9iZV9tdWx0aV9saW5rX2F0dGFjaChjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjc5MDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpO1xcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtNzkxLSNlbHNlXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTg0OD1zdGF0aWMgaW5saW5lIGludFxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6ODQ5OmJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODUwLXtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTU3NjU9c3RhdGljIGludCBsaW5rX2NyZWF0ZSh1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01ODE1LVxcdFxcdGVsc2UgaWYgKGlzX3RyYWNpbmdfbXVsdGkocHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpKVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjU4MTY6XFx0XFx0XFx0cmV0ID0gYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHByb2csIGF0dHIpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU4MTctXFx0XFx0ZWxzZVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM4MTk9c3RhdGljIGludCBjaGVja19kdXBfaWRzKHUzMiAqaWRzLCB1NjQgKmNvb2tpZXMsIHUzMiBjbnQpXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzgzOS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6Mzg0MDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM4NDEte1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MjktXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM5MzA6aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTMxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDU6MjQ6MDQuNTk0NTg5MTI3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzgwMTYwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBEb3VibGUgRGVmaW5pdGlvbiBpbiBCUEYgVHJhY2luZyoqXG5cbk9rYXksIGhvbGQgb24gYSBtaW51dGUuIFRoaXMgZG9lc24ndCBzZWVtIHJpZ2h0LiBUaGUgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgZnVuY3Rpb24uLi4gSSBjb3VsZCBzd2VhciBJIHNhdyB0aGF0IGRlZmluZWQgc29tZXdoZXJlIGJlZm9yZS4gSW4gZmFjdCwgbXkgaW50ZXJuYWwgbGludGluZyBqdXN0IHdlbnQgaGF5d2lyZS4gQW0gSSBzZWVpbmcgZG91YmxlPyBMZXQgbWUgZG91YmxlLWNoZWNrIGBrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmNgIGFuZCBtYWtlIHN1cmUgbXkgZXllcyBhcmVuJ3QgZGVjZWl2aW5nIG1lLCBlc3BlY2lhbGx5IGFyb3VuZCBsaW5lIG51bWJlcnMgMzg0MCBhbmQgMzkzMC4gU29tZXRoaW5nIGZlZWxzIG9mZiBoZXJlLCBhbmQgSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMgcG90ZW50aWFsIGNvbmZsaWN0IGJlZm9yZSBpdCBjYXVzZXMgYW55IGRvd25zdHJlYW0gaXNzdWVzLiBBIHJlZHVuZGFudCBkZWZpbml0aW9uIGlzIGEgdGlja2luZyB0aW1lLWJvbWIsIGFuZCBJIGRvbid0IHdhbnQgdG8gZGVhbCB3aXRoIHRoYXQgbWVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQyNjUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyNDowOS4wMzI2MDcyNTJaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC90cmFjZS9icGZfdHJhY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODMwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzgzMDpcXHRcXG4zODMxOlxcdFxcdGZvciAoaW50IGkgPSAxOyBpIFxcdTAwM2MgY250OyBpKyspIHtcXG4zODMyOlxcdFxcdFxcdGlmIChpZHNbaV0gPT0gaWRzW2kgLSAxXSkge1xcbjM4MzM6XFx0XFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4zODM0OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjM4MzU6XFx0XFx0XFx0fVxcbjM4MzY6XFx0XFx0fVxcbjM4Mzc6XFx0XFx0cmV0dXJuIGVycjtcXG4zODM4OlxcdH1cXG4zODM5OlxcdFxcbjM4NDA6XFx0aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbjM4NDE6XFx0e1xcbjM4NDI6XFx0XFx0c3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbmsgKmxpbmsgPSBOVUxMO1xcbjM4NDM6XFx0XFx0c3RydWN0IGJwZl90cmFtcF9ub2RlICpmZXhpdHMgPSBOVUxMO1xcbjM4NDQ6XFx0XFx0c3RydWN0IGJwZl9saW5rX3ByaW1lciBsaW5rX3ByaW1lcjtcXG4zODQ1OlxcdFxcdHUzMiBjbnQsICppZHMgPSBOVUxMO1xcbjM4NDY6XFx0XFx0dTY0IF9fdXNlciAqdWNvb2tpZXM7XFxuMzg0NzpcXHRcXHR1NjQgKmNvb2tpZXMgPSBOVUxMO1xcbjM4NDg6XFx0XFx0dTMyIF9fdXNlciAqdWlkcztcXG4zODQ5OlxcdFxcdGludCBlcnI7XFxuMzg1MDpcXHRcXG4zODUxOlxcdFxcdHVpZHMgPSB1NjRfdG9fdXNlcl9wdHIoYXR0ci1cXHUwMDNlbGlua19jcmVhdGUudHJhY2luZ19tdWx0aS5pZHMpO1xcbjM4NTI6XFx0XFx0Y250ID0gYXR0ci1cXHUwMDNlbGlua19jcmVhdGUudHJhY2luZ19tdWx0aS5jbnQ7XFxuMzg1MzpcXHRcXG4zODU0OlxcdFxcdGlmICghY250IHx8ICF1aWRzKVxcbjM4NTU6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMzg1NjpcXHRcXHRpZiAoY250IFxcdTAwM2UgTUFYX1RSQUNJTkdfTVVMVElfQ05UKVxcbjM4NTc6XFx0XFx0XFx0cmV0dXJuIC1FMkJJRztcXG4zODU4OlxcdFxcdGlmIChhdHRyLVxcdTAwM2VsaW5rX2NyZWF0ZS5mbGFncyB8fCBhdHRyLVxcdTAwM2VsaW5rX2NyZWF0ZS50YXJnZXRfZmQpXFxuMzg1OTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4zODYwOlxcdFxcbjM4NjE6XFx0XFx0aWRzID0ga3ZtYWxsb2Nfb2JqcygqaWRzLCBjbnQpO1xcbjM4NjI6XFx0XFx0aWYgKCFpZHMpXFxuMzg2MzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4zODY0OlxcdFxcbjM4NjU6XFx0XFx0aWYgKGNvcHlfZnJvbV91c2VyKGlkcywgdWlkcywgY250ICogc2l6ZW9mKCppZHMpKSkge1xcbjM4NjY6XFx0XFx0XFx0ZXJyID0gLUVGQVVMVDtcXG4zODY3OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuMzg2ODpcXHRcXHR9XFxuMzg2OTpcXHRcXG4zODcwOlxcdFxcdHVjb29raWVzID0gdTY0X3RvX3VzZXJfcHRyKGF0dHItXFx1MDAzZWxpbmtfY3JlYXRlLnRyYWNpbmdfbXVsdGkuY29va2llcyk7XFxuMzg3MTpcXHRcXHRpZiAodWNvb2tpZXMpIHtcXG4zODcyOlxcdFxcdFxcdGNvb2tpZXMgPSBrdm1hbGxvY19vYmpzKCpjb29raWVzLCBjbnQpO1xcbjM4NzM6XFx0XFx0XFx0aWYgKCFjb29raWVzKSB7XFxuMzg3NDpcXHRcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbjM4NzU6XFx0XFx0XFx0XFx0Z290byBlcnJvcjtcXG4zODc2OlxcdFxcdFxcdH1cXG4zODc3OlxcdFxcdFxcdGlmIChjb3B5X2Zyb21fdXNlcihjb29raWVzLCB1Y29va2llcywgY250ICogc2l6ZW9mKCpjb29raWVzKSkpIHtcXG4zODc4OlxcdFxcdFxcdFxcdGVyciA9IC1FRkFVTFQ7XFxuMzg3OTpcXHRcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjM4ODA6XFx0XFx0XFx0fVxcbjM4ODE6XFx0XFx0fVxcbjM4ODI6XFx0XFxuMzg4MzpcXHRcXHRlcnIgPSBjaGVja19kdXBfaWRzKGlkcywgY29va2llcywgY250KTtcXG4zODg0OlxcdFxcdGlmIChlcnIpXFxuMzg4NTpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjM4ODY6XFx0XFxuMzg4NzpcXHRcXHRpZiAocHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OX01VTFRJKSB7XFxuMzg4ODpcXHRcXHRcXHRmZXhpdHMgPSBrdm1hbGxvY19vYmpzKCpmZXhpdHMsIGNudCk7XFxuMzg4OTpcXHRcXHRcXHRpZiAoIWZleGl0cykge1xcbjM4OTA6XFx0XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4zODkxOlxcdFxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuMzg5MjpcXHRcXHRcXHR9XFxuMzg5MzpcXHRcXHR9XFxuMzg5NDpcXHRcXG4zODk1OlxcdFxcdGxpbmsgPSBrdnphbGxvY19mbGV4KCpsaW5rLCBub2RlcywgY250KTtcXG4zODk2OlxcdFxcdGlmICghbGluaykge1xcbjM4OTc6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4zODk4OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuMzg5OTpcXHRcXHR9XFxuMzkwMDpcXHRcXG4zOTAxOlxcdFxcdGJwZl9saW5rX2luaXQoXFx1MDAyNmxpbmstXFx1MDAzZWxpbmssIEJQRl9MSU5LX1RZUEVfVFJBQ0lOR19NVUxUSSxcXG4zOTAyOlxcdFxcdFxcdCAgICAgIFxcdTAwMjZicGZfdHJhY2luZ19tdWx0aV9saW5rX2xvcHMsIHByb2csIHByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKTtcXG4zOTAzOlxcdFxcbjM5MDQ6XFx0XFx0ZXJyID0gYnBmX2xpbmtfcHJpbWUoXFx1MDAyNmxpbmstXFx1MDAzZWxpbmssIFxcdTAwMjZsaW5rX3ByaW1lcik7XFxuMzkwNTpcXHRcXHRpZiAoZXJyKVxcbjM5MDY6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4zOTA3OlxcdFxcbjM5MDg6XFx0XFx0bGluay1cXHUwMDNlbm9kZXNfY250ID0gY250O1xcbjM5MDk6XFx0XFx0bGluay1cXHUwMDNlY29va2llcyA9IGNvb2tpZXM7XFxuMzkxMDpcXHRcXHRsaW5rLVxcdTAwM2VmZXhpdHMgPSBmZXhpdHM7XFxuMzkxMTpcXHRcXG4zOTEyOlxcdFxcdGVyciA9IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChwcm9nLCBpZHMsIGxpbmspO1xcbjM5MTM6XFx0XFx0a3ZmcmVlKGlkcyk7XFxuMzkxNDpcXHRcXHRpZiAoZXJyKSB7XFxuMzkxNTpcXHRcXHRcXHRicGZfbGlua19jbGVhbnVwKFxcdTAwMjZsaW5rX3ByaW1lcik7XFxuMzkxNjpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjM5MTc6XFx0XFx0fVxcbjM5MTg6XFx0XFx0cmV0dXJuIGJwZl9saW5rX3NldHRsZShcXHUwMDI2bGlua19wcmltZXIpO1xcbjM5MTk6XFx0XFxuMzkyMDpcXHRlcnJvcjpcXG4zOTIxOlxcdFxcdGt2ZnJlZShmZXhpdHMpO1xcbjM5MjI6XFx0XFx0a3ZmcmVlKGNvb2tpZXMpO1xcbjM5MjM6XFx0XFx0a3ZmcmVlKGlkcyk7XFxuMzkyNDpcXHRcXHRrdmZyZWUobGluayk7XFxuMzkyNTpcXHRcXHRyZXR1cm4gZXJyO1xcbjM5MjY6XFx0fVxcbjM5Mjc6XFx0XFxuMzkyODpcXHQjZWxzZVxcbjM5Mjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjI0OjA5LjAzMjc4NjE3MloiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQ2ODk1NjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uZGl0aW9uYWwgTG9naWMgaW4gdGhlIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHF1aWNrbHkgaWRlbnRpZmllZCB0aGUgYCNlbHNlYCBibG9jayDigJMgdGhhdCdzIGEga2V5IHBvaW50IG9mIGRpdmVyZ2VuY2UgaW4gdGhlIGxvZ2ljLiBOb3csIHRvIHRydWx5IGdyYXNwIHRoZSBmbG93LCBJIG5lZWQgdG8gem9vbSBpbiBvbiB0aGUgY29yZSBmdW5jdGlvbiBjYWxscy4gTGV0IG1lIHNlZS4uLiB0aGUgb25lcyB0aGF0IGltbWVkaWF0ZWx5IHN0YW5kIG91dCBhcyBjcml0aWNhbCBhcmU6IGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgLCBgdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGlgLCBgbW9kaWZ5X2ZlbnRyeV9tdWx0aWAsIGBicGZfdHJhbXBvbGluZV91cGRhdGVgLCBgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoYCwgYW5kIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hgLiBJJ2xsIHdhbnQgdG8gdHJhY2UgZWFjaCBvZiB0aGVzZSB0byBzZWUgd2hhdCBpcyBoYXBwZW5pbmcuXG5cbkhtbSwgaW50ZXJlc3RpbmcsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hgIGlzIGRlZmluZWQgaW4gYGtlcm5lbC9icGYvdHJhbXBvbGluZS5jYC4gVGhhdCdzIGdvb2QgdG8ga25vdywgdGhhdCdsbCBzYXZlIG1lIHNvbWUgdGltZS4gUmlnaHQsIGxldCBtZSBjaGVjayB0aGF0IGZ1bmN0aW9uIG1vcmUgY2xvc2VseSB0byB1bmRlcnN0YW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU5MjUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyNDoxMi44Nzk2ODM4MTRaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mzg3OTE3MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9MTUyMD1pbnQgYXJjaF9wcmVwYXJlX2JwZl9kaXNwYXRjaGVyKHZvaWQgKmltYWdlLCB2b2lkICpidWYsIHM2NCAqZnVuY3MsIGludCBudW1fZnVuY3MpO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMTUyMS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1MjI6aW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTUyMy1cXHRcXHRcXHRcXHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluayk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTE2MzU9c3RhdGljIGlubGluZSBib29sIGJwZl9wcm9nX2hhc190cmFtcG9saW5lKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTYzOC19XFxuaW5jbHVkZS9saW51eC9icGYuaDoxNjM5OnN0YXRpYyBpbmxpbmUgaW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTY0MC1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluaylcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgdHJhbXBvbGluZV9tdWx0aV9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTc5LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE1ODA6c3RhdGljIHZvaWQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2luaXQoc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNTgxLXtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1ODUtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTU4NjpzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1ODcte1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTU5NC1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNTk1OnN0YXRpYyB2b2lkIGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFjayhzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE1OTYte1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTYxMS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNjEyOmludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjEzLVxcdFxcdFxcdFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTY1OC1cXHRmb3JfZWFjaF9tbm9kZShtbm9kZSwgbGluaykge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2NTk6XFx0XFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2luaXQobW5vZGUtXFx1MDAzZXRyYW1wb2xpbmUpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2NjAtXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjg2LVxcdGZvcl9lYWNoX21ub2RlKG1ub2RlLCBsaW5rKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2ODc6XFx0XFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUobW5vZGUtXFx1MDAzZXRyYW1wb2xpbmUpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2ODgtXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjk2LVxcdFxcdGJwZl90cmFtcG9saW5lX3JlbW92ZV9wcm9nKG1ub2RlLVxcdTAwM2V0cmFtcG9saW5lLCBcXHUwMDI2bW5vZGUtXFx1MDAzZW5vZGUpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2OTc6XFx0XFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrKG1ub2RlLVxcdTAwM2V0cmFtcG9saW5lKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjk4LVxcdH1cXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MTI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTcyMS1cXHRcXHRkYXRhLVxcdTAwM2VlbnRyeSA9IFxcdTAwMjZtbm9kZS1cXHUwMDNlZW50cnk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTcyMjpcXHRcXHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfaW5pdChtbm9kZS1cXHUwMDNldHJhbXBvbGluZSk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTcyMy1cXHRcXHRXQVJOX09OX09OQ0UoX19icGZfdHJhbXBvbGluZV91bmxpbmtfcHJvZyhcXHUwMDI2bW5vZGUtXFx1MDAzZW5vZGUsIG1ub2RlLVxcdTAwM2V0cmFtcG9saW5lLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTczMi1cXHRmb3JfZWFjaF9tbm9kZShtbm9kZSwgbGluaylcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNzMzOlxcdFxcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKG1ub2RlLVxcdTAwM2V0cmFtcG9saW5lKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzM0LVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM4NDA9aW50IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MTEtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM5MTI6XFx0ZXJyID0gYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHByb2csIGlkcywgbGluayk7XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MTMtXFx0a3ZmcmVlKGlkcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDA1OjI0OjE0LjUxODQ4Mjk0MloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjcyMzQwNzcyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZpbmluZyB0aGUgQlBGIFRyYW1wb2xpbmUgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHRoaW5raW5nIGFib3V0IHRoZSBiZXN0IHRhcmdldHMgZm9yIGZ1enppbmcgcmVsYXRlZCB0byB0aGlzIEJQRiB0cmFtcG9saW5lIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaGAgYW5kIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIGFyZSBkZWZpbml0ZWx5IGdvb2QgcGxhY2VzIHRvIHN0YXJ0LCBhbmQgdGhhdCBzdGlsbCBob2xkcyB0cnVlLiBMZXQncyBzZWUuLi5cblxuSSBzaG91bGQgc3RhcnQgYnkgc3VtbWFyaXppbmcgdGhlIGZ1bmN0aW9ucyBJJ3ZlIGlkZW50aWZpZWQgYXMgYmVpbmcgcmVsZXZhbnQuIEkgaGF2ZTpcblxuKiAgIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgXG4qICAgYHVucmVnaXN0ZXJfZmVudHJ5X211bHRpYFxuKiAgIGBtb2RpZnlfZmVudHJ5X211bHRpYFxuKiAgIGBicGZfdHJhbXBvbGluZV91cGRhdGVgXG4qICAgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGBcbiogICBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoYFxuKiAgIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgXG5cbkFsc28sIHRoZSBrZXJuZWwgY29uZmlncyB0aGF0IGFyZSByZWxldmFudCBhcmU6XG4qICAgYEJQRl9TWVNDQUxMYFxuKiAgIGBCUEZfSklUYFxuKiAgIGBGVU5DVElPTl9UUkFDRVJgXG5cbldhaXQsIGhhbmcgb24uLi4gZGlkbid0IEkgc2VlIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgaW4gdGhlIHBhdGNoIGNvbnRleHQ/IEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgcXVpY2suLi4gcmlnaHQsIHRoYXQgb25lIGlzIGBkZWZfYm9vbCB5YCBkZXBlbmRpbmcgb24gYEhBVkVfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLCBtZWFuaW5nIGl0J3Mgbm90IGEgdXNlci1zZWxlY3RhYmxlIGNvbmZpZy4gT2theSwgZ29vZCB0byBrbm93LiBUaGUgbGlzdCBvZiB1c2VyLXNlbGVjdGFibGUgY29uZmlncyBpcyBjb3JyZWN0IHRoZW4uXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmIGFnYWluLlxuXG5gYGBjXG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuKysrIGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbkBAIC0xNTM2LDYgKzE1MzYsNyBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2ZlbnRyeV9tdWx0aShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBzdHJ1Y3QgYnBmX3RyYW1wX2ltYVxuIFx0aWYgKGJwZl90cmFtcG9saW5lX3VzZV9qbXAodHItXHUwMDNlZmxhZ3MpKVxuIFx0XHRhZGRyID0gZnRyYWNlX2ptcF9zZXQoYWRkcik7XG4gXG4rXHR0ci1cdTAwM2VmdW5jLmZ0cmFjZV9tYW5hZ2VkID0gdHJ1ZTtcbiBcdGZ0cmFjZV9oYXNoX2FkZChkYXRhLVx1MDAzZXJlZywgZGF0YS1cdTAwM2VlbnRyeSwgaXAsIGFkZHIpO1xuIFx0dHItXHUwMDNlY3VyX2ltYWdlID0gaW07XG4gXHRyZXR1cm4gMDtcbmBgYFxuXG5SaWdodCwgdGhpcyBpcyBhYm91dCBmaXhpbmcgYSBidWcsIHdoZXJlIGBmdHJhY2VfbWFuYWdlZGAgd2FzIG5vdCBzZXQgY29ycmVjdGx5IGZvciBtdWx0aS10cmFtcG9saW5lcy4gVGhpcyBoYXMgaW1wbGljYXRpb25zIGZvciBgdW5yZWdpc3Rlcl9mZW50cnlgIGFuZCBgbW9kaWZ5X2ZlbnRyeWAgYmVjYXVzZSB0aGV5IHdvdWxkIHJlbHkgb24gdGhlIGBmdHJhY2VfbWFuYWdlZGAgZmxhZyBiZWluZyBzZXQuIFNvLCBib3RoIG9mIHRoZXNlIGFyZSBnb29kIHRhcmdldHMgdG9vLiBBbHNvLCBgdW5yZWdpc3Rlcl9mZW50cnlgIGlzIGNhbGxlZCBmcm9tIGBicGZfdHJhbXBvbGluZV91cGRhdGVgLiBTbyBsZXQncyBpbmNsdWRlIHRob3NlLlxuXG5Pa2F5LCBzbyB0aGUgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGxvb2sgbGlrZTpcblxuKiAgIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgXG4qICAgYHVucmVnaXN0ZXJfZmVudHJ5YFxuKiAgIGBtb2RpZnlfZmVudHJ5YFxuKiAgIGBicGZfdHJhbXBvbGluZV91cGRhdGVgXG4qICAgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGBcbiogICBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoYFxuKiAgIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgXG5cbldlIGRvbid0IHdhbnQgdGhlIHRhcmdldCBsaXN0IHRvIGJlIHRvbyBsb25nLCBzbyBJJ20gZ29pbmcgdG8gcmVmaW5lIHRoaXMgYSBiaXQsIGJ5IHJlbW92aW5nIGBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2hgLlxuXG5UaGUgZmluYWwgbGlzdCBpczpcblxuKiAgIGByZWdpc3Rlcl9mZW50cnlfbXVsdGlgXG4qICAgYHVucmVnaXN0ZXJfZmVudHJ5YFxuKiAgIGBtb2RpZnlfZmVudHJ5YFxuKiAgIGBicGZfdHJhbXBvbGluZV91cGRhdGVgXG4qICAgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaGBcbiogICBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYFxuXG5UaGF0IGZlZWxzIHJpZ2h0LlxuXG5Gb3IgY29uZmlncywgd2UgaGF2ZTpcblxuKiAgIGBCUEZfU1lTQ0FMTGBcbiogICBgQlBGX0pJVGBcbiogICBgRlVOQ1RJT05fVFJBQ0VSYFxuXG5UaGUgcmVhc29uaW5nIGhlcmUgaXMgdGhhdCB0aGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYGZ0cmFjZV9tYW5hZ2VkYCB3YXNuJ3QgYmVpbmcgc2V0IGNvcnJlY3RseSBmb3IgbXVsdGktdHJhbXBvbGluZXMsIHdoaWNoIGxlZCB0byBpc3N1ZXMgd2l0aCBob3cgYHVucmVnaXN0ZXJfZmVudHJ5YCBhbmQgYG1vZGlmeV9mZW50cnlgIGZ1bmN0aW9uZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIGluIHRoZSBCUEYgc3Vic3lzdGVtLCB3aGljaCBhYnNvbHV0ZWx5IG1ha2VzIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIEFsc28sIGBDT05GSUdfRlRSQUNFYCBpcyBhIG1lbnVjb25maWcsIGJ1dCBgRlVOQ1RJT05fVFJBQ0VSYCBpcyB0aGUgYWN0dWFsIGNvbmZpZyB0aGF0IGVuYWJsZXMgYENPTkZJR19EWU5BTUlDX0ZUUkFDRWAgYW5kIGBDT05GSUdfRlRSQUNFYC4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgbmVlZGVkIGZvciBlbmFibGluZyB0aGUgQlBGIHN5c2NhbGwuIGBDT05GSUdfQlBGX0pJVGAgaXMgbmVjZXNzYXJ5IGZvciB0aGUgQlBGIEpJVCwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHRyYW1wb2xpbmVzIHRvIHdvcmsuXG5cbk9rYXksIEkgdGhpbmsgSSd2ZSBnb3QgdGhpcyBmdWxseSBzY29wZWQuIExldCdcblxuIiwiSW5wdXRUb2tlbnMiOjM3NTEzLCJPdXRwdXRUb2tlbnMiOjIwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwNToyNDoyNy4yNDE4OTI2ODVaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODQwNDc1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkZVTkNUSU9OX1RSQUNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlZ2lzdGVyX2ZlbnRyeV9tdWx0aVwiLFxuICAgIFwidW5yZWdpc3Rlcl9mZW50cnlcIixcbiAgICBcIm1vZGlmeV9mZW50cnlcIixcbiAgICBcImJwZl90cmFtcG9saW5lX3VwZGF0ZVwiLFxuICAgIFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBCUEYgdHJhbXBvbGluZSBsb2dpYyB3aGVyZSBgZnRyYWNlX21hbmFnZWRgIHdhcyBub3Qgc2V0IHRvIHRydWUgd2hlbiByZWdpc3RlcmluZyBhIG11bHRpIGZlbnRyeS4gVGhpcyBjYXVzZWQgaXNzdWVzIHdoZW4gYXR0YWNoaW5nIGEgc2luZ2xlIGZlbnRyeSB0byBhIGZ1bmN0aW9uIHRoYXQgYWxyZWFkeSBoYWQgYSBtdWx0aSBmZW50cnkgYXR0YWNoZWQsIGFzIGB1bnJlZ2lzdGVyX2ZlbnRyeWAgYW5kIGBtb2RpZnlfZmVudHJ5YCByZWx5IG9uIGBmdHJhY2VfbWFuYWdlZGAgYmVpbmcgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkZVTkNUSU9OX1RSQUNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlZ2lzdGVyX2ZlbnRyeV9tdWx0aVwiLFxuICAgIFwidW5yZWdpc3Rlcl9mZW50cnlcIixcbiAgICBcIm1vZGlmeV9mZW50cnlcIixcbiAgICBcImJwZl90cmFtcG9saW5lX3VwZGF0ZVwiLFxuICAgIFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBCUEYgdHJhbXBvbGluZSBsb2dpYyB3aGVyZSBgZnRyYWNlX21hbmFnZWRgIHdhcyBub3Qgc2V0IHRvIHRydWUgd2hlbiByZWdpc3RlcmluZyBhIG11bHRpIGZlbnRyeS4gVGhpcyBjYXVzZWQgaXNzdWVzIHdoZW4gYXR0YWNoaW5nIGEgc2luZ2xlIGZlbnRyeSB0byBhIGZ1bmN0aW9uIHRoYXQgYWxyZWFkeSBoYWQgYSBtdWx0aSBmZW50cnkgYXR0YWNoZWQsIGFzIGB1bnJlZ2lzdGVyX2ZlbnRyeWAgYW5kIGBtb2RpZnlfZmVudHJ5YCByZWx5IG9uIGBmdHJhY2VfbWFuYWdlZGAgYmVpbmcgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8clj[1] Phase: Succeeded StartedAt: 2026-07-12 05:24:38 +0000 UTC FinishedAt: 2026-07-12 05:24:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-12 05:24:38 +0000 UTC FinishedAt: 2026-07-12 05:24:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2] Phase: Succeeded StartedAt: 2026-07-12 05:24:38 +0000 UTC FinishedAt: 2026-07-12 09:39:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-12 05:24:38 +0000 UTC FinishedAt: 2026-07-12 09:39:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-12 05:24:38 +0000 UTC FinishedAt: 2026-07-12 05:24:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-12 05:24:38 +0000 UTC FinishedAt: 2026-07-12 05:24:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc8clj/series-workflowc8clj-convert-artifact-3503067231/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-12 05:24:49 +0000 UTC FinishedAt: 2026-07-12 05:56:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-12 05:24:49 +0000 UTC FinishedAt: 2026-07-12 05:56:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b0751ca9-a42f-44af-9956-ab6351eb4a75,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-workflowc8clj/series-workflowc8clj-convert-artifact-3503067231/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": "a522d7af-3297-45e1-a2c2-a5c3447674ee", "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-workflowc8clj/series-workflowc8clj-build-action-1574925669/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-12 05:24:49 +0000 UTC FinishedAt: 2026-07-12 05:55:59 +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:*b0751ca9-a42f-44af-9956-ab6351eb4a75,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-workflowc8clj/series-workflowc8clj-convert-artifact-3503067231/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": "a522d7af-3297-45e1-a2c2-a5c3447674ee", "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-workflowc8clj/series-workflowc8clj-build-action-1574925669/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-12 05:56:09 +0000 UTC FinishedAt: 2026-07-12 05:56:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-12 05:56:09 +0000 UTC FinishedAt: 2026-07-12 05:56:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-12 05:56:09 +0000 UTC FinishedAt: 2026-07-12 05:56:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-12 05:56:09 +0000 UTC FinishedAt: 2026-07-12 05:56:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc8clj/series-workflowc8clj-convert-artifact-2927454446/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-12 05:56:19 +0000 UTC FinishedAt: 2026-07-12 05:58:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-12 05:56:19 +0000 UTC FinishedAt: 2026-07-12 05:58:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a522d7af-3297-45e1-a2c2-a5c3447674ee,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-workflowc8clj/series-workflowc8clj-build-action-1574925669/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-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-12 05:58:32 +0000 UTC FinishedAt: 2026-07-12 05:58:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-12 05:58:32 +0000 UTC FinishedAt: 2026-07-12 05:58:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-12 05:58:32 +0000 UTC FinishedAt: 2026-07-12 06:34:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-12 05:58:32 +0000 UTC FinishedAt: 2026-07-12 06:34:54 +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:*b0751ca9-a42f-44af-9956-ab6351eb4a75,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-workflowc8clj/series-workflowc8clj-convert-artifact-2927454446/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": "6988add8-dc31-4cd7-b045-fc876f208568", "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-workflowc8clj/series-workflowc8clj-build-action-2762422786/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-12 05:58:32 +0000 UTC FinishedAt: 2026-07-12 06:34:44 +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:*b0751ca9-a42f-44af-9956-ab6351eb4a75,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-workflowc8clj/series-workflowc8clj-convert-artifact-2927454446/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": "6988add8-dc31-4cd7-b045-fc876f208568", "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-workflowc8clj/series-workflowc8clj-build-action-2762422786/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-12 06:34:54 +0000 UTC FinishedAt: 2026-07-12 06:34:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-12 06:34:54 +0000 UTC FinishedAt: 2026-07-12 06:34:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-12 06:34:54 +0000 UTC FinishedAt: 2026-07-12 06:37:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-12 06:34:54 +0000 UTC FinishedAt: 2026-07-12 06:36:56 +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:*6988add8-dc31-4cd7-b045-fc876f208568,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-workflowc8clj/series-workflowc8clj-build-action-2762422786/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-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-12 06:37:05 +0000 UTC FinishedAt: 2026-07-12 09:39:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-12 06:37:05 +0000 UTC FinishedAt: 2026-07-12 09:39:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"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:*a522d7af-3297-45e1-a2c2-a5c3447674ee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6988add8-dc31-4cd7-b045-fc876f208568,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-workflowc8clj/series-workflowc8clj-build-action-1574925669/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-workflowc8clj/series-workflowc8clj-build-action-2762422786/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-12 06:37:05 +0000 UTC FinishedAt: 2026-07-12 06:37:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-12 06:37:05 +0000 UTC FinishedAt: 2026-07-12 06:37:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"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-workflowc8clj/series-workflowc8clj-convert-artifact-4104462739/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-12 06:37:05 +0000 UTC FinishedAt: 2026-07-12 06:37:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-12 06:37:05 +0000 UTC FinishedAt: 2026-07-12 06:37:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-12 06:37:05 +0000 UTC FinishedAt: 2026-07-12 06:37:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-12 06:37:15 +0000 UTC FinishedAt: 2026-07-12 09:39:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8clj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["register_fentry_multi","unregister_fentry","modify_fentry","bpf_trampoline_update","bpf_trampoline_multi_attach","bpf_trampoline_multi_detach"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"520d7d7942025a58a0c79a61b905a556cf3cb524","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","FUNCTION_TRACER"],"series_id":"25e22dd8-a5c7-4b91-9d47-12eadb2f98dd","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-12 06:37:15 +0000 UTC FinishedAt: 2026-07-12 09:39:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a522d7af-3297-45e1-a2c2-a5c3447674ee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6988add8-dc31-4cd7-b045-fc876f208568,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-workflowc8clj/series-workflowc8clj-build-action-1574925669/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-workflowc8clj/series-workflowc8clj-build-action-2762422786/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-workflowc8clj/series-workflowc8clj-convert-artifact-4104462739/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,}