Name: series-workflowkkbx9 Phase: Succeeded StartedAt: 2026-07-05 17:55:22 +0000 UTC FinishedAt: 2026-07-05 22:24:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[0] Phase: Succeeded StartedAt: 2026-07-05 17:55:22 +0000 UTC FinishedAt: 2026-07-05 18:09:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[0].run-triage Phase: Succeeded StartedAt: 2026-07-05 17:55:22 +0000 UTC FinishedAt: 2026-07-05 18:09:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "230f0f19b98d9b512e4b0703405eb7dc73c6f91e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "CMA" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "230f0f19b98d9b512e4b0703405eb7dc73c6f91e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "CMA" ], "series_id": "1e008fa5-af8d-4691-8525-91d69f0f7f3b" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "alloc_fresh_hugetlb_folio", "hugetlb_cma_alloc_frozen_folio", "alloc_surplus_hugetlb_folio", "alloc_migrate_hugetlb_folio", "alloc_and_dissolve_hugetlb_folio", "alloc_gigantic_frozen_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtDTUEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2h1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7YWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbm9kZSBtYXNrIGhhbmRsaW5nIGluIGh1Z2V0bGIgYW5kIGh1Z2V0bGJfY21hIGFsbG9jYXRpb24gcGF0aHMuIEl0IHJlc3RyaWN0cyBhbGxvY2F0aW9ucyB0byBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIGBubWFza2AgaXMgTlVMTCBhbmQgYWRkcyBhIGBub2RlX2lzc2V0YCBjaGVjayBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWY3YzQ5ZjgyOWU5MDdhYWVlMjBlMDcwYmI5NWMzNjM5MTRjMjU2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDUgMTg6MDg6NTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jXG5pbmRleCA1NzEyMTJiODA4MzVlYy4uZWU2N2VhMjljMDAzNTEgMTAwNjQ0XG4tLS0gYS9tbS9odWdldGxiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2V0bGIuY1xuQEAgLTE4NjQsNiAmIzQzOzE4NjQsMTggQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuIFx0XHRnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2spXG4ge1xuIFx0c3RydWN0IGZvbGlvICpmb2xpbztcbiYjNDM7XHRub2RlbWFza190IGxvY2FsX25vZGVfbWFzaztcbiYjNDM7XG4mIzQzO1x0aWYgKCFubWFzaykge1xuJiM0MztcdFx0dW5zaWduZWQgaW50IGNwdXNldF9tZW1zX2Nvb2tpZTtcbiYjNDM7XG4mIzQzO1x0XHRkbyB7XG4mIzQzO1x0XHRcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XG4mIzQzO1x0XHRcdGxvY2FsX25vZGVfbWFzayA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcbiYjNDM7XHRcdH0gd2hpbGUgKHJlYWRfbWVtc19hbGxvd2VkX3JldHJ5KGNwdXNldF9tZW1zX2Nvb2tpZSkpO1xuJiM0MztcbiYjNDM7XHRcdG5tYXNrID0gXHUwMDI2bG9jYWxfbm9kZV9tYXNrO1xuJiM0MztcdH1cbiBcbiBcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrLCBOVUxMKTtcbiBcdGlmIChmb2xpbylcbmRpZmYgLS1naXQgYS9tbS9odWdldGxiX2NtYS5jIGIvbW0vaHVnZXRsYl9jbWEuY1xuaW5kZXggMzkzNDRkNmM3OGQ4NGUuLjc5ZGJkMGJhYWZhM2U0IDEwMDY0NFxuLS0tIGEvbW0vaHVnZXRsYl9jbWEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZXRsYl9jbWEuY1xuQEAgLTM0LDcgJiM0MzszNCw3IEBAIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG4gXHRpZiAoIWh1Z2V0bGJfY21hX3NpemUpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuLVx0aWYgKGh1Z2V0bGJfY21hW25pZF0pXG4mIzQzO1x0aWYgKGh1Z2V0bGJfY21hW25pZF0gXHUwMDI2XHUwMDI2IG5vZGVfaXNzZXQobmlkLCAqbm9kZW1hc2spKVxuIFx0XHRwYWdlID0gY21hX2FsbG9jX2Zyb3plbl9jb21wb3VuZChodWdldGxiX2NtYVtuaWRdLCBvcmRlcik7XG4gXG4gXHRpZiAoIXBhZ2UgXHUwMDI2XHUwMDI2ICEoZ2ZwX21hc2sgXHUwMDI2IF9fR0ZQX1RISVNOT0RFKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtDTUEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2h1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7YWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbm9kZSBtYXNrIGhhbmRsaW5nIGluIGh1Z2V0bGIgYW5kIGh1Z2V0bGJfY21hIGFsbG9jYXRpb24gcGF0aHMuIEl0IHJlc3RyaWN0cyBhbGxvY2F0aW9ucyB0byBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIGBubWFza2AgaXMgTlVMTCBhbmQgYWRkcyBhIGBub2RlX2lzc2V0YCBjaGVjayBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZjdjNDlmODI5ZTkwN2FhZWUyMGUwNzBiYjk1YzM2MzkxNGMyNTY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgNSAxODowODo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuYwppbmRleCA1NzEyMTJiODA4MzVlYy4uZWU2N2VhMjljMDAzNTEgMTAwNjQ0Ci0tLSBhL21tL2h1Z2V0bGIuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdldGxiLmMKQEAgLTE4NjQsNiAmIzQzOzE4NjQsMTggQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLAogCQlnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2spCiB7CiAJc3RydWN0IGZvbGlvICpmb2xpbzsKJiM0MzsJbm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2s7CiYjNDM7CiYjNDM7CWlmICghbm1hc2spIHsKJiM0MzsJCXVuc2lnbmVkIGludCBjcHVzZXRfbWVtc19jb29raWU7CiYjNDM7CiYjNDM7CQlkbyB7CiYjNDM7CQkJY3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTsKJiM0MzsJCQlsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7CiYjNDM7CQl9IHdoaWxlIChyZWFkX21lbXNfYWxsb3dlZF9yZXRyeShjcHVzZXRfbWVtc19jb29raWUpKTsKJiM0MzsKJiM0MzsJCW5tYXNrID0gJmFtcDtsb2NhbF9ub2RlX21hc2s7CiYjNDM7CX0KIAogCWZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrLCBOVUxMKTsKIAlpZiAoZm9saW8pCmRpZmYgLS1naXQgYS9tbS9odWdldGxiX2NtYS5jIGIvbW0vaHVnZXRsYl9jbWEuYwppbmRleCAzOTM0NGQ2Yzc4ZDg0ZS4uNzlkYmQwYmFhZmEzZTQgMTAwNjQ0Ci0tLSBhL21tL2h1Z2V0bGJfY21hLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZXRsYl9jbWEuYwpAQCAtMzQsNyAmIzQzOzM0LDcgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzaywKIAlpZiAoIWh1Z2V0bGJfY21hX3NpemUpCiAJCXJldHVybiBOVUxMOwogCi0JaWYgKGh1Z2V0bGJfY21hW25pZF0pCiYjNDM7CWlmIChodWdldGxiX2NtYVtuaWRdICZhbXA7JmFtcDsgbm9kZV9pc3NldChuaWQsICpub2RlbWFzaykpCiAJCXBhZ2UgPSBjbWFfYWxsb2NfZnJvemVuX2NvbXBvdW5kKGh1Z2V0bGJfY21hW25pZF0sIG9yZGVyKTsKIAogCWlmICghcGFnZSAmYW1wOyZhbXA7ICEoZ2ZwX21hc2sgJmFtcDsgX19HRlBfVEhJU05PREUpKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxODMKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBIdWdldGxiIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBIdWdlVExCIGNvZGUsIHNwZWNpZmljYWxseSBpbiBgbW0vaHVnZXRsYi5jYCBhbmQgYG1tL2h1Z2V0bGJfY21hLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSByaWdodCBpbiBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLiBUaGUgY2hhbmdlIGluIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCB1c2luZyBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIGBubWFza2AgaXMgTlVMTCBpcyBpbnRlcmVzdGluZy4gSXQgc291bmRzIGxpa2Ugd2UmIzM5O3JlIGR5bmFtaWNhbGx5IG1hbmFnaW5nIG1lbW9yeSBhbGxvY2F0aW9uIGJhc2VkIG9uIENQVSBzZXRzLCB3aGljaCBjb3VsZCBiZSBhbiBpbXBvcnRhbnQgb3B0aW1pemF0aW9uIG9yIGNvbnN0cmFpbnQuIFRoZW4sIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLCB0aGV5IGFkZGVkIGEgbm9kZSBjaGVjayBiZWZvcmUgY2FsbGluZyBgY21hX2FsbG9jX2Zyb3plbl9jb21wb3VuZGAuIFRoYXQmIzM5O3MgYSBzcGF0aWFsIGNvbnNpZGVyYXRpb24sIHNvIGl0JiMzOTtzIGxpa2VseSByZWxhdGVkIHRvIE5VTUEgY29uZmlndXJhdGlvbnMgb3IgbWVtb3J5IHBsYWNlbWVudCBwb2xpY3ksIG1ha2luZyBzdXJlIHRvIGFsbG9jYXRlIGZyb20gYWxsb3dlZCBub2Rlcy4KCkkgbmVlZCB0byBxdWlja2x5IGZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMgLSBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgaW4gYG1tL2h1Z2V0bGIuY2AgYW5kIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGluIGBtbS9odWdldGxiX2NtYS5jYC4gSSBoYXZlIHRvIGdyYXNwIHRoZSBpbnRlbnQgb2YgdGhlIGNoYW5nZXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBjb2RlIGJhc2UuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseS4gSSYjMzk7bGwgbmVlZCBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIHRoYXQmIzM5O3MgYSBnaXZlbi4gSSYjMzk7bSBhc3N1bWluZyBgQ09ORklHX0NNQWAgaXMgYWxzbyBuZWNlc3NhcnkuIFdoYXQgYWJvdXQgYENPTkZJR19IVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUGA/IEl04oCZcyBub3QgY2xlYXIsIGJ1dCBpdCBjb3VsZCBiZSByZWxldmFudCwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLgoKQWxyaWdodCwgSSYjMzk7bGwgdXNlIGBncmVwYCB0byBxdWlja2x5IGxvY2F0ZSBhbGwgcmVmZXJlbmNlcyB0byBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBhbmQgYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGFjcm9zcyB0aGUgY29kZSBiYXNlIHRvIGhlbHAgY29udGV4dHVhbGl6ZSB0aGVzZSBjaGFuZ2VzLiBVbmRlcnN0YW5kaW5nIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGZyb20gaXMga2V5IHRvIHNlZWluZyB0aGUgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vaHVnZXRsYi5jPTE3OTE9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfYnVkZHlfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG4tLVxubW0vaHVnZXRsYi5jLTE4MzUtXG5tbS9odWdldGxiLmM6MTgzNjpzdGF0aWMgc3RydWN0IGZvbGlvICpvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbm1tL2h1Z2V0bGIuYy0xODM3LVx0XHRnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2ssXG4tLVxubW0vaHVnZXRsYi5jLTE4NjItICovXG5tbS9odWdldGxiLmM6MTg2MzpzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG5tbS9odWdldGxiLmMtMTg2NC1cdFx0Z2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsIG5vZGVtYXNrX3QgKm5tYXNrKVxuLS1cbm1tL2h1Z2V0bGIuYy0xODc5LVxubW0vaHVnZXRsYi5jOjE4ODA6XHRmb2xpbyA9IG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLCBubWFzaywgTlVMTCk7XG5tbS9odWdldGxiLmMtMTg4MS1cdGlmIChmb2xpbylcbi0tXG5tbS9odWdldGxiLmM9MTkwOD1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19wb29sX2h1Z2VfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMTkxOC1cbm1tL2h1Z2V0bGIuYzoxOTE5Olx0XHRmb2xpbyA9IG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbm9kZSxcbm1tL2h1Z2V0bGIuYy0xOTIwLVx0XHRcdFx0XHRub2Rlc19hbGxvd2VkLCBub2RlX2FsbG9jX25vcmV0cnkpO1xuLS1cbm1tL2h1Z2V0bGIuYz0yMDg4PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX3N1cnBsdXNfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbm1tL2h1Z2V0bGIuYy0yMTAwLVxubW0vaHVnZXRsYi5jOjIxMDE6XHRmb2xpbyA9IGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCwgbm1hc2spO1xubW0vaHVnZXRsYi5jLTIxMDItXHRpZiAoIWZvbGlvKVxuLS1cbm1tL2h1Z2V0bGIuYz0yMTM2PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX21pZ3JhdGVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBnZnBfdCBnZnBfbWFzayxcbi0tXG5tbS9odWdldGxiLmMtMjE0My1cbm1tL2h1Z2V0bGIuYzoyMTQ0Olx0Zm9saW8gPSBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrKTtcbm1tL2h1Z2V0bGIuYy0yMTQ1LVx0aWYgKCFmb2xpbylcbi0tXG5tbS9odWdldGxiLmM9MjY1Mz1zdGF0aWMgaW50IGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqb2xkX2ZvbGlvLFxuLS1cbm1tL2h1Z2V0bGIuYy0yNjk4LVx0XHRcdGdmcF9tYXNrID0gaHRsYl9hbGxvY19tYXNrKGgpIHwgX19HRlBfVEhJU05PREU7XG5tbS9odWdldGxiLmM6MjY5OTpcdFx0XHRuZXdfZm9saW8gPSBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLFxubW0vaHVnZXRsYi5jLTI3MDAtXHRcdFx0XHRcdFx0XHQgICAgICBuaWQsIE5VTEwpO1xuLS1cbm1tL2h1Z2V0bGIuYz0zMzg0PXN0YXRpYyB2b2lkIF9faW5pdCBodWdldGxiX2hzdGF0ZV9hbGxvY19wYWdlc19vbmVub2RlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBuaWQpXG4tLVxubW0vaHVnZXRsYi5jLTMzOTctXG5tbS9odWdldGxiLmM6MzM5ODpcdFx0XHRmb2xpbyA9IG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLFxubW0vaHVnZXRsYi5jLTMzOTktXHRcdFx0XHRcdFx1MDAyNm5vZGVfc3RhdGVzW05fTUVNT1JZXSwgTlVMTCk7XG4tLVxubW0vaHVnZXRsYi5jLTM0MDMtXHRcdFx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZmb2xpb19saXN0KTtcbm1tL2h1Z2V0bGIuYzozNDA0Olx0XHRcdFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCxcbm1tL2h1Z2V0bGIuYy0zNDA1LVx0XHRcdFx0XHRcdFx1MDAyNm5vZGVfc3RhdGVzW05fTUVNT1JZXSwgTlVMTCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYz0xMzYwPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYy0xMzY0LVxubW0vaHVnZXRsYi5jOjEzNjU6XHRmb2xpbyA9IGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhvcmRlciwgZ2ZwX21hc2ssIG5pZCwgbm9kZW1hc2spO1xubW0vaHVnZXRsYi5jLTEzNjYtXHRpZiAoZm9saW8pXG4tLVxubW0vaHVnZXRsYl9jbWEuYz0yMT12b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vaHVnZXRsYl9jbWEuYy0yNi1cbm1tL2h1Z2V0bGJfY21hLmM6Mjc6c3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbm1tL2h1Z2V0bGJfY21hLmMtMjgtXHRcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxuLS1cbm1tL2h1Z2V0bGJfY21hLmg9Nj12b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xubW0vaHVnZXRsYl9jbWEuaDo3OnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG5tbS9odWdldGxiX2NtYS5oLTgtXHRcdFx0XHQgICAgICBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzayk7XG4tLVxubW0vaHVnZXRsYl9jbWEuaD0xNj1zdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiX2NtYS5oLTE5LVxubW0vaHVnZXRsYl9jbWEuaDoyMDpzdGF0aWMgaW5saW5lIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlcixcbm1tL2h1Z2V0bGJfY21hLmgtMjEtXHRcdGdmcF90IGdmcF9tYXNrLFx0aW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQxMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFsbG9jYXRpb24gUGF0aHMgZm9yIEh1Z2UgUGFnZXMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgYW5kIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLiBSaWdodCBvZmYgdGhlIGJhdCwgdGhhdCB0ZWxscyBtZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBjb3JlIGFsbG9jYXRpb24gZnVuY3Rpb25zIGZvciBIdWdlIFBhZ2VzLiBJdCYjMzk7cyBjcml0aWNhbCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHBhdGhzIGhlcmUuIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBsb29rcyBsaWtlIHRoZSBtb3JlIGdlbmVyYWwtcHVycG9zZSBhbGxvY2F0b3IsIGFuZCBpdCYjMzk7cyBjYWxsZWQgYnkgYGFsbG9jX3N1cnBsdXNfaHVnZXRsYl9mb2xpb2AsIGBhbGxvY19taWdyYXRlX2h1Z2V0bGJfZm9saW9gLCBhbmQgYGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvYC4gVGhhdCBtYWtlcyBzZW5zZTsgdGhvc2UgZnVuY3Rpb25zIHByb2JhYmx5IGhhbmRsZSBzcGVjaWZpYyBlZGdlIGNhc2VzOiBzdXJwbHVzIHBhZ2VzLCBtaWdyYXRpb24sIGFuZCBwYWdlIGRpc3NvbHV0aW9uLCByZXNwZWN0aXZlbHkuIE9uIHRoZSBvdGhlciBoYW5kLCBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBpcyBvbmx5IGNhbGxlZCBieSBgYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvYC4gVGhpcyBzdWdnZXN0cyBpdCYjMzk7cyByZWxhdGVkIHRvIENNQSAoQ29udGlndW91cyBNZW1vcnkgQWxsb2NhdG9yKSBhbGxvY2F0aW9ucyBmb3IgZ2lnYW50aWMgcGFnZXMsIGxpa2VseSB3aGVyZSB0aGUgcGFnZXMgaGF2ZSBiZWVuIHByZS1mcm96ZW4gaW4gcGxhY2UsIG1heWJlIGR1cmluZyBib290IG9yIHN5c3RlbSBpbml0LiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgYWxsb2NhdGlvbiBmbG93LgoKR2l2ZW4gdGhlIENNQSBpbnZvbHZlbWVudCwgSSBzaG91bGQgY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIHNlZSBob3cgYGh1Z2V0bGJfY21hLmNgIGlzIGVuYWJsZWQuIEl0JiMzOTtzIHByb2JhYmx5IGNvbmRpdGlvbmFsLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYG1tL0tjb25maWdgIG9yIHBvc3NpYmx5IGV2ZW4gYG1tL01ha2VmaWxlYCB0byBzZWUgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdHJpZ2dlciB0aGUgY29tcGlsYXRpb24gb2YgdGhhdCBtb2R1bGUuIFRoYXQgd2lsbCBnaXZlIG1lIGltbWVkaWF0ZSBjb250ZXh0IGFyb3VuZCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHByZXJlcXVpc2l0ZXMgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIGZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h1Z2V0bGJfY21hJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0PTk1PUtlcm5lbCBwYXJhbWV0ZXJzXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA2My1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjIwNjQ6XHRodWdldGxiX2NtYT1cdFtIVyxDTUEsRUFSTFldIFRoZSBzaXplIG9mIGEgQ01BIGFyZWEgdXNlZCBmb3IgYWxsb2NhdGlvblxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA2NS1cdFx0XHRvZiBnaWdhbnRpYyBodWdlcGFnZXMuIE9yIHVzaW5nIG5vZGUgZm9ybWF0LCB0aGUgc2l6ZVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTIwNzctXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dDoyMDc4Olx0aHVnZXRsYl9jbWFfb25seT1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTIwNzktXHRcdFx0W0hXLENNQSxFQVJMWV0gV2hlbiBhbGxvY2F0aW5nIG5ldyBIdWdlVExCIHBhZ2VzLCBvbmx5XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA4MS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjIwODI6XHRcdFx0VGhpcyBvcHRpb24gZG9lcyBub3RoaW5nIGlmIGh1Z2V0bGJfY21hPSBpcyBub3QgYWxzb1xuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA4My1cdFx0XHRzcGVjaWZpZWQuXG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2N4bC9saW51eC9lYXJseS1ib290LnJzdD0xMjY9b24gTlVNQSBub2RlcyB0aGF0IGFyZSBub3Qgb25saW5lIGR1cmluZyBlYXJseSBib290LiA6OlxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2N4bC9saW51eC9lYXJseS1ib290LnJzdC0xMjctXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvY3hsL2xpbnV4L2Vhcmx5LWJvb3QucnN0OjEyODogIHZvaWQgX19pbml0IGh1Z2V0bGJfY21hX3Jlc2VydmUodm9pZCkge1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2N4bC9saW51eC9lYXJseS1ib290LnJzdC0xMjktICAgIGlmICghbm9kZV9vbmxpbmUobmlkKSlcbi0tXG5NQUlOVEFJTkVSUz0xMjAxOD1GOlx0bW0vaHVnZXRsYl9jZ3JvdXAuY1xuTUFJTlRBSU5FUlM6MTIwMTk6RjpcdG1tL2h1Z2V0bGJfY21hLmNcbk1BSU5UQUlORVJTOjEyMDIwOkY6XHRtbS9odWdldGxiX2NtYS5oXG5NQUlOVEFJTkVSUy0xMjAyMS1GOlx0bW0vaHVnZXRsYl9zeXNjdGwuY1xuLS1cbmFyY2gvYXJtNjQvbW0vaHVnZXRsYnBhZ2UuYy0zOC0jaWZkZWYgQ09ORklHX0NNQVxuYXJjaC9hcm02NC9tbS9odWdldGxicGFnZS5jOjM5OnVuc2lnbmVkIGludCBhcmNoX2h1Z2V0bGJfY21hX29yZGVyKHZvaWQpXG5hcmNoL2FybTY0L21tL2h1Z2V0bGJwYWdlLmMtNDAte1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9odWdldGxicGFnZS5jPTIwMT1hcmNoX2luaXRjYWxsKGh1Z2V0bGJwYWdlX2luaXQpO1xuYXJjaC9wb3dlcnBjL21tL2h1Z2V0bGJwYWdlLmMtMjAyLVxuYXJjaC9wb3dlcnBjL21tL2h1Z2V0bGJwYWdlLmM6MjAzOnVuc2lnbmVkIGludCBfX2luaXQgYXJjaF9odWdldGxiX2NtYV9vcmRlcih2b2lkKVxuYXJjaC9wb3dlcnBjL21tL2h1Z2V0bGJwYWdlLmMtMjA0LXtcbi0tXG5hcmNoL3Jpc2N2L21tL2h1Z2V0bGJwYWdlLmM9NDQ4PWFyY2hfaW5pdGNhbGwoZ2lnYW50aWNfcGFnZXNfaW5pdCk7XG4tLVxuYXJjaC9yaXNjdi9tbS9odWdldGxicGFnZS5jLTQ1MC1cbmFyY2gvcmlzY3YvbW0vaHVnZXRsYnBhZ2UuYzo0NTE6dW5zaWduZWQgaW50IF9faW5pdCBhcmNoX2h1Z2V0bGJfY21hX29yZGVyKHZvaWQpXG5hcmNoL3Jpc2N2L21tL2h1Z2V0bGJwYWdlLmMtNDUyLXtcbi0tXG5hcmNoL3MzOTAvbW0vaHVnZXRsYnBhZ2UuYz0yMjU9Ym9vbCBfX2luaXQgYXJjaF9odWdldGxiX3ZhbGlkX3NpemUodW5zaWduZWQgbG9uZyBzaXplKVxuLS1cbmFyY2gvczM5MC9tbS9odWdldGxicGFnZS5jLTIzNC1cbmFyY2gvczM5MC9tbS9odWdldGxicGFnZS5jOjIzNTp1bnNpZ25lZCBpbnQgX19pbml0IGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIodm9pZClcbmFyY2gvczM5MC9tbS9odWdldGxicGFnZS5jLTIzNi17XG4tLVxuYXJjaC94ODYvbW0vaHVnZXRsYnBhZ2UuYz00Mj1hcmNoX2luaXRjYWxsKGdpZ2FudGljX3BhZ2VzX2luaXQpO1xuLS1cbmFyY2gveDg2L21tL2h1Z2V0bGJwYWdlLmMtNDUtXG5hcmNoL3g4Ni9tbS9odWdldGxicGFnZS5jOjQ2OnVuc2lnbmVkIGludCBfX2luaXQgYXJjaF9odWdldGxiX2NtYV9vcmRlcih2b2lkKVxuYXJjaC94ODYvbW0vaHVnZXRsYnBhZ2UuYy00Ny17XG4tLVxuaW5jbHVkZS9saW51eC9odWdldGxiLmg9Mjc2PXZvaWQgaHVnZXRsYl9zcGxpdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKTtcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTI3Ny1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjI3ODp1bnNpZ25lZCBpbnQgYXJjaF9odWdldGxiX2NtYV9vcmRlcih2b2lkKTtcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTI3OS1cbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaD0xMjk4PXN0YXRpYyBpbmxpbmUgc3BpbmxvY2tfdCAqaHVnZV9wdGVfbG9jayhzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTEzMDgtI2lmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NNQSlcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjEzMDk6ZXh0ZXJuIHZvaWQgX19pbml0IGh1Z2V0bGJfY21hX3Jlc2VydmUodm9pZCk7XG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0xMzEwLSNlbHNlXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaDoxMzExOnN0YXRpYyBpbmxpbmUgX19pbml0IHZvaWQgaHVnZXRsYl9jbWFfcmVzZXJ2ZSh2b2lkKVxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMTMxMi17XG4tLVxubW0vTWFrZWZpbGU9ODI9aWZkZWYgQ09ORklHX0NNQVxubW0vTWFrZWZpbGU6ODM6b2JqLSQoQ09ORklHX0hVR0VUTEJGUylcdCYjNDM7PSBodWdldGxiX2NtYS5vXG5tbS9NYWtlZmlsZS04NC1lbmRpZlxuLS1cbm1tL2NtYS5oPTg9c3RydWN0IGNtYV9rb2JqZWN0IHtcbi0tXG5tbS9jbWEuaC0xNC0gKiBNdWx0aS1yYW5nZSBzdXBwb3J0LiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgdGhlIHNpemUgb2YgdGhlIGFsbG9jYXRpb25cbm1tL2NtYS5oOjE1OiAqIGlzIG5vdCBleHBlY3RlZCB0byBiZSBsYXJnZXIgdGhhbiB0aGUgYWxpZ25tZW50IChsaWtlIHdpdGggaHVnZXRsYl9jbWEpLFxubW0vY21hLmgtMTYtICogYW5kIHRoZSB0b3RhbCBhbW91bnQgb2YgbWVtb3J5IHJlcXVlc3RlZCwgd2hpbGUgc21hbGxlciB0aGFuIHRoZSB0b3RhbFxuLS1cbm1tL2h1Z2V0bGIuYy01MC0jaW5jbHVkZSBcJiMzNDtodWdldGxiX3ZtZW1tYXAuaFwmIzM0O1xubW0vaHVnZXRsYi5jOjUxOiNpbmNsdWRlIFwmIzM0O2h1Z2V0bGJfY21hLmhcJiMzNDtcbm1tL2h1Z2V0bGIuYy01Mi0jaW5jbHVkZSBcJiMzNDtodWdldGxiX2ludGVybmFsLmhcJiMzNDtcbi0tXG5tbS9odWdldGxiLmM9MTM2MD1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbi0tXG5tbS9odWdldGxiLmMtMTM2NC1cbm1tL2h1Z2V0bGIuYzoxMzY1Olx0Zm9saW8gPSBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8ob3JkZXIsIGdmcF9tYXNrLCBuaWQsIG5vZGVtYXNrKTtcbm1tL2h1Z2V0bGIuYy0xMzY2LVx0aWYgKGZvbGlvKVxuLS1cbm1tL2h1Z2V0bGIuYy0xMzY4LVxubW0vaHVnZXRsYi5jOjEzNjk6XHRpZiAoaHVnZXRsYl9jbWFfZXhjbHVzaXZlX2FsbG9jKCkpXG5tbS9odWdldGxiLmMtMTM3MC1cdFx0cmV0dXJuIE5VTEw7XG4tLVxubW0vaHVnZXRsYi5jPTE0NTg9c3RhdGljIHZvaWQgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbm1tL2h1Z2V0bGIuYy0xNTA3LVx0Vk1fQlVHX09OX0ZPTElPKGZvbGlvX3JlZl9jb3VudChmb2xpbyksIGZvbGlvKTtcbm1tL2h1Z2V0bGIuYzoxNTA4Olx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYl9jbWEoZm9saW8pKVxubW0vaHVnZXRsYi5jOjE1MDk6XHRcdGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKGZvbGlvKTtcbm1tL2h1Z2V0bGIuYy0xNTEwLVx0ZWxzZVxuLS1cbm1tL2h1Z2V0bGIuYz0zMDQwPXN0YXRpYyBfX2luaXQgdm9pZCAqYWxsb2NfYm9vdG1lbShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgbmlkLCBib29sIG5vZGVfZXhhY3QpXG4tLVxubW0vaHVnZXRsYi5jLTMwNDUtXHRpZiAoaHVnZXRsYl9lYXJseV9jbWEoaCkpXG5tbS9odWdldGxiLmM6MzA0NjpcdFx0bSA9IGh1Z2V0bGJfY21hX2FsbG9jX2Jvb3RtZW0oaCwgXHUwMDI2bGlzdG5vZGUsIG5vZGVfZXhhY3QpO1xubW0vaHVnZXRsYi5jLTMwNDctXHRlbHNlIHtcbi0tXG5tbS9odWdldGxiLmM9MzE5Mj1zdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9ib290bWVtX2luaXRfbWlncmF0ZXR5cGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS9odWdldGxiLmMtMzE5OS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3BhZ2VzOyBpICYjNDM7PSBwYWdlYmxvY2tfbnJfcGFnZXMpIHtcbm1tL2h1Z2V0bGIuYzozMjAwOlx0XHRpZiAoZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpXG5tbS9odWdldGxiLmMtMzIwMS1cdFx0XHRpbml0X2NtYV9wYWdlYmxvY2soZm9saW9fcGFnZShmb2xpbywgaSkpO1xuLS1cbm1tL2h1Z2V0bGIuYz0zMjkzPXN0YXRpYyB2b2lkIF9faW5pdCBnYXRoZXJfYm9vdG1lbV9wcmVhbGxvY19ub2RlKHVuc2lnbmVkIGxvbmcgbmlkKVxuLS1cbm1tL2h1Z2V0bGIuYy0zMzM4LVx0XHRpZiAoaHVnZXRsYl9ib290bWVtX3BhZ2VfZWFybHljbWEobSkpXG5tbS9odWdldGxiLmM6MzMzOTpcdFx0XHRmb2xpb19zZXRfaHVnZXRsYl9jbWEoZm9saW8pO1xubW0vaHVnZXRsYi5jLTMzNDAtXG4tLVxubW0vaHVnZXRsYi5jLTMzNTAtXHRcdCAqL1xubW0vaHVnZXRsYi5jOjMzNTE6XHRcdGlmICghZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpXG5tbS9odWdldGxiLmMtMzM1Mi1cdFx0XHRhZGp1c3RfbWFuYWdlZF9wYWdlX2NvdW50KHBhZ2UsIHBhZ2VzX3Blcl9odWdlX3BhZ2UoaCkpO1xuLS1cbm1tL2h1Z2V0bGIuYz0zNTc3PXN0YXRpYyB2b2lkIF9faW5pdCBodWdldGxiX2hzdGF0ZV9hbGxvY19wYWdlcyhzdHJ1Y3QgaHN0YXRlICpoKVxuLS1cbm1tL2h1Z2V0bGIuYy0zNTg0LVx0ICovXG5tbS9odWdldGxiLmM6MzU4NTpcdGlmIChoc3RhdGVfaXNfZ2lnYW50aWMoaCkgXHUwMDI2XHUwMDI2IGh1Z2V0bGJfY21hX3RvdGFsX3NpemUoKSBcdTAwMjZcdTAwMjZcbm1tL2h1Z2V0bGIuYy0zNTg2LVx0ICAgICFodWdldGxiX2Vhcmx5X2NtYShoKSkge1xubW0vaHVnZXRsYi5jOjM1ODc6XHRcdHByX3dhcm5fb25jZShcJiMzNDtIdWdlVExCOiBodWdldGxiX2NtYSBpcyBlbmFibGVkLCBza2lwIGJvb3QgdGltZSBhbGxvY2F0aW9uXFxuXCYjMzQ7KTtcbm1tL2h1Z2V0bGIuYy0zNTg4LVx0XHRyZXR1cm47XG4tLVxubW0vaHVnZXRsYi5jPTM2MDc9c3RhdGljIHZvaWQgX19pbml0IGh1Z2V0bGJfaW5pdF9oc3RhdGVzKHZvaWQpXG4tLVxubW0vaHVnZXRsYi5jLTM2MzQtXHRcdFx0Y29udGludWU7XG5tbS9odWdldGxiLmM6MzYzNTpcdFx0aWYgKGh1Z2V0bGJfY21hX3RvdGFsX3NpemUoKSBcdTAwMjZcdTAwMjYgaC1cdTAwM2VvcmRlciBcdTAwM2M9IEhVR0VUTEJfUEFHRV9PUkRFUilcbm1tL2h1Z2V0bGIuYy0zNjM2LVx0XHRcdGNvbnRpbnVlO1xuLS1cbm1tL2h1Z2V0bGIuYz0zOTMxPXN0YXRpYyBsb25nIGRlbW90ZV9mcmVlX2h1Z2V0bGJfZm9saW9zKHN0cnVjdCBoc3RhdGUgKnNyYywgc3RydWN0IGhzdGF0ZSAqZHN0LFxuLS1cbm1tL2h1Z2V0bGIuYy0zOTU4LVxubW0vaHVnZXRsYi5jOjM5NTk6XHRcdGNtYSA9IGZvbGlvX3Rlc3RfaHVnZXRsYl9jbWEoZm9saW8pO1xubW0vaHVnZXRsYi5jLTM5NjAtXG4tLVxubW0vaHVnZXRsYi5jLTM5NzctXHRcdFx0aWYgKGNtYSlcbm1tL2h1Z2V0bGIuYzozOTc4Olx0XHRcdFx0Zm9saW9fc2V0X2h1Z2V0bGJfY21hKG5ld19mb2xpbyk7XG5tbS9odWdldGxiLmMtMzk3OS1cdFx0XHRsaXN0X2FkZChcdTAwMjZuZXdfZm9saW8tXHUwMDNlbHJ1LCBcdTAwMjZkc3RfbGlzdCk7XG4tLVxubW0vaHVnZXRsYi5jPTQyMzk9c3RhdGljIF9faW5pdCB2b2lkIGh1Z2V0bGJfcGFyc2VfcGFyYW1zKHZvaWQpXG4tLVxubW0vaHVnZXRsYi5jLTQyNDktXG5tbS9odWdldGxiLmM6NDI1MDpcdGh1Z2V0bGJfY21hX3ZhbGlkYXRlX3BhcmFtcygpO1xubW0vaHVnZXRsYi5jLTQyNTEtfVxuLS1cbm1tL2h1Z2V0bGJfY21hLmMtMTItI2luY2x1ZGUgXCYjMzQ7aW50ZXJuYWwuaFwmIzM0O1xubW0vaHVnZXRsYl9jbWEuYzoxMzojaW5jbHVkZSBcJiMzNDtodWdldGxiX2NtYS5oXCYjMzQ7XG5tbS9odWdldGxiX2NtYS5jLTE0LVxubW0vaHVnZXRsYl9jbWEuYy0xNS1cbm1tL2h1Z2V0bGJfY21hLmM6MTY6c3RhdGljIHN0cnVjdCBjbWEgKmh1Z2V0bGJfY21hW01BWF9OVU1OT0RFU10gX19yb19hZnRlcl9pbml0O1xubW0vaHVnZXRsYl9jbWEuYzoxNzpzdGF0aWMgdW5zaWduZWQgbG9uZyBodWdldGxiX2NtYV9zaXplX2luX25vZGVbTUFYX05VTU5PREVTXSBfX2luaXRkYXRhO1xubW0vaHVnZXRsYl9jbWEuYzoxODpzdGF0aWMgYm9vbCBodWdldGxiX2NtYV9vbmx5IF9fcm9fYWZ0ZXJfaW5pdDtcbm1tL2h1Z2V0bGJfY21hLmM6MTk6c3RhdGljIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9jbWFfc2l6ZSBfX3JvX2FmdGVyX2luaXQ7XG5tbS9odWdldGxiX2NtYS5jLTIwLVxubW0vaHVnZXRsYl9jbWEuYzoyMTp2b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG5tbS9odWdldGxiX2NtYS5jLTIyLXtcbm1tL2h1Z2V0bGJfY21hLmM6MjM6XHRXQVJOX09OX09OQ0UoIWNtYV9yZWxlYXNlX2Zyb3plbihodWdldGxiX2NtYVtmb2xpb19uaWQoZm9saW8pXSxcbm1tL2h1Z2V0bGJfY21hLmMtMjQtXHRcdFx0XHRcdCBcdTAwMjZmb2xpby1cdTAwM2VwYWdlLCBmb2xpb19ucl9wYWdlcyhmb2xpbykpKTtcbi0tXG5tbS9odWdldGxiX2NtYS5jLTI2LVxubW0vaHVnZXRsYl9jbWEuYzoyNzpzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxubW0vaHVnZXRsYl9jbWEuYy0yOC1cdFx0aW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spXG4tLVxubW0vaHVnZXRsYl9jbWEuYy0zMy1cbm1tL2h1Z2V0bGJfY21hLmM6MzQ6XHRpZiAoIWh1Z2V0bGJfY21hX3NpemUpXG5tbS9odWdldGxiX2NtYS5jLTM1LVx0XHRyZXR1cm4gTlVMTDtcbm1tL2h1Z2V0bGJfY21hLmMtMzYtXG5tbS9odWdldGxiX2NtYS5jOjM3Olx0aWYgKGh1Z2V0bGJfY21hW25pZF0gXHUwMDI2XHUwMDI2IG5vZGVfaXNzZXQobmlkLCAqbm9kZW1hc2spKVxubW0vaHVnZXRsYl9jbWEuYzozODpcdFx0cGFnZSA9IGNtYV9hbGxvY19mcm96ZW5fY29tcG91bmQoaHVnZXRsYl9jbWFbbmlkXSwgb3JkZXIpO1xubW0vaHVnZXRsYl9jbWEuYy0zOS1cbi0tXG5tbS9odWdldGxiX2NtYS5jLTQxLVx0XHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgKm5vZGVtYXNrKSB7XG5tbS9odWdldGxiX2NtYS5jOjQyOlx0XHRcdGlmIChub2RlID09IG5pZCB8fCAhaHVnZXRsYl9jbWFbbm9kZV0pXG5tbS9odWdldGxiX2NtYS5jLTQzLVx0XHRcdFx0Y29udGludWU7XG5tbS9odWdldGxiX2NtYS5jLTQ0LVxubW0vaHVnZXRsYl9jbWEuYzo0NTpcdFx0XHRwYWdlID0gY21hX2FsbG9jX2Zyb3plbl9jb21wb3VuZChodWdldGxiX2NtYVtub2RlXSwgb3JkZXIpO1xubW0vaHVnZXRsYl9jbWEuYy00Ni1cdFx0XHRpZiAocGFnZSlcbi0tXG5tbS9odWdldGxiX2NtYS5jLTU0LVx0Zm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpO1xubW0vaHVnZXRsYl9jbWEuYzo1NTpcdGZvbGlvX3NldF9odWdldGxiX2NtYShmb2xpbyk7XG5tbS9odWdldGxiX2NtYS5jLTU2LVx0cmV0dXJuIGZvbGlvO1xuLS1cbm1tL2h1Z2V0bGJfY21hLmM9NTk9c3RydWN0IGh1Z2VfYm9vdG1lbV9wYWdlICogX19pbml0XG5tbS9odWdldGxiX2NtYS5jOjYwOmh1Z2V0bGJfY21hX2FsbG9jX2Jvb3RtZW0oc3RydWN0IGhzdGF0ZSAqaCwgaW50ICpuaWQsIGJvb2wgbm9kZV9leGFjdClcbm1tL2h1Z2V0bGJfY21hLmMtNjEte1xuLS1cbm1tL2h1Z2V0bGJfY21hLmMtNjUtXG5tbS9odWdldGxiX2NtYS5jOjY2Olx0Y21hID0gaHVnZXRsYl9jbWFbKm5pZF07XG5tbS9odWdldGxiX2NtYS5jLTY3LVx0bSA9IGNtYV9yZXNlcnZlX2Vhcmx5KGNtYSwgaHVnZV9wYWdlX3NpemUoaCkpO1xuLS1cbm1tL2h1Z2V0bGJfY21hLmMtNzItXHRcdGZvcl9lYWNoX25vZGVfbWFzayhub2RlLCBodWdldGxiX2Jvb3RtZW1fbm9kZXMpIHtcbm1tL2h1Z2V0bGJfY21hLmM6NzM6XHRcdFx0Y21hID0gaHVnZXRsYl9jbWFbbm9kZV07XG5tbS9odWdldGxiX2NtYS5jLTc0LVx0XHRcdGlmICghY21hIHx8IG5vZGUgPT0gKm5pZClcbi0tXG5tbS9odWdldGxiX2NtYS5jLTkxLVxubW0vaHVnZXRsYl9jbWEuYzo5MjpzdGF0aWMgaW50IF9faW5pdCBjbWRsaW5lX3BhcnNlX2h1Z2V0bGJfY21hKGNoYXIgKnApXG5tbS9odWdldGxiX2NtYS5jLTkzLXtcbi0tXG5tbS9odWdldGxiX2NtYS5jLTEwOC1cdFx0XHR0bXAgPSBtZW1wYXJzZShzLCBcdTAwMjZzKTtcbm1tL2h1Z2V0bGJfY21hLmM6MTA5Olx0XHRcdGh1Z2V0bGJfY21hX3NpemVfaW5fbm9kZVtuaWRdID0gdG1wO1xubW0vaHVnZXRsYl9jbWEuYzoxMTA6XHRcdFx0aHVnZXRsYl9jbWFfc2l6ZSAmIzQzOz0gdG1wO1xubW0vaHVnZXRsYl9jbWEuYy0xMTEtXG4tLVxubW0vaHVnZXRsYl9jbWEuYy0xMjAtXHRcdH0gZWxzZSB7XG5tbS9odWdldGxiX2NtYS5jOjEyMTpcdFx0XHRodWdldGxiX2NtYV9zaXplID0gbWVtcGFyc2UocCwgXHUwMDI2cCk7XG5tbS9odWdldGxiX2NtYS5jLTEyMi1cdFx0XHRicmVhaztcbi0tXG5tbS9odWdldGxiX2NtYS5jLTEyOC1cbm1tL2h1Z2V0bGJfY21hLmM6MTI5OmVhcmx5X3BhcmFtKFwmIzM0O2h1Z2V0bGJfY21hXCYjMzQ7LCBjbWRsaW5lX3BhcnNlX2h1Z2V0bGJfY21hKTtcbm1tL2h1Z2V0bGJfY21hLmMtMTMwLVxubW0vaHVnZXRsYl9jbWEuYzoxMzE6c3RhdGljIGludCBfX2luaXQgY21kbGluZV9wYXJzZV9odWdldGxiX2NtYV9vbmx5KGNoYXIgKnApXG5tbS9odWdldGxiX2NtYS5jLTEzMi17XG5tbS9odWdldGxiX2NtYS5jOjEzMzpcdHJldHVybiBrc3RydG9ib29sKHAsIFx1MDAyNmh1Z2V0bGJfY21hX29ubHkpO1xubW0vaHVnZXRsYl9jbWEuYy0xMzQtfVxubW0vaHVnZXRsYl9jbWEuYy0xMzUtXG5tbS9odWdldGxiX2NtYS5jOjEzNjplYXJseV9wYXJhbShcJiMzNDtodWdldGxiX2NtYV9vbmx5XCYjMzQ7LCBjbWRsaW5lX3BhcnNlX2h1Z2V0bGJfY21hX29ubHkpO1xubW0vaHVnZXRsYl9jbWEuYy0xMzctXG5tbS9odWdldGxiX2NtYS5jOjEzODp1bnNpZ25lZCBpbnQgX193ZWFrIGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIodm9pZClcbm1tL2h1Z2V0bGJfY21hLmMtMTM5LXtcbi0tXG5tbS9odWdldGxiX2NtYS5jLTE0Mi1cbm1tL2h1Z2V0bGJfY21hLmM6MTQzOnZvaWQgX19pbml0IGh1Z2V0bGJfY21hX3Jlc2VydmUodm9pZClcbm1tL2h1Z2V0bGJfY21hLmMtMTQ0LXtcbi0tXG5tbS9odWdldGxiX2NtYS5jLTE0OC1cbm1tL2h1Z2V0bGJfY21hLmM6MTQ5Olx0aWYgKCFodWdldGxiX2NtYV9zaXplKVxubW0vaHVnZXRsYl9jbWEuYy0xNTAtXHRcdHJldHVybjtcbm1tL2h1Z2V0bGJfY21hLmMtMTUxLVxubW0vaHVnZXRsYl9jbWEuYzoxNTI6XHRvcmRlciA9IGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIoKTtcbm1tL2h1Z2V0bGJfY21hLmMtMTUzLVx0aWYgKCFvcmRlcikge1xubW0vaHVnZXRsYl9jbWEuYzoxNTQ6XHRcdHByX3dhcm4oXCYjMzQ7aHVnZXRsYl9jbWE6IHRoZSBvcHRpb24gaXNuJiMzOTt0IHN1cHBvcnRlZCBieSBjdXJyZW50IGFyY2hcXG5cJiMzNDspO1xubW0vaHVnZXRsYl9jbWEuYy0xNTUtXHRcdHJldHVybjtcbi0tXG5tbS9odWdldGxiX2NtYS5jLTE2OS1cdGZvciAobmlkID0gMDsgbmlkIFx1MDAzYyBNQVhfTlVNTk9ERVM7IG5pZCYjNDM7JiM0MzspIHtcbm1tL2h1Z2V0bGJfY21hLmM6MTcwOlx0XHRzaXplID0gaHVnZXRsYl9jbWFfc2l6ZV9pbl9ub2RlW25pZF07XG5tbS9odWdldGxiX2NtYS5jLTE3MS1cdFx0aWYgKHNpemUgPT0gMClcbi0tXG5tbS9odWdldGxiX2NtYS5jLTE3NC1cdFx0aWYgKCFub2RlX2lzc2V0KG5pZCwgaHVnZXRsYl9ib290bWVtX25vZGVzKSkge1xubW0vaHVnZXRsYl9jbWEuYzoxNzU6XHRcdFx0cHJfd2FybihcJiMzNDtodWdldGxiX2NtYTogaW52YWxpZCBub2RlICVkIHNwZWNpZmllZFxcblwmIzM0OywgbmlkKTtcbm1tL2h1Z2V0bGJfY21hLmMtMTc2LVx0XHR9IGVsc2UgaWYgKCFJU19BTElHTkVEKHNpemUsIGdpZ2FudGljX3BhZ2Vfc2l6ZSkpIHtcbm1tL2h1Z2V0bGJfY21hLmM6MTc3Olx0XHRcdHByX3dhcm4oXCYjMzQ7aHVnZXRsYl9jbWE6IGNtYSBhcmVhIG9mIG5vZGUgJWQgbXVzdCBiZSBhIG11bHRpcGxlIG9mICVsdSBNaUJcXG5cJiMzNDssXG5tbS9odWdldGxiX2NtYS5jLTE3OC1cdFx0XHRcdG5pZCwgZ2lnYW50aWNfcGFnZV9zaXplIC8gU1pfMU0pO1xuLS1cbm1tL2h1Z2V0bGJfY21hLmMtMTgzLVxubW0vaHVnZXRsYl9jbWEuYzoxODQ6XHRcdGh1Z2V0bGJfY21hX3NpemUgLT0gc2l6ZTtcbm1tL2h1Z2V0bGJfY21hLmM6MTg1Olx0XHRodWdldGxiX2NtYV9zaXplX2luX25vZGVbbmlkXSA9IDA7XG5tbS9odWdldGxiX2NtYS5jLTE4Ni1cdH1cbi0tXG5tbS9odWdldGxiX2NtYS5jLTE4OC1cdC8qIFZhbGlkYXRlIHRoZSBDTUEgc2l6ZSBhZ2FpbiBpbiBjYXNlIHNvbWUgaW52YWxpZCBub2RlcyBzcGVjaWZpZWQuICovXG5tbS9odWdldGxiX2NtYS5jOjE4OTpcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcbm1tL2h1Z2V0bGJfY21hLmMtMTkwLVx0XHRyZXR1cm47XG5tbS9odWdldGxiX2NtYS5jLTE5MS1cbm1tL2h1Z2V0bGJfY21hLmM6MTkyOlx0aWYgKCFJU19BTElHTkVEKGh1Z2V0bGJfY21hX3NpemUsIGdpZ2FudGljX3BhZ2Vfc2l6ZSkpIHtcbm1tL2h1Z2V0bGJfY21hLmM6MTkzOlx0XHRwcl93YXJuKFwmIzM0O2h1Z2V0bGJfY21hOiBjbWEgYXJlYSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJWx1IE1pQlxcblwmIzM0Oyxcbm1tL2h1Z2V0bGJfY21hLmMtMTk0LVx0XHRcdGdpZ2FudGljX3BhZ2Vfc2l6ZSAvIFNaXzFNKTtcbm1tL2h1Z2V0bGJfY21hLmM6MTk1Olx0XHRodWdldGxiX2NtYV9zaXplID0gMDtcbm1tL2h1Z2V0bGJfY21hLmMtMTk2LVx0XHRyZXR1cm47XG4tLVxubW0vaHVnZXRsYl9jbWEuYy0yMDMtXHRcdCAqL1xubW0vaHVnZXRsYl9jbWEuYzoyMDQ6XHRcdHBlcl9ub2RlID0gRElWX1JPVU5EX1VQKGh1Z2V0bGJfY21hX3NpemUsXG5tbS9odWdldGxiX2NtYS5jLTIwNS1cdFx0XHRcdFx0bm9kZXNfd2VpZ2h0KGh1Z2V0bGJfYm9vdG1lbV9ub2RlcykpO1xubW0vaHVnZXRsYl9jbWEuYy0yMDYtXHRcdHBlcl9ub2RlID0gcm91bmRfdXAocGVyX25vZGUsIGdpZ2FudGljX3BhZ2Vfc2l6ZSk7XG5tbS9odWdldGxiX2NtYS5jOjIwNzpcdFx0cHJfaW5mbyhcJiMzNDtodWdldGxiX2NtYTogcmVzZXJ2ZSAlbHUgTWlCLCB1cCB0byAlbHUgTWlCIHBlciBub2RlXFxuXCYjMzQ7LFxubW0vaHVnZXRsYl9jbWEuYzoyMDg6XHRcdFx0aHVnZXRsYl9jbWFfc2l6ZSAvIFNaXzFNLCBwZXJfbm9kZSAvIFNaXzFNKTtcbm1tL2h1Z2V0bGJfY21hLmMtMjA5LVx0fVxuLS1cbm1tL2h1Z2V0bGJfY21hLmMtMjE2LVx0XHRpZiAobm9kZV9zcGVjaWZpY19jbWFfYWxsb2MpIHtcbm1tL2h1Z2V0bGJfY21hLmM6MjE3Olx0XHRcdGlmIChodWdldGxiX2NtYV9zaXplX2luX25vZGVbbmlkXSA9PSAwKVxubW0vaHVnZXRsYl9jbWEuYy0yMTgtXHRcdFx0XHRjb250aW51ZTtcbm1tL2h1Z2V0bGJfY21hLmMtMjE5LVxubW0vaHVnZXRsYl9jbWEuYzoyMjA6XHRcdFx0c2l6ZSA9IGh1Z2V0bGJfY21hX3NpemVfaW5fbm9kZVtuaWRdO1xubW0vaHVnZXRsYl9jbWEuYy0yMjEtXHRcdH0gZWxzZSB7XG5tbS9odWdldGxiX2NtYS5jOjIyMjpcdFx0XHRzaXplID0gbWluKHBlcl9ub2RlLCBodWdldGxiX2NtYV9zaXplIC0gcmVzZXJ2ZWQpO1xubW0vaHVnZXRsYl9jbWEuYy0yMjMtXHRcdH1cbi0tXG5tbS9odWdldGxiX2NtYS5jLTIzMi1cdFx0XHRcdFx0SFVHRVRMQl9QQUdFX09SREVSLCBuYW1lLFxubW0vaHVnZXRsYl9jbWEuYzoyMzM6XHRcdFx0XHRcdFx1MDAyNmh1Z2V0bGJfY21hW25pZF0sIG5pZCk7XG5tbS9odWdldGxiX2NtYS5jLTIzNC1cdFx0aWYgKHJlcykge1xubW0vaHVnZXRsYl9jbWEuYzoyMzU6XHRcdFx0cHJfd2FybihcJiMzNDtodWdldGxiX2NtYTogcmVzZXJ2YXRpb24gZmFpbGVkOiBlcnIgJWQsIG5vZGUgJWRcJiMzNDssXG5tbS9odWdldGxiX2NtYS5jLTIzNi1cdFx0XHRcdHJlcywgbmlkKTtcbi0tXG5tbS9odWdldGxiX2NtYS5jLTI0MC1cdFx0cmVzZXJ2ZWQgJiM0Mzs9IHNpemU7XG5tbS9odWdldGxiX2NtYS5jOjI0MTpcdFx0cHJfaW5mbyhcJiMzNDtodWdldGxiX2NtYTogcmVzZXJ2ZWQgJWx1IE1pQiBvbiBub2RlICVkXFxuXCYjMzQ7LFxubW0vaHVnZXRsYl9jbWEuYy0yNDItXHRcdFx0c2l6ZSAvIFNaXzFNLCBuaWQpO1xubW0vaHVnZXRsYl9jbWEuYy0yNDMtXG5tbS9odWdldGxiX2NtYS5jOjI0NDpcdFx0aWYgKHJlc2VydmVkIFx1MDAzZT0gaHVnZXRsYl9jbWFfc2l6ZSlcbm1tL2h1Z2V0bGJfY21hLmMtMjQ1LVx0XHRcdGJyZWFrO1xuLS1cbm1tL2h1Z2V0bGJfY21hLmMtMjQ5LVx0XHQvKlxubW0vaHVnZXRsYl9jbWEuYzoyNTA6XHRcdCAqIGh1Z2V0bGJfY21hX3NpemUgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgYWxsb2NhdGlvbnMgZnJvbVxubW0vaHVnZXRsYl9jbWEuYy0yNTEtXHRcdCAqIGNtYSBhcmUgcG9zc2libGUuICBTZXQgdG8gemVybyBpZiBubyBjbWEgcmVnaW9ucyBhcmUgc2V0IHVwLlxubW0vaHVnZXRsYl9jbWEuYy0yNTItXHRcdCAqL1xubW0vaHVnZXRsYl9jbWEuYzoyNTM6XHRcdGh1Z2V0bGJfY21hX3NpemUgPSAwO1xubW0vaHVnZXRsYl9jbWEuYy0yNTQtfVxubW0vaHVnZXRsYl9jbWEuYy0yNTUtXG5tbS9odWdldGxiX2NtYS5jOjI1Njpib29sIGh1Z2V0bGJfY21hX2V4Y2x1c2l2ZV9hbGxvYyh2b2lkKVxubW0vaHVnZXRsYl9jbWEuYy0yNTcte1xubW0vaHVnZXRsYl9jbWEuYzoyNTg6XHRyZXR1cm4gaHVnZXRsYl9jbWFfb25seTtcbm1tL2h1Z2V0bGJfY21hLmMtMjU5LX1cbm1tL2h1Z2V0bGJfY21hLmMtMjYwLVxubW0vaHVnZXRsYl9jbWEuYzoyNjE6dW5zaWduZWQgbG9uZyBfX2luaXQgaHVnZXRsYl9jbWFfdG90YWxfc2l6ZSh2b2lkKVxubW0vaHVnZXRsYl9jbWEuYy0yNjIte1xubW0vaHVnZXRsYl9jbWEuYzoyNjM6XHRyZXR1cm4gaHVnZXRsYl9jbWFfc2l6ZTtcbm1tL2h1Z2V0bGJfY21hLmMtMjY0LX1cbm1tL2h1Z2V0bGJfY21hLmMtMjY1LVxubW0vaHVnZXRsYl9jbWEuYzoyNjY6dm9pZCBfX2luaXQgaHVnZXRsYl9jbWFfdmFsaWRhdGVfcGFyYW1zKHZvaWQpXG5tbS9odWdldGxiX2NtYS5jLTI2Ny17XG5tbS9odWdldGxiX2NtYS5jOjI2ODpcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcbm1tL2h1Z2V0bGJfY21hLmM6MjY5Olx0XHRodWdldGxiX2NtYV9vbmx5ID0gZmFsc2U7XG5tbS9odWdldGxiX2NtYS5jLTI3MC19XG4tLVxubW0vaHVnZXRsYl9jbWEuYz0yNzI9Ym9vbCBfX2luaXQgaHVnZXRsYl9lYXJseV9jbWEoc3RydWN0IGhzdGF0ZSAqaClcbi0tXG5tbS9odWdldGxiX2NtYS5jLTI3Ni1cbm1tL2h1Z2V0bGJfY21hLmM6Mjc3Olx0cmV0dXJuIGhzdGF0ZV9pc19naWdhbnRpYyhoKSBcdTAwMjZcdTAwMjYgaHVnZXRsYl9jbWFfb25seTtcbm1tL2h1Z2V0bGJfY21hLmMtMjc4LX1cbi0tXG5tbS9odWdldGxiX2NtYS5oLTUtI2lmZGVmIENPTkZJR19DTUFcbm1tL2h1Z2V0bGJfY21hLmg6Njp2b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xubW0vaHVnZXRsYl9jbWEuaDo3OnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG5tbS9odWdldGxiX2NtYS5oLTgtXHRcdFx0XHQgICAgICBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzayk7XG5tbS9odWdldGxiX2NtYS5oOjk6c3RydWN0IGh1Z2VfYm9vdG1lbV9wYWdlICpodWdldGxiX2NtYV9hbGxvY19ib290bWVtKHN0cnVjdCBoc3RhdGUgKmgsIGludCAqbmlkLFxubW0vaHVnZXRsYl9jbWEuaC0xMC1cdFx0XHRcdFx0XHQgICAgYm9vbCBub2RlX2V4YWN0KTtcbm1tL2h1Z2V0bGJfY21hLmg6MTE6Ym9vbCBodWdldGxiX2NtYV9leGNsdXNpdmVfYWxsb2Modm9pZCk7XG5tbS9odWdldGxiX2NtYS5oOjEyOnVuc2lnbmVkIGxvbmcgaHVnZXRsYl9jbWFfdG90YWxfc2l6ZSh2b2lkKTtcbm1tL2h1Z2V0bGJfY21hLmg6MTM6dm9pZCBodWdldGxiX2NtYV92YWxpZGF0ZV9wYXJhbXModm9pZCk7XG5tbS9odWdldGxiX2NtYS5oLTE0LWJvb2wgaHVnZXRsYl9lYXJseV9jbWEoc3RydWN0IGhzdGF0ZSAqaCk7XG5tbS9odWdldGxiX2NtYS5oLTE1LSNlbHNlXG5tbS9odWdldGxiX2NtYS5oOjE2OnN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vaHVnZXRsYl9jbWEuaC0xNy17XG4tLVxubW0vaHVnZXRsYl9jbWEuaC0xOS1cbm1tL2h1Z2V0bGJfY21hLmg6MjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsXG5tbS9odWdldGxiX2NtYS5oLTIxLVx0XHRnZnBfdCBnZnBfbWFzayxcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxuLS1cbm1tL2h1Z2V0bGJfY21hLmg9MjY9c3RhdGljIGlubGluZVxubW0vaHVnZXRsYl9jbWEuaDoyNzpzdHJ1Y3QgaHVnZV9ib290bWVtX3BhZ2UgKmh1Z2V0bGJfY21hX2FsbG9jX2Jvb3RtZW0oc3RydWN0IGhzdGF0ZSAqaCwgaW50ICpuaWQsXG5tbS9odWdldGxiX2NtYS5oLTI4LVx0XHRcdFx0XHRcdCAgICBib29sIG5vZGVfZXhhY3QpXG4tLVxubW0vaHVnZXRsYl9jbWEuaC0zMi1cbm1tL2h1Z2V0bGJfY21hLmg6MzM6c3RhdGljIGlubGluZSBib29sIGh1Z2V0bGJfY21hX2V4Y2x1c2l2ZV9hbGxvYyh2b2lkKVxubW0vaHVnZXRsYl9jbWEuaC0zNC17XG4tLVxubW0vaHVnZXRsYl9jbWEuaC0zNy1cbm1tL2h1Z2V0bGJfY21hLmg6Mzg6c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfY21hX3RvdGFsX3NpemUodm9pZClcbm1tL2h1Z2V0bGJfY21hLmgtMzkte1xuLS1cbm1tL2h1Z2V0bGJfY21hLmgtNDItXG5tbS9odWdldGxiX2NtYS5oOjQzOnN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX2NtYV92YWxpZGF0ZV9wYXJhbXModm9pZClcbm1tL2h1Z2V0bGJfY21hLmgtNDQte1xuLS1cbm1tL21tX2luaXQuYz0yNjk1PXZvaWQgX19pbml0IG1tX2NvcmVfaW5pdF9lYXJseSh2b2lkKVxubW0vbW1faW5pdC5jLTI2OTYte1xubW0vbW1faW5pdC5jOjI2OTc6XHRodWdldGxiX2NtYV9yZXNlcnZlKCk7XG5tbS9tbV9pbml0LmMtMjY5OC1cdGh1Z2V0bGJfYm9vdG1lbV9hbGxvYygpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19IVUdFVExCJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMjk3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dD05NT1LZXJuZWwgcGFyYW1ldGVyc1xuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTIwODUtXHRodWdldGxiX2ZyZWVfdm1lbW1hcD1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjIwODY6XHRcdFx0W0tOTF0gUmVxdWlyZXMgQ09ORklHX0hVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dC0yMDg3LVx0XHRcdGVuYWJsZWQuXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA5NS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjIwOTY6XHRcdFx0QnVpbHQgd2l0aCBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBfREVGQVVMVF9PTj15LFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA5Ny1cdFx0XHR0aGUgZGVmYXVsdCBpcyBvbi5cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2h1Z2V0bGJwYWdlLnJzdD0yMD1zeXN0ZW0gY2FsbCBvciBzdGFuZGFyZCBTWVNWIHNoYXJlZCBtZW1vcnkgc3lzdGVtIGNhbGxzIChzaG1nZXQsIHNobWF0KS5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vaHVnZXRsYnBhZ2UucnN0LTIxLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3Q6MjI6Rmlyc3QgdGhlIExpbnV4IGtlcm5lbCBuZWVkcyB0byBiZSBidWlsdCB3aXRoIHRoZSBDT05GSUdfSFVHRVRMQkZTXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2h1Z2V0bGJwYWdlLnJzdDoyMzoocHJlc2VudCB1bmRlciBcJiMzNDtGaWxlIHN5c3RlbXNcJiMzNDspIGFuZCBDT05GSUdfSFVHRVRMQl9QQUdFIChzZWxlY3RlZFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3Q6MjQ6YXV0b21hdGljYWxseSB3aGVuIENPTkZJR19IVUdFVExCRlMgaXMgc2VsZWN0ZWQpIGNvbmZpZ3VyYXRpb25cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vaHVnZXRsYnBhZ2UucnN0LTI1LW9wdGlvbnMuXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3Q9MTc0PWh1Z2V0bGJfZnJlZV92bWVtbWFwXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2h1Z2V0bGJwYWdlLnJzdDoxNzU6XHRXaGVuIENPTkZJR19IVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUCBpcyBzZXQsIHRoaXMgZW5hYmxlcyBIdWdlVExCXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2h1Z2V0bGJwYWdlLnJzdC0xNzYtXHRWbWVtbWFwIE9wdGltaXphdGlvbiAoSFZPKS5cbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTE5MTI9Q09ORklHX1RNUEZTX1BPU0lYX0FDTD15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE5MTM6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTE5MTQtQ09ORklHX0NPTkZJR0ZTX0ZTPXlcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL210ZS5oPTE1Nz1zdGF0aWMgaW5saW5lIGludCBtdGVfcHRyYWNlX2NvcHlfdGFncyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLFxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbXRlLmgtMTY1LVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tdGUuaDoxNjY6I2lmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0FSTTY0X01URSlcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbXRlLmgtMTY3LXN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfaHVnZXRsYl9tdGVfdGFnZ2VkKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuYXJjaC9hcm02NC9tbS9NYWtlZmlsZT02PW9iai0kKENPTkZJR19BUk02NF9DT05UUFRFKVx0JiM0Mzs9IGNvbnRwdGUub1xuYXJjaC9hcm02NC9tbS9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19IVUdFVExCX1BBR0UpXHQmIzQzOz0gaHVnZXRsYnBhZ2Uub1xuYXJjaC9hcm02NC9tbS9NYWtlZmlsZS04LW9iai0kKENPTkZJR19QVERVTVApXHRcdCYjNDM7PSBwdGR1bXAub1xuLS1cbmFyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9wYWdlLmgtMzktICovXG5hcmNoL2hleGFnb24vaW5jbHVkZS9hc20vcGFnZS5oOjQwOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL2hleGFnb24vaW5jbHVkZS9hc20vcGFnZS5oLTQxLSNkZWZpbmUgSFBBR0VfU0hJRlQgMjJcbi0tXG5hcmNoL2hleGFnb24vaW5jbHVkZS9hc20vcGd0YWJsZS5oPTEyOT1leHRlcm4gcGdkX3Qgc3dhcHBlcl9wZ19kaXJbUFRSU19QRVJfUEdEXTsgIC8qIGxvY2F0ZWQgaW4gaGVhZC5TICovXG4tLVxuYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMzEtLyogIEhVR0VUTEIgbm90IHdvcmtpbmcgY3VycmVudGx5ICAqL1xuYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMzI6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTMzLSNkZWZpbmUgcHRlX21raHVnZShwdGUpIF9fcHRlKChwdGVfdmFsKHB0ZSkgXHUwMDI2IH4weDMpIHwgSFZNX0hVR0VQQUdFX1NJWkUpXG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0xMDM1PUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMDM2OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xMDM3LUNPTkZJR19DT05GSUdGU19GUz15XG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX0hJR0hNRU0pXHRcdCYjNDM7PSBoaWdobWVtLm9cbmFyY2gvbG9vbmdhcmNoL21tL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19IVUdFVExCX1BBR0UpXHQmIzQzOz0gaHVnZXRsYnBhZ2Uub1xuYXJjaC9sb29uZ2FyY2gvbW0vTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX0tBU0FOKVx0XHQmIzQzOz0ga2FzYW5faW5pdC5vXG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vdGxiLmM9MTM4PXN0YXRpYyB2b2lkIF9fdXBkYXRlX2h1Z2V0bGIoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgcHRlX3QgKnB0ZXApXG5hcmNoL2xvb25nYXJjaC9tbS90bGIuYy0xMzkte1xuYXJjaC9sb29uZ2FyY2gvbW0vdGxiLmM6MTQwOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL2xvb25nYXJjaC9tbS90bGIuYy0xNDEtXHRpbnQgaWR4O1xuLS1cbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnPTE0Mz1DT05GSUdfVE1QRlM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWc6MTQ0OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWctMTQ1LUNPTkZJR19ORlNfRlM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnPTE0ND1DT05GSUdfVE1QRlNfUE9TSVhfQUNMPXlcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnOjE0NTpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTE0Ni1DT05GSUdfQ09ORklHRlNfRlM9eVxuLS1cbmFyY2gvbWlwcy9tbS9NYWtlZmlsZT0zMT1vYmotJChDT05GSUdfSElHSE1FTSlcdFx0JiM0Mzs9IGhpZ2htZW0ub1xuYXJjaC9taXBzL21tL01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19IVUdFVExCX1BBR0UpXHQmIzQzOz0gaHVnZXRsYnBhZ2Uub1xuYXJjaC9taXBzL21tL01ha2VmaWxlLTMzLW9iai0kKENPTkZJR19ETUFfTk9OQ09IRVJFTlQpXHQmIzQzOz0gZG1hLW5vbmNvaGVyZW50Lm9cbi0tXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wYWdlLmg9OTM9ZXh0ZXJuIGludCBucG1lbV9yYW5nZXM7XG4tLVxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGFnZS5oLTE0Ny1cbmFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BhZ2UuaDoxNDg6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BhZ2UuaC0xNDktI2RlZmluZSBIUEFHRV9TSElGVFx0XHRQTURfU0hJRlQgLyogZml4ZWQgZm9yIHRyYW5zcGFyZW50IGh1Z2UgcGFnZXMgKi9cbi0tXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wYWdlLmgtMTYzLSNlbmRpZlxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGFnZS5oOjE2NDojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGFnZS5oLTE2NS1cbi0tXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9NjQ9ZXh0ZXJuIHZvaWQgX191cGRhdGVfY2FjaGUocHRlX3QgcHRlKTtcbi0tXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTcwLSNkZWZpbmUgX1BBR0VfVVNFUl9CSVQgICAgIDIwICAgLyogKDB4ODAwKSBTb2Z0d2FyZTogVXNlciBhY2Nlc3NpYmxlIHBhZ2UgKi9cbmFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNzE6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNzItI2RlZmluZSBfUEFHRV9TUEVDSUFMX0JJVCAgX1BBR0VfRE1CX0JJVCAgLyogRE1CIGZlYXR1cmUgaXMgY3VycmVudGx5IHVudXNlZCAqL1xuLS1cbmFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BndGFibGUuaD0zMTU9c3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtzcGVjaWFsKHB0ZV90IHB0ZSlcdHsgcHRlX3ZhbChwdGUpIHw9IF9QQUdFX1NQRUNJQUw7IHJldHVybiBwdGU7IH1cbi0tXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMzE5LSAqL1xuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjMyMDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTMyMS0jZGVmaW5lIHB0ZV9odWdlKHB0ZSkgICAgICAgICAgIChwdGVfdmFsKHB0ZSkgXHUwMDI2IF9QQUdFX0hVR0UpXG4tLVxuYXJjaC9wYXJpc2Mva2VybmVsL2FzbS1vZmZzZXRzLmM9NDE9aW50IG1haW4odm9pZClcbi0tXG5hcmNoL3BhcmlzYy9rZXJuZWwvYXNtLW9mZnNldHMuYy0yNzgtXHQgKiBhbmQga2VybmVsIGRhdGEgb24gcGh5c2ljYWwgaHVnZSBwYWdlcyAqL1xuYXJjaC9wYXJpc2Mva2VybmVsL2FzbS1vZmZzZXRzLmM6Mjc5OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3BhcmlzYy9rZXJuZWwvYXNtLW9mZnNldHMuYy0yODAtXHRERUZJTkUoSFVHRVBBR0VfU0laRSwgMVVMIFx1MDAzY1x1MDAzYyBSRUFMX0hQQUdFX1NISUZUKTtcbi0tXG5hcmNoL3BhcmlzYy9rZXJuZWwvZW50cnkuUy00ODEtXHQubWFjcm9cdFx0Y29udmVydF9mb3JfdGxiX2luc2VydDIwIHB0ZSx0bXBcbmFyY2gvcGFyaXNjL2tlcm5lbC9lbnRyeS5TOjQ4MjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlMtNDgzLVx0Y29weVx0XHRcXHB0ZSxcXHRtcFxuLS1cbmFyY2gvcGFyaXNjL2tlcm5lbC9zZXR1cC5jPTEwMT12b2lkIF9faW5pdCBzZXR1cF9hcmNoKGNoYXIgKipjbWRsaW5lX3ApXG4tLVxuYXJjaC9wYXJpc2Mva2VybmVsL3NldHVwLmMtMTE0LVx0XHQoaW50KShQQUdFX1NJWkUgLyAxMDI0KSk7XG5hcmNoL3BhcmlzYy9rZXJuZWwvc2V0dXAuYzoxMTU6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcGFyaXNjL2tlcm5lbC9zZXR1cC5jLTExNi1cdHByaW50ayhLRVJOX0NPTlQgXCYjMzQ7ZW5hYmxlZCB3aXRoICVkIE1CIHBoeXNpY2FsIGFuZCAlZCBNQiB2aXJ0dWFsIHNpemVcJiMzNDssXG4tLVxuYXJjaC9wYXJpc2MvbW0vTWFrZWZpbGU9Nj1vYmoteVx0IDo9IGluaXQubyBmYXVsdC5vIGlvcmVtYXAubyBmaXhtYXAub1xuYXJjaC9wYXJpc2MvbW0vTWFrZWZpbGU6NzpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKSAmIzQzOz0gaHVnZXRsYnBhZ2Uub1xuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnPTE3OD1DT05GSUdfVE1QRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWc6MTc5OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWctMTgwLUNPTkZJR19ORlNfRlM9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnPTUwPUNPTkZJR19IUEZTX0ZTPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnOjUxOkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWctNTItQ09ORklHX0lLQ09ORklHX1BST0M9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZz0yMTQ9Q09ORklHX1RNUEZTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZzoyMTU6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWctMjE2LUNPTkZJR19IRlNfRlM9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWc9MTUxPUNPTkZJR19UTVBGUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnOjE1MjpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWctMTUzLUNPTkZJR19DT05GSUdGU19GUz15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9Mjc4PUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6Mjc5OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMjgwLUNPTkZJR19DUkFNRlM9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz0zMzM9Q09ORklHX1RNUEZTX1BPU0lYX0FDTD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6MzM0OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTMzNS1DT05GSUdfSEZTX0ZTPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnPTEzOD1DT05GSUdfVE1QRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZzoxMzk6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnLTE0MC1DT05GSUdfTkZTX0ZTPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZz0yNTc9Q09ORklHX1BST0NfS0NPUkU9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWc6MjU4OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWctMjU5LSMgQ09ORklHX01JU0NfRklMRVNZU1RFTVMgaXMgbm90IHNldFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC03NC1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDo3NTojaWYgZGVmaW5lZChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpIHx8IGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSlcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC03Ni0jZGVmaW5lIEhfUE1EX0ZSQUdfU0laRV9TSElGVCAgKEhfUE1EX0lOREVYX1NJWkUgJiM0MzsgMyAmIzQzOyAxKVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaD0xNzU9c3RhdGljIGlubGluZSBpbnQgaGFzaF9fcmVtYXBfNGtfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTE4Ni0jZGVmaW5lIEhfUFRFX1RBQkxFX1NJWkVcdFBURV9GUkFHX1NJWkVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDoxODc6I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSB8fCBkZWZpbmVkIChDT05GSUdfSFVHRVRMQl9QQUdFKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTE4OC0jZGVmaW5lIEhfUE1EX1RBQkxFX1NJWkVcdCgoc2l6ZW9mKHBtZF90KSBcdTAwM2NcdTAwM2MgUE1EX0lOREVYX1NJWkUpICYjNDM7IFxcXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTE5Mi0jZW5kaWZcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDoxOTM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC0xOTQtI2RlZmluZSBIX1BVRF9UQUJMRV9TSVpFXHQoKHNpemVvZihwdWRfdCkgXHUwMDNjXHUwMDNjIFBVRF9JTkRFWF9TSVpFKSAmIzQzO1x0XFxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2guaC00Ni0gKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oOjQ3OiNpZiBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0UpIFx1MDAyNlx1MDAyNiAgZGVmaW5lZChDT05GSUdfUFBDXzY0S19QQUdFUylcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oLTQ4LSNkZWZpbmUgSF9QVURfQ0FDSEVfSU5ERVhcdChIX1BVRF9JTkRFWF9TSVpFICYjNDM7IDEpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUtaGFzaC5oPTcxMj1zdHJ1Y3QgaGFzaF9tbV9jb250ZXh0IHtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS1oYXNoLmgtNzIyLVx0c3RydWN0IHNsaWNlX21hc2sgbWFza180aztcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvbW11LWhhc2guaDo3MjM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvbW11LWhhc2guaC03MjQtXHRzdHJ1Y3Qgc2xpY2VfbWFzayBtYXNrXzE2bTtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS5oPTE2OT1zdGF0aWMgaW5saW5lIHN0cnVjdCBzbGljZV9tYXNrICpzbGljZV9tYXNrX2Zvcl9zaXplKG1tX2NvbnRleHRfdCAqY3R4LCBpbnQgcHNpemUpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUuaC0xNzQtI2VuZGlmXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS5oOjE3NTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUuaC0xNzYtXHRpZiAocHNpemUgPT0gTU1VX1BBR0VfMTZNKVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGdhbGxvYy5oPTQ4PXN0YXRpYyBpbmxpbmUgcGdkX3QgKnBnZF9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BnYWxsb2MuaC03My1cdCAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ2FsbG9jLmg6NzQ6I2lmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1BQQ182NEtfUEFHRVMpIFx1MDAyNlx1MDAyNiBcXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ2FsbG9jLmgtNzUtXHQoSF9QR0RfSU5ERVhfU0laRSA9PSBIX1BVRF9DQUNIRV9JTkRFWClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUtNjRrLmgtNS0jaWZuZGVmIF9fQVNTRU1CTEVSX19cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS02NGsuaDo2OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUtNjRrLmgtNy1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS02NGsuaDo4OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUtNjRrLmgtOS1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3NsaWNlLmgtNy0jaWZkZWYgQ09ORklHX1BQQ182NFNfSEFTSF9NTVVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvc2xpY2UuaDo4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3NsaWNlLmgtOS0jZGVmaW5lIEhBVkVfQVJDSF9IVUdFVExCX1VOTUFQUEVEX0FSRUFcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTQtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oOjU6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmgtNi0jaW5jbHVkZSBcdTAwM2Nhc20vcGFnZS5oXHUwMDNlXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h1Z2V0bGIuaD02Nz1pbnQgaHVnZV9wdGVwX3NldF9hY2Nlc3NfZmxhZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h1Z2V0bGIuaC03Mi1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmg6NzM6I2Vsc2UgLyogISBDT05GSUdfSFVHRVRMQl9QQUdFICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTc0LXN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF9odWdldGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h1Z2V0bGIuaD03OT1zdGF0aWMgaW5saW5lIHZvaWQgX19pbml0IGh1Z2V0bGJwYWdlX2luaXRfZGVmYXVsdHNpemUodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTgxLX1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmg6ODI6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmgtODMtXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhZ2UuaC0yNi0jaWZuZGVmIF9fQVNTRU1CTEVSX19cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWdlLmg6Mjc6I2lmbmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFnZS5oLTI4LSNkZWZpbmUgSFBBR0VfU0hJRlQgUEFHRV9TSElGVFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTQ0PXN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfbW11X2NhY2hlX3JhbmdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTQ4LVx0aWYgKChtbXVfaGFzX2ZlYXR1cmUoTU1VX0ZUUl9IUFRFX1RBQkxFKSBcdTAwMjZcdTAwMjYgIXJhZGl4X2VuYWJsZWQoKSkgfHxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTQ5Olx0ICAgIChJU19FTkFCTEVEKENPTkZJR19QUENfRTUwMCkgXHUwMDI2XHUwMDI2IElTX0VOQUJMRUQoQ09ORklHX0hVR0VUTEJfUEFHRSkpKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNTAtXHRcdF9fdXBkYXRlX21tdV9jYWNoZSh2bWEsIGFkZHJlc3MsIHB0ZXApO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wdGUtd2Fsay5oPTEwPXN0YXRpYyBpbmxpbmUgcHRlX3QgKmZpbmRfbGludXhfcHRlKHBnZF90ICpwZ2RpciwgdW5zaWduZWQgbG9uZyBlYSxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaC0xOC0jaWYgZGVmaW5lZChDT05GSUdfREVCVUdfVk0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFxcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaDoxOTpcdCEoZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKSB8fCBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaC0yMC1cdC8qXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYz01NDk9aW50IF9faW5pdCBmYWR1bXBfcmVzZXJ2ZV9tZW0odm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTU5NC1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6NTk1OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTU5Ni1cdFx0Lypcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TPTE2Nj1zZXRfaXZvcjpcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTMwNy0gKi9cbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlM6MzA4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTMwOS0jZGVmaW5lIEZJTkRfUFRFXHRcXFxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlM9NjY2PWZpbmlzaF90bGJfbG9hZDpcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlM6NjY3OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTY2OC1cdGNtcHdpXHQ2LCByMTAsIDBcdFx0XHQvKiBjaGVjayBmb3IgaHVnZSBwYWdlICovXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUy03MTgtXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TOjcxOTojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUy03MjAtXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUz03Mzk9RU5EX01NVV9GVFJfU0VDVElPTl9JRlNFVChNTVVfRlRSX0JJR19QSFlTKVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlMtNzQyLVx0cmx3aW1pXHRyMTIsIHIxMSwgMzItMTksIDI3LCAzMVx0LyogZXh0cmFjdCBXSU1HRSBmcm9tIHB0ZSAqL1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUzo3NDM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlMtNzQ0LVx0YmVxXHQ2LCAzZlx0XHRcdC8qIGRvbiYjMzk7dCBtYXNrIGlmIHBhZ2UgaXNuJiMzOTt0IGh1Z2UgKi9cbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TPTc1Mz10bGJfd3JpdGVfZW50cnk6XG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUy03NTctXHRtZnNwclx0cjEwLCBTUFJOX1NQUkdfVEhSRUFEXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TOjc1ODojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUy03NTktXHRiZXFcdDYsIDhmIC8qIHNraXAgcmVzdG9yZSBmb3IgNGsgcGFnZSBmYXVsdHMgKi9cbi0tXG5hcmNoL3Bvd2VycGMvbW0vTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX05VTUEpICYjNDM7PSBudW1hLm9cbmFyY2gvcG93ZXJwYy9tbS9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKVx0JiM0Mzs9IGh1Z2V0bGJwYWdlLm9cbmFyY2gvcG93ZXJwYy9tbS9NYWtlZmlsZS0xNi1vYmotJChDT05GSUdfTk9UX0NPSEVSRU5UX0NBQ0hFKSAmIzQzOz0gZG1hLW5vbmNvaGVyZW50Lm9cbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvTWFrZWZpbGU9MTI9ZW5kaWZcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZS0xMy1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKVx0JiM0Mzs9IGh1Z2V0bGJwYWdlLm9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZS0xNS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfUFBDX1JBRElYX01NVSlcdCYjNDM7PSByYWRpeF9wZ3RhYmxlLm8gcmFkaXhfdGxiLm9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZToxNzppZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX1BQQ19SQURJWF9NTVUpXHQmIzQzOz0gcmFkaXhfaHVnZXRsYnBhZ2Uub1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3RsYi5jPTQxPXZvaWQgaHB0ZV9uZWVkX2ZsdXNoKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdGxiLmMtNjItXHRpZiAoaHVnZSkge1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdGxiLmM6NjM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3RsYi5jLTY0LVx0XHRwc2l6ZSA9IGdldF9zbGljZV9wc2l6ZShtbSwgYWRkcik7XG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz04NDY9c3RhdGljIGludCBfX2luaXQgaHRhYl9kdF9zY2FuX3BhZ2Vfc2l6ZXModW5zaWduZWQgbG9uZyBub2RlLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtOTIzLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzo5MjQ6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtOTI1LS8qXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz05Mjk9c3RhdGljIGludCBfX2luaXQgaHRhYl9kdF9zY2FuX2h1Z2VwYWdlX2Jsb2Nrcyh1bnNpZ25lZCBsb25nIG5vZGUsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy05NjYtfVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzo5Njc6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtOTY4LVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM9OTk2PXN0YXRpYyB2b2lkIF9faW5pdCBodGFiX3NjYW5fcGFnZV9zaXplcyh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTAxOS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTAyMDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMDIxLVx0aWYgKCFodWdldGxiX2Rpc2FibGVkIFx1MDAyNlx1MDAyNiAhZWFybHlfcmFkaXhfZW5hYmxlZCgpICkge1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTAyNC1cdH1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTAyNTojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMDI2LX1cbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTE3MTg9aW50IGhhc2hfcGFnZV9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBlYSxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTE4MzgtXHRcdFx0XHRcdCAgICAgdHJhcCwgZmxhZ3MsIHNzaXplLCBwc2l6ZSk7XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjE4Mzk6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTg0MC1cdFx0ZWxzZVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYz02MjY9dm9pZCByYWRpeF9fbG9jYWxfZmx1c2hfdGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgdm1hZGRyKVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTYyNy17XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM6NjI4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtNjI5LVx0LyogbmVlZCB0aGUgcmV0dXJuIGZpeCBmb3Igbm9oYXNoLmMgKi9cbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM9OTQ1PXZvaWQgcmFkaXhfX2ZsdXNoX3RsYl9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHZtYWRkcilcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy05NDYte1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjk0NzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTk0OC1cdGlmIChpc192bV9odWdldGxiX3BhZ2Uodm1hKSlcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM9MTExMT12b2lkIHJhZGl4X19mbHVzaF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTExMTQte1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjExMTU6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy0xMTE2LVx0aWYgKGlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGljZS5jPTYzNj1FWFBPUlRfU1lNQk9MX0dQTChzbGljZV9nZXRfdW5tYXBwZWRfYXJlYSk7XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xpY2UuYy02MzctXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xpY2UuYzo2Mzg6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGljZS5jLTYzOS1zdGF0aWMgaW50IGZpbGVfdG9fcHNpemUoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsaWNlLmM9NzU3PXZvaWQgc2xpY2Vfc2V0X3JhbmdlX3BzaXplKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGljZS5jLTc2Ny1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGljZS5jOjc2ODojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsaWNlLmMtNzY5LS8qXG4tLVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYz02MTc9dm9pZCBfX2luaXQgbW11X2Vhcmx5X2luaXRfZGV2dHJlZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtNjY0LVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYzo2NjU6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEUpKVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy02NjYtXHRcdGh1Z2V0bGJwYWdlX2luaXRfZGVmYXVsdHNpemUoKTtcbi0tXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX1JBTkRPTUlaRV9CQVNFKVx0JiM0Mzs9IGthc2xyX2Jvb2tlLm9cbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvTWFrZWZpbGU6OTppZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19QUENfRTUwMClcdCYjNDM7PSBlNTAwX2h1Z2V0bGJwYWdlLm9cbi0tXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL3RsYi5jPTI3OD12b2lkIGZsdXNoX3RsYl9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHZtYWRkcilcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvdGxiLmMtMjc5LXtcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvdGxiLmM6MjgwOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL3RsYi5jLTI4MS1cdGlmICh2bWEgXHUwMDI2XHUwMDI2IGlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLmM9MjU1PWludCBwdGVwX3NldF9hY2Nlc3NfZmxhZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jLTI2OC1cbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLmM6MjY5OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jLTI3MC1pbnQgaHVnZV9wdGVwX3NldF9hY2Nlc3NfZmxhZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUuYz0zNTM9dm9pZCBzZXRfaHVnZV9wdGVfYXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkciwgcHRlX3QgKnB0ZXAsXG4tLVxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUuYy0zODMtI2VuZGlmXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jOjM4NDojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xuYXJjaC9wb3dlcnBjL21tL3BndGFibGUuYy0zODUtXG4tLVxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZz0yOTA9Q09ORklHX1RNUEZTX1BPU0lYX0FDTD15XG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnOjI5MTpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWctMjkyLUNPTkZJR19ORlNfRlM9eVxuLS1cbmFyY2gvcmlzY3YvbW0vTWFrZWZpbGU9MTk9b2JqLXkgJiM0Mzs9IHBtZW0ub1xuYXJjaC9yaXNjdi9tbS9NYWtlZmlsZS0yMC1cbmFyY2gvcmlzY3YvbW0vTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSkgJiM0Mzs9IGh1Z2V0bGJwYWdlLm9cbmFyY2gvcmlzY3YvbW0vTWFrZWZpbGUtMjItb2JqLSQoQ09ORklHX1BURFVNUCkgJiM0Mzs9IHB0ZHVtcC5vXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTcwNj1DT05GSUdfVE1QRlNfUVVPVEE9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjcwNzpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy03MDgtQ09ORklHX0VDUllQVF9GUz1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTY5Mj1DT05GSUdfVE1QRlNfUVVPVEE9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjY5MzpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy02OTQtQ09ORklHX0VDUllQVF9GUz1tXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMTExPXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rc3BlY2lhbChwdGVfdCBwdGUpXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMTE1LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMTE2OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTExMTctc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtodWdlKHB0ZV90IHB0ZSlcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE1NjA9c3RhdGljIGlubGluZSBwdWRfdCBwdWRfbWtkaXJ0eShwdWRfdCBwdWQpXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNTY3LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNTY4OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNTY5LXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBtYXNzYWdlX3BncHJvdF9wbWQocGdwcm90X3QgcGdwcm90KVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTYxOD1zdGF0aWMgaW5saW5lIHBtZF90IG1rX3BtZF9waHlzKHVuc2lnbmVkIGxvbmcgcGh5c3BhZ2UsIHBncHJvdF90IHBncHJvdClcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE2MjItXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjE2MjM6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSB8fCBDT05GSUdfSFVHRVRMQl9QQUdFICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE2MjQtXG4tLVxuYXJjaC9zMzkwL21tL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19ERUJVR19WSVJUVUFMKVx0JiM0Mzs9IHBoeXNhZGRyLm9cbmFyY2gvczM5MC9tbS9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKVx0JiM0Mzs9IGh1Z2V0bGJwYWdlLm9cbmFyY2gvczM5MC9tbS9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfUFREVU1QKVx0XHQmIzQzOz0gZHVtcF9wYWdldGFibGVzLm9cbi0tXG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZz0yNT1DT05GSUdfTUVNT1JZX1NJWkU9MHgxMDAwMDAwMFxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWc6MjY6Q09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzFNQj15XG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZy0yNy1DT05GSUdfS1NNPXlcbi0tXG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZz05Nz1DT05GSUdfVE1QRlM9eVxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWc6OTg6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZy05OS1DT05GSUdfSkZGUzJfRlM9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9kcmVhbWNhc3RfZGVmY29uZmlnPTY0PUNPTkZJR19UTVBGUz15XG5hcmNoL3NoL2NvbmZpZ3MvZHJlYW1jYXN0X2RlZmNvbmZpZzo2NTpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvc2gvY29uZmlncy9kcmVhbWNhc3RfZGVmY29uZmlnLTY2LUNPTkZJR19SVENfQ0xBU1M9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9yNzc4MG1wX2RlZmNvbmZpZz04ND1DT05GSUdfVE1QRlM9eVxuYXJjaC9zaC9jb25maWdzL3I3NzgwbXBfZGVmY29uZmlnOjg1OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9zaC9jb25maWdzL3I3NzgwbXBfZGVmY29uZmlnLTg2LUNPTkZJR19DT05GSUdGU19GUz1tXG4tLVxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnPTE2PUNPTkZJR19NRU1PUllfU0laRT0weDA4MDAwMDAwXG5hcmNoL3NoL2NvbmZpZ3Mvcjc3ODVycF9kZWZjb25maWc6MTc6Q09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzFNQj15XG5hcmNoL3NoL2NvbmZpZ3Mvcjc3ODVycF9kZWZjb25maWctMTgtQ09ORklHX1NIX1NUT1JFX1FVRVVFUz15XG4tLVxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnPTc5PUNPTkZJR19UTVBGUz15XG5hcmNoL3NoL2NvbmZpZ3Mvcjc3ODVycF9kZWZjb25maWc6ODA6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3NoL2NvbmZpZ3Mvcjc3ODVycF9kZWZjb25maWctODEtQ09ORklHX0NPTkZJR0ZTX0ZTPW1cbi0tXG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4MF9kZWZjb25maWc9MTE1PUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODBfZGVmY29uZmlnOjExNjpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvc2gvY29uZmlncy9zZGs3NzgwX2RlZmNvbmZpZy0xMTctQ09ORklHX01JTklYX0ZTPXlcbi0tXG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWc9NDQ9Q09ORklHX05VTUE9eVxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnOjQ1OkNPTkZJR19IVUdFVExCX1BBR0VfU0laRV82NE1CPXlcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZy00Ni1DT05GSUdfS1NNPXlcbi0tXG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWc9MTc5PUNPTkZJR19UTVBGUz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWc6MTgwOkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnLTE4MS1DT05GSUdfQ09ORklHRlNfRlM9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9zZTc3MjJfZGVmY29uZmlnPTQ5PUNPTkZJR19UTVBGUz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIyX2RlZmNvbmZpZzo1MDpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvc2gvY29uZmlncy9zZTc3MjJfZGVmY29uZmlnLTUxLUNPTkZJR19QUklOVEtfVElNRT15XG4tLVxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWc9MTc9Q09ORklHX1BNQj15XG5hcmNoL3NoL2NvbmZpZ3Mvc2g3Nzg1bGNyXzMyYml0X2RlZmNvbmZpZzoxODpDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMU1CPXlcbmFyY2gvc2gvY29uZmlncy9zaDc3ODVsY3JfMzJiaXRfZGVmY29uZmlnLTE5LUNPTkZJR19TSF9TVE9SRV9RVUVVRVM9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9zaDc3ODVsY3JfMzJiaXRfZGVmY29uZmlnPTEyMT1DT05GSUdfVE1QRlM9eVxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWc6MTIyOkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWctMTIzLUNPTkZJR19DT05GSUdGU19GUz15XG4tLVxuYXJjaC9zaC9jb25maWdzL3NoeDNfZGVmY29uZmlnPTg5PUNPTkZJR19UTVBGUz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWc6OTA6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWctOTEtIyBDT05GSUdfRU5BQkxFX01VU1RfQ0hFQ0sgaXMgbm90IHNldFxuLS1cbmFyY2gvc2gvY29uZmlncy91bDJfZGVmY29uZmlnPTcyPUNPTkZJR19UTVBGUz15XG5hcmNoL3NoL2NvbmZpZ3MvdWwyX2RlZmNvbmZpZzo3MzpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvc2gvY29uZmlncy91bDJfZGVmY29uZmlnLTc0LUNPTkZJR19DUkFNRlM9eVxuLS1cbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZz0xMjI9Q09ORklHX1RNUEZTPXlcbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZzoxMjM6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWctMTI0LUNPTkZJR19DT05GSUdGU19GUz15XG4tLVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmgtMTQtXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaDoxNTojaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfNjRLKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmgtMTYtI2RlZmluZSBIUEFHRV9TSElGVFx0MTZcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oOjE3OiNlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzI1NkspXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaC0xOC0jZGVmaW5lIEhQQUdFX1NISUZUXHQxOFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmg6MTk6I2VsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMU1CKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmgtMjAtI2RlZmluZSBIUEFHRV9TSElGVFx0MjBcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oOjIxOiNlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzRNQilcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oLTIyLSNkZWZpbmUgSFBBR0VfU0hJRlRcdDIyXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaDoyMzojZWxpZiBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0VfU0laRV82NE1CKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmgtMjQtI2RlZmluZSBIUEFHRV9TSElGVFx0MjZcbi0tXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaC0yNi1cbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oOjI3OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaC0yOC0jZGVmaW5lIEhQQUdFX1NJWkVcdFx0KDFVTCBcdTAwM2NcdTAwM2MgSFBBR0VfU0hJRlQpXG4tLVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmg9OTc9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGNvcHlfcHRlYV9hdHRyaWJ1dGVzKHVuc2lnbmVkIGxvbmcgeClcbi0tXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaC0xMzYtI2lmIGRlZmluZWQoQ09ORklHX1gyVExCKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmg6MTM3OiMgaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfNjRLKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgtMTM4LSMgIGRlZmluZSBfUEFHRV9TWkhVR0VcdChfUEFHRV9FWFRfRVNaMilcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oOjEzOTojIGVsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMjU2SylcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oLTE0MC0jICBkZWZpbmUgX1BBR0VfU1pIVUdFXHQoX1BBR0VfRVhUX0VTWjAgfCBfUEFHRV9FWFRfRVNaMilcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oOjE0MTojIGVsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMU1CKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgtMTQyLSMgIGRlZmluZSBfUEFHRV9TWkhVR0VcdChfUEFHRV9FWFRfRVNaMCB8IF9QQUdFX0VYVF9FU1oxIHwgX1BBR0VfRVhUX0VTWjIpXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaDoxNDM6IyBlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzRNQilcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oLTE0NC0jICBkZWZpbmUgX1BBR0VfU1pIVUdFXHQoX1BBR0VfRVhUX0VTWjMpXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaDoxNDU6IyBlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzY0TUIpXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaC0xNDYtIyAgZGVmaW5lIF9QQUdFX1NaSFVHRVx0KF9QQUdFX0VYVF9FU1oyIHwgX1BBR0VfRVhUX0VTWjMpXG4tLVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgtMTQ5LSNlbHNlXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaDoxNTA6IyBpZiBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0VfU0laRV82NEspXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaC0xNTEtIyAgZGVmaW5lIF9QQUdFX1NaSFVHRVx0KF9QQUdFX1NaMSlcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oOjE1MjojIGVsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMU1CKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgtMTUzLSMgIGRlZmluZSBfUEFHRV9TWkhVR0VcdChfUEFHRV9TWjAgfCBfUEFHRV9TWjEpXG4tLVxuYXJjaC9zaC9tbS9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfREVCVUdfRlMpXHRcdCYjNDM7PSAkKGRlYnVnZnMteSlcbmFyY2gvc2gvbW0vTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSlcdCYjNDM7PSBodWdldGxicGFnZS5vXG5hcmNoL3NoL21tL01ha2VmaWxlLTM5LW9iai0kKENPTkZJR19QTUIpXHRcdCYjNDM7PSBwbWIub1xuLS1cbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZz0xOTI9Q09ORklHX1RNUEZTPXlcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZzoxOTM6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWctMTk0LUNPTkZJR19QUklOVEtfVElNRT15XG4tLVxuYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9odWdldGxiLmgtNi1cbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vaHVnZXRsYi5oOjc6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTgtc3RydWN0IHB1ZF9odWdlX3BhdGNoX2VudHJ5IHtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDMwOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgSHVnZSBQYWdlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIGh1Z2UgcGFnZXMuIGBDT05GSUdfSFVHRVRMQl9QQUdFYCBpcyB0aGUga2V5IG9uZSwgYW5kIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciBicmluZ2luZyBgaHVnZXRsYnBhZ2Uub2AgaW50byB0aGUgZ2FtZSBhY3Jvc3MgYSBidW5jaCBvZiBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcy4gVGhlbiB0aGVyZSYjMzk7cyBgQ09ORklHX0NNQWAsIHdoaWNoIGVuYWJsZXMgQ01BLiBUaGF0JiMzOTtzIENvbW1hLXNlcGFyYXRlZCBNZW1vcnkgQWxsb2NhdGlvbiwgaWYgSSByZWNhbGwuIE5vdywgYENPTkZJR19IVUdFVExCRlNgIGlzIHdoYXQgYWN0dWFsbHkgZW5hYmxlcyBgaHVnZXRsYl9jbWEub2Agd2l0aGluIGBtbS9NYWtlZmlsZWAuCgpIb2xkIG9uLi4uIGxvb2tpbmcgYXQgYG1tL01ha2VmaWxlYCBkaXJlY3RseSwgaXQgaGFzIHRoaXMgY29uZGl0aW9uYWwgYmxvY2s6CgpgYGAKaWZkZWYgQ09ORklHX0NNQQpvYmotJChDT05GSUdfSFVHRVRMQkZTKSAmIzQzOz0gaHVnZXRsYl9jbWEubwplbmRpZgpgYGAKClJpZ2h0LCBzbyBgQ09ORklHX0hVR0VUTEJGU2AgYW5kIGBDT05GSUdfQ01BYCAqYm90aCogbmVlZCB0byBiZSBlbmFibGVkIGZvciBgaHVnZXRsYl9jbWEub2AgdG8gZ2V0IGJ1aWx0LiBUaGF0IGV4cGxhaW5zIHdoeSBJJiMzOTttIHNlZWluZyB0aGlzIHBhcnRpY3VsYXIgcmVsYXRpb25zaGlwLiBOb3csIGxldCYjMzk7cyBzZWUgaG93IGBtbS9odWdldGxiLmNgIGNvbXBpbGF0aW9uIGlzIGhhbmRsZWQuCgpPa2F5LCBoZXJlIGl0IGlzOgoKYGBgCm9iai0kKENPTkZJR19IVUdFVExCX1BBR0UpICYjNDM7PSBodWdldGxiLm8KYGBgCgpBaGEhIGBodWdldGxiLm9gIGlzIHRpZWQgZGlyZWN0bHkgdG8gYENPTkZJR19IVUdFVExCX1BBR0VgLiBOb3csIHRoZSBjcnVjaWFsIHBpZWNlIGlzIGhvdyBgQ09ORklHX0hVR0VUTEJfUEFHRWAgaXRzZWxmIGlzIHNlbGVjdGVkLiBJdCYjMzk7cyBsaWtlbHkgcmVsYXRlZCB0byBgQ09ORklHX0hVR0VUTEJGU2AuIEkgbmVlZCB0byBjb25zdWx0IGVpdGhlciBgZnMvS2NvbmZpZ2Agb3IgYG1tL0tjb25maWdgIHRvIGNvbmZpcm0gdGhhdCBkaXJlY3Qgc2VsZWN0aW9uLiBJIGFtIGFzc3VtaW5nIHRoYXQgaXQgaXMgdGhlIGRpcmVjdCBzZWxlY3Rpb24uIEkgbmVlZCB0byBiZSBzdXJlLCBvZiBjb3Vyc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBIVUdFVExCRlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZz0yNDc9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXG4tLVxuZnMvS2NvbmZpZy0yNDktXG5mcy9LY29uZmlnOjI1MDptZW51Y29uZmlnIEhVR0VUTEJGU1xuZnMvS2NvbmZpZy0yNTEtXHRib29sIFwmIzM0O0h1Z2VUTEIgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSFVHRVRMQl9QQUdFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvc2gvbW0vS2NvbmZpZz0xNTg9Y2hvaWNlXG4tLVxuYXJjaC9zaC9tbS9LY29uZmlnLTE2My1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNjQ6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzY0S1xuYXJjaC9zaC9tbS9LY29uZmlnLTE2NS1cdGJvb2wgXCYjMzQ7NjRrQlwmIzM0O1xuLS1cbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjctXG5hcmNoL3NoL21tL0tjb25maWc6MTY4OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8yNTZLXG5hcmNoL3NoL21tL0tjb25maWctMTY5LVx0Ym9vbCBcJiMzNDsyNTZrQlwmIzM0O1xuLS1cbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzEtXG5hcmNoL3NoL21tL0tjb25maWc6MTcyOmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8xTUJcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0OzFNQlwmIzM0O1xuYXJjaC9zaC9tbS9LY29uZmlnLTE3NC1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzU6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzRNQlxuYXJjaC9zaC9tbS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7NE1CXCYjMzQ7XG4tLVxuYXJjaC9zaC9tbS9LY29uZmlnLTE3OC1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzk6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzY0TUJcbmFyY2gvc2gvbW0vS2NvbmZpZy0xODAtXHRib29sIFwmIzM0OzY0TUJcJiMzNDtcbi0tXG5mcy9LY29uZmlnPTI2Mj1pZiBIVUdFVExCRlNcbmZzL0tjb25maWc6MjYzOmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUF9ERUZBVUxUX09OXG5mcy9LY29uZmlnLTI2NC1cdGJvb2wgXCYjMzQ7SHVnZVRMQiBWbWVtbWFwIE9wdGltaXphdGlvbiAoSFZPKSBkZWZhdWx0cyB0byBvblwmIzM0O1xuLS1cbmZzL0tjb25maWc9MjcxPWVuZGlmICMgSFVHRVRMQkZTXG5mcy9LY29uZmlnLTI3Mi1cbmZzL0tjb25maWc6MjczOmNvbmZpZyBIVUdFVExCX1BBR0VcbmZzL0tjb25maWctMjc0LVx0ZGVmX2Jvb2wgSFVHRVRMQkZTXG4tLVxuZnMvS2NvbmZpZy0yNzYtXG5mcy9LY29uZmlnOjI3Nzpjb25maWcgSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcbmZzL0tjb25maWctMjc4LVx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXG4tLVxubW0vS2NvbmZpZz03MDY9Y29uZmlnIEFSQ0hfRU5BQkxFX1RIUF9NSUdSQVRJT05cbi0tXG5tbS9LY29uZmlnLTcwOC1cbm1tL0tjb25maWc6NzA5OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxubW0vS2NvbmZpZy03MTAtXHRkZWZfYm9vbCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTk3CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIG15IG1lbnRhbCBjaGVja2xpc3QgYmVnaW5zIHdpdGggdGhlIG9idmlvdXM6CgoqKkluaXRpYWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKU28sIGBDT05GSUdfSFVHRVRMQkZTYCBpcyB0aGUgY29ybmVyc3RvbmUgaGVyZTsgaXQmIzM5O3MgdGhlIG9uZSB0aGF0IHB1bGxzIGluIGBDT05GSUdfSFVHRVRMQl9QQUdFYCwgYW5kIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gVGhleSYjMzk7cmUgaW50cmluc2ljYWxseSBsaW5rZWQuIFRoZW4sIG9mIGNvdXJzZSwgdGhlIGBodWdldGxiX2NtYS5jYCBtb2R1bGUgZGVtYW5kcyBgQ09ORklHX0NNQWAuIEkga25ldyB0aGF0IG9uZSBieSBoZWFydC4gTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIGVsc2UuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiB3ZSBuZWVkIGBDT05GSUdfQ1BVU0VUU2AgZm9yIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8ga25vd2luZyB3aGVyZSBsYXJnZSBwYWdlcyBhcmUgdmlzaWJsZSB0byBwcm9jZXNzZXMuIEFsd2F5cyBuZWVkIHRvIGJlIHRob3JvdWdoIHdpdGggdGhlIGRlcGVuZGVuY2llcy4gSSBoYXZlIHRvIHRoaW5rIHRocm91Z2ggd2hldGhlciB0aGUgY3VycmVudCBtZW1vcnkgcG9saWN5LCBhcyBjb250cm9sbGVkIGJ5IGNwdXNldHMsIGlzIGEgZmFjdG9yLiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2NwdXNldC5oPTgzPWV4dGVybiBub2RlbWFza190IGNwdXNldF9tZW1zX2FsbG93ZWQoc3RydWN0IHRhc2tfc3RydWN0ICpwKTtcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6ODQ6I2RlZmluZSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQgKGN1cnJlbnQtXHUwMDNlbWVtc19hbGxvd2VkKVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC04NS12b2lkIGNwdXNldF9pbml0X2N1cnJlbnRfbWVtc19hbGxvd2VkKHZvaWQpO1xuLS1cbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg9MjE5PXN0YXRpYyBpbmxpbmUgbm9kZW1hc2tfdCBjcHVzZXRfbWVtc19hbGxvd2VkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyMy1cbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MjI0OiNkZWZpbmUgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkIChub2RlX3N0YXRlc1tOX01FTU9SWV0pXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyNS1zdGF0aWMgaW5saW5lIHZvaWQgY3B1c2V0X2luaXRfY3VycmVudF9tZW1zX2FsbG93ZWQodm9pZCkge31cbi0tXG5rZXJuZWwvc2NoZWQvZmFpci5jPTQwNzY9c3RhdGljIHZvaWQgdGFza19udW1hX3dvcmsoc3RydWN0IGNhbGxiYWNrX2hlYWQgKndvcmspXG4tLVxua2VybmVsL3NjaGVkL2ZhaXIuYy00MTA3LVx0ICovXG5rZXJuZWwvc2NoZWQvZmFpci5jOjQxMDg6XHRpZiAoY3B1c2V0c19lbmFibGVkKCkgXHUwMDI2XHUwMDI2IG5vZGVzX3dlaWdodChjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpID09IDEpIHtcbmtlcm5lbC9zY2hlZC9mYWlyLmM6NDEwOTpcdFx0dHJhY2Vfc2NoZWRfc2tpcF9jcHVzZXRfbnVtYShjdXJyZW50LCBcdTAwMjZjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpO1xua2VybmVsL3NjaGVkL2ZhaXIuYy00MTEwLVx0XHRyZXR1cm47XG4tLVxubW0vaHVnZXRsYi5jPTE4NjM9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbm1tL2h1Z2V0bGIuYy0xODczLVx0XHRcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XG5tbS9odWdldGxiLmM6MTg3NDpcdFx0XHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG5tbS9odWdldGxiLmMtMTg3NS1cdFx0fSB3aGlsZSAocmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoY3B1c2V0X21lbXNfY29va2llKSk7XG4tLVxubW0vaHVnZXRsYi5jPTIyNTc9c3RhdGljIGludCBnYXRoZXJfc3VycGx1c19wYWdlcyhzdHJ1Y3QgaHN0YXRlICpoLCBsb25nIGRlbHRhKVxuLS1cbm1tL2h1Z2V0bGIuYy0yMjY5LVx0aWYgKG1iaW5kX25vZGVtYXNrKVxubW0vaHVnZXRsYi5jOjIyNzA6XHRcdG5vZGVzX2FuZChhbGxvY19ub2RlbWFzaywgKm1iaW5kX25vZGVtYXNrLCBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpO1xubW0vaHVnZXRsYi5jLTIyNzEtXHRlbHNlXG5tbS9odWdldGxiLmM6MjI3MjpcdFx0YWxsb2Nfbm9kZW1hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG5tbS9odWdldGxiLmMtMjI3My1cbi0tXG5tbS9odWdldGxiLmM9NDUxMj1zdGF0aWMgdW5zaWduZWQgaW50IGFsbG93ZWRfbWVtc19ucihzdHJ1Y3QgaHN0YXRlICpoKVxuLS1cbm1tL2h1Z2V0bGIuYy00NTIwLVx0bWJpbmRfbm9kZW1hc2sgPSBwb2xpY3lfbWJpbmRfbm9kZW1hc2soZ2ZwX21hc2spO1xubW0vaHVnZXRsYi5jOjQ1MjE6XHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKSB7XG5tbS9odWdldGxiLmMtNDUyMi1cdFx0aWYgKCFtYmluZF9ub2RlbWFzayB8fCBub2RlX2lzc2V0KG5vZGUsICptYmluZF9ub2RlbWFzaykpXG4tLVxubW0vbWVtcG9saWN5LmM9NDA0PXN0YXRpYyBpbnQgbXBvbF9zZXRfbm9kZW1hc2soc3RydWN0IG1lbXBvbGljeSAqcG9sLFxuLS1cbm1tL21lbXBvbGljeS5jLTQxOC1cdG5vZGVzX2FuZChuc2MtXHUwMDNlbWFzazEsXG5tbS9tZW1wb2xpY3kuYzo0MTk6XHRcdCAgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkLCBub2RlX3N0YXRlc1tOX01FTU9SWV0pO1xubW0vbWVtcG9saWN5LmMtNDIwLVxuLS1cbm1tL21lbXBvbGljeS5jLTQzMC1cdGVsc2Vcbm1tL21lbXBvbGljeS5jOjQzMTpcdFx0cG9sLVx1MDAzZXcuY3B1c2V0X21lbXNfYWxsb3dlZCA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcbm1tL21lbXBvbGljeS5jLTQzMi1cbi0tXG5tbS9tZW1wb2xpY3kuYz0xMTQ3PXN0YXRpYyBsb25nIGRvX2dldF9tZW1wb2xpY3koaW50ICpwb2xpY3ksIG5vZGVtYXNrX3QgKm5tYXNrLFxuLS1cbm1tL21lbXBvbGljeS5jLTExNjMtXHRcdHRhc2tfbG9jayhjdXJyZW50KTtcbm1tL21lbXBvbGljeS5jOjExNjQ6XHRcdCpubWFzayAgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG5tbS9tZW1wb2xpY3kuYy0xMTY1LVx0XHR0YXNrX3VubG9jayhjdXJyZW50KTtcbi0tXG5tbS9vb21fa2lsbC5jPTI0OT1zdGF0aWMgZW51bSBvb21fY29uc3RyYWludCBjb25zdHJhaW5lZF9hbGxvYyhzdHJ1Y3Qgb29tX2NvbnRyb2wgKm9jKVxuLS1cbm1tL29vbV9raWxsLmMtMjk4LVx0XHRvYy1cdTAwM2V0b3RhbHBhZ2VzID0gdG90YWxfc3dhcF9wYWdlcztcbm1tL29vbV9raWxsLmM6Mjk5Olx0XHRmb3JfZWFjaF9ub2RlX21hc2sobmlkLCBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpXG5tbS9vb21fa2lsbC5jLTMwMC1cdFx0XHRvYy1cdTAwM2V0b3RhbHBhZ2VzICYjNDM7PSBub2RlX3ByZXNlbnRfcGFnZXMobmlkKTtcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDcyNT1fX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTQ4MDYtXHRcdFx0XHRcdGFjLVx1MDAzZWhpZ2hlc3Rfem9uZWlkeCxcbm1tL3BhZ2VfYWxsb2MuYzo0ODA3Olx0XHRcdFx0XHRcdTAwMjZjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpO1xubW0vcGFnZV9hbGxvYy5jLTQ4MDgtXHRcdGlmICghem9uZWxpc3Rfem9uZSh6KSlcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NTAyNj1zdGF0aWMgaW5saW5lIGJvb2wgcHJlcGFyZV9hbGxvY19wYWdlcyhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy01MDQyLVx0XHRpZiAoaW5fdGFzaygpIFx1MDAyNlx1MDAyNiAhYWMtXHUwMDNlbm9kZW1hc2spXG5tbS9wYWdlX2FsbG9jLmM6NTA0MzpcdFx0XHRhYy1cdTAwM2Vub2RlbWFzayA9IFx1MDAyNmNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcbm1tL3BhZ2VfYWxsb2MuYy01MDQ0LVx0XHRlbHNlXG4tLVxubW0vcGFnZV9hbGxvYy5jPTUyNjg9c3RydWN0IHBhZ2UgKl9fYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBvcmRlcixcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNTMxMi1cdCAqIFJlc3RvcmUgdGhlIG9yaWdpbmFsIG5vZGVtYXNrIGlmIGl0IHdhcyBwb3RlbnRpYWxseSByZXBsYWNlZCB3aXRoXG5tbS9wYWdlX2FsbG9jLmM6NTMxMzpcdCAqIFx1MDAyNmNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCB0byBvcHRpbWl6ZSB0aGUgZmFzdC1wYXRoIGF0dGVtcHQuXG5tbS9wYWdlX2FsbG9jLmMtNTMxNC1cdCAqL1xuLS1cbm1tL3Nob3dfbWVtLmM9MTE5PXN0YXRpYyBib29sIHNob3dfbWVtX25vZGVfc2tpcCh1bnNpZ25lZCBpbnQgZmxhZ3MsIGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxuLS1cbm1tL3Nob3dfbWVtLmMtMTI5LVx0aWYgKCFub2RlbWFzaylcbm1tL3Nob3dfbWVtLmM6MTMwOlx0XHRub2RlbWFzayA9IFx1MDAyNmNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcbm1tL3Nob3dfbWVtLmMtMTMxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzU1NwoJCQkJCQkJb3V0cHV0OiAyMDMKCQkJCQkJCXRob3VnaHRzOiA5NTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgSHVnZXRsYiBhbmQgSHVnZXRsYl9DTUEgQWxsb2NhdGlvbiBDaGFuZ2VzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgaXMgcGxheWluZyBhIHJvbGUsIHdoaWNoIGlzIGRlZmluZWQgaW4gYGNwdXNldC5oYC4gSXQgYXBwZWFycyB0byBiZSBiYXNlZCBvbiBgY3VycmVudC0mZ3Q7bWVtc19hbGxvd2VkYCBpZiBjcHVzZXRzIGFyZSBlbmFibGVkLCBidXQgZGVmYXVsdHMgdG8gYG5vZGVfc3RhdGVzW05fTUVNT1JZXWAgb3RoZXJ3aXNlLiBUaGlzIHN1Z2dlc3RzIHRoYXQgZXZlbiB3aXRob3V0IGBDT05GSUdfQ1BVU0VUU2AsIHRoZSBjb2RlIG1pZ2h0IHN0aWxsIGJlIHJlbGV2YW50LCB0aG91Z2ggYENPTkZJR19IVUdFVExCRlNgIGFuZCBgQ09ORklHX0NNQWAgc2VlbSBsaWtlIHRoZSBtb3JlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb25zIGhlcmUuCgpOb3csIGZvY3VzaW5nIG9uIHRoZSBjb3JlIGNoYW5nZXMsIHRoaXMgcGF0Y2ggdG91Y2hlcyBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgYW5kIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLiBGdW5jdGlvbmFsbHksIHRoZXNlIGNoYW5nZXMgbG9vayBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJbiBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AsIHdoZW4gYG5tYXNrYCBpcyBOVUxMLCBpbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIG51bGwgbWFzayBpbnRvIGBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gLCBpdCBub3cgdXNlcyBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQ7IHRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IGEgTlVMTCBgbm1hc2tgIGFsbG93cyBhbGxvY2F0aW9uIGZyb20gKmFueSogbm9kZSwgYnV0IG5vdyB0aGUgY29kZSByZXN0cmljdHMgaXQgdG8gdGhlIGN1cnJlbnQgY3B1c2V0JiMzOTtzIGFsbG93ZWQgbWVtb3J5IG5vZGVzLiBUaGlzIGxvb2tzIGxpa2UgYSBjb25zdHJhaW50IHRvIHJlZHVjZSBtZW1vcnkgYWxsb2NhdGlvbiBmb290cHJpbnQuCgpJbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCwgdGhlIHBhdGNoIGFkZHMgYSBgbm9kZV9pc3NldGAgY2hlY2sgYWdhaW5zdCBgbm9kZW1hc2tgIGJlZm9yZSBhbGxvY2F0aW5nIGZyb20gYGh1Z2V0bGJfY21hW25pZF1gLiBUaGlzIGlzIGFub3RoZXIgdGFyZ2V0ZWQgcmVzdHJpY3Rpb24sIHRoaXMgdGltZSBlbnN1cmluZyB0aGF0IG9ubHkgYWxsb3dlZCBub2RlcyBhcmUgdXNlZCBmb3IgYWxsb2NhdGlvbi4KClRoaXMgaXMgY2xlYXJseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgaHVnZXRsYiBhbmQgaHVnZXRsYl9jbWEgbWVtb3J5IGFsbG9jYXRpb24gcGF0aHMuIEl0JiMzOTtzIHRpZ2h0ZW5pbmcgdGhlIG5vZGUgbWFzayBjb25zdHJhaW50cy4gU2luY2UgdGhpcyBpbnZvbHZlcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCB0aGlzIGFic29sdXRlbHkgd2FycmFudHMgZnV6emluZy4KCk15IHByaW1hcnkgZm9jdXMgcG9pbnRzIGhlcmUgYXJlIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBhbmQgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AsIGJ1dCBJIHNob3VsZCBjaGVjayB0aGUgY2FsbGVycyBvZiB0aG9zZSBmdW5jdGlvbnMgdG9vLiBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgaXMgc3RhdGljLiBBbHJpZ2h0LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgY2FsbHM6IGBhbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW9gLCBgYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvYCwgYW5kIGBhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb2AuCgpgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBpcyBjYWxsZWQgYnkgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2AuIE9rYXksIGxldCYjMzk7cyBpbmNsdWRlIHRob3NlLgoKVGhlcmVmb3JlLCB0aGUgcmV2aXNlZCBmb2N1cyBzeW1ib2xzIGFyZToKKiAgIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYAoqICAgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AKKiAgIGBhbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW9gCiogICBgYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvYAoqICAgYGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvYAoqICAgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2AKCkFuZCB0aGUgY29uZmlncyB0byBlbmFibGU6CiogICBgSFVHRVRMQkZTYAoqICAgYENNQWAKCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayByZWFjaGFiaWxpdHkuIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBpcyBpbmRlZWQgY2FsbGVkIGJ5IGBhbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW9gLCBgYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvYCwgYW5kIGBhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb2AsIGFuZCB0aG9zZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBieSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgYW5kIG1pZ3JhdGlvbiBhbmQgaXNvbGF0aW9uIGNvZGUgcmVzcGVjdGl2ZWx5LiBBbHNvLCBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBpcyBjYWxsZWQgYnkgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2Agd2hpY2ggaXMgY2FsbGVkIGJ5IGBhbGxvY19wb29sX2h1Z2VfZm9saW9gLiBZdXAsIHRoZXkmIzM5O3JlIGFsbCByZWFjaGFibGUuCgpUaGVyZWZvcmUsIGl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gVGhlIHBhdGNoIHJlc3RyaWN0cyBtZW1vcnkgYWxsb2NhdGlvbiB0byBzcGVjaWZpYyBub2RlcyBkZXRlcm1pbmVkIGJ5IGNwdXNldCBjb25maWd1cmF0aW9uIGFuZCBpbnRyb2R1Y2VzIG5vZGUgbWFzayBjaGVja3MuIFRoZXNlIGNoYW5nZXMgYXJlIGNydWNpYWwgZm9yIG1lbW9yeSBhbGxvY2F0aW9uIGNvcnJlY3RuZXNzLCBhbmQgY2FuIGJlIGNoZWNrZWQgd2l0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SFVHRVRMQkZTJiMzNDssCiAgICAmIzM0O0NNQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7aHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX3N1cnBsdXNfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19taWdyYXRlX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7YWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7YWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBub2RlIG1hc2sgaGFuZGxpbmcgaW4gaHVnZXRsYiBhbmQgaHVnZXRsYl9jbWEgYWxsb2NhdGlvbiBwYXRocy4gSXQgcmVzdHJpY3RzIGFsbG9jYXRpb25zIHRvIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIHdoZW4gYG5tYXNrYCBpcyBOVUxMIGFuZCBhZGRzIGEgYG5vZGVfaXNzZXRgIGNoZWNrIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtDTUEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2h1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7YWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbm9kZSBtYXNrIGhhbmRsaW5nIGluIGh1Z2V0bGIgYW5kIGh1Z2V0bGJfY21hIGFsbG9jYXRpb24gcGF0aHMuIEl0IHJlc3RyaWN0cyBhbGxvY2F0aW9ucyB0byBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIGBubWFza2AgaXMgTlVMTCBhbmQgYWRkcyBhIGBub2RlX2lzc2V0YCBjaGVjayBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6MDg6NTIuMjgxNjI3Njk0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxOTk2NDI4MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFVHRVRMQkZTXCIsXG4gICAgXCJDTUFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9cIixcbiAgICBcImFsbG9jX3N1cnBsdXNfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5vZGUgbWFzayBoYW5kbGluZyBpbiBodWdldGxiIGFuZCBodWdldGxiX2NtYSBhbGxvY2F0aW9uIHBhdGhzLiBJdCByZXN0cmljdHMgYWxsb2NhdGlvbnMgdG8gYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiBgbm1hc2tgIGlzIE5VTEwgYW5kIGFkZHMgYSBgbm9kZV9pc3NldGAgY2hlY2sgaW4gYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6MDg6NTIuMjgxNjMyNzI0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTExMTU2MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZjdjNDlmODI5ZTkwN2FhZWUyMGUwNzBiYjk1YzM2MzkxNGMyNTY1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDUgMTg6MDg6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jXFxuaW5kZXggNTcxMjEyYjgwODM1ZWMuLmVlNjdlYTI5YzAwMzUxIDEwMDY0NFxcbi0tLSBhL21tL2h1Z2V0bGIuY1xcbisrKyBiL21tL2h1Z2V0bGIuY1xcbkBAIC0xODY0LDYgKzE4NjQsMTggQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbiBcXHRcXHRnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2spXFxuIHtcXG4gXFx0c3RydWN0IGZvbGlvICpmb2xpbztcXG4rXFx0bm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2s7XFxuK1xcbitcXHRpZiAoIW5tYXNrKSB7XFxuK1xcdFxcdHVuc2lnbmVkIGludCBjcHVzZXRfbWVtc19jb29raWU7XFxuK1xcbitcXHRcXHRkbyB7XFxuK1xcdFxcdFxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxuK1xcdFxcdFxcdGxvY2FsX25vZGVfbWFzayA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcXG4rXFx0XFx0fSB3aGlsZSAocmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoY3B1c2V0X21lbXNfY29va2llKSk7XFxuK1xcbitcXHRcXHRubWFzayA9IFxcdTAwMjZsb2NhbF9ub2RlX21hc2s7XFxuK1xcdH1cXG4gXFxuIFxcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrLCBOVUxMKTtcXG4gXFx0aWYgKGZvbGlvKVxcbmRpZmYgLS1naXQgYS9tbS9odWdldGxiX2NtYS5jIGIvbW0vaHVnZXRsYl9jbWEuY1xcbmluZGV4IDM5MzQ0ZDZjNzhkODRlLi43OWRiZDBiYWFmYTNlNCAxMDA2NDRcXG4tLS0gYS9tbS9odWdldGxiX2NtYS5jXFxuKysrIGIvbW0vaHVnZXRsYl9jbWEuY1xcbkBAIC0zNCw3ICszNCw3IEBAIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuIFxcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbi1cXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSlcXG4rXFx0aWYgKGh1Z2V0bGJfY21hW25pZF0gXFx1MDAyNlxcdTAwMjYgbm9kZV9pc3NldChuaWQsICpub2RlbWFzaykpXFxuIFxcdFxcdHBhZ2UgPSBjbWFfYWxsb2NfZnJvemVuX2NvbXBvdW5kKGh1Z2V0bGJfY21hW25pZF0sIG9yZGVyKTtcXG4gXFxuIFxcdGlmICghcGFnZSBcXHUwMDI2XFx1MDAyNiAhKGdmcF9tYXNrIFxcdTAwMjYgX19HRlBfVEhJU05PREUpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjA4OjUyLjU5MzQzMDgzMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4ODc4Mjk3NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFVHRVRMQkZTXCIsXG4gICAgXCJDTUFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9cIixcbiAgICBcImFsbG9jX3N1cnBsdXNfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5vZGUgbWFzayBoYW5kbGluZyBpbiBodWdldGxiIGFuZCBodWdldGxiX2NtYSBhbGxvY2F0aW9uIHBhdGhzLiBJdCByZXN0cmljdHMgYWxsb2NhdGlvbnMgdG8gYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiBgbm1hc2tgIGlzIE5VTEwgYW5kIGFkZHMgYSBgbm9kZV9pc3NldGAgY2hlY2sgaW4gYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ZjdjNDlmODI5ZTkwN2FhZWUyMGUwNzBiYjk1YzM2MzkxNGMyNTY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgNSAxODowODo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuY1xuaW5kZXggNTcxMjEyYjgwODM1ZWMuLmVlNjdlYTI5YzAwMzUxIDEwMDY0NFxuLS0tIGEvbW0vaHVnZXRsYi5jXG4rKysgYi9tbS9odWdldGxiLmNcbkBAIC0xODY0LDYgKzE4NjQsMTggQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuIFx0XHRnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2spXG4ge1xuIFx0c3RydWN0IGZvbGlvICpmb2xpbztcbitcdG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrO1xuK1xuK1x0aWYgKCFubWFzaykge1xuK1x0XHR1bnNpZ25lZCBpbnQgY3B1c2V0X21lbXNfY29va2llO1xuK1xuK1x0XHRkbyB7XG4rXHRcdFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcbitcdFx0XHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG4rXHRcdH0gd2hpbGUgKHJlYWRfbWVtc19hbGxvd2VkX3JldHJ5KGNwdXNldF9tZW1zX2Nvb2tpZSkpO1xuK1xuK1x0XHRubWFzayA9IFx1MDAyNmxvY2FsX25vZGVfbWFzaztcbitcdH1cbiBcbiBcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrLCBOVUxMKTtcbiBcdGlmIChmb2xpbylcbmRpZmYgLS1naXQgYS9tbS9odWdldGxiX2NtYS5jIGIvbW0vaHVnZXRsYl9jbWEuY1xuaW5kZXggMzkzNDRkNmM3OGQ4NGUuLjc5ZGJkMGJhYWZhM2U0IDEwMDY0NFxuLS0tIGEvbW0vaHVnZXRsYl9jbWEuY1xuKysrIGIvbW0vaHVnZXRsYl9jbWEuY1xuQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbiBcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSlcbitcdGlmIChodWdldGxiX2NtYVtuaWRdIFx1MDAyNlx1MDAyNiBub2RlX2lzc2V0KG5pZCwgKm5vZGVtYXNrKSlcbiBcdFx0cGFnZSA9IGNtYV9hbGxvY19mcm96ZW5fY29tcG91bmQoaHVnZXRsYl9jbWFbbmlkXSwgb3JkZXIpO1xuIFxuIFx0aWYgKCFwYWdlIFx1MDAyNlx1MDAyNiAhKGdmcF9tYXNrIFx1MDAyNiBfX0dGUF9USElTTk9ERSkpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjA4OjUyLjU5MzQzMjQyMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MzY4OTc3OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIdWdldGxiIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgSHVnZVRMQiBjb2RlLCBzcGVjaWZpY2FsbHkgaW4gYG1tL2h1Z2V0bGIuY2AgYW5kIGBtbS9odWdldGxiX2NtYS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gVGhlIGNoYW5nZSBpbiBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgdXNpbmcgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiBgbm1hc2tgIGlzIE5VTEwgaXMgaW50ZXJlc3RpbmcuIEl0IHNvdW5kcyBsaWtlIHdlJ3JlIGR5bmFtaWNhbGx5IG1hbmFnaW5nIG1lbW9yeSBhbGxvY2F0aW9uIGJhc2VkIG9uIENQVSBzZXRzLCB3aGljaCBjb3VsZCBiZSBhbiBpbXBvcnRhbnQgb3B0aW1pemF0aW9uIG9yIGNvbnN0cmFpbnQuIFRoZW4sIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLCB0aGV5IGFkZGVkIGEgbm9kZSBjaGVjayBiZWZvcmUgY2FsbGluZyBgY21hX2FsbG9jX2Zyb3plbl9jb21wb3VuZGAuIFRoYXQncyBhIHNwYXRpYWwgY29uc2lkZXJhdGlvbiwgc28gaXQncyBsaWtlbHkgcmVsYXRlZCB0byBOVU1BIGNvbmZpZ3VyYXRpb25zIG9yIG1lbW9yeSBwbGFjZW1lbnQgcG9saWN5LCBtYWtpbmcgc3VyZSB0byBhbGxvY2F0ZSBmcm9tIGFsbG93ZWQgbm9kZXMuXG5cbkkgbmVlZCB0byBxdWlja2x5IGZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMgLSBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgaW4gYG1tL2h1Z2V0bGIuY2AgYW5kIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGluIGBtbS9odWdldGxiX2NtYS5jYC4gSSBoYXZlIHRvIGdyYXNwIHRoZSBpbnRlbnQgb2YgdGhlIGNoYW5nZXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBjb2RlIGJhc2UuXG5cbkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCdzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkuIEknbGwgbmVlZCBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIHRoYXQncyBhIGdpdmVuLiBJJ20gYXNzdW1pbmcgYENPTkZJR19DTUFgIGlzIGFsc28gbmVjZXNzYXJ5LiBXaGF0IGFib3V0IGBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBgPyBJdOKAmXMgbm90IGNsZWFyLCBidXQgaXQgY291bGQgYmUgcmVsZXZhbnQsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLlxuXG5BbHJpZ2h0LCBJJ2xsIHVzZSBgZ3JlcGAgdG8gcXVpY2tseSBsb2NhdGUgYWxsIHJlZmVyZW5jZXMgdG8gYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgYW5kIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBhY3Jvc3MgdGhlIGNvZGUgYmFzZSB0byBoZWxwIGNvbnRleHR1YWxpemUgdGhlc2UgY2hhbmdlcy4gVW5kZXJzdGFuZGluZyB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIGlzIGtleSB0byBzZWVpbmcgdGhlIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE4MywiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjA4OjU4LjIzMDMzMjQ0OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQ2NzM4MjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTE3OTE9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfYnVkZHlfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5tbS9odWdldGxiLmMtMTgzNS1cXG5tbS9odWdldGxiLmM6MTgzNjpzdGF0aWMgc3RydWN0IGZvbGlvICpvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcXG5tbS9odWdldGxiLmMtMTgzNy1cXHRcXHRnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2ssXFxuLS1cXG5tbS9odWdldGxiLmMtMTg2Mi0gKi9cXG5tbS9odWdldGxiLmM6MTg2MzpzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxubW0vaHVnZXRsYi5jLTE4NjQtXFx0XFx0Z2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsIG5vZGVtYXNrX3QgKm5tYXNrKVxcbi0tXFxubW0vaHVnZXRsYi5jLTE4NzktXFxubW0vaHVnZXRsYi5jOjE4ODA6XFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCwgbm1hc2ssIE5VTEwpO1xcbm1tL2h1Z2V0bGIuYy0xODgxLVxcdGlmIChmb2xpbylcXG4tLVxcbm1tL2h1Z2V0bGIuYz0xOTA4PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX3Bvb2xfaHVnZV9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE5MTgtXFxubW0vaHVnZXRsYi5jOjE5MTk6XFx0XFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5vZGUsXFxubW0vaHVnZXRsYi5jLTE5MjAtXFx0XFx0XFx0XFx0XFx0bm9kZXNfYWxsb3dlZCwgbm9kZV9hbGxvY19ub3JldHJ5KTtcXG4tLVxcbm1tL2h1Z2V0bGIuYz0yMDg4PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX3N1cnBsdXNfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTIxMDAtXFxubW0vaHVnZXRsYi5jOjIxMDE6XFx0Zm9saW8gPSBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrKTtcXG5tbS9odWdldGxiLmMtMjEwMi1cXHRpZiAoIWZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jPTIxMzY9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIGdmcF90IGdmcF9tYXNrLFxcbi0tXFxubW0vaHVnZXRsYi5jLTIxNDMtXFxubW0vaHVnZXRsYi5jOjIxNDQ6XFx0Zm9saW8gPSBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrKTtcXG5tbS9odWdldGxiLmMtMjE0NS1cXHRpZiAoIWZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jPTI2NTM9c3RhdGljIGludCBhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgZm9saW8gKm9sZF9mb2xpbyxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0yNjk4LVxcdFxcdFxcdGdmcF9tYXNrID0gaHRsYl9hbGxvY19tYXNrKGgpIHwgX19HRlBfVEhJU05PREU7XFxubW0vaHVnZXRsYi5jOjI2OTk6XFx0XFx0XFx0bmV3X2ZvbGlvID0gYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzayxcXG5tbS9odWdldGxiLmMtMjcwMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBuaWQsIE5VTEwpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTMzODQ9c3RhdGljIHZvaWQgX19pbml0IGh1Z2V0bGJfaHN0YXRlX2FsbG9jX3BhZ2VzX29uZW5vZGUoc3RydWN0IGhzdGF0ZSAqaCwgaW50IG5pZClcXG4tLVxcbm1tL2h1Z2V0bGIuYy0zMzk3LVxcbm1tL2h1Z2V0bGIuYzozMzk4OlxcdFxcdFxcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsXFxubW0vaHVnZXRsYi5jLTMzOTktXFx0XFx0XFx0XFx0XFx0XFx1MDAyNm5vZGVfc3RhdGVzW05fTUVNT1JZXSwgTlVMTCk7XFxuLS1cXG5tbS9odWdldGxiLmMtMzQwMy1cXHRcXHRcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2Zm9saW9fbGlzdCk7XFxubW0vaHVnZXRsYi5jOjM0MDQ6XFx0XFx0XFx0XFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCxcXG5tbS9odWdldGxiLmMtMzQwNS1cXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2bm9kZV9zdGF0ZXNbTl9NRU1PUlldLCBOVUxMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6MDk6MDAuMzc3MDc0MjExWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzcwMzUxMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2h1Z2V0bGIuYz0xMzYwPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxcbi0tXFxubW0vaHVnZXRsYi5jLTEzNjQtXFxubW0vaHVnZXRsYi5jOjEzNjU6XFx0Zm9saW8gPSBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8ob3JkZXIsIGdmcF9tYXNrLCBuaWQsIG5vZGVtYXNrKTtcXG5tbS9odWdldGxiLmMtMTM2Ni1cXHRpZiAoZm9saW8pXFxuLS1cXG5tbS9odWdldGxiX2NtYS5jPTIxPXZvaWQgaHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtMjYtXFxubW0vaHVnZXRsYl9jbWEuYzoyNzpzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxcbm1tL2h1Z2V0bGJfY21hLmMtMjgtXFx0XFx0aW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spXFxuLS1cXG5tbS9odWdldGxiX2NtYS5oPTY9dm9pZCBodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG5tbS9odWdldGxiX2NtYS5oOjc6c3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG5tbS9odWdldGxiX2NtYS5oLTgtXFx0XFx0XFx0XFx0ICAgICAgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spO1xcbi0tXFxubW0vaHVnZXRsYl9jbWEuaD0xNj1zdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmgtMTktXFxubW0vaHVnZXRsYl9jbWEuaDoyMDpzdGF0aWMgaW5saW5lIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlcixcXG5tbS9odWdldGxiX2NtYS5oLTIxLVxcdFxcdGdmcF90IGdmcF9tYXNrLFxcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODowOTowMi4zMTQxMTY0NzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjg3ODg5Mjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQWxsb2NhdGlvbiBQYXRocyBmb3IgSHVnZSBQYWdlcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGFuZCBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIHRoYXQgdGVsbHMgbWUgd2UncmUgbG9va2luZyBhdCBjb3JlIGFsbG9jYXRpb24gZnVuY3Rpb25zIGZvciBIdWdlIFBhZ2VzLiBJdCdzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgcGF0aHMgaGVyZS4gYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGxvb2tzIGxpa2UgdGhlIG1vcmUgZ2VuZXJhbC1wdXJwb3NlIGFsbG9jYXRvciwgYW5kIGl0J3MgY2FsbGVkIGJ5IGBhbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW9gLCBgYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvYCwgYW5kIGBhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb2AuIFRoYXQgbWFrZXMgc2Vuc2U7IHRob3NlIGZ1bmN0aW9ucyBwcm9iYWJseSBoYW5kbGUgc3BlY2lmaWMgZWRnZSBjYXNlczogc3VycGx1cyBwYWdlcywgbWlncmF0aW9uLCBhbmQgcGFnZSBkaXNzb2x1dGlvbiwgcmVzcGVjdGl2ZWx5LiBPbiB0aGUgb3RoZXIgaGFuZCwgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgaXMgb25seSBjYWxsZWQgYnkgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2AuIFRoaXMgc3VnZ2VzdHMgaXQncyByZWxhdGVkIHRvIENNQSAoQ29udGlndW91cyBNZW1vcnkgQWxsb2NhdG9yKSBhbGxvY2F0aW9ucyBmb3IgZ2lnYW50aWMgcGFnZXMsIGxpa2VseSB3aGVyZSB0aGUgcGFnZXMgaGF2ZSBiZWVuIHByZS1mcm96ZW4gaW4gcGxhY2UsIG1heWJlIGR1cmluZyBib290IG9yIHN5c3RlbSBpbml0LiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBhbGxvY2F0aW9uIGZsb3cuXG5cbkdpdmVuIHRoZSBDTUEgaW52b2x2ZW1lbnQsIEkgc2hvdWxkIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiB0byBzZWUgaG93IGBodWdldGxiX2NtYS5jYCBpcyBlbmFibGVkLiBJdCdzIHByb2JhYmx5IGNvbmRpdGlvbmFsLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgbW0vS2NvbmZpZ2Agb3IgcG9zc2libHkgZXZlbiBgbW0vTWFrZWZpbGVgIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0cmlnZ2VyIHRoZSBjb21waWxhdGlvbiBvZiB0aGF0IG1vZHVsZS4gVGhhdCB3aWxsIGdpdmUgbWUgaW1tZWRpYXRlIGNvbnRleHQgYXJvdW5kIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgcHJlcmVxdWlzaXRlcyB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2ggZnVsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MTMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjA5OjA2LjYwMjAwNzc3OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU1MTI1MDkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh1Z2V0bGJfY21hXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0PTk1PUtlcm5lbCBwYXJhbWV0ZXJzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dC0yMDYzLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjIwNjQ6XFx0aHVnZXRsYl9jbWE9XFx0W0hXLENNQSxFQVJMWV0gVGhlIHNpemUgb2YgYSBDTUEgYXJlYSB1c2VkIGZvciBhbGxvY2F0aW9uXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA2NS1cXHRcXHRcXHRvZiBnaWdhbnRpYyBodWdlcGFnZXMuIE9yIHVzaW5nIG5vZGUgZm9ybWF0LCB0aGUgc2l6ZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA3Ny1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dDoyMDc4OlxcdGh1Z2V0bGJfY21hX29ubHk9XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA3OS1cXHRcXHRcXHRbSFcsQ01BLEVBUkxZXSBXaGVuIGFsbG9jYXRpbmcgbmV3IEh1Z2VUTEIgcGFnZXMsIG9ubHlcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTIwODEtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ6MjA4MjpcXHRcXHRcXHRUaGlzIG9wdGlvbiBkb2VzIG5vdGhpbmcgaWYgaHVnZXRsYl9jbWE9IGlzIG5vdCBhbHNvXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA4My1cXHRcXHRcXHRzcGVjaWZpZWQuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvY3hsL2xpbnV4L2Vhcmx5LWJvb3QucnN0PTEyNj1vbiBOVU1BIG5vZGVzIHRoYXQgYXJlIG5vdCBvbmxpbmUgZHVyaW5nIGVhcmx5IGJvb3QuIDo6XFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2N4bC9saW51eC9lYXJseS1ib290LnJzdC0xMjctXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2N4bC9saW51eC9lYXJseS1ib290LnJzdDoxMjg6ICB2b2lkIF9faW5pdCBodWdldGxiX2NtYV9yZXNlcnZlKHZvaWQpIHtcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvY3hsL2xpbnV4L2Vhcmx5LWJvb3QucnN0LTEyOS0gICAgaWYgKCFub2RlX29ubGluZShuaWQpKVxcbi0tXFxuTUFJTlRBSU5FUlM9MTIwMTg9RjpcXHRtbS9odWdldGxiX2Nncm91cC5jXFxuTUFJTlRBSU5FUlM6MTIwMTk6RjpcXHRtbS9odWdldGxiX2NtYS5jXFxuTUFJTlRBSU5FUlM6MTIwMjA6RjpcXHRtbS9odWdldGxiX2NtYS5oXFxuTUFJTlRBSU5FUlMtMTIwMjEtRjpcXHRtbS9odWdldGxiX3N5c2N0bC5jXFxuLS1cXG5hcmNoL2FybTY0L21tL2h1Z2V0bGJwYWdlLmMtMzgtI2lmZGVmIENPTkZJR19DTUFcXG5hcmNoL2FybTY0L21tL2h1Z2V0bGJwYWdlLmM6Mzk6dW5zaWduZWQgaW50IGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIodm9pZClcXG5hcmNoL2FybTY0L21tL2h1Z2V0bGJwYWdlLmMtNDAte1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2h1Z2V0bGJwYWdlLmM9MjAxPWFyY2hfaW5pdGNhbGwoaHVnZXRsYnBhZ2VfaW5pdCk7XFxuYXJjaC9wb3dlcnBjL21tL2h1Z2V0bGJwYWdlLmMtMjAyLVxcbmFyY2gvcG93ZXJwYy9tbS9odWdldGxicGFnZS5jOjIwMzp1bnNpZ25lZCBpbnQgX19pbml0IGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIodm9pZClcXG5hcmNoL3Bvd2VycGMvbW0vaHVnZXRsYnBhZ2UuYy0yMDQte1xcbi0tXFxuYXJjaC9yaXNjdi9tbS9odWdldGxicGFnZS5jPTQ0OD1hcmNoX2luaXRjYWxsKGdpZ2FudGljX3BhZ2VzX2luaXQpO1xcbi0tXFxuYXJjaC9yaXNjdi9tbS9odWdldGxicGFnZS5jLTQ1MC1cXG5hcmNoL3Jpc2N2L21tL2h1Z2V0bGJwYWdlLmM6NDUxOnVuc2lnbmVkIGludCBfX2luaXQgYXJjaF9odWdldGxiX2NtYV9vcmRlcih2b2lkKVxcbmFyY2gvcmlzY3YvbW0vaHVnZXRsYnBhZ2UuYy00NTIte1xcbi0tXFxuYXJjaC9zMzkwL21tL2h1Z2V0bGJwYWdlLmM9MjI1PWJvb2wgX19pbml0IGFyY2hfaHVnZXRsYl92YWxpZF9zaXplKHVuc2lnbmVkIGxvbmcgc2l6ZSlcXG4tLVxcbmFyY2gvczM5MC9tbS9odWdldGxicGFnZS5jLTIzNC1cXG5hcmNoL3MzOTAvbW0vaHVnZXRsYnBhZ2UuYzoyMzU6dW5zaWduZWQgaW50IF9faW5pdCBhcmNoX2h1Z2V0bGJfY21hX29yZGVyKHZvaWQpXFxuYXJjaC9zMzkwL21tL2h1Z2V0bGJwYWdlLmMtMjM2LXtcXG4tLVxcbmFyY2gveDg2L21tL2h1Z2V0bGJwYWdlLmM9NDI9YXJjaF9pbml0Y2FsbChnaWdhbnRpY19wYWdlc19pbml0KTtcXG4tLVxcbmFyY2gveDg2L21tL2h1Z2V0bGJwYWdlLmMtNDUtXFxuYXJjaC94ODYvbW0vaHVnZXRsYnBhZ2UuYzo0Njp1bnNpZ25lZCBpbnQgX19pbml0IGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIodm9pZClcXG5hcmNoL3g4Ni9tbS9odWdldGxicGFnZS5jLTQ3LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oPTI3Nj12b2lkIGh1Z2V0bGJfc3BsaXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcik7XFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMjc3LVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjI3ODp1bnNpZ25lZCBpbnQgYXJjaF9odWdldGxiX2NtYV9vcmRlcih2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0yNzktXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaD0xMjk4PXN0YXRpYyBpbmxpbmUgc3BpbmxvY2tfdCAqaHVnZV9wdGVfbG9jayhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMTMwOC0jaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19DTUEpXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MTMwOTpleHRlcm4gdm9pZCBfX2luaXQgaHVnZXRsYl9jbWFfcmVzZXJ2ZSh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0xMzEwLSNlbHNlXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MTMxMTpzdGF0aWMgaW5saW5lIF9faW5pdCB2b2lkIGh1Z2V0bGJfY21hX3Jlc2VydmUodm9pZClcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0xMzEyLXtcXG4tLVxcbm1tL01ha2VmaWxlPTgyPWlmZGVmIENPTkZJR19DTUFcXG5tbS9NYWtlZmlsZTo4MzpvYmotJChDT05GSUdfSFVHRVRMQkZTKVxcdCs9IGh1Z2V0bGJfY21hLm9cXG5tbS9NYWtlZmlsZS04NC1lbmRpZlxcbi0tXFxubW0vY21hLmg9OD1zdHJ1Y3QgY21hX2tvYmplY3Qge1xcbi0tXFxubW0vY21hLmgtMTQtICogTXVsdGktcmFuZ2Ugc3VwcG9ydC4gVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHRoZSBzaXplIG9mIHRoZSBhbGxvY2F0aW9uXFxubW0vY21hLmg6MTU6ICogaXMgbm90IGV4cGVjdGVkIHRvIGJlIGxhcmdlciB0aGFuIHRoZSBhbGlnbm1lbnQgKGxpa2Ugd2l0aCBodWdldGxiX2NtYSksXFxubW0vY21hLmgtMTYtICogYW5kIHRoZSB0b3RhbCBhbW91bnQgb2YgbWVtb3J5IHJlcXVlc3RlZCwgd2hpbGUgc21hbGxlciB0aGFuIHRoZSB0b3RhbFxcbi0tXFxubW0vaHVnZXRsYi5jLTUwLSNpbmNsdWRlIFxcXCJodWdldGxiX3ZtZW1tYXAuaFxcXCJcXG5tbS9odWdldGxiLmM6NTE6I2luY2x1ZGUgXFxcImh1Z2V0bGJfY21hLmhcXFwiXFxubW0vaHVnZXRsYi5jLTUyLSNpbmNsdWRlIFxcXCJodWdldGxiX2ludGVybmFsLmhcXFwiXFxuLS1cXG5tbS9odWdldGxiLmM9MTM2MD1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xMzY0LVxcbm1tL2h1Z2V0bGIuYzoxMzY1OlxcdGZvbGlvID0gaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKG9yZGVyLCBnZnBfbWFzaywgbmlkLCBub2RlbWFzayk7XFxubW0vaHVnZXRsYi5jLTEzNjYtXFx0aWYgKGZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jLTEzNjgtXFxubW0vaHVnZXRsYi5jOjEzNjk6XFx0aWYgKGh1Z2V0bGJfY21hX2V4Y2x1c2l2ZV9hbGxvYygpKVxcbm1tL2h1Z2V0bGIuYy0xMzcwLVxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxubW0vaHVnZXRsYi5jPTE0NTg9c3RhdGljIHZvaWQgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE1MDctXFx0Vk1fQlVHX09OX0ZPTElPKGZvbGlvX3JlZl9jb3VudChmb2xpbyksIGZvbGlvKTtcXG5tbS9odWdldGxiLmM6MTUwODpcXHRpZiAoZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpXFxubW0vaHVnZXRsYi5jOjE1MDk6XFx0XFx0aHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oZm9saW8pO1xcbm1tL2h1Z2V0bGIuYy0xNTEwLVxcdGVsc2VcXG4tLVxcbm1tL2h1Z2V0bGIuYz0zMDQwPXN0YXRpYyBfX2luaXQgdm9pZCAqYWxsb2NfYm9vdG1lbShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgbmlkLCBib29sIG5vZGVfZXhhY3QpXFxuLS1cXG5tbS9odWdldGxiLmMtMzA0NS1cXHRpZiAoaHVnZXRsYl9lYXJseV9jbWEoaCkpXFxubW0vaHVnZXRsYi5jOjMwNDY6XFx0XFx0bSA9IGh1Z2V0bGJfY21hX2FsbG9jX2Jvb3RtZW0oaCwgXFx1MDAyNmxpc3Rub2RlLCBub2RlX2V4YWN0KTtcXG5tbS9odWdldGxiLmMtMzA0Ny1cXHRlbHNlIHtcXG4tLVxcbm1tL2h1Z2V0bGIuYz0zMTkyPXN0YXRpYyB2b2lkIF9faW5pdCBodWdldGxiX2Jvb3RtZW1faW5pdF9taWdyYXRldHlwZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vaHVnZXRsYi5jLTMxOTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3BhZ2VzOyBpICs9IHBhZ2VibG9ja19ucl9wYWdlcykge1xcbm1tL2h1Z2V0bGIuYzozMjAwOlxcdFxcdGlmIChmb2xpb190ZXN0X2h1Z2V0bGJfY21hKGZvbGlvKSlcXG5tbS9odWdldGxiLmMtMzIwMS1cXHRcXHRcXHRpbml0X2NtYV9wYWdlYmxvY2soZm9saW9fcGFnZShmb2xpbywgaSkpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTMyOTM9c3RhdGljIHZvaWQgX19pbml0IGdhdGhlcl9ib290bWVtX3ByZWFsbG9jX25vZGUodW5zaWduZWQgbG9uZyBuaWQpXFxuLS1cXG5tbS9odWdldGxiLmMtMzMzOC1cXHRcXHRpZiAoaHVnZXRsYl9ib290bWVtX3BhZ2VfZWFybHljbWEobSkpXFxubW0vaHVnZXRsYi5jOjMzMzk6XFx0XFx0XFx0Zm9saW9fc2V0X2h1Z2V0bGJfY21hKGZvbGlvKTtcXG5tbS9odWdldGxiLmMtMzM0MC1cXG4tLVxcbm1tL2h1Z2V0bGIuYy0zMzUwLVxcdFxcdCAqL1xcbm1tL2h1Z2V0bGIuYzozMzUxOlxcdFxcdGlmICghZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpXFxubW0vaHVnZXRsYi5jLTMzNTItXFx0XFx0XFx0YWRqdXN0X21hbmFnZWRfcGFnZV9jb3VudChwYWdlLCBwYWdlc19wZXJfaHVnZV9wYWdlKGgpKTtcXG4tLVxcbm1tL2h1Z2V0bGIuYz0zNTc3PXN0YXRpYyB2b2lkIF9faW5pdCBodWdldGxiX2hzdGF0ZV9hbGxvY19wYWdlcyhzdHJ1Y3QgaHN0YXRlICpoKVxcbi0tXFxubW0vaHVnZXRsYi5jLTM1ODQtXFx0ICovXFxubW0vaHVnZXRsYi5jOjM1ODU6XFx0aWYgKGhzdGF0ZV9pc19naWdhbnRpYyhoKSBcXHUwMDI2XFx1MDAyNiBodWdldGxiX2NtYV90b3RhbF9zaXplKCkgXFx1MDAyNlxcdTAwMjZcXG5tbS9odWdldGxiLmMtMzU4Ni1cXHQgICAgIWh1Z2V0bGJfZWFybHlfY21hKGgpKSB7XFxubW0vaHVnZXRsYi5jOjM1ODc6XFx0XFx0cHJfd2Fybl9vbmNlKFxcXCJIdWdlVExCOiBodWdldGxiX2NtYSBpcyBlbmFibGVkLCBza2lwIGJvb3QgdGltZSBhbGxvY2F0aW9uXFxcXG5cXFwiKTtcXG5tbS9odWdldGxiLmMtMzU4OC1cXHRcXHRyZXR1cm47XFxuLS1cXG5tbS9odWdldGxiLmM9MzYwNz1zdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9pbml0X2hzdGF0ZXModm9pZClcXG4tLVxcbm1tL2h1Z2V0bGIuYy0zNjM0LVxcdFxcdFxcdGNvbnRpbnVlO1xcbm1tL2h1Z2V0bGIuYzozNjM1OlxcdFxcdGlmIChodWdldGxiX2NtYV90b3RhbF9zaXplKCkgXFx1MDAyNlxcdTAwMjYgaC1cXHUwMDNlb3JkZXIgXFx1MDAzYz0gSFVHRVRMQl9QQUdFX09SREVSKVxcbm1tL2h1Z2V0bGIuYy0zNjM2LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubW0vaHVnZXRsYi5jPTM5MzE9c3RhdGljIGxvbmcgZGVtb3RlX2ZyZWVfaHVnZXRsYl9mb2xpb3Moc3RydWN0IGhzdGF0ZSAqc3JjLCBzdHJ1Y3QgaHN0YXRlICpkc3QsXFxuLS1cXG5tbS9odWdldGxiLmMtMzk1OC1cXG5tbS9odWdldGxiLmM6Mzk1OTpcXHRcXHRjbWEgPSBmb2xpb190ZXN0X2h1Z2V0bGJfY21hKGZvbGlvKTtcXG5tbS9odWdldGxiLmMtMzk2MC1cXG4tLVxcbm1tL2h1Z2V0bGIuYy0zOTc3LVxcdFxcdFxcdGlmIChjbWEpXFxubW0vaHVnZXRsYi5jOjM5Nzg6XFx0XFx0XFx0XFx0Zm9saW9fc2V0X2h1Z2V0bGJfY21hKG5ld19mb2xpbyk7XFxubW0vaHVnZXRsYi5jLTM5NzktXFx0XFx0XFx0bGlzdF9hZGQoXFx1MDAyNm5ld19mb2xpby1cXHUwMDNlbHJ1LCBcXHUwMDI2ZHN0X2xpc3QpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTQyMzk9c3RhdGljIF9faW5pdCB2b2lkIGh1Z2V0bGJfcGFyc2VfcGFyYW1zKHZvaWQpXFxuLS1cXG5tbS9odWdldGxiLmMtNDI0OS1cXG5tbS9odWdldGxiLmM6NDI1MDpcXHRodWdldGxiX2NtYV92YWxpZGF0ZV9wYXJhbXMoKTtcXG5tbS9odWdldGxiLmMtNDI1MS19XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTEyLSNpbmNsdWRlIFxcXCJpbnRlcm5hbC5oXFxcIlxcbm1tL2h1Z2V0bGJfY21hLmM6MTM6I2luY2x1ZGUgXFxcImh1Z2V0bGJfY21hLmhcXFwiXFxubW0vaHVnZXRsYl9jbWEuYy0xNC1cXG5tbS9odWdldGxiX2NtYS5jLTE1LVxcbm1tL2h1Z2V0bGJfY21hLmM6MTY6c3RhdGljIHN0cnVjdCBjbWEgKmh1Z2V0bGJfY21hW01BWF9OVU1OT0RFU10gX19yb19hZnRlcl9pbml0O1xcbm1tL2h1Z2V0bGJfY21hLmM6MTc6c3RhdGljIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9jbWFfc2l6ZV9pbl9ub2RlW01BWF9OVU1OT0RFU10gX19pbml0ZGF0YTtcXG5tbS9odWdldGxiX2NtYS5jOjE4OnN0YXRpYyBib29sIGh1Z2V0bGJfY21hX29ubHkgX19yb19hZnRlcl9pbml0O1xcbm1tL2h1Z2V0bGJfY21hLmM6MTk6c3RhdGljIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9jbWFfc2l6ZSBfX3JvX2FmdGVyX2luaXQ7XFxubW0vaHVnZXRsYl9jbWEuYy0yMC1cXG5tbS9odWdldGxiX2NtYS5jOjIxOnZvaWQgaHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG5tbS9odWdldGxiX2NtYS5jLTIyLXtcXG5tbS9odWdldGxiX2NtYS5jOjIzOlxcdFdBUk5fT05fT05DRSghY21hX3JlbGVhc2VfZnJvemVuKGh1Z2V0bGJfY21hW2ZvbGlvX25pZChmb2xpbyldLFxcbm1tL2h1Z2V0bGJfY21hLmMtMjQtXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZmb2xpby1cXHUwMDNlcGFnZSwgZm9saW9fbnJfcGFnZXMoZm9saW8pKSk7XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTI2LVxcbm1tL2h1Z2V0bGJfY21hLmM6Mjc6c3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG5tbS9odWdldGxiX2NtYS5jLTI4LVxcdFxcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0zMy1cXG5tbS9odWdldGxiX2NtYS5jOjM0OlxcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcXG5tbS9odWdldGxiX2NtYS5jLTM1LVxcdFxcdHJldHVybiBOVUxMO1xcbm1tL2h1Z2V0bGJfY21hLmMtMzYtXFxubW0vaHVnZXRsYl9jbWEuYzozNzpcXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSBcXHUwMDI2XFx1MDAyNiBub2RlX2lzc2V0KG5pZCwgKm5vZGVtYXNrKSlcXG5tbS9odWdldGxiX2NtYS5jOjM4OlxcdFxcdHBhZ2UgPSBjbWFfYWxsb2NfZnJvemVuX2NvbXBvdW5kKGh1Z2V0bGJfY21hW25pZF0sIG9yZGVyKTtcXG5tbS9odWdldGxiX2NtYS5jLTM5LVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy00MS1cXHRcXHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgKm5vZGVtYXNrKSB7XFxubW0vaHVnZXRsYl9jbWEuYzo0MjpcXHRcXHRcXHRpZiAobm9kZSA9PSBuaWQgfHwgIWh1Z2V0bGJfY21hW25vZGVdKVxcbm1tL2h1Z2V0bGJfY21hLmMtNDMtXFx0XFx0XFx0XFx0Y29udGludWU7XFxubW0vaHVnZXRsYl9jbWEuYy00NC1cXG5tbS9odWdldGxiX2NtYS5jOjQ1OlxcdFxcdFxcdHBhZ2UgPSBjbWFfYWxsb2NfZnJvemVuX2NvbXBvdW5kKGh1Z2V0bGJfY21hW25vZGVdLCBvcmRlcik7XFxubW0vaHVnZXRsYl9jbWEuYy00Ni1cXHRcXHRcXHRpZiAocGFnZSlcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtNTQtXFx0Zm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpO1xcbm1tL2h1Z2V0bGJfY21hLmM6NTU6XFx0Zm9saW9fc2V0X2h1Z2V0bGJfY21hKGZvbGlvKTtcXG5tbS9odWdldGxiX2NtYS5jLTU2LVxcdHJldHVybiBmb2xpbztcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmM9NTk9c3RydWN0IGh1Z2VfYm9vdG1lbV9wYWdlICogX19pbml0XFxubW0vaHVnZXRsYl9jbWEuYzo2MDpodWdldGxiX2NtYV9hbGxvY19ib290bWVtKHN0cnVjdCBoc3RhdGUgKmgsIGludCAqbmlkLCBib29sIG5vZGVfZXhhY3QpXFxubW0vaHVnZXRsYl9jbWEuYy02MS17XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTY1LVxcbm1tL2h1Z2V0bGJfY21hLmM6NjY6XFx0Y21hID0gaHVnZXRsYl9jbWFbKm5pZF07XFxubW0vaHVnZXRsYl9jbWEuYy02Ny1cXHRtID0gY21hX3Jlc2VydmVfZWFybHkoY21hLCBodWdlX3BhZ2Vfc2l6ZShoKSk7XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTcyLVxcdFxcdGZvcl9lYWNoX25vZGVfbWFzayhub2RlLCBodWdldGxiX2Jvb3RtZW1fbm9kZXMpIHtcXG5tbS9odWdldGxiX2NtYS5jOjczOlxcdFxcdFxcdGNtYSA9IGh1Z2V0bGJfY21hW25vZGVdO1xcbm1tL2h1Z2V0bGJfY21hLmMtNzQtXFx0XFx0XFx0aWYgKCFjbWEgfHwgbm9kZSA9PSAqbmlkKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy05MS1cXG5tbS9odWdldGxiX2NtYS5jOjkyOnN0YXRpYyBpbnQgX19pbml0IGNtZGxpbmVfcGFyc2VfaHVnZXRsYl9jbWEoY2hhciAqcClcXG5tbS9odWdldGxiX2NtYS5jLTkzLXtcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtMTA4LVxcdFxcdFxcdHRtcCA9IG1lbXBhcnNlKHMsIFxcdTAwMjZzKTtcXG5tbS9odWdldGxiX2NtYS5jOjEwOTpcXHRcXHRcXHRodWdldGxiX2NtYV9zaXplX2luX25vZGVbbmlkXSA9IHRtcDtcXG5tbS9odWdldGxiX2NtYS5jOjExMDpcXHRcXHRcXHRodWdldGxiX2NtYV9zaXplICs9IHRtcDtcXG5tbS9odWdldGxiX2NtYS5jLTExMS1cXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtMTIwLVxcdFxcdH0gZWxzZSB7XFxubW0vaHVnZXRsYl9jbWEuYzoxMjE6XFx0XFx0XFx0aHVnZXRsYl9jbWFfc2l6ZSA9IG1lbXBhcnNlKHAsIFxcdTAwMjZwKTtcXG5tbS9odWdldGxiX2NtYS5jLTEyMi1cXHRcXHRcXHRicmVhaztcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtMTI4LVxcbm1tL2h1Z2V0bGJfY21hLmM6MTI5OmVhcmx5X3BhcmFtKFxcXCJodWdldGxiX2NtYVxcXCIsIGNtZGxpbmVfcGFyc2VfaHVnZXRsYl9jbWEpO1xcbm1tL2h1Z2V0bGJfY21hLmMtMTMwLVxcbm1tL2h1Z2V0bGJfY21hLmM6MTMxOnN0YXRpYyBpbnQgX19pbml0IGNtZGxpbmVfcGFyc2VfaHVnZXRsYl9jbWFfb25seShjaGFyICpwKVxcbm1tL2h1Z2V0bGJfY21hLmMtMTMyLXtcXG5tbS9odWdldGxiX2NtYS5jOjEzMzpcXHRyZXR1cm4ga3N0cnRvYm9vbChwLCBcXHUwMDI2aHVnZXRsYl9jbWFfb25seSk7XFxubW0vaHVnZXRsYl9jbWEuYy0xMzQtfVxcbm1tL2h1Z2V0bGJfY21hLmMtMTM1LVxcbm1tL2h1Z2V0bGJfY21hLmM6MTM2OmVhcmx5X3BhcmFtKFxcXCJodWdldGxiX2NtYV9vbmx5XFxcIiwgY21kbGluZV9wYXJzZV9odWdldGxiX2NtYV9vbmx5KTtcXG5tbS9odWdldGxiX2NtYS5jLTEzNy1cXG5tbS9odWdldGxiX2NtYS5jOjEzODp1bnNpZ25lZCBpbnQgX193ZWFrIGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIodm9pZClcXG5tbS9odWdldGxiX2NtYS5jLTEzOS17XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTE0Mi1cXG5tbS9odWdldGxiX2NtYS5jOjE0Mzp2b2lkIF9faW5pdCBodWdldGxiX2NtYV9yZXNlcnZlKHZvaWQpXFxubW0vaHVnZXRsYl9jbWEuYy0xNDQte1xcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0xNDgtXFxubW0vaHVnZXRsYl9jbWEuYzoxNDk6XFx0aWYgKCFodWdldGxiX2NtYV9zaXplKVxcbm1tL2h1Z2V0bGJfY21hLmMtMTUwLVxcdFxcdHJldHVybjtcXG5tbS9odWdldGxiX2NtYS5jLTE1MS1cXG5tbS9odWdldGxiX2NtYS5jOjE1MjpcXHRvcmRlciA9IGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIoKTtcXG5tbS9odWdldGxiX2NtYS5jLTE1My1cXHRpZiAoIW9yZGVyKSB7XFxubW0vaHVnZXRsYl9jbWEuYzoxNTQ6XFx0XFx0cHJfd2FybihcXFwiaHVnZXRsYl9jbWE6IHRoZSBvcHRpb24gaXNuJ3Qgc3VwcG9ydGVkIGJ5IGN1cnJlbnQgYXJjaFxcXFxuXFxcIik7XFxubW0vaHVnZXRsYl9jbWEuYy0xNTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0xNjktXFx0Zm9yIChuaWQgPSAwOyBuaWQgXFx1MDAzYyBNQVhfTlVNTk9ERVM7IG5pZCsrKSB7XFxubW0vaHVnZXRsYl9jbWEuYzoxNzA6XFx0XFx0c2l6ZSA9IGh1Z2V0bGJfY21hX3NpemVfaW5fbm9kZVtuaWRdO1xcbm1tL2h1Z2V0bGJfY21hLmMtMTcxLVxcdFxcdGlmIChzaXplID09IDApXFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTE3NC1cXHRcXHRpZiAoIW5vZGVfaXNzZXQobmlkLCBodWdldGxiX2Jvb3RtZW1fbm9kZXMpKSB7XFxubW0vaHVnZXRsYl9jbWEuYzoxNzU6XFx0XFx0XFx0cHJfd2FybihcXFwiaHVnZXRsYl9jbWE6IGludmFsaWQgbm9kZSAlZCBzcGVjaWZpZWRcXFxcblxcXCIsIG5pZCk7XFxubW0vaHVnZXRsYl9jbWEuYy0xNzYtXFx0XFx0fSBlbHNlIGlmICghSVNfQUxJR05FRChzaXplLCBnaWdhbnRpY19wYWdlX3NpemUpKSB7XFxubW0vaHVnZXRsYl9jbWEuYzoxNzc6XFx0XFx0XFx0cHJfd2FybihcXFwiaHVnZXRsYl9jbWE6IGNtYSBhcmVhIG9mIG5vZGUgJWQgbXVzdCBiZSBhIG11bHRpcGxlIG9mICVsdSBNaUJcXFxcblxcXCIsXFxubW0vaHVnZXRsYl9jbWEuYy0xNzgtXFx0XFx0XFx0XFx0bmlkLCBnaWdhbnRpY19wYWdlX3NpemUgLyBTWl8xTSk7XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTE4My1cXG5tbS9odWdldGxiX2NtYS5jOjE4NDpcXHRcXHRodWdldGxiX2NtYV9zaXplIC09IHNpemU7XFxubW0vaHVnZXRsYl9jbWEuYzoxODU6XFx0XFx0aHVnZXRsYl9jbWFfc2l6ZV9pbl9ub2RlW25pZF0gPSAwO1xcbm1tL2h1Z2V0bGJfY21hLmMtMTg2LVxcdH1cXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtMTg4LVxcdC8qIFZhbGlkYXRlIHRoZSBDTUEgc2l6ZSBhZ2FpbiBpbiBjYXNlIHNvbWUgaW52YWxpZCBub2RlcyBzcGVjaWZpZWQuICovXFxubW0vaHVnZXRsYl9jbWEuYzoxODk6XFx0aWYgKCFodWdldGxiX2NtYV9zaXplKVxcbm1tL2h1Z2V0bGJfY21hLmMtMTkwLVxcdFxcdHJldHVybjtcXG5tbS9odWdldGxiX2NtYS5jLTE5MS1cXG5tbS9odWdldGxiX2NtYS5jOjE5MjpcXHRpZiAoIUlTX0FMSUdORUQoaHVnZXRsYl9jbWFfc2l6ZSwgZ2lnYW50aWNfcGFnZV9zaXplKSkge1xcbm1tL2h1Z2V0bGJfY21hLmM6MTkzOlxcdFxcdHByX3dhcm4oXFxcImh1Z2V0bGJfY21hOiBjbWEgYXJlYSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJWx1IE1pQlxcXFxuXFxcIixcXG5tbS9odWdldGxiX2NtYS5jLTE5NC1cXHRcXHRcXHRnaWdhbnRpY19wYWdlX3NpemUgLyBTWl8xTSk7XFxubW0vaHVnZXRsYl9jbWEuYzoxOTU6XFx0XFx0aHVnZXRsYl9jbWFfc2l6ZSA9IDA7XFxubW0vaHVnZXRsYl9jbWEuYy0xOTYtXFx0XFx0cmV0dXJuO1xcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0yMDMtXFx0XFx0ICovXFxubW0vaHVnZXRsYl9jbWEuYzoyMDQ6XFx0XFx0cGVyX25vZGUgPSBESVZfUk9VTkRfVVAoaHVnZXRsYl9jbWFfc2l6ZSxcXG5tbS9odWdldGxiX2NtYS5jLTIwNS1cXHRcXHRcXHRcXHRcXHRub2Rlc193ZWlnaHQoaHVnZXRsYl9ib290bWVtX25vZGVzKSk7XFxubW0vaHVnZXRsYl9jbWEuYy0yMDYtXFx0XFx0cGVyX25vZGUgPSByb3VuZF91cChwZXJfbm9kZSwgZ2lnYW50aWNfcGFnZV9zaXplKTtcXG5tbS9odWdldGxiX2NtYS5jOjIwNzpcXHRcXHRwcl9pbmZvKFxcXCJodWdldGxiX2NtYTogcmVzZXJ2ZSAlbHUgTWlCLCB1cCB0byAlbHUgTWlCIHBlciBub2RlXFxcXG5cXFwiLFxcbm1tL2h1Z2V0bGJfY21hLmM6MjA4OlxcdFxcdFxcdGh1Z2V0bGJfY21hX3NpemUgLyBTWl8xTSwgcGVyX25vZGUgLyBTWl8xTSk7XFxubW0vaHVnZXRsYl9jbWEuYy0yMDktXFx0fVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0yMTYtXFx0XFx0aWYgKG5vZGVfc3BlY2lmaWNfY21hX2FsbG9jKSB7XFxubW0vaHVnZXRsYl9jbWEuYzoyMTc6XFx0XFx0XFx0aWYgKGh1Z2V0bGJfY21hX3NpemVfaW5fbm9kZVtuaWRdID09IDApXFxubW0vaHVnZXRsYl9jbWEuYy0yMTgtXFx0XFx0XFx0XFx0Y29udGludWU7XFxubW0vaHVnZXRsYl9jbWEuYy0yMTktXFxubW0vaHVnZXRsYl9jbWEuYzoyMjA6XFx0XFx0XFx0c2l6ZSA9IGh1Z2V0bGJfY21hX3NpemVfaW5fbm9kZVtuaWRdO1xcbm1tL2h1Z2V0bGJfY21hLmMtMjIxLVxcdFxcdH0gZWxzZSB7XFxubW0vaHVnZXRsYl9jbWEuYzoyMjI6XFx0XFx0XFx0c2l6ZSA9IG1pbihwZXJfbm9kZSwgaHVnZXRsYl9jbWFfc2l6ZSAtIHJlc2VydmVkKTtcXG5tbS9odWdldGxiX2NtYS5jLTIyMy1cXHRcXHR9XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTIzMi1cXHRcXHRcXHRcXHRcXHRIVUdFVExCX1BBR0VfT1JERVIsIG5hbWUsXFxubW0vaHVnZXRsYl9jbWEuYzoyMzM6XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmh1Z2V0bGJfY21hW25pZF0sIG5pZCk7XFxubW0vaHVnZXRsYl9jbWEuYy0yMzQtXFx0XFx0aWYgKHJlcykge1xcbm1tL2h1Z2V0bGJfY21hLmM6MjM1OlxcdFxcdFxcdHByX3dhcm4oXFxcImh1Z2V0bGJfY21hOiByZXNlcnZhdGlvbiBmYWlsZWQ6IGVyciAlZCwgbm9kZSAlZFxcXCIsXFxubW0vaHVnZXRsYl9jbWEuYy0yMzYtXFx0XFx0XFx0XFx0cmVzLCBuaWQpO1xcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0yNDAtXFx0XFx0cmVzZXJ2ZWQgKz0gc2l6ZTtcXG5tbS9odWdldGxiX2NtYS5jOjI0MTpcXHRcXHRwcl9pbmZvKFxcXCJodWdldGxiX2NtYTogcmVzZXJ2ZWQgJWx1IE1pQiBvbiBub2RlICVkXFxcXG5cXFwiLFxcbm1tL2h1Z2V0bGJfY21hLmMtMjQyLVxcdFxcdFxcdHNpemUgLyBTWl8xTSwgbmlkKTtcXG5tbS9odWdldGxiX2NtYS5jLTI0My1cXG5tbS9odWdldGxiX2NtYS5jOjI0NDpcXHRcXHRpZiAocmVzZXJ2ZWQgXFx1MDAzZT0gaHVnZXRsYl9jbWFfc2l6ZSlcXG5tbS9odWdldGxiX2NtYS5jLTI0NS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtMjQ5LVxcdFxcdC8qXFxubW0vaHVnZXRsYl9jbWEuYzoyNTA6XFx0XFx0ICogaHVnZXRsYl9jbWFfc2l6ZSBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBhbGxvY2F0aW9ucyBmcm9tXFxubW0vaHVnZXRsYl9jbWEuYy0yNTEtXFx0XFx0ICogY21hIGFyZSBwb3NzaWJsZS4gIFNldCB0byB6ZXJvIGlmIG5vIGNtYSByZWdpb25zIGFyZSBzZXQgdXAuXFxubW0vaHVnZXRsYl9jbWEuYy0yNTItXFx0XFx0ICovXFxubW0vaHVnZXRsYl9jbWEuYzoyNTM6XFx0XFx0aHVnZXRsYl9jbWFfc2l6ZSA9IDA7XFxubW0vaHVnZXRsYl9jbWEuYy0yNTQtfVxcbm1tL2h1Z2V0bGJfY21hLmMtMjU1LVxcbm1tL2h1Z2V0bGJfY21hLmM6MjU2OmJvb2wgaHVnZXRsYl9jbWFfZXhjbHVzaXZlX2FsbG9jKHZvaWQpXFxubW0vaHVnZXRsYl9jbWEuYy0yNTcte1xcbm1tL2h1Z2V0bGJfY21hLmM6MjU4OlxcdHJldHVybiBodWdldGxiX2NtYV9vbmx5O1xcbm1tL2h1Z2V0bGJfY21hLmMtMjU5LX1cXG5tbS9odWdldGxiX2NtYS5jLTI2MC1cXG5tbS9odWdldGxiX2NtYS5jOjI2MTp1bnNpZ25lZCBsb25nIF9faW5pdCBodWdldGxiX2NtYV90b3RhbF9zaXplKHZvaWQpXFxubW0vaHVnZXRsYl9jbWEuYy0yNjIte1xcbm1tL2h1Z2V0bGJfY21hLmM6MjYzOlxcdHJldHVybiBodWdldGxiX2NtYV9zaXplO1xcbm1tL2h1Z2V0bGJfY21hLmMtMjY0LX1cXG5tbS9odWdldGxiX2NtYS5jLTI2NS1cXG5tbS9odWdldGxiX2NtYS5jOjI2Njp2b2lkIF9faW5pdCBodWdldGxiX2NtYV92YWxpZGF0ZV9wYXJhbXModm9pZClcXG5tbS9odWdldGxiX2NtYS5jLTI2Ny17XFxubW0vaHVnZXRsYl9jbWEuYzoyNjg6XFx0aWYgKCFodWdldGxiX2NtYV9zaXplKVxcbm1tL2h1Z2V0bGJfY21hLmM6MjY5OlxcdFxcdGh1Z2V0bGJfY21hX29ubHkgPSBmYWxzZTtcXG5tbS9odWdldGxiX2NtYS5jLTI3MC19XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jPTI3Mj1ib29sIF9faW5pdCBodWdldGxiX2Vhcmx5X2NtYShzdHJ1Y3QgaHN0YXRlICpoKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0yNzYtXFxubW0vaHVnZXRsYl9jbWEuYzoyNzc6XFx0cmV0dXJuIGhzdGF0ZV9pc19naWdhbnRpYyhoKSBcXHUwMDI2XFx1MDAyNiBodWdldGxiX2NtYV9vbmx5O1xcbm1tL2h1Z2V0bGJfY21hLmMtMjc4LX1cXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmgtNS0jaWZkZWYgQ09ORklHX0NNQVxcbm1tL2h1Z2V0bGJfY21hLmg6Njp2b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbm1tL2h1Z2V0bGJfY21hLmg6NzpzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxcbm1tL2h1Z2V0bGJfY21hLmgtOC1cXHRcXHRcXHRcXHQgICAgICBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzayk7XFxubW0vaHVnZXRsYl9jbWEuaDo5OnN0cnVjdCBodWdlX2Jvb3RtZW1fcGFnZSAqaHVnZXRsYl9jbWFfYWxsb2NfYm9vdG1lbShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgKm5pZCxcXG5tbS9odWdldGxiX2NtYS5oLTEwLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBib29sIG5vZGVfZXhhY3QpO1xcbm1tL2h1Z2V0bGJfY21hLmg6MTE6Ym9vbCBodWdldGxiX2NtYV9leGNsdXNpdmVfYWxsb2Modm9pZCk7XFxubW0vaHVnZXRsYl9jbWEuaDoxMjp1bnNpZ25lZCBsb25nIGh1Z2V0bGJfY21hX3RvdGFsX3NpemUodm9pZCk7XFxubW0vaHVnZXRsYl9jbWEuaDoxMzp2b2lkIGh1Z2V0bGJfY21hX3ZhbGlkYXRlX3BhcmFtcyh2b2lkKTtcXG5tbS9odWdldGxiX2NtYS5oLTE0LWJvb2wgaHVnZXRsYl9lYXJseV9jbWEoc3RydWN0IGhzdGF0ZSAqaCk7XFxubW0vaHVnZXRsYl9jbWEuaC0xNS0jZWxzZVxcbm1tL2h1Z2V0bGJfY21hLmg6MTY6c3RhdGljIGlubGluZSB2b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vaHVnZXRsYl9jbWEuaC0xNy17XFxuLS1cXG5tbS9odWdldGxiX2NtYS5oLTE5LVxcbm1tL2h1Z2V0bGJfY21hLmg6MjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsXFxubW0vaHVnZXRsYl9jbWEuaC0yMS1cXHRcXHRnZnBfdCBnZnBfbWFzayxcXHRpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmg9MjY9c3RhdGljIGlubGluZVxcbm1tL2h1Z2V0bGJfY21hLmg6Mjc6c3RydWN0IGh1Z2VfYm9vdG1lbV9wYWdlICpodWdldGxiX2NtYV9hbGxvY19ib290bWVtKHN0cnVjdCBoc3RhdGUgKmgsIGludCAqbmlkLFxcbm1tL2h1Z2V0bGJfY21hLmgtMjgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGJvb2wgbm9kZV9leGFjdClcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmgtMzItXFxubW0vaHVnZXRsYl9jbWEuaDozMzpzdGF0aWMgaW5saW5lIGJvb2wgaHVnZXRsYl9jbWFfZXhjbHVzaXZlX2FsbG9jKHZvaWQpXFxubW0vaHVnZXRsYl9jbWEuaC0zNC17XFxuLS1cXG5tbS9odWdldGxiX2NtYS5oLTM3LVxcbm1tL2h1Z2V0bGJfY21hLmg6Mzg6c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfY21hX3RvdGFsX3NpemUodm9pZClcXG5tbS9odWdldGxiX2NtYS5oLTM5LXtcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmgtNDItXFxubW0vaHVnZXRsYl9jbWEuaDo0MzpzdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl9jbWFfdmFsaWRhdGVfcGFyYW1zKHZvaWQpXFxubW0vaHVnZXRsYl9jbWEuaC00NC17XFxuLS1cXG5tbS9tbV9pbml0LmM9MjY5NT12b2lkIF9faW5pdCBtbV9jb3JlX2luaXRfZWFybHkodm9pZClcXG5tbS9tbV9pbml0LmMtMjY5Ni17XFxubW0vbW1faW5pdC5jOjI2OTc6XFx0aHVnZXRsYl9jbWFfcmVzZXJ2ZSgpO1xcbm1tL21tX2luaXQuYy0yNjk4LVxcdGh1Z2V0bGJfYm9vdG1lbV9hbGxvYygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODowOTowOC40NTcxMzcxMjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxNjQ5MTAxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfSFVHRVRMQlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEyOTcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0PTk1PUtlcm5lbCBwYXJhbWV0ZXJzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dC0yMDg1LVxcdGh1Z2V0bGJfZnJlZV92bWVtbWFwPVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjIwODY6XFx0XFx0XFx0W0tOTF0gUmVxdWlyZXMgQ09ORklHX0hVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA4Ny1cXHRcXHRcXHRlbmFibGVkLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA5NS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dDoyMDk2OlxcdFxcdFxcdEJ1aWx0IHdpdGggQ09ORklHX0hVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQX0RFRkFVTFRfT049eSxcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dC0yMDk3LVxcdFxcdFxcdHRoZSBkZWZhdWx0IGlzIG9uLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3Q9MjA9c3lzdGVtIGNhbGwgb3Igc3RhbmRhcmQgU1lTViBzaGFyZWQgbWVtb3J5IHN5c3RlbSBjYWxscyAoc2htZ2V0LCBzaG1hdCkuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3QtMjEtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3Q6MjI6Rmlyc3QgdGhlIExpbnV4IGtlcm5lbCBuZWVkcyB0byBiZSBidWlsdCB3aXRoIHRoZSBDT05GSUdfSFVHRVRMQkZTXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3Q6MjM6KHByZXNlbnQgdW5kZXIgXFxcIkZpbGUgc3lzdGVtc1xcXCIpIGFuZCBDT05GSUdfSFVHRVRMQl9QQUdFIChzZWxlY3RlZFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vaHVnZXRsYnBhZ2UucnN0OjI0OmF1dG9tYXRpY2FsbHkgd2hlbiBDT05GSUdfSFVHRVRMQkZTIGlzIHNlbGVjdGVkKSBjb25maWd1cmF0aW9uXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3QtMjUtb3B0aW9ucy5cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vaHVnZXRsYnBhZ2UucnN0PTE3ND1odWdldGxiX2ZyZWVfdm1lbW1hcFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vaHVnZXRsYnBhZ2UucnN0OjE3NTpcXHRXaGVuIENPTkZJR19IVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUCBpcyBzZXQsIHRoaXMgZW5hYmxlcyBIdWdlVExCXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3QtMTc2LVxcdFZtZW1tYXAgT3B0aW1pemF0aW9uIChIVk8pLlxcbi0tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz0xOTEyPUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6MTkxMzpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTE5MTQtQ09ORklHX0NPTkZJR0ZTX0ZTPXlcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbXRlLmg9MTU3PXN0YXRpYyBpbmxpbmUgaW50IG10ZV9wdHJhY2VfY29weV90YWdzKHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQsXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL210ZS5oLTE2NS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL210ZS5oOjE2NjojaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19BUk02NF9NVEUpXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tdGUuaC0xNjctc3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3NldF9odWdldGxiX210ZV90YWdnZWQoc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbmFyY2gvYXJtNjQvbW0vTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfQVJNNjRfQ09OVFBURSlcXHQrPSBjb250cHRlLm9cXG5hcmNoL2FybTY0L21tL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSlcXHQrPSBodWdldGxicGFnZS5vXFxuYXJjaC9hcm02NC9tbS9NYWtlZmlsZS04LW9iai0kKENPTkZJR19QVERVTVApXFx0XFx0Kz0gcHRkdW1wLm9cXG4tLVxcbmFyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9wYWdlLmgtMzktICovXFxuYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3BhZ2UuaDo0MDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9wYWdlLmgtNDEtI2RlZmluZSBIUEFHRV9TSElGVCAyMlxcbi0tXFxuYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMjk9ZXh0ZXJuIHBnZF90IHN3YXBwZXJfcGdfZGlyW1BUUlNfUEVSX1BHRF07ICAvKiBsb2NhdGVkIGluIGhlYWQuUyAqL1xcbi0tXFxuYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMzEtLyogIEhVR0VUTEIgbm90IHdvcmtpbmcgY3VycmVudGx5ICAqL1xcbmFyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTMyOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMzMtI2RlZmluZSBwdGVfbWtodWdlKHB0ZSkgX19wdGUoKHB0ZV92YWwocHRlKSBcXHUwMDI2IH4weDMpIHwgSFZNX0hVR0VQQUdFX1NJWkUpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTEwMzU9Q09ORklHX1RNUEZTX1BPU0lYX0FDTD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMDM2OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTAzNy1DT05GSUdfQ09ORklHRlNfRlM9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX0hJR0hNRU0pXFx0XFx0Kz0gaGlnaG1lbS5vXFxuYXJjaC9sb29uZ2FyY2gvbW0vTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSlcXHQrPSBodWdldGxicGFnZS5vXFxuYXJjaC9sb29uZ2FyY2gvbW0vTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX0tBU0FOKVxcdFxcdCs9IGthc2FuX2luaXQub1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vdGxiLmM9MTM4PXN0YXRpYyB2b2lkIF9fdXBkYXRlX2h1Z2V0bGIoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgcHRlX3QgKnB0ZXApXFxuYXJjaC9sb29uZ2FyY2gvbW0vdGxiLmMtMTM5LXtcXG5hcmNoL2xvb25nYXJjaC9tbS90bGIuYzoxNDA6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL2xvb25nYXJjaC9tbS90bGIuYy0xNDEtXFx0aW50IGlkeDtcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnPTE0Mz1DT05GSUdfVE1QRlM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnOjE0NDpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZy0xNDUtQ09ORklHX05GU19GUz15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZz0xNDQ9Q09ORklHX1RNUEZTX1BPU0lYX0FDTD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWc6MTQ1OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTE0Ni1DT05GSUdfQ09ORklHRlNfRlM9eVxcbi0tXFxuYXJjaC9taXBzL21tL01ha2VmaWxlPTMxPW9iai0kKENPTkZJR19ISUdITUVNKVxcdFxcdCs9IGhpZ2htZW0ub1xcbmFyY2gvbWlwcy9tbS9NYWtlZmlsZTozMjpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKVxcdCs9IGh1Z2V0bGJwYWdlLm9cXG5hcmNoL21pcHMvbW0vTWFrZWZpbGUtMzMtb2JqLSQoQ09ORklHX0RNQV9OT05DT0hFUkVOVClcXHQrPSBkbWEtbm9uY29oZXJlbnQub1xcbi0tXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGFnZS5oPTkzPWV4dGVybiBpbnQgbnBtZW1fcmFuZ2VzO1xcbi0tXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGFnZS5oLTE0Ny1cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wYWdlLmg6MTQ4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGFnZS5oLTE0OS0jZGVmaW5lIEhQQUdFX1NISUZUXFx0XFx0UE1EX1NISUZUIC8qIGZpeGVkIGZvciB0cmFuc3BhcmVudCBodWdlIHBhZ2VzICovXFxuLS1cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wYWdlLmgtMTYzLSNlbmRpZlxcbmFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BhZ2UuaDoxNjQ6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wYWdlLmgtMTY1LVxcbi0tXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTY0PWV4dGVybiB2b2lkIF9fdXBkYXRlX2NhY2hlKHB0ZV90IHB0ZSk7XFxuLS1cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTcwLSNkZWZpbmUgX1BBR0VfVVNFUl9CSVQgICAgIDIwICAgLyogKDB4ODAwKSBTb2Z0d2FyZTogVXNlciBhY2Nlc3NpYmxlIHBhZ2UgKi9cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTcxOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE3Mi0jZGVmaW5lIF9QQUdFX1NQRUNJQUxfQklUICBfUEFHRV9ETUJfQklUICAvKiBETUIgZmVhdHVyZSBpcyBjdXJyZW50bHkgdW51c2VkICovXFxuLS1cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MzE1PXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rc3BlY2lhbChwdGVfdCBwdGUpXFx0eyBwdGVfdmFsKHB0ZSkgfD0gX1BBR0VfU1BFQ0lBTDsgcmV0dXJuIHB0ZTsgfVxcbi0tXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTMxOS0gKi9cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzIwOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTMyMS0jZGVmaW5lIHB0ZV9odWdlKHB0ZSkgICAgICAgICAgIChwdGVfdmFsKHB0ZSkgXFx1MDAyNiBfUEFHRV9IVUdFKVxcbi0tXFxuYXJjaC9wYXJpc2Mva2VybmVsL2FzbS1vZmZzZXRzLmM9NDE9aW50IG1haW4odm9pZClcXG4tLVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTI3OC1cXHQgKiBhbmQga2VybmVsIGRhdGEgb24gcGh5c2ljYWwgaHVnZSBwYWdlcyAqL1xcbmFyY2gvcGFyaXNjL2tlcm5lbC9hc20tb2Zmc2V0cy5jOjI3OTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTI4MC1cXHRERUZJTkUoSFVHRVBBR0VfU0laRSwgMVVMIFxcdTAwM2NcXHUwMDNjIFJFQUxfSFBBR0VfU0hJRlQpO1xcbi0tXFxuYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlMtNDgxLVxcdC5tYWNyb1xcdFxcdGNvbnZlcnRfZm9yX3RsYl9pbnNlcnQyMCBwdGUsdG1wXFxuYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlM6NDgyOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlMtNDgzLVxcdGNvcHlcXHRcXHRcXFxccHRlLFxcXFx0bXBcXG4tLVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zZXR1cC5jPTEwMT12b2lkIF9faW5pdCBzZXR1cF9hcmNoKGNoYXIgKipjbWRsaW5lX3ApXFxuLS1cXG5hcmNoL3BhcmlzYy9rZXJuZWwvc2V0dXAuYy0xMTQtXFx0XFx0KGludCkoUEFHRV9TSVpFIC8gMTAyNCkpO1xcbmFyY2gvcGFyaXNjL2tlcm5lbC9zZXR1cC5jOjExNTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zZXR1cC5jLTExNi1cXHRwcmludGsoS0VSTl9DT05UIFxcXCJlbmFibGVkIHdpdGggJWQgTUIgcGh5c2ljYWwgYW5kICVkIE1CIHZpcnR1YWwgc2l6ZVxcXCIsXFxuLS1cXG5hcmNoL3BhcmlzYy9tbS9NYWtlZmlsZT02PW9iai15XFx0IDo9IGluaXQubyBmYXVsdC5vIGlvcmVtYXAubyBmaXhtYXAub1xcbmFyY2gvcGFyaXNjL21tL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSkgKz0gaHVnZXRsYnBhZ2Uub1xcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWc9MTc4PUNPTkZJR19UTVBGUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWc6MTc5OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnLTE4MC1DT05GSUdfTkZTX0ZTPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnPTUwPUNPTkZJR19IUEZTX0ZTPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZzo1MTpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZy01Mi1DT05GSUdfSUtDT05GSUdfUFJPQz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWc9MjE0PUNPTkZJR19UTVBGUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZzVfZGVmY29uZmlnOjIxNTpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWctMjE2LUNPTkZJR19IRlNfRlM9bVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcGFzZW1pX2RlZmNvbmZpZz0xNTE9Q09ORklHX1RNUEZTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnOjE1MjpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnLTE1My1DT05GSUdfQ09ORklHRlNfRlM9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9Mjc4PUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjI3OTpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy0yODAtQ09ORklHX0NSQU1GUz1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9MzMzPUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzozMzQ6Q09ORklHX0hVR0VUTEJGUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTMzNS1DT05GSUdfSEZTX0ZTPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWc9MTM4PUNPTkZJR19UTVBGUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZzoxMzk6Q09ORklHX0hVR0VUTEJGUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZy0xNDAtQ09ORklHX05GU19GUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZz0yNTc9Q09ORklHX1BST0NfS0NPUkU9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnOjI1ODpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZy0yNTktIyBDT05GSUdfTUlTQ19GSUxFU1lTVEVNUyBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtNzQtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjc1OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC03Ni0jZGVmaW5lIEhfUE1EX0ZSQUdfU0laRV9TSElGVCAgKEhfUE1EX0lOREVYX1NJWkUgKyAzICsgMSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaD0xNzU9c3RhdGljIGlubGluZSBpbnQgaGFzaF9fcmVtYXBfNGtfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTg2LSNkZWZpbmUgSF9QVEVfVEFCTEVfU0laRVxcdFBURV9GUkFHX1NJWkVcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmg6MTg3OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZCAoQ09ORklHX0hVR0VUTEJfUEFHRSlcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTg4LSNkZWZpbmUgSF9QTURfVEFCTEVfU0laRVxcdCgoc2l6ZW9mKHBtZF90KSBcXHUwMDNjXFx1MDAzYyBQTURfSU5ERVhfU0laRSkgKyBcXFxcXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTkyLSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDoxOTM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTk0LSNkZWZpbmUgSF9QVURfVEFCTEVfU0laRVxcdCgoc2l6ZW9mKHB1ZF90KSBcXHUwMDNjXFx1MDAzYyBQVURfSU5ERVhfU0laRSkgK1xcdFxcXFxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oLTQ2LSAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oOjQ3OiNpZiBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0UpIFxcdTAwMjZcXHUwMDI2ICBkZWZpbmVkKENPTkZJR19QUENfNjRLX1BBR0VTKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oLTQ4LSNkZWZpbmUgSF9QVURfQ0FDSEVfSU5ERVhcXHQoSF9QVURfSU5ERVhfU0laRSArIDEpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS1oYXNoLmg9NzEyPXN0cnVjdCBoYXNoX21tX2NvbnRleHQge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUtaGFzaC5oLTcyMi1cXHRzdHJ1Y3Qgc2xpY2VfbWFzayBtYXNrXzRrO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvbW11LWhhc2guaDo3MjM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS1oYXNoLmgtNzI0LVxcdHN0cnVjdCBzbGljZV9tYXNrIG1hc2tfMTZtO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUuaD0xNjk9c3RhdGljIGlubGluZSBzdHJ1Y3Qgc2xpY2VfbWFzayAqc2xpY2VfbWFza19mb3Jfc2l6ZShtbV9jb250ZXh0X3QgKmN0eCwgaW50IHBzaXplKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUuaC0xNzQtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUuaDoxNzU6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS5oLTE3Ni1cXHRpZiAocHNpemUgPT0gTU1VX1BBR0VfMTZNKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ2FsbG9jLmg9NDg9c3RhdGljIGlubGluZSBwZ2RfdCAqcGdkX2FsbG9jKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ2FsbG9jLmgtNzMtXFx0ICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ2FsbG9jLmg6NzQ6I2lmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfUFBDXzY0S19QQUdFUykgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGdhbGxvYy5oLTc1LVxcdChIX1BHRF9JTkRFWF9TSVpFID09IEhfUFVEX0NBQ0hFX0lOREVYKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLTY0ay5oLTUtI2lmbmRlZiBfX0FTU0VNQkxFUl9fXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLTY0ay5oOjY6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUtNjRrLmgtNy1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUtNjRrLmg6ODojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS02NGsuaC05LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9zbGljZS5oLTctI2lmZGVmIENPTkZJR19QUENfNjRTX0hBU0hfTU1VXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9zbGljZS5oOjg6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3NsaWNlLmgtOS0jZGVmaW5lIEhBVkVfQVJDSF9IVUdFVExCX1VOTUFQUEVEX0FSRUFcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmgtNC1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oOjU6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTYtI2luY2x1ZGUgXFx1MDAzY2FzbS9wYWdlLmhcXHUwMDNlXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oPTY3PWludCBodWdlX3B0ZXBfc2V0X2FjY2Vzc19mbGFncyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmgtNzItXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h1Z2V0bGIuaDo3MzojZWxzZSAvKiAhIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTc0LXN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF9odWdldGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oPTc5PXN0YXRpYyBpbmxpbmUgdm9pZCBfX2luaXQgaHVnZXRsYnBhZ2VfaW5pdF9kZWZhdWx0c2l6ZSh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h1Z2V0bGIuaC04MS19XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h1Z2V0bGIuaDo4MjojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmgtODMtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFnZS5oLTI2LSNpZm5kZWYgX19BU1NFTUJMRVJfX1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWdlLmg6Mjc6I2lmbmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhZ2UuaC0yOC0jZGVmaW5lIEhQQUdFX1NISUZUIFBBR0VfU0hJRlRcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTQ0PXN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfbW11X2NhY2hlX3JhbmdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDgtXFx0aWYgKChtbXVfaGFzX2ZlYXR1cmUoTU1VX0ZUUl9IUFRFX1RBQkxFKSBcXHUwMDI2XFx1MDAyNiAhcmFkaXhfZW5hYmxlZCgpKSB8fFxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTQ5OlxcdCAgICAoSVNfRU5BQkxFRChDT05GSUdfUFBDX0U1MDApIFxcdTAwMjZcXHUwMDI2IElTX0VOQUJMRUQoQ09ORklHX0hVR0VUTEJfUEFHRSkpKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTUwLVxcdFxcdF9fdXBkYXRlX21tdV9jYWNoZSh2bWEsIGFkZHJlc3MsIHB0ZXApO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3B0ZS13YWxrLmg9MTA9c3RhdGljIGlubGluZSBwdGVfdCAqZmluZF9saW51eF9wdGUocGdkX3QgKnBnZGlyLCB1bnNpZ25lZCBsb25nIGVhLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3B0ZS13YWxrLmgtMTgtI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX1ZNKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaDoxOTpcXHQhKGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSkgfHwgZGVmaW5lZChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wdGUtd2Fsay5oLTIwLVxcdC8qXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jPTU0OT1pbnQgX19pbml0IGZhZHVtcF9yZXNlcnZlX21lbSh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy01OTQtXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo1OTU6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTU5Ni1cXHRcXHQvKlxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUz0xNjY9c2V0X2l2b3I6XFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTMwNy0gKi9cXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TOjMwODojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlMtMzA5LSNkZWZpbmUgRklORF9QVEVcXHRcXFxcXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TPTY2Nj1maW5pc2hfdGxiX2xvYWQ6XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUzo2Njc6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTY2OC1cXHRjbXB3aVxcdDYsIHIxMCwgMFxcdFxcdFxcdC8qIGNoZWNrIGZvciBodWdlIHBhZ2UgKi9cXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlMtNzE4LVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlM6NzE5OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUy03MjAtXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TPTczOT1FTkRfTU1VX0ZUUl9TRUNUSU9OX0lGU0VUKE1NVV9GVFJfQklHX1BIWVMpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTc0Mi1cXHRybHdpbWlcXHRyMTIsIHIxMSwgMzItMTksIDI3LCAzMVxcdC8qIGV4dHJhY3QgV0lNR0UgZnJvbSBwdGUgKi9cXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TOjc0MzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlMtNzQ0LVxcdGJlcVxcdDYsIDNmXFx0XFx0XFx0LyogZG9uJ3QgbWFzayBpZiBwYWdlIGlzbid0IGh1Z2UgKi9cXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlM9NzUzPXRsYl93cml0ZV9lbnRyeTpcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlMtNzU3LVxcdG1mc3ByXFx0cjEwLCBTUFJOX1NQUkdfVEhSRUFEXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUzo3NTg6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTc1OS1cXHRiZXFcXHQ2LCA4ZiAvKiBza2lwIHJlc3RvcmUgZm9yIDRrIHBhZ2UgZmF1bHRzICovXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX05VTUEpICs9IG51bWEub1xcbmFyY2gvcG93ZXJwYy9tbS9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKVxcdCs9IGh1Z2V0bGJwYWdlLm9cXG5hcmNoL3Bvd2VycGMvbW0vTWFrZWZpbGUtMTYtb2JqLSQoQ09ORklHX05PVF9DT0hFUkVOVF9DQUNIRSkgKz0gZG1hLW5vbmNvaGVyZW50Lm9cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZT0xMj1lbmRpZlxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZS0xMy1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSlcXHQrPSBodWdldGxicGFnZS5vXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L01ha2VmaWxlLTE1LVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfUFBDX1JBRElYX01NVSlcXHQrPSByYWRpeF9wZ3RhYmxlLm8gcmFkaXhfdGxiLm9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvTWFrZWZpbGU6MTc6aWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfUFBDX1JBRElYX01NVSlcXHQrPSByYWRpeF9odWdldGxicGFnZS5vXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF90bGIuYz00MT12b2lkIGhwdGVfbmVlZF9mbHVzaChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdGxiLmMtNjItXFx0aWYgKGh1Z2UpIHtcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF90bGIuYzo2MzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3RsYi5jLTY0LVxcdFxcdHBzaXplID0gZ2V0X3NsaWNlX3BzaXplKG1tLCBhZGRyKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM9ODQ2PXN0YXRpYyBpbnQgX19pbml0IGh0YWJfZHRfc2Nhbl9wYWdlX3NpemVzKHVuc2lnbmVkIGxvbmcgbm9kZSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtOTIzLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6OTI0OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy05MjUtLypcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM9OTI5PXN0YXRpYyBpbnQgX19pbml0IGh0YWJfZHRfc2Nhbl9odWdlcGFnZV9ibG9ja3ModW5zaWduZWQgbG9uZyBub2RlLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy05NjYtfVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6OTY3OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy05NjgtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTk5Nj1zdGF0aWMgdm9pZCBfX2luaXQgaHRhYl9zY2FuX3BhZ2Vfc2l6ZXModm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTAxOS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjEwMjA6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTEwMjEtXFx0aWYgKCFodWdldGxiX2Rpc2FibGVkIFxcdTAwMjZcXHUwMDI2ICFlYXJseV9yYWRpeF9lbmFibGVkKCkgKSB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTEwMjQtXFx0fVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTAyNTojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTAyNi19XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTE3MTg9aW50IGhhc2hfcGFnZV9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBlYSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTgzOC1cXHRcXHRcXHRcXHRcXHQgICAgIHRyYXAsIGZsYWdzLCBzc2l6ZSwgcHNpemUpO1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTgzOTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTg0MC1cXHRcXHRlbHNlXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM9NjI2PXZvaWQgcmFkaXhfX2xvY2FsX2ZsdXNoX3RsYl9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHZtYWRkcilcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtNjI3LXtcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM6NjI4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTYyOS1cXHQvKiBuZWVkIHRoZSByZXR1cm4gZml4IGZvciBub2hhc2guYyAqL1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jPTk0NT12b2lkIHJhZGl4X19mbHVzaF90bGJfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyB2bWFkZHIpXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTk0Ni17XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjk0NzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy05NDgtXFx0aWYgKGlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jPTExMTE9dm9pZCByYWRpeF9fZmx1c2hfdGxiX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTExMTQte1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYzoxMTE1OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTExMTYtXFx0aWYgKGlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsaWNlLmM9NjM2PUVYUE9SVF9TWU1CT0xfR1BMKHNsaWNlX2dldF91bm1hcHBlZF9hcmVhKTtcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xpY2UuYy02MzctXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsaWNlLmM6NjM4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsaWNlLmMtNjM5LXN0YXRpYyBpbnQgZmlsZV90b19wc2l6ZShzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGljZS5jPTc1Nz12b2lkIHNsaWNlX3NldF9yYW5nZV9wc2l6ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGljZS5jLTc2Ny1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xpY2UuYzo3Njg6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xpY2UuYy03NjktLypcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM9NjE3PXZvaWQgX19pbml0IG1tdV9lYXJseV9pbml0X2RldnRyZWUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtNjY0LVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM6NjY1OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19IVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRSkpXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy02NjYtXFx0XFx0aHVnZXRsYnBhZ2VfaW5pdF9kZWZhdWx0c2l6ZSgpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9NYWtlZmlsZT04PW9iai0kKENPTkZJR19SQU5ET01JWkVfQkFTRSlcXHQrPSBrYXNscl9ib29rZS5vXFxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9NYWtlZmlsZTo5OmlmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19QUENfRTUwMClcXHQrPSBlNTAwX2h1Z2V0bGJwYWdlLm9cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvdGxiLmM9Mjc4PXZvaWQgZmx1c2hfdGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgdm1hZGRyKVxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvdGxiLmMtMjc5LXtcXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL3RsYi5jOjI4MDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvdGxiLmMtMjgxLVxcdGlmICh2bWEgXFx1MDAyNlxcdTAwMjYgaXNfdm1faHVnZXRsYl9wYWdlKHZtYSkpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jPTI1NT1pbnQgcHRlcF9zZXRfYWNjZXNzX2ZsYWdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jLTI2OC1cXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jOjI2OTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLmMtMjcwLWludCBodWdlX3B0ZXBfc2V0X2FjY2Vzc19mbGFncyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLmM9MzUzPXZvaWQgc2V0X2h1Z2VfcHRlX2F0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsIHB0ZV90ICpwdGVwLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUuYy0zODMtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUuYzozODQ6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jLTM4NS1cXG4tLVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc9MjkwPUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc6MjkxOkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWctMjkyLUNPTkZJR19ORlNfRlM9eVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9NYWtlZmlsZT0xOT1vYmoteSArPSBwbWVtLm9cXG5hcmNoL3Jpc2N2L21tL01ha2VmaWxlLTIwLVxcbmFyY2gvcmlzY3YvbW0vTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSkgKz0gaHVnZXRsYnBhZ2Uub1xcbmFyY2gvcmlzY3YvbW0vTWFrZWZpbGUtMjItb2JqLSQoQ09ORklHX1BURFVNUCkgKz0gcHRkdW1wLm9cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz03MDY9Q09ORklHX1RNUEZTX1FVT1RBPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6NzA3OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy03MDgtQ09ORklHX0VDUllQVF9GUz1tXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9NjkyPUNPTkZJR19UTVBGU19RVU9UQT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjY5MzpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctNjk0LUNPTkZJR19FQ1JZUFRfRlM9bVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMTExPXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rc3BlY2lhbChwdGVfdCBwdGUpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTExMTUtXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMTE2OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMTE3LXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21raHVnZShwdGVfdCBwdGUpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE1NjA9c3RhdGljIGlubGluZSBwdWRfdCBwdWRfbWtkaXJ0eShwdWRfdCBwdWQpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE1NjctXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNTY4OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTU2OS1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFzc2FnZV9wZ3Byb3RfcG1kKHBncHJvdF90IHBncHJvdClcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTYxOD1zdGF0aWMgaW5saW5lIHBtZF90IG1rX3BtZF9waHlzKHVuc2lnbmVkIGxvbmcgcGh5c3BhZ2UsIHBncHJvdF90IHBncHJvdClcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTYyMi1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjE2MjM6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSB8fCBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNjI0LVxcbi0tXFxuYXJjaC9zMzkwL21tL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19ERUJVR19WSVJUVUFMKVxcdCs9IHBoeXNhZGRyLm9cXG5hcmNoL3MzOTAvbW0vTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSlcXHQrPSBodWdldGxicGFnZS5vXFxuYXJjaC9zMzkwL21tL01ha2VmaWxlLTEyLW9iai0kKENPTkZJR19QVERVTVApXFx0XFx0Kz0gZHVtcF9wYWdldGFibGVzLm9cXG4tLVxcbmFyY2gvc2gvY29uZmlncy9hcHNoNGFkMGFfZGVmY29uZmlnPTI1PUNPTkZJR19NRU1PUllfU0laRT0weDEwMDAwMDAwXFxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWc6MjY6Q09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzFNQj15XFxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWctMjctQ09ORklHX0tTTT15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZz05Nz1DT05GSUdfVE1QRlM9eVxcbmFyY2gvc2gvY29uZmlncy9hcHNoNGFkMGFfZGVmY29uZmlnOjk4OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvc2gvY29uZmlncy9hcHNoNGFkMGFfZGVmY29uZmlnLTk5LUNPTkZJR19KRkZTMl9GUz15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3MvZHJlYW1jYXN0X2RlZmNvbmZpZz02ND1DT05GSUdfVE1QRlM9eVxcbmFyY2gvc2gvY29uZmlncy9kcmVhbWNhc3RfZGVmY29uZmlnOjY1OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvc2gvY29uZmlncy9kcmVhbWNhc3RfZGVmY29uZmlnLTY2LUNPTkZJR19SVENfQ0xBU1M9eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3I3NzgwbXBfZGVmY29uZmlnPTg0PUNPTkZJR19UTVBGUz15XFxuYXJjaC9zaC9jb25maWdzL3I3NzgwbXBfZGVmY29uZmlnOjg1OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvc2gvY29uZmlncy9yNzc4MG1wX2RlZmNvbmZpZy04Ni1DT05GSUdfQ09ORklHRlNfRlM9bVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnPTE2PUNPTkZJR19NRU1PUllfU0laRT0weDA4MDAwMDAwXFxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnOjE3OkNPTkZJR19IVUdFVExCX1BBR0VfU0laRV8xTUI9eVxcbmFyY2gvc2gvY29uZmlncy9yNzc4NXJwX2RlZmNvbmZpZy0xOC1DT05GSUdfU0hfU1RPUkVfUVVFVUVTPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9yNzc4NXJwX2RlZmNvbmZpZz03OT1DT05GSUdfVE1QRlM9eVxcbmFyY2gvc2gvY29uZmlncy9yNzc4NXJwX2RlZmNvbmZpZzo4MDpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvcjc3ODVycF9kZWZjb25maWctODEtQ09ORklHX0NPTkZJR0ZTX0ZTPW1cXG4tLVxcbmFyY2gvc2gvY29uZmlncy9zZGs3NzgwX2RlZmNvbmZpZz0xMTU9Q09ORklHX1RNUEZTX1BPU0lYX0FDTD15XFxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODBfZGVmY29uZmlnOjExNjpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4MF9kZWZjb25maWctMTE3LUNPTkZJR19NSU5JWF9GUz15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWc9NDQ9Q09ORklHX05VTUE9eVxcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZzo0NTpDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfNjRNQj15XFxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnLTQ2LUNPTkZJR19LU009eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnPTE3OT1DT05GSUdfVE1QRlM9eVxcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZzoxODA6Q09ORklHX0hVR0VUTEJGUz15XFxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnLTE4MS1DT05GSUdfQ09ORklHRlNfRlM9eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3NlNzcyMl9kZWZjb25maWc9NDk9Q09ORklHX1RNUEZTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIyX2RlZmNvbmZpZzo1MDpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIyX2RlZmNvbmZpZy01MS1DT05GSUdfUFJJTlRLX1RJTUU9eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWc9MTc9Q09ORklHX1BNQj15XFxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWc6MTg6Q09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzFNQj15XFxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWctMTktQ09ORklHX1NIX1NUT1JFX1FVRVVFUz15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2g3Nzg1bGNyXzMyYml0X2RlZmNvbmZpZz0xMjE9Q09ORklHX1RNUEZTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2g3Nzg1bGNyXzMyYml0X2RlZmNvbmZpZzoxMjI6Q09ORklHX0hVR0VUTEJGUz15XFxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWctMTIzLUNPTkZJR19DT05GSUdGU19GUz15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWc9ODk9Q09ORklHX1RNUEZTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWc6OTA6Q09ORklHX0hVR0VUTEJGUz15XFxuYXJjaC9zaC9jb25maWdzL3NoeDNfZGVmY29uZmlnLTkxLSMgQ09ORklHX0VOQUJMRV9NVVNUX0NIRUNLIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvc2gvY29uZmlncy91bDJfZGVmY29uZmlnPTcyPUNPTkZJR19UTVBGUz15XFxuYXJjaC9zaC9jb25maWdzL3VsMl9kZWZjb25maWc6NzM6Q09ORklHX0hVR0VUTEJGUz15XFxuYXJjaC9zaC9jb25maWdzL3VsMl9kZWZjb25maWctNzQtQ09ORklHX0NSQU1GUz15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWc9MTIyPUNPTkZJR19UTVBGUz15XFxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnOjEyMzpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWctMTI0LUNPTkZJR19DT05GSUdGU19GUz15XFxuLS1cXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaC0xNC1cXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaDoxNTojaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfNjRLKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oLTE2LSNkZWZpbmUgSFBBR0VfU0hJRlRcXHQxNlxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oOjE3OiNlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzI1NkspXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmgtMTgtI2RlZmluZSBIUEFHRV9TSElGVFxcdDE4XFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmg6MTk6I2VsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMU1CKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oLTIwLSNkZWZpbmUgSFBBR0VfU0hJRlRcXHQyMFxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oOjIxOiNlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzRNQilcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaC0yMi0jZGVmaW5lIEhQQUdFX1NISUZUXFx0MjJcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaDoyMzojZWxpZiBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0VfU0laRV82NE1CKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oLTI0LSNkZWZpbmUgSFBBR0VfU0hJRlRcXHQyNlxcbi0tXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmgtMjYtXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmg6Mjc6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaC0yOC0jZGVmaW5lIEhQQUdFX1NJWkVcXHRcXHQoMVVMIFxcdTAwM2NcXHUwMDNjIEhQQUdFX1NISUZUKVxcbi0tXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmg9OTc9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGNvcHlfcHRlYV9hdHRyaWJ1dGVzKHVuc2lnbmVkIGxvbmcgeClcXG4tLVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oLTEzNi0jaWYgZGVmaW5lZChDT05GSUdfWDJUTEIpXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmg6MTM3OiMgaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfNjRLKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oLTEzOC0jICBkZWZpbmUgX1BBR0VfU1pIVUdFXFx0KF9QQUdFX0VYVF9FU1oyKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oOjEzOTojIGVsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMjU2SylcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaC0xNDAtIyAgZGVmaW5lIF9QQUdFX1NaSFVHRVxcdChfUEFHRV9FWFRfRVNaMCB8IF9QQUdFX0VYVF9FU1oyKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oOjE0MTojIGVsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMU1CKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oLTE0Mi0jICBkZWZpbmUgX1BBR0VfU1pIVUdFXFx0KF9QQUdFX0VYVF9FU1owIHwgX1BBR0VfRVhUX0VTWjEgfCBfUEFHRV9FWFRfRVNaMilcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaDoxNDM6IyBlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzRNQilcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaC0xNDQtIyAgZGVmaW5lIF9QQUdFX1NaSFVHRVxcdChfUEFHRV9FWFRfRVNaMylcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaDoxNDU6IyBlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzY0TUIpXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgtMTQ2LSMgIGRlZmluZSBfUEFHRV9TWkhVR0VcXHQoX1BBR0VfRVhUX0VTWjIgfCBfUEFHRV9FWFRfRVNaMylcXG4tLVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oLTE0OS0jZWxzZVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oOjE1MDojIGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzY0SylcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaC0xNTEtIyAgZGVmaW5lIF9QQUdFX1NaSFVHRVxcdChfUEFHRV9TWjEpXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmg6MTUyOiMgZWxpZiBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0VfU0laRV8xTUIpXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgtMTUzLSMgIGRlZmluZSBfUEFHRV9TWkhVR0VcXHQoX1BBR0VfU1owIHwgX1BBR0VfU1oxKVxcbi0tXFxuYXJjaC9zaC9tbS9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfREVCVUdfRlMpXFx0XFx0Kz0gJChkZWJ1Z2ZzLXkpXFxuYXJjaC9zaC9tbS9NYWtlZmlsZTozODpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKVxcdCs9IGh1Z2V0bGJwYWdlLm9cXG5hcmNoL3NoL21tL01ha2VmaWxlLTM5LW9iai0kKENPTkZJR19QTUIpXFx0XFx0Kz0gcG1iLm9cXG4tLVxcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZz0xOTI9Q09ORklHX1RNUEZTPXlcXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWc6MTkzOkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZy0xOTQtQ09ORklHX1BSSU5US19USU1FPXlcXG4tLVxcbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTYtXFxuYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9odWdldGxiLmg6NzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTgtc3RydWN0IHB1ZF9odWdlX3BhdGNoX2VudHJ5IHtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODowOToxMC4yNzM2MzM0NjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDIyMDk1MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBIdWdlIFBhZ2UgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIGh1Z2UgcGFnZXMuIGBDT05GSUdfSFVHRVRMQl9QQUdFYCBpcyB0aGUga2V5IG9uZSwgYW5kIGl0J3MgcmVzcG9uc2libGUgZm9yIGJyaW5naW5nIGBodWdldGxicGFnZS5vYCBpbnRvIHRoZSBnYW1lIGFjcm9zcyBhIGJ1bmNoIG9mIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLiBUaGVuIHRoZXJlJ3MgYENPTkZJR19DTUFgLCB3aGljaCBlbmFibGVzIENNQS4gVGhhdCdzIENvbW1hLXNlcGFyYXRlZCBNZW1vcnkgQWxsb2NhdGlvbiwgaWYgSSByZWNhbGwuIE5vdywgYENPTkZJR19IVUdFVExCRlNgIGlzIHdoYXQgYWN0dWFsbHkgZW5hYmxlcyBgaHVnZXRsYl9jbWEub2Agd2l0aGluIGBtbS9NYWtlZmlsZWAuXG5cbkhvbGQgb24uLi4gbG9va2luZyBhdCBgbW0vTWFrZWZpbGVgIGRpcmVjdGx5LCBpdCBoYXMgdGhpcyBjb25kaXRpb25hbCBibG9jazpcblxuYGBgXG5pZmRlZiBDT05GSUdfQ01BXG5vYmotJChDT05GSUdfSFVHRVRMQkZTKSArPSBodWdldGxiX2NtYS5vXG5lbmRpZlxuYGBgXG5cblJpZ2h0LCBzbyBgQ09ORklHX0hVR0VUTEJGU2AgYW5kIGBDT05GSUdfQ01BYCAqYm90aCogbmVlZCB0byBiZSBlbmFibGVkIGZvciBgaHVnZXRsYl9jbWEub2AgdG8gZ2V0IGJ1aWx0LiBUaGF0IGV4cGxhaW5zIHdoeSBJJ20gc2VlaW5nIHRoaXMgcGFydGljdWxhciByZWxhdGlvbnNoaXAuIE5vdywgbGV0J3Mgc2VlIGhvdyBgbW0vaHVnZXRsYi5jYCBjb21waWxhdGlvbiBpcyBoYW5kbGVkLlxuXG5Pa2F5LCBoZXJlIGl0IGlzOlxuXG5gYGBcbm9iai0kKENPTkZJR19IVUdFVExCX1BBR0UpICs9IGh1Z2V0bGIub1xuYGBgXG5cbkFoYSEgYGh1Z2V0bGIub2AgaXMgdGllZCBkaXJlY3RseSB0byBgQ09ORklHX0hVR0VUTEJfUEFHRWAuIE5vdywgdGhlIGNydWNpYWwgcGllY2UgaXMgaG93IGBDT05GSUdfSFVHRVRMQl9QQUdFYCBpdHNlbGYgaXMgc2VsZWN0ZWQuIEl0J3MgbGlrZWx5IHJlbGF0ZWQgdG8gYENPTkZJR19IVUdFVExCRlNgLiBJIG5lZWQgdG8gY29uc3VsdCBlaXRoZXIgYGZzL0tjb25maWdgIG9yIGBtbS9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgZGlyZWN0IHNlbGVjdGlvbi4gSSBhbSBhc3N1bWluZyB0aGF0IGl0IGlzIHRoZSBkaXJlY3Qgc2VsZWN0aW9uLiBJIG5lZWQgdG8gYmUgc3VyZSwgb2YgY291cnNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDMwOCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6MDk6MTUuNjk1NzMwNDU0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkwOTI4NDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBIVUdFVExCRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvS2NvbmZpZz0yNDc9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXFxuLS1cXG5mcy9LY29uZmlnLTI0OS1cXG5mcy9LY29uZmlnOjI1MDptZW51Y29uZmlnIEhVR0VUTEJGU1xcbmZzL0tjb25maWctMjUxLVxcdGJvb2wgXFxcIkh1Z2VUTEIgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6MDk6MTcuNTg2NjYzNDAxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg0NDczNDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBIVUdFVExCX1BBR0VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zaC9tbS9LY29uZmlnPTE1OD1jaG9pY2VcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjMtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE2NDpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNjRLXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2NS1cXHRib29sIFxcXCI2NGtCXFxcIlxcbi0tXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2Ny1cXG5hcmNoL3NoL21tL0tjb25maWc6MTY4OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8yNTZLXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2OS1cXHRib29sIFxcXCIyNTZrQlxcXCJcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzEtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE3Mjpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfMU1CXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3My1cXHRib29sIFxcXCIxTUJcXFwiXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3NC1cXG5hcmNoL3NoL21tL0tjb25maWc6MTc1OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV80TUJcXG5hcmNoL3NoL21tL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIjRNQlxcXCJcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzgtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE3OTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNjRNQlxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xODAtXFx0Ym9vbCBcXFwiNjRNQlxcXCJcXG4tLVxcbmZzL0tjb25maWc9MjYyPWlmIEhVR0VUTEJGU1xcbmZzL0tjb25maWc6MjYzOmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUF9ERUZBVUxUX09OXFxuZnMvS2NvbmZpZy0yNjQtXFx0Ym9vbCBcXFwiSHVnZVRMQiBWbWVtbWFwIE9wdGltaXphdGlvbiAoSFZPKSBkZWZhdWx0cyB0byBvblxcXCJcXG4tLVxcbmZzL0tjb25maWc9MjcxPWVuZGlmICMgSFVHRVRMQkZTXFxuZnMvS2NvbmZpZy0yNzItXFxuZnMvS2NvbmZpZzoyNzM6Y29uZmlnIEhVR0VUTEJfUEFHRVxcbmZzL0tjb25maWctMjc0LVxcdGRlZl9ib29sIEhVR0VUTEJGU1xcbi0tXFxuZnMvS2NvbmZpZy0yNzYtXFxuZnMvS2NvbmZpZzoyNzc6Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXFxuZnMvS2NvbmZpZy0yNzgtXFx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXFxuLS1cXG5tbS9LY29uZmlnPTcwNj1jb25maWcgQVJDSF9FTkFCTEVfVEhQX01JR1JBVElPTlxcbi0tXFxubW0vS2NvbmZpZy03MDgtXFxubW0vS2NvbmZpZzo3MDk6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFXFxubW0vS2NvbmZpZy03MTAtXFx0ZGVmX2Jvb2wgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODowOToxOS40NzExNDE4NjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5ODc4OTA0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCBteSBtZW50YWwgY2hlY2tsaXN0IGJlZ2lucyB3aXRoIHRoZSBvYnZpb3VzOlxuXG4qKkluaXRpYWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5TbywgYENPTkZJR19IVUdFVExCRlNgIGlzIHRoZSBjb3JuZXJzdG9uZSBoZXJlOyBpdCdzIHRoZSBvbmUgdGhhdCBwdWxscyBpbiBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIGFuZCB0aGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoZXkncmUgaW50cmluc2ljYWxseSBsaW5rZWQuIFRoZW4sIG9mIGNvdXJzZSwgdGhlIGBodWdldGxiX2NtYS5jYCBtb2R1bGUgZGVtYW5kcyBgQ09ORklHX0NNQWAuIEkga25ldyB0aGF0IG9uZSBieSBoZWFydC4gTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgZWxzZS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIHdlIG5lZWQgYENPTkZJR19DUFVTRVRTYCBmb3IgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAuIFRoYXQncyB0aGUga2V5IHRvIGtub3dpbmcgd2hlcmUgbGFyZ2UgcGFnZXMgYXJlIHZpc2libGUgdG8gcHJvY2Vzc2VzLiBBbHdheXMgbmVlZCB0byBiZSB0aG9yb3VnaCB3aXRoIHRoZSBkZXBlbmRlbmNpZXMuIEkgaGF2ZSB0byB0aGluayB0aHJvdWdoIHdoZXRoZXIgdGhlIGN1cnJlbnQgbWVtb3J5IHBvbGljeSwgYXMgY29udHJvbGxlZCBieSBjcHVzZXRzLCBpcyBhIGZhY3Rvci4gTGV0J3MgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU1OTcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6MDk6MjMuMTY5OTMzNDQ0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTAzNDE0MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2NwdXNldC5oPTgzPWV4dGVybiBub2RlbWFza190IGNwdXNldF9tZW1zX2FsbG93ZWQoc3RydWN0IHRhc2tfc3RydWN0ICpwKTtcXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjg0OiNkZWZpbmUgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkIChjdXJyZW50LVxcdTAwM2VtZW1zX2FsbG93ZWQpXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC04NS12b2lkIGNwdXNldF9pbml0X2N1cnJlbnRfbWVtc19hbGxvd2VkKHZvaWQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaD0yMTk9c3RhdGljIGlubGluZSBub2RlbWFza190IGNwdXNldF9tZW1zX2FsbG93ZWQoc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbi0tXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0yMjMtXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoyMjQ6I2RlZmluZSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQgKG5vZGVfc3RhdGVzW05fTUVNT1JZXSlcXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyNS1zdGF0aWMgaW5saW5lIHZvaWQgY3B1c2V0X2luaXRfY3VycmVudF9tZW1zX2FsbG93ZWQodm9pZCkge31cXG4tLVxcbmtlcm5lbC9zY2hlZC9mYWlyLmM9NDA3Nj1zdGF0aWMgdm9pZCB0YXNrX251bWFfd29yayhzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqd29yaylcXG4tLVxcbmtlcm5lbC9zY2hlZC9mYWlyLmMtNDEwNy1cXHQgKi9cXG5rZXJuZWwvc2NoZWQvZmFpci5jOjQxMDg6XFx0aWYgKGNwdXNldHNfZW5hYmxlZCgpIFxcdTAwMjZcXHUwMDI2IG5vZGVzX3dlaWdodChjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpID09IDEpIHtcXG5rZXJuZWwvc2NoZWQvZmFpci5jOjQxMDk6XFx0XFx0dHJhY2Vfc2NoZWRfc2tpcF9jcHVzZXRfbnVtYShjdXJyZW50LCBcXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKTtcXG5rZXJuZWwvc2NoZWQvZmFpci5jLTQxMTAtXFx0XFx0cmV0dXJuO1xcbi0tXFxubW0vaHVnZXRsYi5jPTE4NjM9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE4NzMtXFx0XFx0XFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcXG5tbS9odWdldGxiLmM6MTg3NDpcXHRcXHRcXHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XFxubW0vaHVnZXRsYi5jLTE4NzUtXFx0XFx0fSB3aGlsZSAocmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoY3B1c2V0X21lbXNfY29va2llKSk7XFxuLS1cXG5tbS9odWdldGxiLmM9MjI1Nz1zdGF0aWMgaW50IGdhdGhlcl9zdXJwbHVzX3BhZ2VzKHN0cnVjdCBoc3RhdGUgKmgsIGxvbmcgZGVsdGEpXFxuLS1cXG5tbS9odWdldGxiLmMtMjI2OS1cXHRpZiAobWJpbmRfbm9kZW1hc2spXFxubW0vaHVnZXRsYi5jOjIyNzA6XFx0XFx0bm9kZXNfYW5kKGFsbG9jX25vZGVtYXNrLCAqbWJpbmRfbm9kZW1hc2ssIGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCk7XFxubW0vaHVnZXRsYi5jLTIyNzEtXFx0ZWxzZVxcbm1tL2h1Z2V0bGIuYzoyMjcyOlxcdFxcdGFsbG9jX25vZGVtYXNrID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xcbm1tL2h1Z2V0bGIuYy0yMjczLVxcbi0tXFxubW0vaHVnZXRsYi5jPTQ1MTI9c3RhdGljIHVuc2lnbmVkIGludCBhbGxvd2VkX21lbXNfbnIoc3RydWN0IGhzdGF0ZSAqaClcXG4tLVxcbm1tL2h1Z2V0bGIuYy00NTIwLVxcdG1iaW5kX25vZGVtYXNrID0gcG9saWN5X21iaW5kX25vZGVtYXNrKGdmcF9tYXNrKTtcXG5tbS9odWdldGxiLmM6NDUyMTpcXHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKSB7XFxubW0vaHVnZXRsYi5jLTQ1MjItXFx0XFx0aWYgKCFtYmluZF9ub2RlbWFzayB8fCBub2RlX2lzc2V0KG5vZGUsICptYmluZF9ub2RlbWFzaykpXFxuLS1cXG5tbS9tZW1wb2xpY3kuYz00MDQ9c3RhdGljIGludCBtcG9sX3NldF9ub2RlbWFzayhzdHJ1Y3QgbWVtcG9saWN5ICpwb2wsXFxuLS1cXG5tbS9tZW1wb2xpY3kuYy00MTgtXFx0bm9kZXNfYW5kKG5zYy1cXHUwMDNlbWFzazEsXFxubW0vbWVtcG9saWN5LmM6NDE5OlxcdFxcdCAgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkLCBub2RlX3N0YXRlc1tOX01FTU9SWV0pO1xcbm1tL21lbXBvbGljeS5jLTQyMC1cXG4tLVxcbm1tL21lbXBvbGljeS5jLTQzMC1cXHRlbHNlXFxubW0vbWVtcG9saWN5LmM6NDMxOlxcdFxcdHBvbC1cXHUwMDNldy5jcHVzZXRfbWVtc19hbGxvd2VkID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xcbm1tL21lbXBvbGljeS5jLTQzMi1cXG4tLVxcbm1tL21lbXBvbGljeS5jPTExNDc9c3RhdGljIGxvbmcgZG9fZ2V0X21lbXBvbGljeShpbnQgKnBvbGljeSwgbm9kZW1hc2tfdCAqbm1hc2ssXFxuLS1cXG5tbS9tZW1wb2xpY3kuYy0xMTYzLVxcdFxcdHRhc2tfbG9jayhjdXJyZW50KTtcXG5tbS9tZW1wb2xpY3kuYzoxMTY0OlxcdFxcdCpubWFzayAgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XFxubW0vbWVtcG9saWN5LmMtMTE2NS1cXHRcXHR0YXNrX3VubG9jayhjdXJyZW50KTtcXG4tLVxcbm1tL29vbV9raWxsLmM9MjQ5PXN0YXRpYyBlbnVtIG9vbV9jb25zdHJhaW50IGNvbnN0cmFpbmVkX2FsbG9jKHN0cnVjdCBvb21fY29udHJvbCAqb2MpXFxuLS1cXG5tbS9vb21fa2lsbC5jLTI5OC1cXHRcXHRvYy1cXHUwMDNldG90YWxwYWdlcyA9IHRvdGFsX3N3YXBfcGFnZXM7XFxubW0vb29tX2tpbGwuYzoyOTk6XFx0XFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5pZCwgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKVxcbm1tL29vbV9raWxsLmMtMzAwLVxcdFxcdFxcdG9jLVxcdTAwM2V0b3RhbHBhZ2VzICs9IG5vZGVfcHJlc2VudF9wYWdlcyhuaWQpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQ3MjU9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQ4MDYtXFx0XFx0XFx0XFx0XFx0YWMtXFx1MDAzZWhpZ2hlc3Rfem9uZWlkeCxcXG5tbS9wYWdlX2FsbG9jLmM6NDgwNzpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKTtcXG5tbS9wYWdlX2FsbG9jLmMtNDgwOC1cXHRcXHRpZiAoIXpvbmVsaXN0X3pvbmUoeikpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NTAyNj1zdGF0aWMgaW5saW5lIGJvb2wgcHJlcGFyZV9hbGxvY19wYWdlcyhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTUwNDItXFx0XFx0aWYgKGluX3Rhc2soKSBcXHUwMDI2XFx1MDAyNiAhYWMtXFx1MDAzZW5vZGVtYXNrKVxcbm1tL3BhZ2VfYWxsb2MuYzo1MDQzOlxcdFxcdFxcdGFjLVxcdTAwM2Vub2RlbWFzayA9IFxcdTAwMjZjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XFxubW0vcGFnZV9hbGxvYy5jLTUwNDQtXFx0XFx0ZWxzZVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTUyNjg9c3RydWN0IHBhZ2UgKl9fYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBvcmRlcixcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy01MzEyLVxcdCAqIFJlc3RvcmUgdGhlIG9yaWdpbmFsIG5vZGVtYXNrIGlmIGl0IHdhcyBwb3RlbnRpYWxseSByZXBsYWNlZCB3aXRoXFxubW0vcGFnZV9hbGxvYy5jOjUzMTM6XFx0ICogXFx1MDAyNmNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCB0byBvcHRpbWl6ZSB0aGUgZmFzdC1wYXRoIGF0dGVtcHQuXFxubW0vcGFnZV9hbGxvYy5jLTUzMTQtXFx0ICovXFxuLS1cXG5tbS9zaG93X21lbS5jPTExOT1zdGF0aWMgYm9vbCBzaG93X21lbV9ub2RlX3NraXAodW5zaWduZWQgaW50IGZsYWdzLCBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG4tLVxcbm1tL3Nob3dfbWVtLmMtMTI5LVxcdGlmICghbm9kZW1hc2spXFxubW0vc2hvd19tZW0uYzoxMzA6XFx0XFx0bm9kZW1hc2sgPSBcXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xcbm1tL3Nob3dfbWVtLmMtMTMxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODowOToyNS4wNzMzNTMxNzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzMjY5MDY2NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgSHVnZXRsYiBhbmQgSHVnZXRsYl9DTUEgQWxsb2NhdGlvbiBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIGlzIHBsYXlpbmcgYSByb2xlLCB3aGljaCBpcyBkZWZpbmVkIGluIGBjcHVzZXQuaGAuIEl0IGFwcGVhcnMgdG8gYmUgYmFzZWQgb24gYGN1cnJlbnQtXHUwMDNlbWVtc19hbGxvd2VkYCBpZiBjcHVzZXRzIGFyZSBlbmFibGVkLCBidXQgZGVmYXVsdHMgdG8gYG5vZGVfc3RhdGVzW05fTUVNT1JZXWAgb3RoZXJ3aXNlLiBUaGlzIHN1Z2dlc3RzIHRoYXQgZXZlbiB3aXRob3V0IGBDT05GSUdfQ1BVU0VUU2AsIHRoZSBjb2RlIG1pZ2h0IHN0aWxsIGJlIHJlbGV2YW50LCB0aG91Z2ggYENPTkZJR19IVUdFVExCRlNgIGFuZCBgQ09ORklHX0NNQWAgc2VlbSBsaWtlIHRoZSBtb3JlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb25zIGhlcmUuXG5cbk5vdywgZm9jdXNpbmcgb24gdGhlIGNvcmUgY2hhbmdlcywgdGhpcyBwYXRjaCB0b3VjaGVzIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBhbmQgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AuIEZ1bmN0aW9uYWxseSwgdGhlc2UgY2hhbmdlcyBsb29rIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEluIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCwgd2hlbiBgbm1hc2tgIGlzIE5VTEwsIGluc3RlYWQgb2YgcGFzc2luZyB0aGUgbnVsbCBtYXNrIGludG8gYG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AsIGl0IG5vdyB1c2VzIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgLiBUaGF0J3MgaW1wb3J0YW50OyB0aGUgaW1wbGljYXRpb24gaXMgdGhhdCBhIE5VTEwgYG5tYXNrYCBhbGxvd3MgYWxsb2NhdGlvbiBmcm9tICphbnkqIG5vZGUsIGJ1dCBub3cgdGhlIGNvZGUgcmVzdHJpY3RzIGl0IHRvIHRoZSBjdXJyZW50IGNwdXNldCdzIGFsbG93ZWQgbWVtb3J5IG5vZGVzLiBUaGlzIGxvb2tzIGxpa2UgYSBjb25zdHJhaW50IHRvIHJlZHVjZSBtZW1vcnkgYWxsb2NhdGlvbiBmb290cHJpbnQuXG5cbkluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLCB0aGUgcGF0Y2ggYWRkcyBhIGBub2RlX2lzc2V0YCBjaGVjayBhZ2FpbnN0IGBub2RlbWFza2AgYmVmb3JlIGFsbG9jYXRpbmcgZnJvbSBgaHVnZXRsYl9jbWFbbmlkXWAuIFRoaXMgaXMgYW5vdGhlciB0YXJnZXRlZCByZXN0cmljdGlvbiwgdGhpcyB0aW1lIGVuc3VyaW5nIHRoYXQgb25seSBhbGxvd2VkIG5vZGVzIGFyZSB1c2VkIGZvciBhbGxvY2F0aW9uLlxuXG5UaGlzIGlzIGNsZWFybHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGh1Z2V0bGIgYW5kIGh1Z2V0bGJfY21hIG1lbW9yeSBhbGxvY2F0aW9uIHBhdGhzLiBJdCdzIHRpZ2h0ZW5pbmcgdGhlIG5vZGUgbWFzayBjb25zdHJhaW50cy4gU2luY2UgdGhpcyBpbnZvbHZlcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCB0aGlzIGFic29sdXRlbHkgd2FycmFudHMgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBwb2ludHMgaGVyZSBhcmUgYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGFuZCBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCwgYnV0IEkgc2hvdWxkIGNoZWNrIHRoZSBjYWxsZXJzIG9mIHRob3NlIGZ1bmN0aW9ucyB0b28uIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBpcyBzdGF0aWMuIEFscmlnaHQsIGxldCdzIGxvb2sgYXQgdGhlIGNhbGxzOiBgYWxsb2Nfc3VycGx1c19odWdldGxiX2ZvbGlvYCwgYGFsbG9jX21pZ3JhdGVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW9gLlxuXG5gaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBpcyBjYWxsZWQgYnkgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2AuIE9rYXksIGxldCdzIGluY2x1ZGUgdGhvc2UuXG5cblRoZXJlZm9yZSwgdGhlIHJldmlzZWQgZm9jdXMgc3ltYm9scyBhcmU6XG4qICAgYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gXG4qICAgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2BcbiogICBgYWxsb2Nfc3VycGx1c19odWdldGxiX2ZvbGlvYFxuKiAgIGBhbGxvY19taWdyYXRlX2h1Z2V0bGJfZm9saW9gXG4qICAgYGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvYFxuKiAgIGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gXG5cbkFuZCB0aGUgY29uZmlncyB0byBlbmFibGU6XG4qICAgYEhVR0VUTEJGU2BcbiogICBgQ01BYFxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgcmVhY2hhYmlsaXR5LiBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgaXMgaW5kZWVkIGNhbGxlZCBieSBgYWxsb2Nfc3VycGx1c19odWdldGxiX2ZvbGlvYCwgYGFsbG9jX21pZ3JhdGVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW9gLCBhbmQgdGhvc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYnkgYGFsbG9jX2h1Z2V0bGJfZm9saW9gIGFuZCBtaWdyYXRpb24gYW5kIGlzb2xhdGlvbiBjb2RlIHJlc3BlY3RpdmVseS4gQWxzbywgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgaXMgY2FsbGVkIGJ5IGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gIHdoaWNoIGlzIGNhbGxlZCBieSBgYWxsb2NfcG9vbF9odWdlX2ZvbGlvYC4gWXVwLCB0aGV5J3JlIGFsbCByZWFjaGFibGUuXG5cblRoZXJlZm9yZSwgaXQncyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCByZXN0cmljdHMgbWVtb3J5IGFsbG9jYXRpb24gdG8gc3BlY2lmaWMgbm9kZXMgZGV0ZXJtaW5lZCBieSBjcHVzZXQgY29uZmlndXJhdGlvbiBhbmQgaW50cm9kdWNlcyBub2RlIG1hc2sgY2hlY2tzLiBUaGVzZSBjaGFuZ2VzIGFyZSBjcnVjaWFsIGZvciBtZW1vcnkgYWxsb2NhdGlvbiBjb3JyZWN0bmVzcywgYW5kIGNhbiBiZSBjaGVja2VkIHdpdGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NTcsIk91dHB1dFRva2VucyI6MjAzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjA5OjM3LjQwMDI2MTgwMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwOTkzNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCRlNcIixcbiAgICBcIkNNQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb1wiLFxuICAgIFwiYWxsb2Nfc3VycGx1c19odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJhbGxvY19taWdyYXRlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbm9kZSBtYXNrIGhhbmRsaW5nIGluIGh1Z2V0bGIgYW5kIGh1Z2V0bGJfY21hIGFsbG9jYXRpb24gcGF0aHMuIEl0IHJlc3RyaWN0cyBhbGxvY2F0aW9ucyB0byBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIGBubWFza2AgaXMgTlVMTCBhbmQgYWRkcyBhIGBub2RlX2lzc2V0YCBjaGVjayBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJGU1wiLFxuICAgIFwiQ01BXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvXCIsXG4gICAgXCJhbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImFsbG9jX21pZ3JhdGVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBub2RlIG1hc2sgaGFuZGxpbmcgaW4gaHVnZXRsYiBhbmQgaHVnZXRsYl9jbWEgYWxsb2NhdGlvbiBwYXRocy4gSXQgcmVzdHJpY3RzIGFsbG9jYXRpb25zIHRvIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIHdoZW4gYG5tYXNrYCBpcyBOVUxMIGFuZCBhZGRzIGEgYG5vZGVfaXNzZXRgIGNoZWNrIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowkkbx9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-05 17:55:22 +0000 UTC FinishedAt: 2026-07-05 18:09:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "230f0f19b98d9b512e4b0703405eb7dc73c6f91e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "CMA" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "230f0f19b98d9b512e4b0703405eb7dc73c6f91e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "CMA" ], "series_id": "1e008fa5-af8d-4691-8525-91d69f0f7f3b" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "alloc_fresh_hugetlb_folio", "hugetlb_cma_alloc_frozen_folio", "alloc_surplus_hugetlb_folio", "alloc_migrate_hugetlb_folio", "alloc_and_dissolve_hugetlb_folio", "alloc_gigantic_frozen_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtDTUEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2h1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7YWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbm9kZSBtYXNrIGhhbmRsaW5nIGluIGh1Z2V0bGIgYW5kIGh1Z2V0bGJfY21hIGFsbG9jYXRpb24gcGF0aHMuIEl0IHJlc3RyaWN0cyBhbGxvY2F0aW9ucyB0byBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIGBubWFza2AgaXMgTlVMTCBhbmQgYWRkcyBhIGBub2RlX2lzc2V0YCBjaGVjayBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWY3YzQ5ZjgyOWU5MDdhYWVlMjBlMDcwYmI5NWMzNjM5MTRjMjU2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDUgMTg6MDg6NTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jXG5pbmRleCA1NzEyMTJiODA4MzVlYy4uZWU2N2VhMjljMDAzNTEgMTAwNjQ0XG4tLS0gYS9tbS9odWdldGxiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2V0bGIuY1xuQEAgLTE4NjQsNiAmIzQzOzE4NjQsMTggQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuIFx0XHRnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2spXG4ge1xuIFx0c3RydWN0IGZvbGlvICpmb2xpbztcbiYjNDM7XHRub2RlbWFza190IGxvY2FsX25vZGVfbWFzaztcbiYjNDM7XG4mIzQzO1x0aWYgKCFubWFzaykge1xuJiM0MztcdFx0dW5zaWduZWQgaW50IGNwdXNldF9tZW1zX2Nvb2tpZTtcbiYjNDM7XG4mIzQzO1x0XHRkbyB7XG4mIzQzO1x0XHRcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XG4mIzQzO1x0XHRcdGxvY2FsX25vZGVfbWFzayA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcbiYjNDM7XHRcdH0gd2hpbGUgKHJlYWRfbWVtc19hbGxvd2VkX3JldHJ5KGNwdXNldF9tZW1zX2Nvb2tpZSkpO1xuJiM0MztcbiYjNDM7XHRcdG5tYXNrID0gXHUwMDI2bG9jYWxfbm9kZV9tYXNrO1xuJiM0MztcdH1cbiBcbiBcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrLCBOVUxMKTtcbiBcdGlmIChmb2xpbylcbmRpZmYgLS1naXQgYS9tbS9odWdldGxiX2NtYS5jIGIvbW0vaHVnZXRsYl9jbWEuY1xuaW5kZXggMzkzNDRkNmM3OGQ4NGUuLjc5ZGJkMGJhYWZhM2U0IDEwMDY0NFxuLS0tIGEvbW0vaHVnZXRsYl9jbWEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZXRsYl9jbWEuY1xuQEAgLTM0LDcgJiM0MzszNCw3IEBAIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG4gXHRpZiAoIWh1Z2V0bGJfY21hX3NpemUpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuLVx0aWYgKGh1Z2V0bGJfY21hW25pZF0pXG4mIzQzO1x0aWYgKGh1Z2V0bGJfY21hW25pZF0gXHUwMDI2XHUwMDI2IG5vZGVfaXNzZXQobmlkLCAqbm9kZW1hc2spKVxuIFx0XHRwYWdlID0gY21hX2FsbG9jX2Zyb3plbl9jb21wb3VuZChodWdldGxiX2NtYVtuaWRdLCBvcmRlcik7XG4gXG4gXHRpZiAoIXBhZ2UgXHUwMDI2XHUwMDI2ICEoZ2ZwX21hc2sgXHUwMDI2IF9fR0ZQX1RISVNOT0RFKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtDTUEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2h1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7YWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbm9kZSBtYXNrIGhhbmRsaW5nIGluIGh1Z2V0bGIgYW5kIGh1Z2V0bGJfY21hIGFsbG9jYXRpb24gcGF0aHMuIEl0IHJlc3RyaWN0cyBhbGxvY2F0aW9ucyB0byBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIGBubWFza2AgaXMgTlVMTCBhbmQgYWRkcyBhIGBub2RlX2lzc2V0YCBjaGVjayBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZjdjNDlmODI5ZTkwN2FhZWUyMGUwNzBiYjk1YzM2MzkxNGMyNTY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgNSAxODowODo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuYwppbmRleCA1NzEyMTJiODA4MzVlYy4uZWU2N2VhMjljMDAzNTEgMTAwNjQ0Ci0tLSBhL21tL2h1Z2V0bGIuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdldGxiLmMKQEAgLTE4NjQsNiAmIzQzOzE4NjQsMTggQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLAogCQlnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2spCiB7CiAJc3RydWN0IGZvbGlvICpmb2xpbzsKJiM0MzsJbm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2s7CiYjNDM7CiYjNDM7CWlmICghbm1hc2spIHsKJiM0MzsJCXVuc2lnbmVkIGludCBjcHVzZXRfbWVtc19jb29raWU7CiYjNDM7CiYjNDM7CQlkbyB7CiYjNDM7CQkJY3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTsKJiM0MzsJCQlsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7CiYjNDM7CQl9IHdoaWxlIChyZWFkX21lbXNfYWxsb3dlZF9yZXRyeShjcHVzZXRfbWVtc19jb29raWUpKTsKJiM0MzsKJiM0MzsJCW5tYXNrID0gJmFtcDtsb2NhbF9ub2RlX21hc2s7CiYjNDM7CX0KIAogCWZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrLCBOVUxMKTsKIAlpZiAoZm9saW8pCmRpZmYgLS1naXQgYS9tbS9odWdldGxiX2NtYS5jIGIvbW0vaHVnZXRsYl9jbWEuYwppbmRleCAzOTM0NGQ2Yzc4ZDg0ZS4uNzlkYmQwYmFhZmEzZTQgMTAwNjQ0Ci0tLSBhL21tL2h1Z2V0bGJfY21hLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZXRsYl9jbWEuYwpAQCAtMzQsNyAmIzQzOzM0LDcgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzaywKIAlpZiAoIWh1Z2V0bGJfY21hX3NpemUpCiAJCXJldHVybiBOVUxMOwogCi0JaWYgKGh1Z2V0bGJfY21hW25pZF0pCiYjNDM7CWlmIChodWdldGxiX2NtYVtuaWRdICZhbXA7JmFtcDsgbm9kZV9pc3NldChuaWQsICpub2RlbWFzaykpCiAJCXBhZ2UgPSBjbWFfYWxsb2NfZnJvemVuX2NvbXBvdW5kKGh1Z2V0bGJfY21hW25pZF0sIG9yZGVyKTsKIAogCWlmICghcGFnZSAmYW1wOyZhbXA7ICEoZ2ZwX21hc2sgJmFtcDsgX19HRlBfVEhJU05PREUpKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxODMKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBIdWdldGxiIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBIdWdlVExCIGNvZGUsIHNwZWNpZmljYWxseSBpbiBgbW0vaHVnZXRsYi5jYCBhbmQgYG1tL2h1Z2V0bGJfY21hLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSByaWdodCBpbiBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLiBUaGUgY2hhbmdlIGluIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCB1c2luZyBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIGBubWFza2AgaXMgTlVMTCBpcyBpbnRlcmVzdGluZy4gSXQgc291bmRzIGxpa2Ugd2UmIzM5O3JlIGR5bmFtaWNhbGx5IG1hbmFnaW5nIG1lbW9yeSBhbGxvY2F0aW9uIGJhc2VkIG9uIENQVSBzZXRzLCB3aGljaCBjb3VsZCBiZSBhbiBpbXBvcnRhbnQgb3B0aW1pemF0aW9uIG9yIGNvbnN0cmFpbnQuIFRoZW4sIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLCB0aGV5IGFkZGVkIGEgbm9kZSBjaGVjayBiZWZvcmUgY2FsbGluZyBgY21hX2FsbG9jX2Zyb3plbl9jb21wb3VuZGAuIFRoYXQmIzM5O3MgYSBzcGF0aWFsIGNvbnNpZGVyYXRpb24sIHNvIGl0JiMzOTtzIGxpa2VseSByZWxhdGVkIHRvIE5VTUEgY29uZmlndXJhdGlvbnMgb3IgbWVtb3J5IHBsYWNlbWVudCBwb2xpY3ksIG1ha2luZyBzdXJlIHRvIGFsbG9jYXRlIGZyb20gYWxsb3dlZCBub2Rlcy4KCkkgbmVlZCB0byBxdWlja2x5IGZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMgLSBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgaW4gYG1tL2h1Z2V0bGIuY2AgYW5kIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGluIGBtbS9odWdldGxiX2NtYS5jYC4gSSBoYXZlIHRvIGdyYXNwIHRoZSBpbnRlbnQgb2YgdGhlIGNoYW5nZXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBjb2RlIGJhc2UuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseS4gSSYjMzk7bGwgbmVlZCBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIHRoYXQmIzM5O3MgYSBnaXZlbi4gSSYjMzk7bSBhc3N1bWluZyBgQ09ORklHX0NNQWAgaXMgYWxzbyBuZWNlc3NhcnkuIFdoYXQgYWJvdXQgYENPTkZJR19IVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUGA/IEl04oCZcyBub3QgY2xlYXIsIGJ1dCBpdCBjb3VsZCBiZSByZWxldmFudCwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLgoKQWxyaWdodCwgSSYjMzk7bGwgdXNlIGBncmVwYCB0byBxdWlja2x5IGxvY2F0ZSBhbGwgcmVmZXJlbmNlcyB0byBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBhbmQgYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGFjcm9zcyB0aGUgY29kZSBiYXNlIHRvIGhlbHAgY29udGV4dHVhbGl6ZSB0aGVzZSBjaGFuZ2VzLiBVbmRlcnN0YW5kaW5nIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGZyb20gaXMga2V5IHRvIHNlZWluZyB0aGUgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vaHVnZXRsYi5jPTE3OTE9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfYnVkZHlfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG4tLVxubW0vaHVnZXRsYi5jLTE4MzUtXG5tbS9odWdldGxiLmM6MTgzNjpzdGF0aWMgc3RydWN0IGZvbGlvICpvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbm1tL2h1Z2V0bGIuYy0xODM3LVx0XHRnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2ssXG4tLVxubW0vaHVnZXRsYi5jLTE4NjItICovXG5tbS9odWdldGxiLmM6MTg2MzpzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG5tbS9odWdldGxiLmMtMTg2NC1cdFx0Z2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsIG5vZGVtYXNrX3QgKm5tYXNrKVxuLS1cbm1tL2h1Z2V0bGIuYy0xODc5LVxubW0vaHVnZXRsYi5jOjE4ODA6XHRmb2xpbyA9IG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLCBubWFzaywgTlVMTCk7XG5tbS9odWdldGxiLmMtMTg4MS1cdGlmIChmb2xpbylcbi0tXG5tbS9odWdldGxiLmM9MTkwOD1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19wb29sX2h1Z2VfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMTkxOC1cbm1tL2h1Z2V0bGIuYzoxOTE5Olx0XHRmb2xpbyA9IG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbm9kZSxcbm1tL2h1Z2V0bGIuYy0xOTIwLVx0XHRcdFx0XHRub2Rlc19hbGxvd2VkLCBub2RlX2FsbG9jX25vcmV0cnkpO1xuLS1cbm1tL2h1Z2V0bGIuYz0yMDg4PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX3N1cnBsdXNfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbm1tL2h1Z2V0bGIuYy0yMTAwLVxubW0vaHVnZXRsYi5jOjIxMDE6XHRmb2xpbyA9IGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCwgbm1hc2spO1xubW0vaHVnZXRsYi5jLTIxMDItXHRpZiAoIWZvbGlvKVxuLS1cbm1tL2h1Z2V0bGIuYz0yMTM2PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX21pZ3JhdGVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLCBnZnBfdCBnZnBfbWFzayxcbi0tXG5tbS9odWdldGxiLmMtMjE0My1cbm1tL2h1Z2V0bGIuYzoyMTQ0Olx0Zm9saW8gPSBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrKTtcbm1tL2h1Z2V0bGIuYy0yMTQ1LVx0aWYgKCFmb2xpbylcbi0tXG5tbS9odWdldGxiLmM9MjY1Mz1zdGF0aWMgaW50IGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBmb2xpbyAqb2xkX2ZvbGlvLFxuLS1cbm1tL2h1Z2V0bGIuYy0yNjk4LVx0XHRcdGdmcF9tYXNrID0gaHRsYl9hbGxvY19tYXNrKGgpIHwgX19HRlBfVEhJU05PREU7XG5tbS9odWdldGxiLmM6MjY5OTpcdFx0XHRuZXdfZm9saW8gPSBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLFxubW0vaHVnZXRsYi5jLTI3MDAtXHRcdFx0XHRcdFx0XHQgICAgICBuaWQsIE5VTEwpO1xuLS1cbm1tL2h1Z2V0bGIuYz0zMzg0PXN0YXRpYyB2b2lkIF9faW5pdCBodWdldGxiX2hzdGF0ZV9hbGxvY19wYWdlc19vbmVub2RlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBuaWQpXG4tLVxubW0vaHVnZXRsYi5jLTMzOTctXG5tbS9odWdldGxiLmM6MzM5ODpcdFx0XHRmb2xpbyA9IG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzaywgbmlkLFxubW0vaHVnZXRsYi5jLTMzOTktXHRcdFx0XHRcdFx1MDAyNm5vZGVfc3RhdGVzW05fTUVNT1JZXSwgTlVMTCk7XG4tLVxubW0vaHVnZXRsYi5jLTM0MDMtXHRcdFx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZmb2xpb19saXN0KTtcbm1tL2h1Z2V0bGIuYzozNDA0Olx0XHRcdFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCxcbm1tL2h1Z2V0bGIuYy0zNDA1LVx0XHRcdFx0XHRcdFx1MDAyNm5vZGVfc3RhdGVzW05fTUVNT1JZXSwgTlVMTCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYz0xMzYwPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxuLS1cbm1tL2h1Z2V0bGIuYy0xMzY0LVxubW0vaHVnZXRsYi5jOjEzNjU6XHRmb2xpbyA9IGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhvcmRlciwgZ2ZwX21hc2ssIG5pZCwgbm9kZW1hc2spO1xubW0vaHVnZXRsYi5jLTEzNjYtXHRpZiAoZm9saW8pXG4tLVxubW0vaHVnZXRsYl9jbWEuYz0yMT12b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vaHVnZXRsYl9jbWEuYy0yNi1cbm1tL2h1Z2V0bGJfY21hLmM6Mjc6c3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbm1tL2h1Z2V0bGJfY21hLmMtMjgtXHRcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxuLS1cbm1tL2h1Z2V0bGJfY21hLmg9Nj12b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xubW0vaHVnZXRsYl9jbWEuaDo3OnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG5tbS9odWdldGxiX2NtYS5oLTgtXHRcdFx0XHQgICAgICBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzayk7XG4tLVxubW0vaHVnZXRsYl9jbWEuaD0xNj1zdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9odWdldGxiX2NtYS5oLTE5LVxubW0vaHVnZXRsYl9jbWEuaDoyMDpzdGF0aWMgaW5saW5lIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlcixcbm1tL2h1Z2V0bGJfY21hLmgtMjEtXHRcdGdmcF90IGdmcF9tYXNrLFx0aW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQxMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFsbG9jYXRpb24gUGF0aHMgZm9yIEh1Z2UgUGFnZXMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgYW5kIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLiBSaWdodCBvZmYgdGhlIGJhdCwgdGhhdCB0ZWxscyBtZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBjb3JlIGFsbG9jYXRpb24gZnVuY3Rpb25zIGZvciBIdWdlIFBhZ2VzLiBJdCYjMzk7cyBjcml0aWNhbCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHBhdGhzIGhlcmUuIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBsb29rcyBsaWtlIHRoZSBtb3JlIGdlbmVyYWwtcHVycG9zZSBhbGxvY2F0b3IsIGFuZCBpdCYjMzk7cyBjYWxsZWQgYnkgYGFsbG9jX3N1cnBsdXNfaHVnZXRsYl9mb2xpb2AsIGBhbGxvY19taWdyYXRlX2h1Z2V0bGJfZm9saW9gLCBhbmQgYGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvYC4gVGhhdCBtYWtlcyBzZW5zZTsgdGhvc2UgZnVuY3Rpb25zIHByb2JhYmx5IGhhbmRsZSBzcGVjaWZpYyBlZGdlIGNhc2VzOiBzdXJwbHVzIHBhZ2VzLCBtaWdyYXRpb24sIGFuZCBwYWdlIGRpc3NvbHV0aW9uLCByZXNwZWN0aXZlbHkuIE9uIHRoZSBvdGhlciBoYW5kLCBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBpcyBvbmx5IGNhbGxlZCBieSBgYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvYC4gVGhpcyBzdWdnZXN0cyBpdCYjMzk7cyByZWxhdGVkIHRvIENNQSAoQ29udGlndW91cyBNZW1vcnkgQWxsb2NhdG9yKSBhbGxvY2F0aW9ucyBmb3IgZ2lnYW50aWMgcGFnZXMsIGxpa2VseSB3aGVyZSB0aGUgcGFnZXMgaGF2ZSBiZWVuIHByZS1mcm96ZW4gaW4gcGxhY2UsIG1heWJlIGR1cmluZyBib290IG9yIHN5c3RlbSBpbml0LiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgYWxsb2NhdGlvbiBmbG93LgoKR2l2ZW4gdGhlIENNQSBpbnZvbHZlbWVudCwgSSBzaG91bGQgY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIHNlZSBob3cgYGh1Z2V0bGJfY21hLmNgIGlzIGVuYWJsZWQuIEl0JiMzOTtzIHByb2JhYmx5IGNvbmRpdGlvbmFsLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYG1tL0tjb25maWdgIG9yIHBvc3NpYmx5IGV2ZW4gYG1tL01ha2VmaWxlYCB0byBzZWUgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdHJpZ2dlciB0aGUgY29tcGlsYXRpb24gb2YgdGhhdCBtb2R1bGUuIFRoYXQgd2lsbCBnaXZlIG1lIGltbWVkaWF0ZSBjb250ZXh0IGFyb3VuZCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHByZXJlcXVpc2l0ZXMgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIGZ1bGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h1Z2V0bGJfY21hJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0PTk1PUtlcm5lbCBwYXJhbWV0ZXJzXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA2My1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjIwNjQ6XHRodWdldGxiX2NtYT1cdFtIVyxDTUEsRUFSTFldIFRoZSBzaXplIG9mIGEgQ01BIGFyZWEgdXNlZCBmb3IgYWxsb2NhdGlvblxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA2NS1cdFx0XHRvZiBnaWdhbnRpYyBodWdlcGFnZXMuIE9yIHVzaW5nIG5vZGUgZm9ybWF0LCB0aGUgc2l6ZVxuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTIwNzctXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dDoyMDc4Olx0aHVnZXRsYl9jbWFfb25seT1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTIwNzktXHRcdFx0W0hXLENNQSxFQVJMWV0gV2hlbiBhbGxvY2F0aW5nIG5ldyBIdWdlVExCIHBhZ2VzLCBvbmx5XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA4MS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjIwODI6XHRcdFx0VGhpcyBvcHRpb24gZG9lcyBub3RoaW5nIGlmIGh1Z2V0bGJfY21hPSBpcyBub3QgYWxzb1xuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA4My1cdFx0XHRzcGVjaWZpZWQuXG4tLVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2N4bC9saW51eC9lYXJseS1ib290LnJzdD0xMjY9b24gTlVNQSBub2RlcyB0aGF0IGFyZSBub3Qgb25saW5lIGR1cmluZyBlYXJseSBib290LiA6OlxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2N4bC9saW51eC9lYXJseS1ib290LnJzdC0xMjctXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvY3hsL2xpbnV4L2Vhcmx5LWJvb3QucnN0OjEyODogIHZvaWQgX19pbml0IGh1Z2V0bGJfY21hX3Jlc2VydmUodm9pZCkge1xuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2N4bC9saW51eC9lYXJseS1ib290LnJzdC0xMjktICAgIGlmICghbm9kZV9vbmxpbmUobmlkKSlcbi0tXG5NQUlOVEFJTkVSUz0xMjAxOD1GOlx0bW0vaHVnZXRsYl9jZ3JvdXAuY1xuTUFJTlRBSU5FUlM6MTIwMTk6RjpcdG1tL2h1Z2V0bGJfY21hLmNcbk1BSU5UQUlORVJTOjEyMDIwOkY6XHRtbS9odWdldGxiX2NtYS5oXG5NQUlOVEFJTkVSUy0xMjAyMS1GOlx0bW0vaHVnZXRsYl9zeXNjdGwuY1xuLS1cbmFyY2gvYXJtNjQvbW0vaHVnZXRsYnBhZ2UuYy0zOC0jaWZkZWYgQ09ORklHX0NNQVxuYXJjaC9hcm02NC9tbS9odWdldGxicGFnZS5jOjM5OnVuc2lnbmVkIGludCBhcmNoX2h1Z2V0bGJfY21hX29yZGVyKHZvaWQpXG5hcmNoL2FybTY0L21tL2h1Z2V0bGJwYWdlLmMtNDAte1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9odWdldGxicGFnZS5jPTIwMT1hcmNoX2luaXRjYWxsKGh1Z2V0bGJwYWdlX2luaXQpO1xuYXJjaC9wb3dlcnBjL21tL2h1Z2V0bGJwYWdlLmMtMjAyLVxuYXJjaC9wb3dlcnBjL21tL2h1Z2V0bGJwYWdlLmM6MjAzOnVuc2lnbmVkIGludCBfX2luaXQgYXJjaF9odWdldGxiX2NtYV9vcmRlcih2b2lkKVxuYXJjaC9wb3dlcnBjL21tL2h1Z2V0bGJwYWdlLmMtMjA0LXtcbi0tXG5hcmNoL3Jpc2N2L21tL2h1Z2V0bGJwYWdlLmM9NDQ4PWFyY2hfaW5pdGNhbGwoZ2lnYW50aWNfcGFnZXNfaW5pdCk7XG4tLVxuYXJjaC9yaXNjdi9tbS9odWdldGxicGFnZS5jLTQ1MC1cbmFyY2gvcmlzY3YvbW0vaHVnZXRsYnBhZ2UuYzo0NTE6dW5zaWduZWQgaW50IF9faW5pdCBhcmNoX2h1Z2V0bGJfY21hX29yZGVyKHZvaWQpXG5hcmNoL3Jpc2N2L21tL2h1Z2V0bGJwYWdlLmMtNDUyLXtcbi0tXG5hcmNoL3MzOTAvbW0vaHVnZXRsYnBhZ2UuYz0yMjU9Ym9vbCBfX2luaXQgYXJjaF9odWdldGxiX3ZhbGlkX3NpemUodW5zaWduZWQgbG9uZyBzaXplKVxuLS1cbmFyY2gvczM5MC9tbS9odWdldGxicGFnZS5jLTIzNC1cbmFyY2gvczM5MC9tbS9odWdldGxicGFnZS5jOjIzNTp1bnNpZ25lZCBpbnQgX19pbml0IGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIodm9pZClcbmFyY2gvczM5MC9tbS9odWdldGxicGFnZS5jLTIzNi17XG4tLVxuYXJjaC94ODYvbW0vaHVnZXRsYnBhZ2UuYz00Mj1hcmNoX2luaXRjYWxsKGdpZ2FudGljX3BhZ2VzX2luaXQpO1xuLS1cbmFyY2gveDg2L21tL2h1Z2V0bGJwYWdlLmMtNDUtXG5hcmNoL3g4Ni9tbS9odWdldGxicGFnZS5jOjQ2OnVuc2lnbmVkIGludCBfX2luaXQgYXJjaF9odWdldGxiX2NtYV9vcmRlcih2b2lkKVxuYXJjaC94ODYvbW0vaHVnZXRsYnBhZ2UuYy00Ny17XG4tLVxuaW5jbHVkZS9saW51eC9odWdldGxiLmg9Mjc2PXZvaWQgaHVnZXRsYl9zcGxpdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyKTtcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTI3Ny1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjI3ODp1bnNpZ25lZCBpbnQgYXJjaF9odWdldGxiX2NtYV9vcmRlcih2b2lkKTtcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTI3OS1cbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaD0xMjk4PXN0YXRpYyBpbmxpbmUgc3BpbmxvY2tfdCAqaHVnZV9wdGVfbG9jayhzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTEzMDgtI2lmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NNQSlcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjEzMDk6ZXh0ZXJuIHZvaWQgX19pbml0IGh1Z2V0bGJfY21hX3Jlc2VydmUodm9pZCk7XG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0xMzEwLSNlbHNlXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaDoxMzExOnN0YXRpYyBpbmxpbmUgX19pbml0IHZvaWQgaHVnZXRsYl9jbWFfcmVzZXJ2ZSh2b2lkKVxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMTMxMi17XG4tLVxubW0vTWFrZWZpbGU9ODI9aWZkZWYgQ09ORklHX0NNQVxubW0vTWFrZWZpbGU6ODM6b2JqLSQoQ09ORklHX0hVR0VUTEJGUylcdCYjNDM7PSBodWdldGxiX2NtYS5vXG5tbS9NYWtlZmlsZS04NC1lbmRpZlxuLS1cbm1tL2NtYS5oPTg9c3RydWN0IGNtYV9rb2JqZWN0IHtcbi0tXG5tbS9jbWEuaC0xNC0gKiBNdWx0aS1yYW5nZSBzdXBwb3J0LiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgdGhlIHNpemUgb2YgdGhlIGFsbG9jYXRpb25cbm1tL2NtYS5oOjE1OiAqIGlzIG5vdCBleHBlY3RlZCB0byBiZSBsYXJnZXIgdGhhbiB0aGUgYWxpZ25tZW50IChsaWtlIHdpdGggaHVnZXRsYl9jbWEpLFxubW0vY21hLmgtMTYtICogYW5kIHRoZSB0b3RhbCBhbW91bnQgb2YgbWVtb3J5IHJlcXVlc3RlZCwgd2hpbGUgc21hbGxlciB0aGFuIHRoZSB0b3RhbFxuLS1cbm1tL2h1Z2V0bGIuYy01MC0jaW5jbHVkZSBcJiMzNDtodWdldGxiX3ZtZW1tYXAuaFwmIzM0O1xubW0vaHVnZXRsYi5jOjUxOiNpbmNsdWRlIFwmIzM0O2h1Z2V0bGJfY21hLmhcJiMzNDtcbm1tL2h1Z2V0bGIuYy01Mi0jaW5jbHVkZSBcJiMzNDtodWdldGxiX2ludGVybmFsLmhcJiMzNDtcbi0tXG5tbS9odWdldGxiLmM9MTM2MD1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbi0tXG5tbS9odWdldGxiLmMtMTM2NC1cbm1tL2h1Z2V0bGIuYzoxMzY1Olx0Zm9saW8gPSBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8ob3JkZXIsIGdmcF9tYXNrLCBuaWQsIG5vZGVtYXNrKTtcbm1tL2h1Z2V0bGIuYy0xMzY2LVx0aWYgKGZvbGlvKVxuLS1cbm1tL2h1Z2V0bGIuYy0xMzY4LVxubW0vaHVnZXRsYi5jOjEzNjk6XHRpZiAoaHVnZXRsYl9jbWFfZXhjbHVzaXZlX2FsbG9jKCkpXG5tbS9odWdldGxiLmMtMTM3MC1cdFx0cmV0dXJuIE5VTEw7XG4tLVxubW0vaHVnZXRsYi5jPTE0NTg9c3RhdGljIHZvaWQgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbm1tL2h1Z2V0bGIuYy0xNTA3LVx0Vk1fQlVHX09OX0ZPTElPKGZvbGlvX3JlZl9jb3VudChmb2xpbyksIGZvbGlvKTtcbm1tL2h1Z2V0bGIuYzoxNTA4Olx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYl9jbWEoZm9saW8pKVxubW0vaHVnZXRsYi5jOjE1MDk6XHRcdGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKGZvbGlvKTtcbm1tL2h1Z2V0bGIuYy0xNTEwLVx0ZWxzZVxuLS1cbm1tL2h1Z2V0bGIuYz0zMDQwPXN0YXRpYyBfX2luaXQgdm9pZCAqYWxsb2NfYm9vdG1lbShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgbmlkLCBib29sIG5vZGVfZXhhY3QpXG4tLVxubW0vaHVnZXRsYi5jLTMwNDUtXHRpZiAoaHVnZXRsYl9lYXJseV9jbWEoaCkpXG5tbS9odWdldGxiLmM6MzA0NjpcdFx0bSA9IGh1Z2V0bGJfY21hX2FsbG9jX2Jvb3RtZW0oaCwgXHUwMDI2bGlzdG5vZGUsIG5vZGVfZXhhY3QpO1xubW0vaHVnZXRsYi5jLTMwNDctXHRlbHNlIHtcbi0tXG5tbS9odWdldGxiLmM9MzE5Mj1zdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9ib290bWVtX2luaXRfbWlncmF0ZXR5cGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS9odWdldGxiLmMtMzE5OS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3BhZ2VzOyBpICYjNDM7PSBwYWdlYmxvY2tfbnJfcGFnZXMpIHtcbm1tL2h1Z2V0bGIuYzozMjAwOlx0XHRpZiAoZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpXG5tbS9odWdldGxiLmMtMzIwMS1cdFx0XHRpbml0X2NtYV9wYWdlYmxvY2soZm9saW9fcGFnZShmb2xpbywgaSkpO1xuLS1cbm1tL2h1Z2V0bGIuYz0zMjkzPXN0YXRpYyB2b2lkIF9faW5pdCBnYXRoZXJfYm9vdG1lbV9wcmVhbGxvY19ub2RlKHVuc2lnbmVkIGxvbmcgbmlkKVxuLS1cbm1tL2h1Z2V0bGIuYy0zMzM4LVx0XHRpZiAoaHVnZXRsYl9ib290bWVtX3BhZ2VfZWFybHljbWEobSkpXG5tbS9odWdldGxiLmM6MzMzOTpcdFx0XHRmb2xpb19zZXRfaHVnZXRsYl9jbWEoZm9saW8pO1xubW0vaHVnZXRsYi5jLTMzNDAtXG4tLVxubW0vaHVnZXRsYi5jLTMzNTAtXHRcdCAqL1xubW0vaHVnZXRsYi5jOjMzNTE6XHRcdGlmICghZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpXG5tbS9odWdldGxiLmMtMzM1Mi1cdFx0XHRhZGp1c3RfbWFuYWdlZF9wYWdlX2NvdW50KHBhZ2UsIHBhZ2VzX3Blcl9odWdlX3BhZ2UoaCkpO1xuLS1cbm1tL2h1Z2V0bGIuYz0zNTc3PXN0YXRpYyB2b2lkIF9faW5pdCBodWdldGxiX2hzdGF0ZV9hbGxvY19wYWdlcyhzdHJ1Y3QgaHN0YXRlICpoKVxuLS1cbm1tL2h1Z2V0bGIuYy0zNTg0LVx0ICovXG5tbS9odWdldGxiLmM6MzU4NTpcdGlmIChoc3RhdGVfaXNfZ2lnYW50aWMoaCkgXHUwMDI2XHUwMDI2IGh1Z2V0bGJfY21hX3RvdGFsX3NpemUoKSBcdTAwMjZcdTAwMjZcbm1tL2h1Z2V0bGIuYy0zNTg2LVx0ICAgICFodWdldGxiX2Vhcmx5X2NtYShoKSkge1xubW0vaHVnZXRsYi5jOjM1ODc6XHRcdHByX3dhcm5fb25jZShcJiMzNDtIdWdlVExCOiBodWdldGxiX2NtYSBpcyBlbmFibGVkLCBza2lwIGJvb3QgdGltZSBhbGxvY2F0aW9uXFxuXCYjMzQ7KTtcbm1tL2h1Z2V0bGIuYy0zNTg4LVx0XHRyZXR1cm47XG4tLVxubW0vaHVnZXRsYi5jPTM2MDc9c3RhdGljIHZvaWQgX19pbml0IGh1Z2V0bGJfaW5pdF9oc3RhdGVzKHZvaWQpXG4tLVxubW0vaHVnZXRsYi5jLTM2MzQtXHRcdFx0Y29udGludWU7XG5tbS9odWdldGxiLmM6MzYzNTpcdFx0aWYgKGh1Z2V0bGJfY21hX3RvdGFsX3NpemUoKSBcdTAwMjZcdTAwMjYgaC1cdTAwM2VvcmRlciBcdTAwM2M9IEhVR0VUTEJfUEFHRV9PUkRFUilcbm1tL2h1Z2V0bGIuYy0zNjM2LVx0XHRcdGNvbnRpbnVlO1xuLS1cbm1tL2h1Z2V0bGIuYz0zOTMxPXN0YXRpYyBsb25nIGRlbW90ZV9mcmVlX2h1Z2V0bGJfZm9saW9zKHN0cnVjdCBoc3RhdGUgKnNyYywgc3RydWN0IGhzdGF0ZSAqZHN0LFxuLS1cbm1tL2h1Z2V0bGIuYy0zOTU4LVxubW0vaHVnZXRsYi5jOjM5NTk6XHRcdGNtYSA9IGZvbGlvX3Rlc3RfaHVnZXRsYl9jbWEoZm9saW8pO1xubW0vaHVnZXRsYi5jLTM5NjAtXG4tLVxubW0vaHVnZXRsYi5jLTM5NzctXHRcdFx0aWYgKGNtYSlcbm1tL2h1Z2V0bGIuYzozOTc4Olx0XHRcdFx0Zm9saW9fc2V0X2h1Z2V0bGJfY21hKG5ld19mb2xpbyk7XG5tbS9odWdldGxiLmMtMzk3OS1cdFx0XHRsaXN0X2FkZChcdTAwMjZuZXdfZm9saW8tXHUwMDNlbHJ1LCBcdTAwMjZkc3RfbGlzdCk7XG4tLVxubW0vaHVnZXRsYi5jPTQyMzk9c3RhdGljIF9faW5pdCB2b2lkIGh1Z2V0bGJfcGFyc2VfcGFyYW1zKHZvaWQpXG4tLVxubW0vaHVnZXRsYi5jLTQyNDktXG5tbS9odWdldGxiLmM6NDI1MDpcdGh1Z2V0bGJfY21hX3ZhbGlkYXRlX3BhcmFtcygpO1xubW0vaHVnZXRsYi5jLTQyNTEtfVxuLS1cbm1tL2h1Z2V0bGJfY21hLmMtMTItI2luY2x1ZGUgXCYjMzQ7aW50ZXJuYWwuaFwmIzM0O1xubW0vaHVnZXRsYl9jbWEuYzoxMzojaW5jbHVkZSBcJiMzNDtodWdldGxiX2NtYS5oXCYjMzQ7XG5tbS9odWdldGxiX2NtYS5jLTE0LVxubW0vaHVnZXRsYl9jbWEuYy0xNS1cbm1tL2h1Z2V0bGJfY21hLmM6MTY6c3RhdGljIHN0cnVjdCBjbWEgKmh1Z2V0bGJfY21hW01BWF9OVU1OT0RFU10gX19yb19hZnRlcl9pbml0O1xubW0vaHVnZXRsYl9jbWEuYzoxNzpzdGF0aWMgdW5zaWduZWQgbG9uZyBodWdldGxiX2NtYV9zaXplX2luX25vZGVbTUFYX05VTU5PREVTXSBfX2luaXRkYXRhO1xubW0vaHVnZXRsYl9jbWEuYzoxODpzdGF0aWMgYm9vbCBodWdldGxiX2NtYV9vbmx5IF9fcm9fYWZ0ZXJfaW5pdDtcbm1tL2h1Z2V0bGJfY21hLmM6MTk6c3RhdGljIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9jbWFfc2l6ZSBfX3JvX2FmdGVyX2luaXQ7XG5tbS9odWdldGxiX2NtYS5jLTIwLVxubW0vaHVnZXRsYl9jbWEuYzoyMTp2b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG5tbS9odWdldGxiX2NtYS5jLTIyLXtcbm1tL2h1Z2V0bGJfY21hLmM6MjM6XHRXQVJOX09OX09OQ0UoIWNtYV9yZWxlYXNlX2Zyb3plbihodWdldGxiX2NtYVtmb2xpb19uaWQoZm9saW8pXSxcbm1tL2h1Z2V0bGJfY21hLmMtMjQtXHRcdFx0XHRcdCBcdTAwMjZmb2xpby1cdTAwM2VwYWdlLCBmb2xpb19ucl9wYWdlcyhmb2xpbykpKTtcbi0tXG5tbS9odWdldGxiX2NtYS5jLTI2LVxubW0vaHVnZXRsYl9jbWEuYzoyNzpzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxubW0vaHVnZXRsYl9jbWEuYy0yOC1cdFx0aW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spXG4tLVxubW0vaHVnZXRsYl9jbWEuYy0zMy1cbm1tL2h1Z2V0bGJfY21hLmM6MzQ6XHRpZiAoIWh1Z2V0bGJfY21hX3NpemUpXG5tbS9odWdldGxiX2NtYS5jLTM1LVx0XHRyZXR1cm4gTlVMTDtcbm1tL2h1Z2V0bGJfY21hLmMtMzYtXG5tbS9odWdldGxiX2NtYS5jOjM3Olx0aWYgKGh1Z2V0bGJfY21hW25pZF0gXHUwMDI2XHUwMDI2IG5vZGVfaXNzZXQobmlkLCAqbm9kZW1hc2spKVxubW0vaHVnZXRsYl9jbWEuYzozODpcdFx0cGFnZSA9IGNtYV9hbGxvY19mcm96ZW5fY29tcG91bmQoaHVnZXRsYl9jbWFbbmlkXSwgb3JkZXIpO1xubW0vaHVnZXRsYl9jbWEuYy0zOS1cbi0tXG5tbS9odWdldGxiX2NtYS5jLTQxLVx0XHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgKm5vZGVtYXNrKSB7XG5tbS9odWdldGxiX2NtYS5jOjQyOlx0XHRcdGlmIChub2RlID09IG5pZCB8fCAhaHVnZXRsYl9jbWFbbm9kZV0pXG5tbS9odWdldGxiX2NtYS5jLTQzLVx0XHRcdFx0Y29udGludWU7XG5tbS9odWdldGxiX2NtYS5jLTQ0LVxubW0vaHVnZXRsYl9jbWEuYzo0NTpcdFx0XHRwYWdlID0gY21hX2FsbG9jX2Zyb3plbl9jb21wb3VuZChodWdldGxiX2NtYVtub2RlXSwgb3JkZXIpO1xubW0vaHVnZXRsYl9jbWEuYy00Ni1cdFx0XHRpZiAocGFnZSlcbi0tXG5tbS9odWdldGxiX2NtYS5jLTU0LVx0Zm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpO1xubW0vaHVnZXRsYl9jbWEuYzo1NTpcdGZvbGlvX3NldF9odWdldGxiX2NtYShmb2xpbyk7XG5tbS9odWdldGxiX2NtYS5jLTU2LVx0cmV0dXJuIGZvbGlvO1xuLS1cbm1tL2h1Z2V0bGJfY21hLmM9NTk9c3RydWN0IGh1Z2VfYm9vdG1lbV9wYWdlICogX19pbml0XG5tbS9odWdldGxiX2NtYS5jOjYwOmh1Z2V0bGJfY21hX2FsbG9jX2Jvb3RtZW0oc3RydWN0IGhzdGF0ZSAqaCwgaW50ICpuaWQsIGJvb2wgbm9kZV9leGFjdClcbm1tL2h1Z2V0bGJfY21hLmMtNjEte1xuLS1cbm1tL2h1Z2V0bGJfY21hLmMtNjUtXG5tbS9odWdldGxiX2NtYS5jOjY2Olx0Y21hID0gaHVnZXRsYl9jbWFbKm5pZF07XG5tbS9odWdldGxiX2NtYS5jLTY3LVx0bSA9IGNtYV9yZXNlcnZlX2Vhcmx5KGNtYSwgaHVnZV9wYWdlX3NpemUoaCkpO1xuLS1cbm1tL2h1Z2V0bGJfY21hLmMtNzItXHRcdGZvcl9lYWNoX25vZGVfbWFzayhub2RlLCBodWdldGxiX2Jvb3RtZW1fbm9kZXMpIHtcbm1tL2h1Z2V0bGJfY21hLmM6NzM6XHRcdFx0Y21hID0gaHVnZXRsYl9jbWFbbm9kZV07XG5tbS9odWdldGxiX2NtYS5jLTc0LVx0XHRcdGlmICghY21hIHx8IG5vZGUgPT0gKm5pZClcbi0tXG5tbS9odWdldGxiX2NtYS5jLTkxLVxubW0vaHVnZXRsYl9jbWEuYzo5MjpzdGF0aWMgaW50IF9faW5pdCBjbWRsaW5lX3BhcnNlX2h1Z2V0bGJfY21hKGNoYXIgKnApXG5tbS9odWdldGxiX2NtYS5jLTkzLXtcbi0tXG5tbS9odWdldGxiX2NtYS5jLTEwOC1cdFx0XHR0bXAgPSBtZW1wYXJzZShzLCBcdTAwMjZzKTtcbm1tL2h1Z2V0bGJfY21hLmM6MTA5Olx0XHRcdGh1Z2V0bGJfY21hX3NpemVfaW5fbm9kZVtuaWRdID0gdG1wO1xubW0vaHVnZXRsYl9jbWEuYzoxMTA6XHRcdFx0aHVnZXRsYl9jbWFfc2l6ZSAmIzQzOz0gdG1wO1xubW0vaHVnZXRsYl9jbWEuYy0xMTEtXG4tLVxubW0vaHVnZXRsYl9jbWEuYy0xMjAtXHRcdH0gZWxzZSB7XG5tbS9odWdldGxiX2NtYS5jOjEyMTpcdFx0XHRodWdldGxiX2NtYV9zaXplID0gbWVtcGFyc2UocCwgXHUwMDI2cCk7XG5tbS9odWdldGxiX2NtYS5jLTEyMi1cdFx0XHRicmVhaztcbi0tXG5tbS9odWdldGxiX2NtYS5jLTEyOC1cbm1tL2h1Z2V0bGJfY21hLmM6MTI5OmVhcmx5X3BhcmFtKFwmIzM0O2h1Z2V0bGJfY21hXCYjMzQ7LCBjbWRsaW5lX3BhcnNlX2h1Z2V0bGJfY21hKTtcbm1tL2h1Z2V0bGJfY21hLmMtMTMwLVxubW0vaHVnZXRsYl9jbWEuYzoxMzE6c3RhdGljIGludCBfX2luaXQgY21kbGluZV9wYXJzZV9odWdldGxiX2NtYV9vbmx5KGNoYXIgKnApXG5tbS9odWdldGxiX2NtYS5jLTEzMi17XG5tbS9odWdldGxiX2NtYS5jOjEzMzpcdHJldHVybiBrc3RydG9ib29sKHAsIFx1MDAyNmh1Z2V0bGJfY21hX29ubHkpO1xubW0vaHVnZXRsYl9jbWEuYy0xMzQtfVxubW0vaHVnZXRsYl9jbWEuYy0xMzUtXG5tbS9odWdldGxiX2NtYS5jOjEzNjplYXJseV9wYXJhbShcJiMzNDtodWdldGxiX2NtYV9vbmx5XCYjMzQ7LCBjbWRsaW5lX3BhcnNlX2h1Z2V0bGJfY21hX29ubHkpO1xubW0vaHVnZXRsYl9jbWEuYy0xMzctXG5tbS9odWdldGxiX2NtYS5jOjEzODp1bnNpZ25lZCBpbnQgX193ZWFrIGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIodm9pZClcbm1tL2h1Z2V0bGJfY21hLmMtMTM5LXtcbi0tXG5tbS9odWdldGxiX2NtYS5jLTE0Mi1cbm1tL2h1Z2V0bGJfY21hLmM6MTQzOnZvaWQgX19pbml0IGh1Z2V0bGJfY21hX3Jlc2VydmUodm9pZClcbm1tL2h1Z2V0bGJfY21hLmMtMTQ0LXtcbi0tXG5tbS9odWdldGxiX2NtYS5jLTE0OC1cbm1tL2h1Z2V0bGJfY21hLmM6MTQ5Olx0aWYgKCFodWdldGxiX2NtYV9zaXplKVxubW0vaHVnZXRsYl9jbWEuYy0xNTAtXHRcdHJldHVybjtcbm1tL2h1Z2V0bGJfY21hLmMtMTUxLVxubW0vaHVnZXRsYl9jbWEuYzoxNTI6XHRvcmRlciA9IGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIoKTtcbm1tL2h1Z2V0bGJfY21hLmMtMTUzLVx0aWYgKCFvcmRlcikge1xubW0vaHVnZXRsYl9jbWEuYzoxNTQ6XHRcdHByX3dhcm4oXCYjMzQ7aHVnZXRsYl9jbWE6IHRoZSBvcHRpb24gaXNuJiMzOTt0IHN1cHBvcnRlZCBieSBjdXJyZW50IGFyY2hcXG5cJiMzNDspO1xubW0vaHVnZXRsYl9jbWEuYy0xNTUtXHRcdHJldHVybjtcbi0tXG5tbS9odWdldGxiX2NtYS5jLTE2OS1cdGZvciAobmlkID0gMDsgbmlkIFx1MDAzYyBNQVhfTlVNTk9ERVM7IG5pZCYjNDM7JiM0MzspIHtcbm1tL2h1Z2V0bGJfY21hLmM6MTcwOlx0XHRzaXplID0gaHVnZXRsYl9jbWFfc2l6ZV9pbl9ub2RlW25pZF07XG5tbS9odWdldGxiX2NtYS5jLTE3MS1cdFx0aWYgKHNpemUgPT0gMClcbi0tXG5tbS9odWdldGxiX2NtYS5jLTE3NC1cdFx0aWYgKCFub2RlX2lzc2V0KG5pZCwgaHVnZXRsYl9ib290bWVtX25vZGVzKSkge1xubW0vaHVnZXRsYl9jbWEuYzoxNzU6XHRcdFx0cHJfd2FybihcJiMzNDtodWdldGxiX2NtYTogaW52YWxpZCBub2RlICVkIHNwZWNpZmllZFxcblwmIzM0OywgbmlkKTtcbm1tL2h1Z2V0bGJfY21hLmMtMTc2LVx0XHR9IGVsc2UgaWYgKCFJU19BTElHTkVEKHNpemUsIGdpZ2FudGljX3BhZ2Vfc2l6ZSkpIHtcbm1tL2h1Z2V0bGJfY21hLmM6MTc3Olx0XHRcdHByX3dhcm4oXCYjMzQ7aHVnZXRsYl9jbWE6IGNtYSBhcmVhIG9mIG5vZGUgJWQgbXVzdCBiZSBhIG11bHRpcGxlIG9mICVsdSBNaUJcXG5cJiMzNDssXG5tbS9odWdldGxiX2NtYS5jLTE3OC1cdFx0XHRcdG5pZCwgZ2lnYW50aWNfcGFnZV9zaXplIC8gU1pfMU0pO1xuLS1cbm1tL2h1Z2V0bGJfY21hLmMtMTgzLVxubW0vaHVnZXRsYl9jbWEuYzoxODQ6XHRcdGh1Z2V0bGJfY21hX3NpemUgLT0gc2l6ZTtcbm1tL2h1Z2V0bGJfY21hLmM6MTg1Olx0XHRodWdldGxiX2NtYV9zaXplX2luX25vZGVbbmlkXSA9IDA7XG5tbS9odWdldGxiX2NtYS5jLTE4Ni1cdH1cbi0tXG5tbS9odWdldGxiX2NtYS5jLTE4OC1cdC8qIFZhbGlkYXRlIHRoZSBDTUEgc2l6ZSBhZ2FpbiBpbiBjYXNlIHNvbWUgaW52YWxpZCBub2RlcyBzcGVjaWZpZWQuICovXG5tbS9odWdldGxiX2NtYS5jOjE4OTpcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcbm1tL2h1Z2V0bGJfY21hLmMtMTkwLVx0XHRyZXR1cm47XG5tbS9odWdldGxiX2NtYS5jLTE5MS1cbm1tL2h1Z2V0bGJfY21hLmM6MTkyOlx0aWYgKCFJU19BTElHTkVEKGh1Z2V0bGJfY21hX3NpemUsIGdpZ2FudGljX3BhZ2Vfc2l6ZSkpIHtcbm1tL2h1Z2V0bGJfY21hLmM6MTkzOlx0XHRwcl93YXJuKFwmIzM0O2h1Z2V0bGJfY21hOiBjbWEgYXJlYSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJWx1IE1pQlxcblwmIzM0Oyxcbm1tL2h1Z2V0bGJfY21hLmMtMTk0LVx0XHRcdGdpZ2FudGljX3BhZ2Vfc2l6ZSAvIFNaXzFNKTtcbm1tL2h1Z2V0bGJfY21hLmM6MTk1Olx0XHRodWdldGxiX2NtYV9zaXplID0gMDtcbm1tL2h1Z2V0bGJfY21hLmMtMTk2LVx0XHRyZXR1cm47XG4tLVxubW0vaHVnZXRsYl9jbWEuYy0yMDMtXHRcdCAqL1xubW0vaHVnZXRsYl9jbWEuYzoyMDQ6XHRcdHBlcl9ub2RlID0gRElWX1JPVU5EX1VQKGh1Z2V0bGJfY21hX3NpemUsXG5tbS9odWdldGxiX2NtYS5jLTIwNS1cdFx0XHRcdFx0bm9kZXNfd2VpZ2h0KGh1Z2V0bGJfYm9vdG1lbV9ub2RlcykpO1xubW0vaHVnZXRsYl9jbWEuYy0yMDYtXHRcdHBlcl9ub2RlID0gcm91bmRfdXAocGVyX25vZGUsIGdpZ2FudGljX3BhZ2Vfc2l6ZSk7XG5tbS9odWdldGxiX2NtYS5jOjIwNzpcdFx0cHJfaW5mbyhcJiMzNDtodWdldGxiX2NtYTogcmVzZXJ2ZSAlbHUgTWlCLCB1cCB0byAlbHUgTWlCIHBlciBub2RlXFxuXCYjMzQ7LFxubW0vaHVnZXRsYl9jbWEuYzoyMDg6XHRcdFx0aHVnZXRsYl9jbWFfc2l6ZSAvIFNaXzFNLCBwZXJfbm9kZSAvIFNaXzFNKTtcbm1tL2h1Z2V0bGJfY21hLmMtMjA5LVx0fVxuLS1cbm1tL2h1Z2V0bGJfY21hLmMtMjE2LVx0XHRpZiAobm9kZV9zcGVjaWZpY19jbWFfYWxsb2MpIHtcbm1tL2h1Z2V0bGJfY21hLmM6MjE3Olx0XHRcdGlmIChodWdldGxiX2NtYV9zaXplX2luX25vZGVbbmlkXSA9PSAwKVxubW0vaHVnZXRsYl9jbWEuYy0yMTgtXHRcdFx0XHRjb250aW51ZTtcbm1tL2h1Z2V0bGJfY21hLmMtMjE5LVxubW0vaHVnZXRsYl9jbWEuYzoyMjA6XHRcdFx0c2l6ZSA9IGh1Z2V0bGJfY21hX3NpemVfaW5fbm9kZVtuaWRdO1xubW0vaHVnZXRsYl9jbWEuYy0yMjEtXHRcdH0gZWxzZSB7XG5tbS9odWdldGxiX2NtYS5jOjIyMjpcdFx0XHRzaXplID0gbWluKHBlcl9ub2RlLCBodWdldGxiX2NtYV9zaXplIC0gcmVzZXJ2ZWQpO1xubW0vaHVnZXRsYl9jbWEuYy0yMjMtXHRcdH1cbi0tXG5tbS9odWdldGxiX2NtYS5jLTIzMi1cdFx0XHRcdFx0SFVHRVRMQl9QQUdFX09SREVSLCBuYW1lLFxubW0vaHVnZXRsYl9jbWEuYzoyMzM6XHRcdFx0XHRcdFx1MDAyNmh1Z2V0bGJfY21hW25pZF0sIG5pZCk7XG5tbS9odWdldGxiX2NtYS5jLTIzNC1cdFx0aWYgKHJlcykge1xubW0vaHVnZXRsYl9jbWEuYzoyMzU6XHRcdFx0cHJfd2FybihcJiMzNDtodWdldGxiX2NtYTogcmVzZXJ2YXRpb24gZmFpbGVkOiBlcnIgJWQsIG5vZGUgJWRcJiMzNDssXG5tbS9odWdldGxiX2NtYS5jLTIzNi1cdFx0XHRcdHJlcywgbmlkKTtcbi0tXG5tbS9odWdldGxiX2NtYS5jLTI0MC1cdFx0cmVzZXJ2ZWQgJiM0Mzs9IHNpemU7XG5tbS9odWdldGxiX2NtYS5jOjI0MTpcdFx0cHJfaW5mbyhcJiMzNDtodWdldGxiX2NtYTogcmVzZXJ2ZWQgJWx1IE1pQiBvbiBub2RlICVkXFxuXCYjMzQ7LFxubW0vaHVnZXRsYl9jbWEuYy0yNDItXHRcdFx0c2l6ZSAvIFNaXzFNLCBuaWQpO1xubW0vaHVnZXRsYl9jbWEuYy0yNDMtXG5tbS9odWdldGxiX2NtYS5jOjI0NDpcdFx0aWYgKHJlc2VydmVkIFx1MDAzZT0gaHVnZXRsYl9jbWFfc2l6ZSlcbm1tL2h1Z2V0bGJfY21hLmMtMjQ1LVx0XHRcdGJyZWFrO1xuLS1cbm1tL2h1Z2V0bGJfY21hLmMtMjQ5LVx0XHQvKlxubW0vaHVnZXRsYl9jbWEuYzoyNTA6XHRcdCAqIGh1Z2V0bGJfY21hX3NpemUgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgYWxsb2NhdGlvbnMgZnJvbVxubW0vaHVnZXRsYl9jbWEuYy0yNTEtXHRcdCAqIGNtYSBhcmUgcG9zc2libGUuICBTZXQgdG8gemVybyBpZiBubyBjbWEgcmVnaW9ucyBhcmUgc2V0IHVwLlxubW0vaHVnZXRsYl9jbWEuYy0yNTItXHRcdCAqL1xubW0vaHVnZXRsYl9jbWEuYzoyNTM6XHRcdGh1Z2V0bGJfY21hX3NpemUgPSAwO1xubW0vaHVnZXRsYl9jbWEuYy0yNTQtfVxubW0vaHVnZXRsYl9jbWEuYy0yNTUtXG5tbS9odWdldGxiX2NtYS5jOjI1Njpib29sIGh1Z2V0bGJfY21hX2V4Y2x1c2l2ZV9hbGxvYyh2b2lkKVxubW0vaHVnZXRsYl9jbWEuYy0yNTcte1xubW0vaHVnZXRsYl9jbWEuYzoyNTg6XHRyZXR1cm4gaHVnZXRsYl9jbWFfb25seTtcbm1tL2h1Z2V0bGJfY21hLmMtMjU5LX1cbm1tL2h1Z2V0bGJfY21hLmMtMjYwLVxubW0vaHVnZXRsYl9jbWEuYzoyNjE6dW5zaWduZWQgbG9uZyBfX2luaXQgaHVnZXRsYl9jbWFfdG90YWxfc2l6ZSh2b2lkKVxubW0vaHVnZXRsYl9jbWEuYy0yNjIte1xubW0vaHVnZXRsYl9jbWEuYzoyNjM6XHRyZXR1cm4gaHVnZXRsYl9jbWFfc2l6ZTtcbm1tL2h1Z2V0bGJfY21hLmMtMjY0LX1cbm1tL2h1Z2V0bGJfY21hLmMtMjY1LVxubW0vaHVnZXRsYl9jbWEuYzoyNjY6dm9pZCBfX2luaXQgaHVnZXRsYl9jbWFfdmFsaWRhdGVfcGFyYW1zKHZvaWQpXG5tbS9odWdldGxiX2NtYS5jLTI2Ny17XG5tbS9odWdldGxiX2NtYS5jOjI2ODpcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcbm1tL2h1Z2V0bGJfY21hLmM6MjY5Olx0XHRodWdldGxiX2NtYV9vbmx5ID0gZmFsc2U7XG5tbS9odWdldGxiX2NtYS5jLTI3MC19XG4tLVxubW0vaHVnZXRsYl9jbWEuYz0yNzI9Ym9vbCBfX2luaXQgaHVnZXRsYl9lYXJseV9jbWEoc3RydWN0IGhzdGF0ZSAqaClcbi0tXG5tbS9odWdldGxiX2NtYS5jLTI3Ni1cbm1tL2h1Z2V0bGJfY21hLmM6Mjc3Olx0cmV0dXJuIGhzdGF0ZV9pc19naWdhbnRpYyhoKSBcdTAwMjZcdTAwMjYgaHVnZXRsYl9jbWFfb25seTtcbm1tL2h1Z2V0bGJfY21hLmMtMjc4LX1cbi0tXG5tbS9odWdldGxiX2NtYS5oLTUtI2lmZGVmIENPTkZJR19DTUFcbm1tL2h1Z2V0bGJfY21hLmg6Njp2b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xubW0vaHVnZXRsYl9jbWEuaDo3OnN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXG5tbS9odWdldGxiX2NtYS5oLTgtXHRcdFx0XHQgICAgICBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzayk7XG5tbS9odWdldGxiX2NtYS5oOjk6c3RydWN0IGh1Z2VfYm9vdG1lbV9wYWdlICpodWdldGxiX2NtYV9hbGxvY19ib290bWVtKHN0cnVjdCBoc3RhdGUgKmgsIGludCAqbmlkLFxubW0vaHVnZXRsYl9jbWEuaC0xMC1cdFx0XHRcdFx0XHQgICAgYm9vbCBub2RlX2V4YWN0KTtcbm1tL2h1Z2V0bGJfY21hLmg6MTE6Ym9vbCBodWdldGxiX2NtYV9leGNsdXNpdmVfYWxsb2Modm9pZCk7XG5tbS9odWdldGxiX2NtYS5oOjEyOnVuc2lnbmVkIGxvbmcgaHVnZXRsYl9jbWFfdG90YWxfc2l6ZSh2b2lkKTtcbm1tL2h1Z2V0bGJfY21hLmg6MTM6dm9pZCBodWdldGxiX2NtYV92YWxpZGF0ZV9wYXJhbXModm9pZCk7XG5tbS9odWdldGxiX2NtYS5oLTE0LWJvb2wgaHVnZXRsYl9lYXJseV9jbWEoc3RydWN0IGhzdGF0ZSAqaCk7XG5tbS9odWdldGxiX2NtYS5oLTE1LSNlbHNlXG5tbS9odWdldGxiX2NtYS5oOjE2OnN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxubW0vaHVnZXRsYl9jbWEuaC0xNy17XG4tLVxubW0vaHVnZXRsYl9jbWEuaC0xOS1cbm1tL2h1Z2V0bGJfY21hLmg6MjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsXG5tbS9odWdldGxiX2NtYS5oLTIxLVx0XHRnZnBfdCBnZnBfbWFzayxcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxuLS1cbm1tL2h1Z2V0bGJfY21hLmg9MjY9c3RhdGljIGlubGluZVxubW0vaHVnZXRsYl9jbWEuaDoyNzpzdHJ1Y3QgaHVnZV9ib290bWVtX3BhZ2UgKmh1Z2V0bGJfY21hX2FsbG9jX2Jvb3RtZW0oc3RydWN0IGhzdGF0ZSAqaCwgaW50ICpuaWQsXG5tbS9odWdldGxiX2NtYS5oLTI4LVx0XHRcdFx0XHRcdCAgICBib29sIG5vZGVfZXhhY3QpXG4tLVxubW0vaHVnZXRsYl9jbWEuaC0zMi1cbm1tL2h1Z2V0bGJfY21hLmg6MzM6c3RhdGljIGlubGluZSBib29sIGh1Z2V0bGJfY21hX2V4Y2x1c2l2ZV9hbGxvYyh2b2lkKVxubW0vaHVnZXRsYl9jbWEuaC0zNC17XG4tLVxubW0vaHVnZXRsYl9jbWEuaC0zNy1cbm1tL2h1Z2V0bGJfY21hLmg6Mzg6c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfY21hX3RvdGFsX3NpemUodm9pZClcbm1tL2h1Z2V0bGJfY21hLmgtMzkte1xuLS1cbm1tL2h1Z2V0bGJfY21hLmgtNDItXG5tbS9odWdldGxiX2NtYS5oOjQzOnN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX2NtYV92YWxpZGF0ZV9wYXJhbXModm9pZClcbm1tL2h1Z2V0bGJfY21hLmgtNDQte1xuLS1cbm1tL21tX2luaXQuYz0yNjk1PXZvaWQgX19pbml0IG1tX2NvcmVfaW5pdF9lYXJseSh2b2lkKVxubW0vbW1faW5pdC5jLTI2OTYte1xubW0vbW1faW5pdC5jOjI2OTc6XHRodWdldGxiX2NtYV9yZXNlcnZlKCk7XG5tbS9tbV9pbml0LmMtMjY5OC1cdGh1Z2V0bGJfYm9vdG1lbV9hbGxvYygpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19IVUdFVExCJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMjk3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dD05NT1LZXJuZWwgcGFyYW1ldGVyc1xuLS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTIwODUtXHRodWdldGxiX2ZyZWVfdm1lbW1hcD1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjIwODY6XHRcdFx0W0tOTF0gUmVxdWlyZXMgQ09ORklHX0hVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dC0yMDg3LVx0XHRcdGVuYWJsZWQuXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA5NS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjIwOTY6XHRcdFx0QnVpbHQgd2l0aCBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBfREVGQVVMVF9PTj15LFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA5Ny1cdFx0XHR0aGUgZGVmYXVsdCBpcyBvbi5cbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2h1Z2V0bGJwYWdlLnJzdD0yMD1zeXN0ZW0gY2FsbCBvciBzdGFuZGFyZCBTWVNWIHNoYXJlZCBtZW1vcnkgc3lzdGVtIGNhbGxzIChzaG1nZXQsIHNobWF0KS5cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vaHVnZXRsYnBhZ2UucnN0LTIxLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3Q6MjI6Rmlyc3QgdGhlIExpbnV4IGtlcm5lbCBuZWVkcyB0byBiZSBidWlsdCB3aXRoIHRoZSBDT05GSUdfSFVHRVRMQkZTXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2h1Z2V0bGJwYWdlLnJzdDoyMzoocHJlc2VudCB1bmRlciBcJiMzNDtGaWxlIHN5c3RlbXNcJiMzNDspIGFuZCBDT05GSUdfSFVHRVRMQl9QQUdFIChzZWxlY3RlZFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3Q6MjQ6YXV0b21hdGljYWxseSB3aGVuIENPTkZJR19IVUdFVExCRlMgaXMgc2VsZWN0ZWQpIGNvbmZpZ3VyYXRpb25cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vaHVnZXRsYnBhZ2UucnN0LTI1LW9wdGlvbnMuXG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3Q9MTc0PWh1Z2V0bGJfZnJlZV92bWVtbWFwXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2h1Z2V0bGJwYWdlLnJzdDoxNzU6XHRXaGVuIENPTkZJR19IVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUCBpcyBzZXQsIHRoaXMgZW5hYmxlcyBIdWdlVExCXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2h1Z2V0bGJwYWdlLnJzdC0xNzYtXHRWbWVtbWFwIE9wdGltaXphdGlvbiAoSFZPKS5cbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTE5MTI9Q09ORklHX1RNUEZTX1BPU0lYX0FDTD15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjE5MTM6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTE5MTQtQ09ORklHX0NPTkZJR0ZTX0ZTPXlcbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL210ZS5oPTE1Nz1zdGF0aWMgaW5saW5lIGludCBtdGVfcHRyYWNlX2NvcHlfdGFncyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLFxuLS1cbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbXRlLmgtMTY1LVxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tdGUuaDoxNjY6I2lmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0FSTTY0X01URSlcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbXRlLmgtMTY3LXN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfaHVnZXRsYl9tdGVfdGFnZ2VkKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuYXJjaC9hcm02NC9tbS9NYWtlZmlsZT02PW9iai0kKENPTkZJR19BUk02NF9DT05UUFRFKVx0JiM0Mzs9IGNvbnRwdGUub1xuYXJjaC9hcm02NC9tbS9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19IVUdFVExCX1BBR0UpXHQmIzQzOz0gaHVnZXRsYnBhZ2Uub1xuYXJjaC9hcm02NC9tbS9NYWtlZmlsZS04LW9iai0kKENPTkZJR19QVERVTVApXHRcdCYjNDM7PSBwdGR1bXAub1xuLS1cbmFyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9wYWdlLmgtMzktICovXG5hcmNoL2hleGFnb24vaW5jbHVkZS9hc20vcGFnZS5oOjQwOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL2hleGFnb24vaW5jbHVkZS9hc20vcGFnZS5oLTQxLSNkZWZpbmUgSFBBR0VfU0hJRlQgMjJcbi0tXG5hcmNoL2hleGFnb24vaW5jbHVkZS9hc20vcGd0YWJsZS5oPTEyOT1leHRlcm4gcGdkX3Qgc3dhcHBlcl9wZ19kaXJbUFRSU19QRVJfUEdEXTsgIC8qIGxvY2F0ZWQgaW4gaGVhZC5TICovXG4tLVxuYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMzEtLyogIEhVR0VUTEIgbm90IHdvcmtpbmcgY3VycmVudGx5ICAqL1xuYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMzI6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTMzLSNkZWZpbmUgcHRlX21raHVnZShwdGUpIF9fcHRlKChwdGVfdmFsKHB0ZSkgXHUwMDI2IH4weDMpIHwgSFZNX0hVR0VQQUdFX1NJWkUpXG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0xMDM1PUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMDM2OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xMDM3LUNPTkZJR19DT05GSUdGU19GUz15XG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX0hJR0hNRU0pXHRcdCYjNDM7PSBoaWdobWVtLm9cbmFyY2gvbG9vbmdhcmNoL21tL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19IVUdFVExCX1BBR0UpXHQmIzQzOz0gaHVnZXRsYnBhZ2Uub1xuYXJjaC9sb29uZ2FyY2gvbW0vTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX0tBU0FOKVx0XHQmIzQzOz0ga2FzYW5faW5pdC5vXG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vdGxiLmM9MTM4PXN0YXRpYyB2b2lkIF9fdXBkYXRlX2h1Z2V0bGIoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgcHRlX3QgKnB0ZXApXG5hcmNoL2xvb25nYXJjaC9tbS90bGIuYy0xMzkte1xuYXJjaC9sb29uZ2FyY2gvbW0vdGxiLmM6MTQwOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL2xvb25nYXJjaC9tbS90bGIuYy0xNDEtXHRpbnQgaWR4O1xuLS1cbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnPTE0Mz1DT05GSUdfVE1QRlM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWc6MTQ0OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY2F2aXVtX29jdGVvbl9kZWZjb25maWctMTQ1LUNPTkZJR19ORlNfRlM9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnPTE0ND1DT05GSUdfVE1QRlNfUE9TSVhfQUNMPXlcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnOjE0NTpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTE0Ni1DT05GSUdfQ09ORklHRlNfRlM9eVxuLS1cbmFyY2gvbWlwcy9tbS9NYWtlZmlsZT0zMT1vYmotJChDT05GSUdfSElHSE1FTSlcdFx0JiM0Mzs9IGhpZ2htZW0ub1xuYXJjaC9taXBzL21tL01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19IVUdFVExCX1BBR0UpXHQmIzQzOz0gaHVnZXRsYnBhZ2Uub1xuYXJjaC9taXBzL21tL01ha2VmaWxlLTMzLW9iai0kKENPTkZJR19ETUFfTk9OQ09IRVJFTlQpXHQmIzQzOz0gZG1hLW5vbmNvaGVyZW50Lm9cbi0tXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wYWdlLmg9OTM9ZXh0ZXJuIGludCBucG1lbV9yYW5nZXM7XG4tLVxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGFnZS5oLTE0Ny1cbmFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BhZ2UuaDoxNDg6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BhZ2UuaC0xNDktI2RlZmluZSBIUEFHRV9TSElGVFx0XHRQTURfU0hJRlQgLyogZml4ZWQgZm9yIHRyYW5zcGFyZW50IGh1Z2UgcGFnZXMgKi9cbi0tXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wYWdlLmgtMTYzLSNlbmRpZlxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGFnZS5oOjE2NDojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGFnZS5oLTE2NS1cbi0tXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9NjQ9ZXh0ZXJuIHZvaWQgX191cGRhdGVfY2FjaGUocHRlX3QgcHRlKTtcbi0tXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTcwLSNkZWZpbmUgX1BBR0VfVVNFUl9CSVQgICAgIDIwICAgLyogKDB4ODAwKSBTb2Z0d2FyZTogVXNlciBhY2Nlc3NpYmxlIHBhZ2UgKi9cbmFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNzE6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNzItI2RlZmluZSBfUEFHRV9TUEVDSUFMX0JJVCAgX1BBR0VfRE1CX0JJVCAgLyogRE1CIGZlYXR1cmUgaXMgY3VycmVudGx5IHVudXNlZCAqL1xuLS1cbmFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BndGFibGUuaD0zMTU9c3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtzcGVjaWFsKHB0ZV90IHB0ZSlcdHsgcHRlX3ZhbChwdGUpIHw9IF9QQUdFX1NQRUNJQUw7IHJldHVybiBwdGU7IH1cbi0tXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMzE5LSAqL1xuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjMyMDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTMyMS0jZGVmaW5lIHB0ZV9odWdlKHB0ZSkgICAgICAgICAgIChwdGVfdmFsKHB0ZSkgXHUwMDI2IF9QQUdFX0hVR0UpXG4tLVxuYXJjaC9wYXJpc2Mva2VybmVsL2FzbS1vZmZzZXRzLmM9NDE9aW50IG1haW4odm9pZClcbi0tXG5hcmNoL3BhcmlzYy9rZXJuZWwvYXNtLW9mZnNldHMuYy0yNzgtXHQgKiBhbmQga2VybmVsIGRhdGEgb24gcGh5c2ljYWwgaHVnZSBwYWdlcyAqL1xuYXJjaC9wYXJpc2Mva2VybmVsL2FzbS1vZmZzZXRzLmM6Mjc5OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3BhcmlzYy9rZXJuZWwvYXNtLW9mZnNldHMuYy0yODAtXHRERUZJTkUoSFVHRVBBR0VfU0laRSwgMVVMIFx1MDAzY1x1MDAzYyBSRUFMX0hQQUdFX1NISUZUKTtcbi0tXG5hcmNoL3BhcmlzYy9rZXJuZWwvZW50cnkuUy00ODEtXHQubWFjcm9cdFx0Y29udmVydF9mb3JfdGxiX2luc2VydDIwIHB0ZSx0bXBcbmFyY2gvcGFyaXNjL2tlcm5lbC9lbnRyeS5TOjQ4MjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlMtNDgzLVx0Y29weVx0XHRcXHB0ZSxcXHRtcFxuLS1cbmFyY2gvcGFyaXNjL2tlcm5lbC9zZXR1cC5jPTEwMT12b2lkIF9faW5pdCBzZXR1cF9hcmNoKGNoYXIgKipjbWRsaW5lX3ApXG4tLVxuYXJjaC9wYXJpc2Mva2VybmVsL3NldHVwLmMtMTE0LVx0XHQoaW50KShQQUdFX1NJWkUgLyAxMDI0KSk7XG5hcmNoL3BhcmlzYy9rZXJuZWwvc2V0dXAuYzoxMTU6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcGFyaXNjL2tlcm5lbC9zZXR1cC5jLTExNi1cdHByaW50ayhLRVJOX0NPTlQgXCYjMzQ7ZW5hYmxlZCB3aXRoICVkIE1CIHBoeXNpY2FsIGFuZCAlZCBNQiB2aXJ0dWFsIHNpemVcJiMzNDssXG4tLVxuYXJjaC9wYXJpc2MvbW0vTWFrZWZpbGU9Nj1vYmoteVx0IDo9IGluaXQubyBmYXVsdC5vIGlvcmVtYXAubyBmaXhtYXAub1xuYXJjaC9wYXJpc2MvbW0vTWFrZWZpbGU6NzpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKSAmIzQzOz0gaHVnZXRsYnBhZ2Uub1xuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnPTE3OD1DT05GSUdfVE1QRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWc6MTc5OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWctMTgwLUNPTkZJR19ORlNfRlM9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnPTUwPUNPTkZJR19IUEZTX0ZTPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnOjUxOkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWctNTItQ09ORklHX0lLQ09ORklHX1BST0M9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZz0yMTQ9Q09ORklHX1RNUEZTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZzoyMTU6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWctMjE2LUNPTkZJR19IRlNfRlM9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWc9MTUxPUNPTkZJR19UTVBGUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnOjE1MjpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWctMTUzLUNPTkZJR19DT05GSUdGU19GUz15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9Mjc4PUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6Mjc5OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMjgwLUNPTkZJR19DUkFNRlM9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz0zMzM9Q09ORklHX1RNUEZTX1BPU0lYX0FDTD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6MzM0OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTMzNS1DT05GSUdfSEZTX0ZTPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnPTEzOD1DT05GSUdfVE1QRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZzoxMzk6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wczNfZGVmY29uZmlnLTE0MC1DT05GSUdfTkZTX0ZTPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZz0yNTc9Q09ORklHX1BST0NfS0NPUkU9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWc6MjU4OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWctMjU5LSMgQ09ORklHX01JU0NfRklMRVNZU1RFTVMgaXMgbm90IHNldFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC03NC1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDo3NTojaWYgZGVmaW5lZChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpIHx8IGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSlcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC03Ni0jZGVmaW5lIEhfUE1EX0ZSQUdfU0laRV9TSElGVCAgKEhfUE1EX0lOREVYX1NJWkUgJiM0MzsgMyAmIzQzOyAxKVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaD0xNzU9c3RhdGljIGlubGluZSBpbnQgaGFzaF9fcmVtYXBfNGtfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTE4Ni0jZGVmaW5lIEhfUFRFX1RBQkxFX1NJWkVcdFBURV9GUkFHX1NJWkVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDoxODc6I2lmIGRlZmluZWQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSB8fCBkZWZpbmVkIChDT05GSUdfSFVHRVRMQl9QQUdFKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTE4OC0jZGVmaW5lIEhfUE1EX1RBQkxFX1NJWkVcdCgoc2l6ZW9mKHBtZF90KSBcdTAwM2NcdTAwM2MgUE1EX0lOREVYX1NJWkUpICYjNDM7IFxcXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oLTE5Mi0jZW5kaWZcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDoxOTM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC0xOTQtI2RlZmluZSBIX1BVRF9UQUJMRV9TSVpFXHQoKHNpemVvZihwdWRfdCkgXHUwMDNjXHUwMDNjIFBVRF9JTkRFWF9TSVpFKSAmIzQzO1x0XFxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2guaC00Ni0gKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oOjQ3OiNpZiBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0UpIFx1MDAyNlx1MDAyNiAgZGVmaW5lZChDT05GSUdfUFBDXzY0S19QQUdFUylcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oLTQ4LSNkZWZpbmUgSF9QVURfQ0FDSEVfSU5ERVhcdChIX1BVRF9JTkRFWF9TSVpFICYjNDM7IDEpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUtaGFzaC5oPTcxMj1zdHJ1Y3QgaGFzaF9tbV9jb250ZXh0IHtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS1oYXNoLmgtNzIyLVx0c3RydWN0IHNsaWNlX21hc2sgbWFza180aztcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvbW11LWhhc2guaDo3MjM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvbW11LWhhc2guaC03MjQtXHRzdHJ1Y3Qgc2xpY2VfbWFzayBtYXNrXzE2bTtcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS5oPTE2OT1zdGF0aWMgaW5saW5lIHN0cnVjdCBzbGljZV9tYXNrICpzbGljZV9tYXNrX2Zvcl9zaXplKG1tX2NvbnRleHRfdCAqY3R4LCBpbnQgcHNpemUpXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUuaC0xNzQtI2VuZGlmXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS5oOjE3NTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUuaC0xNzYtXHRpZiAocHNpemUgPT0gTU1VX1BBR0VfMTZNKVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGdhbGxvYy5oPTQ4PXN0YXRpYyBpbmxpbmUgcGdkX3QgKnBnZF9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BnYWxsb2MuaC03My1cdCAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ2FsbG9jLmg6NzQ6I2lmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX1BQQ182NEtfUEFHRVMpIFx1MDAyNlx1MDAyNiBcXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ2FsbG9jLmgtNzUtXHQoSF9QR0RfSU5ERVhfU0laRSA9PSBIX1BVRF9DQUNIRV9JTkRFWClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUtNjRrLmgtNS0jaWZuZGVmIF9fQVNTRU1CTEVSX19cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS02NGsuaDo2OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUtNjRrLmgtNy1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS02NGsuaDo4OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUtNjRrLmgtOS1cbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3NsaWNlLmgtNy0jaWZkZWYgQ09ORklHX1BQQ182NFNfSEFTSF9NTVVcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvc2xpY2UuaDo4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3NsaWNlLmgtOS0jZGVmaW5lIEhBVkVfQVJDSF9IVUdFVExCX1VOTUFQUEVEX0FSRUFcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTQtXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oOjU6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmgtNi0jaW5jbHVkZSBcdTAwM2Nhc20vcGFnZS5oXHUwMDNlXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h1Z2V0bGIuaD02Nz1pbnQgaHVnZV9wdGVwX3NldF9hY2Nlc3NfZmxhZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h1Z2V0bGIuaC03Mi1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmg6NzM6I2Vsc2UgLyogISBDT05GSUdfSFVHRVRMQl9QQUdFICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTc0LXN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF9odWdldGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h1Z2V0bGIuaD03OT1zdGF0aWMgaW5saW5lIHZvaWQgX19pbml0IGh1Z2V0bGJwYWdlX2luaXRfZGVmYXVsdHNpemUodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTgxLX1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmg6ODI6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmgtODMtXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhZ2UuaC0yNi0jaWZuZGVmIF9fQVNTRU1CTEVSX19cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWdlLmg6Mjc6I2lmbmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFnZS5oLTI4LSNkZWZpbmUgSFBBR0VfU0hJRlQgUEFHRV9TSElGVFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTQ0PXN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfbW11X2NhY2hlX3JhbmdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTQ4LVx0aWYgKChtbXVfaGFzX2ZlYXR1cmUoTU1VX0ZUUl9IUFRFX1RBQkxFKSBcdTAwMjZcdTAwMjYgIXJhZGl4X2VuYWJsZWQoKSkgfHxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTQ5Olx0ICAgIChJU19FTkFCTEVEKENPTkZJR19QUENfRTUwMCkgXHUwMDI2XHUwMDI2IElTX0VOQUJMRUQoQ09ORklHX0hVR0VUTEJfUEFHRSkpKVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNTAtXHRcdF9fdXBkYXRlX21tdV9jYWNoZSh2bWEsIGFkZHJlc3MsIHB0ZXApO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wdGUtd2Fsay5oPTEwPXN0YXRpYyBpbmxpbmUgcHRlX3QgKmZpbmRfbGludXhfcHRlKHBnZF90ICpwZ2RpciwgdW5zaWduZWQgbG9uZyBlYSxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaC0xOC0jaWYgZGVmaW5lZChDT05GSUdfREVCVUdfVk0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFxcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaDoxOTpcdCEoZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKSB8fCBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkpXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaC0yMC1cdC8qXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYz01NDk9aW50IF9faW5pdCBmYWR1bXBfcmVzZXJ2ZV9tZW0odm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTU5NC1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvZmFkdW1wLmM6NTk1OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTU5Ni1cdFx0Lypcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TPTE2Nj1zZXRfaXZvcjpcbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTMwNy0gKi9cbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlM6MzA4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTMwOS0jZGVmaW5lIEZJTkRfUFRFXHRcXFxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlM9NjY2PWZpbmlzaF90bGJfbG9hZDpcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlM6NjY3OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTY2OC1cdGNtcHdpXHQ2LCByMTAsIDBcdFx0XHQvKiBjaGVjayBmb3IgaHVnZSBwYWdlICovXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUy03MTgtXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TOjcxOTojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUy03MjAtXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUz03Mzk9RU5EX01NVV9GVFJfU0VDVElPTl9JRlNFVChNTVVfRlRSX0JJR19QSFlTKVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlMtNzQyLVx0cmx3aW1pXHRyMTIsIHIxMSwgMzItMTksIDI3LCAzMVx0LyogZXh0cmFjdCBXSU1HRSBmcm9tIHB0ZSAqL1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUzo3NDM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlMtNzQ0LVx0YmVxXHQ2LCAzZlx0XHRcdC8qIGRvbiYjMzk7dCBtYXNrIGlmIHBhZ2UgaXNuJiMzOTt0IGh1Z2UgKi9cbi0tXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TPTc1Mz10bGJfd3JpdGVfZW50cnk6XG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUy03NTctXHRtZnNwclx0cjEwLCBTUFJOX1NQUkdfVEhSRUFEXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TOjc1ODojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUy03NTktXHRiZXFcdDYsIDhmIC8qIHNraXAgcmVzdG9yZSBmb3IgNGsgcGFnZSBmYXVsdHMgKi9cbi0tXG5hcmNoL3Bvd2VycGMvbW0vTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX05VTUEpICYjNDM7PSBudW1hLm9cbmFyY2gvcG93ZXJwYy9tbS9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKVx0JiM0Mzs9IGh1Z2V0bGJwYWdlLm9cbmFyY2gvcG93ZXJwYy9tbS9NYWtlZmlsZS0xNi1vYmotJChDT05GSUdfTk9UX0NPSEVSRU5UX0NBQ0hFKSAmIzQzOz0gZG1hLW5vbmNvaGVyZW50Lm9cbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvTWFrZWZpbGU9MTI9ZW5kaWZcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZS0xMy1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKVx0JiM0Mzs9IGh1Z2V0bGJwYWdlLm9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZS0xNS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfUFBDX1JBRElYX01NVSlcdCYjNDM7PSByYWRpeF9wZ3RhYmxlLm8gcmFkaXhfdGxiLm9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZToxNzppZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX1BQQ19SQURJWF9NTVUpXHQmIzQzOz0gcmFkaXhfaHVnZXRsYnBhZ2Uub1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3RsYi5jPTQxPXZvaWQgaHB0ZV9uZWVkX2ZsdXNoKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdGxiLmMtNjItXHRpZiAoaHVnZSkge1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdGxiLmM6NjM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3RsYi5jLTY0LVx0XHRwc2l6ZSA9IGdldF9zbGljZV9wc2l6ZShtbSwgYWRkcik7XG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz04NDY9c3RhdGljIGludCBfX2luaXQgaHRhYl9kdF9zY2FuX3BhZ2Vfc2l6ZXModW5zaWduZWQgbG9uZyBub2RlLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtOTIzLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzo5MjQ6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtOTI1LS8qXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz05Mjk9c3RhdGljIGludCBfX2luaXQgaHRhYl9kdF9zY2FuX2h1Z2VwYWdlX2Jsb2Nrcyh1bnNpZ25lZCBsb25nIG5vZGUsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy05NjYtfVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzo5Njc6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtOTY4LVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM9OTk2PXN0YXRpYyB2b2lkIF9faW5pdCBodGFiX3NjYW5fcGFnZV9zaXplcyh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTAxOS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTAyMDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMDIxLVx0aWYgKCFodWdldGxiX2Rpc2FibGVkIFx1MDAyNlx1MDAyNiAhZWFybHlfcmFkaXhfZW5hYmxlZCgpICkge1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTAyNC1cdH1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTAyNTojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMDI2LX1cbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTE3MTg9aW50IGhhc2hfcGFnZV9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBlYSxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTE4MzgtXHRcdFx0XHRcdCAgICAgdHJhcCwgZmxhZ3MsIHNzaXplLCBwc2l6ZSk7XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjE4Mzk6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTg0MC1cdFx0ZWxzZVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYz02MjY9dm9pZCByYWRpeF9fbG9jYWxfZmx1c2hfdGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgdm1hZGRyKVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTYyNy17XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM6NjI4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtNjI5LVx0LyogbmVlZCB0aGUgcmV0dXJuIGZpeCBmb3Igbm9oYXNoLmMgKi9cbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM9OTQ1PXZvaWQgcmFkaXhfX2ZsdXNoX3RsYl9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHZtYWRkcilcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy05NDYte1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjk0NzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTk0OC1cdGlmIChpc192bV9odWdldGxiX3BhZ2Uodm1hKSlcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM9MTExMT12b2lkIHJhZGl4X19mbHVzaF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTExMTQte1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjExMTU6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy0xMTE2LVx0aWYgKGlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGljZS5jPTYzNj1FWFBPUlRfU1lNQk9MX0dQTChzbGljZV9nZXRfdW5tYXBwZWRfYXJlYSk7XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xpY2UuYy02MzctXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xpY2UuYzo2Mzg6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGljZS5jLTYzOS1zdGF0aWMgaW50IGZpbGVfdG9fcHNpemUoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsaWNlLmM9NzU3PXZvaWQgc2xpY2Vfc2V0X3JhbmdlX3BzaXplKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGljZS5jLTc2Ny1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGljZS5jOjc2ODojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsaWNlLmMtNzY5LS8qXG4tLVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYz02MTc9dm9pZCBfX2luaXQgbW11X2Vhcmx5X2luaXRfZGV2dHJlZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtNjY0LVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYzo2NjU6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEUpKVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy02NjYtXHRcdGh1Z2V0bGJwYWdlX2luaXRfZGVmYXVsdHNpemUoKTtcbi0tXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX1JBTkRPTUlaRV9CQVNFKVx0JiM0Mzs9IGthc2xyX2Jvb2tlLm9cbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvTWFrZWZpbGU6OTppZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19QUENfRTUwMClcdCYjNDM7PSBlNTAwX2h1Z2V0bGJwYWdlLm9cbi0tXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL3RsYi5jPTI3OD12b2lkIGZsdXNoX3RsYl9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHZtYWRkcilcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvdGxiLmMtMjc5LXtcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvdGxiLmM6MjgwOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL3RsYi5jLTI4MS1cdGlmICh2bWEgXHUwMDI2XHUwMDI2IGlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLmM9MjU1PWludCBwdGVwX3NldF9hY2Nlc3NfZmxhZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jLTI2OC1cbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLmM6MjY5OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jLTI3MC1pbnQgaHVnZV9wdGVwX3NldF9hY2Nlc3NfZmxhZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUuYz0zNTM9dm9pZCBzZXRfaHVnZV9wdGVfYXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkciwgcHRlX3QgKnB0ZXAsXG4tLVxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUuYy0zODMtI2VuZGlmXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jOjM4NDojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xuYXJjaC9wb3dlcnBjL21tL3BndGFibGUuYy0zODUtXG4tLVxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZz0yOTA9Q09ORklHX1RNUEZTX1BPU0lYX0FDTD15XG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnOjI5MTpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWctMjkyLUNPTkZJR19ORlNfRlM9eVxuLS1cbmFyY2gvcmlzY3YvbW0vTWFrZWZpbGU9MTk9b2JqLXkgJiM0Mzs9IHBtZW0ub1xuYXJjaC9yaXNjdi9tbS9NYWtlZmlsZS0yMC1cbmFyY2gvcmlzY3YvbW0vTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSkgJiM0Mzs9IGh1Z2V0bGJwYWdlLm9cbmFyY2gvcmlzY3YvbW0vTWFrZWZpbGUtMjItb2JqLSQoQ09ORklHX1BURFVNUCkgJiM0Mzs9IHB0ZHVtcC5vXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTcwNj1DT05GSUdfVE1QRlNfUVVPVEE9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjcwNzpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy03MDgtQ09ORklHX0VDUllQVF9GUz1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTY5Mj1DT05GSUdfVE1QRlNfUVVPVEE9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjY5MzpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy02OTQtQ09ORklHX0VDUllQVF9GUz1tXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMTExPXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rc3BlY2lhbChwdGVfdCBwdGUpXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMTE1LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMTE2OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTExMTctc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtodWdlKHB0ZV90IHB0ZSlcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE1NjA9c3RhdGljIGlubGluZSBwdWRfdCBwdWRfbWtkaXJ0eShwdWRfdCBwdWQpXG4tLVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNTY3LVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNTY4OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKVxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNTY5LXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBtYXNzYWdlX3BncHJvdF9wbWQocGdwcm90X3QgcGdwcm90KVxuLS1cbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTYxOD1zdGF0aWMgaW5saW5lIHBtZF90IG1rX3BtZF9waHlzKHVuc2lnbmVkIGxvbmcgcGh5c3BhZ2UsIHBncHJvdF90IHBncHJvdClcbi0tXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE2MjItXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjE2MjM6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSB8fCBDT05GSUdfSFVHRVRMQl9QQUdFICovXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE2MjQtXG4tLVxuYXJjaC9zMzkwL21tL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19ERUJVR19WSVJUVUFMKVx0JiM0Mzs9IHBoeXNhZGRyLm9cbmFyY2gvczM5MC9tbS9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKVx0JiM0Mzs9IGh1Z2V0bGJwYWdlLm9cbmFyY2gvczM5MC9tbS9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfUFREVU1QKVx0XHQmIzQzOz0gZHVtcF9wYWdldGFibGVzLm9cbi0tXG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZz0yNT1DT05GSUdfTUVNT1JZX1NJWkU9MHgxMDAwMDAwMFxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWc6MjY6Q09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzFNQj15XG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZy0yNy1DT05GSUdfS1NNPXlcbi0tXG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZz05Nz1DT05GSUdfVE1QRlM9eVxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWc6OTg6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZy05OS1DT05GSUdfSkZGUzJfRlM9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9kcmVhbWNhc3RfZGVmY29uZmlnPTY0PUNPTkZJR19UTVBGUz15XG5hcmNoL3NoL2NvbmZpZ3MvZHJlYW1jYXN0X2RlZmNvbmZpZzo2NTpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvc2gvY29uZmlncy9kcmVhbWNhc3RfZGVmY29uZmlnLTY2LUNPTkZJR19SVENfQ0xBU1M9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9yNzc4MG1wX2RlZmNvbmZpZz04ND1DT05GSUdfVE1QRlM9eVxuYXJjaC9zaC9jb25maWdzL3I3NzgwbXBfZGVmY29uZmlnOjg1OkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9zaC9jb25maWdzL3I3NzgwbXBfZGVmY29uZmlnLTg2LUNPTkZJR19DT05GSUdGU19GUz1tXG4tLVxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnPTE2PUNPTkZJR19NRU1PUllfU0laRT0weDA4MDAwMDAwXG5hcmNoL3NoL2NvbmZpZ3Mvcjc3ODVycF9kZWZjb25maWc6MTc6Q09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzFNQj15XG5hcmNoL3NoL2NvbmZpZ3Mvcjc3ODVycF9kZWZjb25maWctMTgtQ09ORklHX1NIX1NUT1JFX1FVRVVFUz15XG4tLVxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnPTc5PUNPTkZJR19UTVBGUz15XG5hcmNoL3NoL2NvbmZpZ3Mvcjc3ODVycF9kZWZjb25maWc6ODA6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3NoL2NvbmZpZ3Mvcjc3ODVycF9kZWZjb25maWctODEtQ09ORklHX0NPTkZJR0ZTX0ZTPW1cbi0tXG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4MF9kZWZjb25maWc9MTE1PUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODBfZGVmY29uZmlnOjExNjpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvc2gvY29uZmlncy9zZGs3NzgwX2RlZmNvbmZpZy0xMTctQ09ORklHX01JTklYX0ZTPXlcbi0tXG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWc9NDQ9Q09ORklHX05VTUE9eVxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnOjQ1OkNPTkZJR19IVUdFVExCX1BBR0VfU0laRV82NE1CPXlcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZy00Ni1DT05GSUdfS1NNPXlcbi0tXG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWc9MTc5PUNPTkZJR19UTVBGUz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWc6MTgwOkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnLTE4MS1DT05GSUdfQ09ORklHRlNfRlM9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9zZTc3MjJfZGVmY29uZmlnPTQ5PUNPTkZJR19UTVBGUz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIyX2RlZmNvbmZpZzo1MDpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvc2gvY29uZmlncy9zZTc3MjJfZGVmY29uZmlnLTUxLUNPTkZJR19QUklOVEtfVElNRT15XG4tLVxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWc9MTc9Q09ORklHX1BNQj15XG5hcmNoL3NoL2NvbmZpZ3Mvc2g3Nzg1bGNyXzMyYml0X2RlZmNvbmZpZzoxODpDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMU1CPXlcbmFyY2gvc2gvY29uZmlncy9zaDc3ODVsY3JfMzJiaXRfZGVmY29uZmlnLTE5LUNPTkZJR19TSF9TVE9SRV9RVUVVRVM9eVxuLS1cbmFyY2gvc2gvY29uZmlncy9zaDc3ODVsY3JfMzJiaXRfZGVmY29uZmlnPTEyMT1DT05GSUdfVE1QRlM9eVxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWc6MTIyOkNPTkZJR19IVUdFVExCRlM9eVxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWctMTIzLUNPTkZJR19DT05GSUdGU19GUz15XG4tLVxuYXJjaC9zaC9jb25maWdzL3NoeDNfZGVmY29uZmlnPTg5PUNPTkZJR19UTVBGUz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWc6OTA6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWctOTEtIyBDT05GSUdfRU5BQkxFX01VU1RfQ0hFQ0sgaXMgbm90IHNldFxuLS1cbmFyY2gvc2gvY29uZmlncy91bDJfZGVmY29uZmlnPTcyPUNPTkZJR19UTVBGUz15XG5hcmNoL3NoL2NvbmZpZ3MvdWwyX2RlZmNvbmZpZzo3MzpDT05GSUdfSFVHRVRMQkZTPXlcbmFyY2gvc2gvY29uZmlncy91bDJfZGVmY29uZmlnLTc0LUNPTkZJR19DUkFNRlM9eVxuLS1cbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZz0xMjI9Q09ORklHX1RNUEZTPXlcbmFyY2gvc2gvY29uZmlncy91cnF1ZWxsX2RlZmNvbmZpZzoxMjM6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWctMTI0LUNPTkZJR19DT05GSUdGU19GUz15XG4tLVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmgtMTQtXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaDoxNTojaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfNjRLKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmgtMTYtI2RlZmluZSBIUEFHRV9TSElGVFx0MTZcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oOjE3OiNlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzI1NkspXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaC0xOC0jZGVmaW5lIEhQQUdFX1NISUZUXHQxOFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmg6MTk6I2VsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMU1CKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmgtMjAtI2RlZmluZSBIUEFHRV9TSElGVFx0MjBcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oOjIxOiNlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzRNQilcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oLTIyLSNkZWZpbmUgSFBBR0VfU0hJRlRcdDIyXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaDoyMzojZWxpZiBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0VfU0laRV82NE1CKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmgtMjQtI2RlZmluZSBIUEFHRV9TSElGVFx0MjZcbi0tXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaC0yNi1cbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oOjI3OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaC0yOC0jZGVmaW5lIEhQQUdFX1NJWkVcdFx0KDFVTCBcdTAwM2NcdTAwM2MgSFBBR0VfU0hJRlQpXG4tLVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmg9OTc9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGNvcHlfcHRlYV9hdHRyaWJ1dGVzKHVuc2lnbmVkIGxvbmcgeClcbi0tXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaC0xMzYtI2lmIGRlZmluZWQoQ09ORklHX1gyVExCKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmg6MTM3OiMgaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfNjRLKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgtMTM4LSMgIGRlZmluZSBfUEFHRV9TWkhVR0VcdChfUEFHRV9FWFRfRVNaMilcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oOjEzOTojIGVsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMjU2SylcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oLTE0MC0jICBkZWZpbmUgX1BBR0VfU1pIVUdFXHQoX1BBR0VfRVhUX0VTWjAgfCBfUEFHRV9FWFRfRVNaMilcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oOjE0MTojIGVsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMU1CKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgtMTQyLSMgIGRlZmluZSBfUEFHRV9TWkhVR0VcdChfUEFHRV9FWFRfRVNaMCB8IF9QQUdFX0VYVF9FU1oxIHwgX1BBR0VfRVhUX0VTWjIpXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaDoxNDM6IyBlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzRNQilcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oLTE0NC0jICBkZWZpbmUgX1BBR0VfU1pIVUdFXHQoX1BBR0VfRVhUX0VTWjMpXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaDoxNDU6IyBlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzY0TUIpXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaC0xNDYtIyAgZGVmaW5lIF9QQUdFX1NaSFVHRVx0KF9QQUdFX0VYVF9FU1oyIHwgX1BBR0VfRVhUX0VTWjMpXG4tLVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgtMTQ5LSNlbHNlXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaDoxNTA6IyBpZiBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0VfU0laRV82NEspXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaC0xNTEtIyAgZGVmaW5lIF9QQUdFX1NaSFVHRVx0KF9QQUdFX1NaMSlcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oOjE1MjojIGVsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMU1CKVxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgtMTUzLSMgIGRlZmluZSBfUEFHRV9TWkhVR0VcdChfUEFHRV9TWjAgfCBfUEFHRV9TWjEpXG4tLVxuYXJjaC9zaC9tbS9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfREVCVUdfRlMpXHRcdCYjNDM7PSAkKGRlYnVnZnMteSlcbmFyY2gvc2gvbW0vTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSlcdCYjNDM7PSBodWdldGxicGFnZS5vXG5hcmNoL3NoL21tL01ha2VmaWxlLTM5LW9iai0kKENPTkZJR19QTUIpXHRcdCYjNDM7PSBwbWIub1xuLS1cbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZz0xOTI9Q09ORklHX1RNUEZTPXlcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZzoxOTM6Q09ORklHX0hVR0VUTEJGUz15XG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWctMTk0LUNPTkZJR19QUklOVEtfVElNRT15XG4tLVxuYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9odWdldGxiLmgtNi1cbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vaHVnZXRsYi5oOjc6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTgtc3RydWN0IHB1ZF9odWdlX3BhdGNoX2VudHJ5IHtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDMwOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgSHVnZSBQYWdlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIGh1Z2UgcGFnZXMuIGBDT05GSUdfSFVHRVRMQl9QQUdFYCBpcyB0aGUga2V5IG9uZSwgYW5kIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciBicmluZ2luZyBgaHVnZXRsYnBhZ2Uub2AgaW50byB0aGUgZ2FtZSBhY3Jvc3MgYSBidW5jaCBvZiBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcy4gVGhlbiB0aGVyZSYjMzk7cyBgQ09ORklHX0NNQWAsIHdoaWNoIGVuYWJsZXMgQ01BLiBUaGF0JiMzOTtzIENvbW1hLXNlcGFyYXRlZCBNZW1vcnkgQWxsb2NhdGlvbiwgaWYgSSByZWNhbGwuIE5vdywgYENPTkZJR19IVUdFVExCRlNgIGlzIHdoYXQgYWN0dWFsbHkgZW5hYmxlcyBgaHVnZXRsYl9jbWEub2Agd2l0aGluIGBtbS9NYWtlZmlsZWAuCgpIb2xkIG9uLi4uIGxvb2tpbmcgYXQgYG1tL01ha2VmaWxlYCBkaXJlY3RseSwgaXQgaGFzIHRoaXMgY29uZGl0aW9uYWwgYmxvY2s6CgpgYGAKaWZkZWYgQ09ORklHX0NNQQpvYmotJChDT05GSUdfSFVHRVRMQkZTKSAmIzQzOz0gaHVnZXRsYl9jbWEubwplbmRpZgpgYGAKClJpZ2h0LCBzbyBgQ09ORklHX0hVR0VUTEJGU2AgYW5kIGBDT05GSUdfQ01BYCAqYm90aCogbmVlZCB0byBiZSBlbmFibGVkIGZvciBgaHVnZXRsYl9jbWEub2AgdG8gZ2V0IGJ1aWx0LiBUaGF0IGV4cGxhaW5zIHdoeSBJJiMzOTttIHNlZWluZyB0aGlzIHBhcnRpY3VsYXIgcmVsYXRpb25zaGlwLiBOb3csIGxldCYjMzk7cyBzZWUgaG93IGBtbS9odWdldGxiLmNgIGNvbXBpbGF0aW9uIGlzIGhhbmRsZWQuCgpPa2F5LCBoZXJlIGl0IGlzOgoKYGBgCm9iai0kKENPTkZJR19IVUdFVExCX1BBR0UpICYjNDM7PSBodWdldGxiLm8KYGBgCgpBaGEhIGBodWdldGxiLm9gIGlzIHRpZWQgZGlyZWN0bHkgdG8gYENPTkZJR19IVUdFVExCX1BBR0VgLiBOb3csIHRoZSBjcnVjaWFsIHBpZWNlIGlzIGhvdyBgQ09ORklHX0hVR0VUTEJfUEFHRWAgaXRzZWxmIGlzIHNlbGVjdGVkLiBJdCYjMzk7cyBsaWtlbHkgcmVsYXRlZCB0byBgQ09ORklHX0hVR0VUTEJGU2AuIEkgbmVlZCB0byBjb25zdWx0IGVpdGhlciBgZnMvS2NvbmZpZ2Agb3IgYG1tL0tjb25maWdgIHRvIGNvbmZpcm0gdGhhdCBkaXJlY3Qgc2VsZWN0aW9uLiBJIGFtIGFzc3VtaW5nIHRoYXQgaXQgaXMgdGhlIGRpcmVjdCBzZWxlY3Rpb24uIEkgbmVlZCB0byBiZSBzdXJlLCBvZiBjb3Vyc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBIVUdFVExCRlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZz0yNDc9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXG4tLVxuZnMvS2NvbmZpZy0yNDktXG5mcy9LY29uZmlnOjI1MDptZW51Y29uZmlnIEhVR0VUTEJGU1xuZnMvS2NvbmZpZy0yNTEtXHRib29sIFwmIzM0O0h1Z2VUTEIgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSFVHRVRMQl9QQUdFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvc2gvbW0vS2NvbmZpZz0xNTg9Y2hvaWNlXG4tLVxuYXJjaC9zaC9tbS9LY29uZmlnLTE2My1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNjQ6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzY0S1xuYXJjaC9zaC9tbS9LY29uZmlnLTE2NS1cdGJvb2wgXCYjMzQ7NjRrQlwmIzM0O1xuLS1cbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjctXG5hcmNoL3NoL21tL0tjb25maWc6MTY4OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8yNTZLXG5hcmNoL3NoL21tL0tjb25maWctMTY5LVx0Ym9vbCBcJiMzNDsyNTZrQlwmIzM0O1xuLS1cbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzEtXG5hcmNoL3NoL21tL0tjb25maWc6MTcyOmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8xTUJcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0OzFNQlwmIzM0O1xuYXJjaC9zaC9tbS9LY29uZmlnLTE3NC1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzU6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzRNQlxuYXJjaC9zaC9tbS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7NE1CXCYjMzQ7XG4tLVxuYXJjaC9zaC9tbS9LY29uZmlnLTE3OC1cbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzk6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzY0TUJcbmFyY2gvc2gvbW0vS2NvbmZpZy0xODAtXHRib29sIFwmIzM0OzY0TUJcJiMzNDtcbi0tXG5mcy9LY29uZmlnPTI2Mj1pZiBIVUdFVExCRlNcbmZzL0tjb25maWc6MjYzOmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUF9ERUZBVUxUX09OXG5mcy9LY29uZmlnLTI2NC1cdGJvb2wgXCYjMzQ7SHVnZVRMQiBWbWVtbWFwIE9wdGltaXphdGlvbiAoSFZPKSBkZWZhdWx0cyB0byBvblwmIzM0O1xuLS1cbmZzL0tjb25maWc9MjcxPWVuZGlmICMgSFVHRVRMQkZTXG5mcy9LY29uZmlnLTI3Mi1cbmZzL0tjb25maWc6MjczOmNvbmZpZyBIVUdFVExCX1BBR0VcbmZzL0tjb25maWctMjc0LVx0ZGVmX2Jvb2wgSFVHRVRMQkZTXG4tLVxuZnMvS2NvbmZpZy0yNzYtXG5mcy9LY29uZmlnOjI3Nzpjb25maWcgSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcbmZzL0tjb25maWctMjc4LVx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXG4tLVxubW0vS2NvbmZpZz03MDY9Y29uZmlnIEFSQ0hfRU5BQkxFX1RIUF9NSUdSQVRJT05cbi0tXG5tbS9LY29uZmlnLTcwOC1cbm1tL0tjb25maWc6NzA5OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxubW0vS2NvbmZpZy03MTAtXHRkZWZfYm9vbCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTk3CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIG15IG1lbnRhbCBjaGVja2xpc3QgYmVnaW5zIHdpdGggdGhlIG9idmlvdXM6CgoqKkluaXRpYWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKU28sIGBDT05GSUdfSFVHRVRMQkZTYCBpcyB0aGUgY29ybmVyc3RvbmUgaGVyZTsgaXQmIzM5O3MgdGhlIG9uZSB0aGF0IHB1bGxzIGluIGBDT05GSUdfSFVHRVRMQl9QQUdFYCwgYW5kIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gVGhleSYjMzk7cmUgaW50cmluc2ljYWxseSBsaW5rZWQuIFRoZW4sIG9mIGNvdXJzZSwgdGhlIGBodWdldGxiX2NtYS5jYCBtb2R1bGUgZGVtYW5kcyBgQ09ORklHX0NNQWAuIEkga25ldyB0aGF0IG9uZSBieSBoZWFydC4gTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIGVsc2UuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiB3ZSBuZWVkIGBDT05GSUdfQ1BVU0VUU2AgZm9yIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8ga25vd2luZyB3aGVyZSBsYXJnZSBwYWdlcyBhcmUgdmlzaWJsZSB0byBwcm9jZXNzZXMuIEFsd2F5cyBuZWVkIHRvIGJlIHRob3JvdWdoIHdpdGggdGhlIGRlcGVuZGVuY2llcy4gSSBoYXZlIHRvIHRoaW5rIHRocm91Z2ggd2hldGhlciB0aGUgY3VycmVudCBtZW1vcnkgcG9saWN5LCBhcyBjb250cm9sbGVkIGJ5IGNwdXNldHMsIGlzIGEgZmFjdG9yLiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2NwdXNldC5oPTgzPWV4dGVybiBub2RlbWFza190IGNwdXNldF9tZW1zX2FsbG93ZWQoc3RydWN0IHRhc2tfc3RydWN0ICpwKTtcbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6ODQ6I2RlZmluZSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQgKGN1cnJlbnQtXHUwMDNlbWVtc19hbGxvd2VkKVxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC04NS12b2lkIGNwdXNldF9pbml0X2N1cnJlbnRfbWVtc19hbGxvd2VkKHZvaWQpO1xuLS1cbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg9MjE5PXN0YXRpYyBpbmxpbmUgbm9kZW1hc2tfdCBjcHVzZXRfbWVtc19hbGxvd2VkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyMy1cbmluY2x1ZGUvbGludXgvY3B1c2V0Lmg6MjI0OiNkZWZpbmUgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkIChub2RlX3N0YXRlc1tOX01FTU9SWV0pXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyNS1zdGF0aWMgaW5saW5lIHZvaWQgY3B1c2V0X2luaXRfY3VycmVudF9tZW1zX2FsbG93ZWQodm9pZCkge31cbi0tXG5rZXJuZWwvc2NoZWQvZmFpci5jPTQwNzY9c3RhdGljIHZvaWQgdGFza19udW1hX3dvcmsoc3RydWN0IGNhbGxiYWNrX2hlYWQgKndvcmspXG4tLVxua2VybmVsL3NjaGVkL2ZhaXIuYy00MTA3LVx0ICovXG5rZXJuZWwvc2NoZWQvZmFpci5jOjQxMDg6XHRpZiAoY3B1c2V0c19lbmFibGVkKCkgXHUwMDI2XHUwMDI2IG5vZGVzX3dlaWdodChjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpID09IDEpIHtcbmtlcm5lbC9zY2hlZC9mYWlyLmM6NDEwOTpcdFx0dHJhY2Vfc2NoZWRfc2tpcF9jcHVzZXRfbnVtYShjdXJyZW50LCBcdTAwMjZjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpO1xua2VybmVsL3NjaGVkL2ZhaXIuYy00MTEwLVx0XHRyZXR1cm47XG4tLVxubW0vaHVnZXRsYi5jPTE4NjM9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbm1tL2h1Z2V0bGIuYy0xODczLVx0XHRcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XG5tbS9odWdldGxiLmM6MTg3NDpcdFx0XHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG5tbS9odWdldGxiLmMtMTg3NS1cdFx0fSB3aGlsZSAocmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoY3B1c2V0X21lbXNfY29va2llKSk7XG4tLVxubW0vaHVnZXRsYi5jPTIyNTc9c3RhdGljIGludCBnYXRoZXJfc3VycGx1c19wYWdlcyhzdHJ1Y3QgaHN0YXRlICpoLCBsb25nIGRlbHRhKVxuLS1cbm1tL2h1Z2V0bGIuYy0yMjY5LVx0aWYgKG1iaW5kX25vZGVtYXNrKVxubW0vaHVnZXRsYi5jOjIyNzA6XHRcdG5vZGVzX2FuZChhbGxvY19ub2RlbWFzaywgKm1iaW5kX25vZGVtYXNrLCBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpO1xubW0vaHVnZXRsYi5jLTIyNzEtXHRlbHNlXG5tbS9odWdldGxiLmM6MjI3MjpcdFx0YWxsb2Nfbm9kZW1hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG5tbS9odWdldGxiLmMtMjI3My1cbi0tXG5tbS9odWdldGxiLmM9NDUxMj1zdGF0aWMgdW5zaWduZWQgaW50IGFsbG93ZWRfbWVtc19ucihzdHJ1Y3QgaHN0YXRlICpoKVxuLS1cbm1tL2h1Z2V0bGIuYy00NTIwLVx0bWJpbmRfbm9kZW1hc2sgPSBwb2xpY3lfbWJpbmRfbm9kZW1hc2soZ2ZwX21hc2spO1xubW0vaHVnZXRsYi5jOjQ1MjE6XHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKSB7XG5tbS9odWdldGxiLmMtNDUyMi1cdFx0aWYgKCFtYmluZF9ub2RlbWFzayB8fCBub2RlX2lzc2V0KG5vZGUsICptYmluZF9ub2RlbWFzaykpXG4tLVxubW0vbWVtcG9saWN5LmM9NDA0PXN0YXRpYyBpbnQgbXBvbF9zZXRfbm9kZW1hc2soc3RydWN0IG1lbXBvbGljeSAqcG9sLFxuLS1cbm1tL21lbXBvbGljeS5jLTQxOC1cdG5vZGVzX2FuZChuc2MtXHUwMDNlbWFzazEsXG5tbS9tZW1wb2xpY3kuYzo0MTk6XHRcdCAgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkLCBub2RlX3N0YXRlc1tOX01FTU9SWV0pO1xubW0vbWVtcG9saWN5LmMtNDIwLVxuLS1cbm1tL21lbXBvbGljeS5jLTQzMC1cdGVsc2Vcbm1tL21lbXBvbGljeS5jOjQzMTpcdFx0cG9sLVx1MDAzZXcuY3B1c2V0X21lbXNfYWxsb3dlZCA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcbm1tL21lbXBvbGljeS5jLTQzMi1cbi0tXG5tbS9tZW1wb2xpY3kuYz0xMTQ3PXN0YXRpYyBsb25nIGRvX2dldF9tZW1wb2xpY3koaW50ICpwb2xpY3ksIG5vZGVtYXNrX3QgKm5tYXNrLFxuLS1cbm1tL21lbXBvbGljeS5jLTExNjMtXHRcdHRhc2tfbG9jayhjdXJyZW50KTtcbm1tL21lbXBvbGljeS5jOjExNjQ6XHRcdCpubWFzayAgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG5tbS9tZW1wb2xpY3kuYy0xMTY1LVx0XHR0YXNrX3VubG9jayhjdXJyZW50KTtcbi0tXG5tbS9vb21fa2lsbC5jPTI0OT1zdGF0aWMgZW51bSBvb21fY29uc3RyYWludCBjb25zdHJhaW5lZF9hbGxvYyhzdHJ1Y3Qgb29tX2NvbnRyb2wgKm9jKVxuLS1cbm1tL29vbV9raWxsLmMtMjk4LVx0XHRvYy1cdTAwM2V0b3RhbHBhZ2VzID0gdG90YWxfc3dhcF9wYWdlcztcbm1tL29vbV9raWxsLmM6Mjk5Olx0XHRmb3JfZWFjaF9ub2RlX21hc2sobmlkLCBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpXG5tbS9vb21fa2lsbC5jLTMwMC1cdFx0XHRvYy1cdTAwM2V0b3RhbHBhZ2VzICYjNDM7PSBub2RlX3ByZXNlbnRfcGFnZXMobmlkKTtcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDcyNT1fX2FsbG9jX3BhZ2VzX3Nsb3dwYXRoKGdmcF90IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTQ4MDYtXHRcdFx0XHRcdGFjLVx1MDAzZWhpZ2hlc3Rfem9uZWlkeCxcbm1tL3BhZ2VfYWxsb2MuYzo0ODA3Olx0XHRcdFx0XHRcdTAwMjZjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpO1xubW0vcGFnZV9hbGxvYy5jLTQ4MDgtXHRcdGlmICghem9uZWxpc3Rfem9uZSh6KSlcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NTAyNj1zdGF0aWMgaW5saW5lIGJvb2wgcHJlcGFyZV9hbGxvY19wYWdlcyhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy01MDQyLVx0XHRpZiAoaW5fdGFzaygpIFx1MDAyNlx1MDAyNiAhYWMtXHUwMDNlbm9kZW1hc2spXG5tbS9wYWdlX2FsbG9jLmM6NTA0MzpcdFx0XHRhYy1cdTAwM2Vub2RlbWFzayA9IFx1MDAyNmNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcbm1tL3BhZ2VfYWxsb2MuYy01MDQ0LVx0XHRlbHNlXG4tLVxubW0vcGFnZV9hbGxvYy5jPTUyNjg9c3RydWN0IHBhZ2UgKl9fYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBvcmRlcixcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNTMxMi1cdCAqIFJlc3RvcmUgdGhlIG9yaWdpbmFsIG5vZGVtYXNrIGlmIGl0IHdhcyBwb3RlbnRpYWxseSByZXBsYWNlZCB3aXRoXG5tbS9wYWdlX2FsbG9jLmM6NTMxMzpcdCAqIFx1MDAyNmNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCB0byBvcHRpbWl6ZSB0aGUgZmFzdC1wYXRoIGF0dGVtcHQuXG5tbS9wYWdlX2FsbG9jLmMtNTMxNC1cdCAqL1xuLS1cbm1tL3Nob3dfbWVtLmM9MTE5PXN0YXRpYyBib29sIHNob3dfbWVtX25vZGVfc2tpcCh1bnNpZ25lZCBpbnQgZmxhZ3MsIGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxuLS1cbm1tL3Nob3dfbWVtLmMtMTI5LVx0aWYgKCFub2RlbWFzaylcbm1tL3Nob3dfbWVtLmM6MTMwOlx0XHRub2RlbWFzayA9IFx1MDAyNmNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcbm1tL3Nob3dfbWVtLmMtMTMxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzU1NwoJCQkJCQkJb3V0cHV0OiAyMDMKCQkJCQkJCXRob3VnaHRzOiA5NTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgSHVnZXRsYiBhbmQgSHVnZXRsYl9DTUEgQWxsb2NhdGlvbiBDaGFuZ2VzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgaXMgcGxheWluZyBhIHJvbGUsIHdoaWNoIGlzIGRlZmluZWQgaW4gYGNwdXNldC5oYC4gSXQgYXBwZWFycyB0byBiZSBiYXNlZCBvbiBgY3VycmVudC0mZ3Q7bWVtc19hbGxvd2VkYCBpZiBjcHVzZXRzIGFyZSBlbmFibGVkLCBidXQgZGVmYXVsdHMgdG8gYG5vZGVfc3RhdGVzW05fTUVNT1JZXWAgb3RoZXJ3aXNlLiBUaGlzIHN1Z2dlc3RzIHRoYXQgZXZlbiB3aXRob3V0IGBDT05GSUdfQ1BVU0VUU2AsIHRoZSBjb2RlIG1pZ2h0IHN0aWxsIGJlIHJlbGV2YW50LCB0aG91Z2ggYENPTkZJR19IVUdFVExCRlNgIGFuZCBgQ09ORklHX0NNQWAgc2VlbSBsaWtlIHRoZSBtb3JlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb25zIGhlcmUuCgpOb3csIGZvY3VzaW5nIG9uIHRoZSBjb3JlIGNoYW5nZXMsIHRoaXMgcGF0Y2ggdG91Y2hlcyBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgYW5kIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLiBGdW5jdGlvbmFsbHksIHRoZXNlIGNoYW5nZXMgbG9vayBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJbiBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AsIHdoZW4gYG5tYXNrYCBpcyBOVUxMLCBpbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIG51bGwgbWFzayBpbnRvIGBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gLCBpdCBub3cgdXNlcyBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQ7IHRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IGEgTlVMTCBgbm1hc2tgIGFsbG93cyBhbGxvY2F0aW9uIGZyb20gKmFueSogbm9kZSwgYnV0IG5vdyB0aGUgY29kZSByZXN0cmljdHMgaXQgdG8gdGhlIGN1cnJlbnQgY3B1c2V0JiMzOTtzIGFsbG93ZWQgbWVtb3J5IG5vZGVzLiBUaGlzIGxvb2tzIGxpa2UgYSBjb25zdHJhaW50IHRvIHJlZHVjZSBtZW1vcnkgYWxsb2NhdGlvbiBmb290cHJpbnQuCgpJbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCwgdGhlIHBhdGNoIGFkZHMgYSBgbm9kZV9pc3NldGAgY2hlY2sgYWdhaW5zdCBgbm9kZW1hc2tgIGJlZm9yZSBhbGxvY2F0aW5nIGZyb20gYGh1Z2V0bGJfY21hW25pZF1gLiBUaGlzIGlzIGFub3RoZXIgdGFyZ2V0ZWQgcmVzdHJpY3Rpb24sIHRoaXMgdGltZSBlbnN1cmluZyB0aGF0IG9ubHkgYWxsb3dlZCBub2RlcyBhcmUgdXNlZCBmb3IgYWxsb2NhdGlvbi4KClRoaXMgaXMgY2xlYXJseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgaHVnZXRsYiBhbmQgaHVnZXRsYl9jbWEgbWVtb3J5IGFsbG9jYXRpb24gcGF0aHMuIEl0JiMzOTtzIHRpZ2h0ZW5pbmcgdGhlIG5vZGUgbWFzayBjb25zdHJhaW50cy4gU2luY2UgdGhpcyBpbnZvbHZlcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCB0aGlzIGFic29sdXRlbHkgd2FycmFudHMgZnV6emluZy4KCk15IHByaW1hcnkgZm9jdXMgcG9pbnRzIGhlcmUgYXJlIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBhbmQgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AsIGJ1dCBJIHNob3VsZCBjaGVjayB0aGUgY2FsbGVycyBvZiB0aG9zZSBmdW5jdGlvbnMgdG9vLiBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgaXMgc3RhdGljLiBBbHJpZ2h0LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgY2FsbHM6IGBhbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW9gLCBgYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvYCwgYW5kIGBhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb2AuCgpgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBpcyBjYWxsZWQgYnkgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2AuIE9rYXksIGxldCYjMzk7cyBpbmNsdWRlIHRob3NlLgoKVGhlcmVmb3JlLCB0aGUgcmV2aXNlZCBmb2N1cyBzeW1ib2xzIGFyZToKKiAgIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYAoqICAgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AKKiAgIGBhbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW9gCiogICBgYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvYAoqICAgYGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvYAoqICAgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2AKCkFuZCB0aGUgY29uZmlncyB0byBlbmFibGU6CiogICBgSFVHRVRMQkZTYAoqICAgYENNQWAKCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayByZWFjaGFiaWxpdHkuIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBpcyBpbmRlZWQgY2FsbGVkIGJ5IGBhbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW9gLCBgYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvYCwgYW5kIGBhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb2AsIGFuZCB0aG9zZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBieSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgYW5kIG1pZ3JhdGlvbiBhbmQgaXNvbGF0aW9uIGNvZGUgcmVzcGVjdGl2ZWx5LiBBbHNvLCBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBpcyBjYWxsZWQgYnkgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2Agd2hpY2ggaXMgY2FsbGVkIGJ5IGBhbGxvY19wb29sX2h1Z2VfZm9saW9gLiBZdXAsIHRoZXkmIzM5O3JlIGFsbCByZWFjaGFibGUuCgpUaGVyZWZvcmUsIGl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gVGhlIHBhdGNoIHJlc3RyaWN0cyBtZW1vcnkgYWxsb2NhdGlvbiB0byBzcGVjaWZpYyBub2RlcyBkZXRlcm1pbmVkIGJ5IGNwdXNldCBjb25maWd1cmF0aW9uIGFuZCBpbnRyb2R1Y2VzIG5vZGUgbWFzayBjaGVja3MuIFRoZXNlIGNoYW5nZXMgYXJlIGNydWNpYWwgZm9yIG1lbW9yeSBhbGxvY2F0aW9uIGNvcnJlY3RuZXNzLCBhbmQgY2FuIGJlIGNoZWNrZWQgd2l0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SFVHRVRMQkZTJiMzNDssCiAgICAmIzM0O0NNQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7aHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX3N1cnBsdXNfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19taWdyYXRlX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7YWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7YWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBub2RlIG1hc2sgaGFuZGxpbmcgaW4gaHVnZXRsYiBhbmQgaHVnZXRsYl9jbWEgYWxsb2NhdGlvbiBwYXRocy4gSXQgcmVzdHJpY3RzIGFsbG9jYXRpb25zIHRvIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIHdoZW4gYG5tYXNrYCBpcyBOVUxMIGFuZCBhZGRzIGEgYG5vZGVfaXNzZXRgIGNoZWNrIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtDTUEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2h1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyYjMzQ7LAogICAgJiMzNDthbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW8mIzM0OywKICAgICYjMzQ7YWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvJiMzNDssCiAgICAmIzM0O2FsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbm9kZSBtYXNrIGhhbmRsaW5nIGluIGh1Z2V0bGIgYW5kIGh1Z2V0bGJfY21hIGFsbG9jYXRpb24gcGF0aHMuIEl0IHJlc3RyaWN0cyBhbGxvY2F0aW9ucyB0byBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIGBubWFza2AgaXMgTlVMTCBhbmQgYWRkcyBhIGBub2RlX2lzc2V0YCBjaGVjayBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6MDg6NTIuMjgxNjI3Njk0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxOTk2NDI4MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFVHRVRMQkZTXCIsXG4gICAgXCJDTUFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9cIixcbiAgICBcImFsbG9jX3N1cnBsdXNfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5vZGUgbWFzayBoYW5kbGluZyBpbiBodWdldGxiIGFuZCBodWdldGxiX2NtYSBhbGxvY2F0aW9uIHBhdGhzLiBJdCByZXN0cmljdHMgYWxsb2NhdGlvbnMgdG8gYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiBgbm1hc2tgIGlzIE5VTEwgYW5kIGFkZHMgYSBgbm9kZV9pc3NldGAgY2hlY2sgaW4gYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6MDg6NTIuMjgxNjMyNzI0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTExMTU2MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZjdjNDlmODI5ZTkwN2FhZWUyMGUwNzBiYjk1YzM2MzkxNGMyNTY1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDUgMTg6MDg6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jXFxuaW5kZXggNTcxMjEyYjgwODM1ZWMuLmVlNjdlYTI5YzAwMzUxIDEwMDY0NFxcbi0tLSBhL21tL2h1Z2V0bGIuY1xcbisrKyBiL21tL2h1Z2V0bGIuY1xcbkBAIC0xODY0LDYgKzE4NjQsMTggQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbiBcXHRcXHRnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2spXFxuIHtcXG4gXFx0c3RydWN0IGZvbGlvICpmb2xpbztcXG4rXFx0bm9kZW1hc2tfdCBsb2NhbF9ub2RlX21hc2s7XFxuK1xcbitcXHRpZiAoIW5tYXNrKSB7XFxuK1xcdFxcdHVuc2lnbmVkIGludCBjcHVzZXRfbWVtc19jb29raWU7XFxuK1xcbitcXHRcXHRkbyB7XFxuK1xcdFxcdFxcdGNwdXNldF9tZW1zX2Nvb2tpZSA9IHJlYWRfbWVtc19hbGxvd2VkX2JlZ2luKCk7XFxuK1xcdFxcdFxcdGxvY2FsX25vZGVfbWFzayA9IGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZDtcXG4rXFx0XFx0fSB3aGlsZSAocmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoY3B1c2V0X21lbXNfY29va2llKSk7XFxuK1xcbitcXHRcXHRubWFzayA9IFxcdTAwMjZsb2NhbF9ub2RlX21hc2s7XFxuK1xcdH1cXG4gXFxuIFxcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrLCBOVUxMKTtcXG4gXFx0aWYgKGZvbGlvKVxcbmRpZmYgLS1naXQgYS9tbS9odWdldGxiX2NtYS5jIGIvbW0vaHVnZXRsYl9jbWEuY1xcbmluZGV4IDM5MzQ0ZDZjNzhkODRlLi43OWRiZDBiYWFmYTNlNCAxMDA2NDRcXG4tLS0gYS9tbS9odWdldGxiX2NtYS5jXFxuKysrIGIvbW0vaHVnZXRsYl9jbWEuY1xcbkBAIC0zNCw3ICszNCw3IEBAIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuIFxcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbi1cXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSlcXG4rXFx0aWYgKGh1Z2V0bGJfY21hW25pZF0gXFx1MDAyNlxcdTAwMjYgbm9kZV9pc3NldChuaWQsICpub2RlbWFzaykpXFxuIFxcdFxcdHBhZ2UgPSBjbWFfYWxsb2NfZnJvemVuX2NvbXBvdW5kKGh1Z2V0bGJfY21hW25pZF0sIG9yZGVyKTtcXG4gXFxuIFxcdGlmICghcGFnZSBcXHUwMDI2XFx1MDAyNiAhKGdmcF9tYXNrIFxcdTAwMjYgX19HRlBfVEhJU05PREUpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjA4OjUyLjU5MzQzMDgzMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4ODc4Mjk3NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFVHRVRMQkZTXCIsXG4gICAgXCJDTUFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9cIixcbiAgICBcImFsbG9jX3N1cnBsdXNfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfZ2lnYW50aWNfZnJvemVuX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5vZGUgbWFzayBoYW5kbGluZyBpbiBodWdldGxiIGFuZCBodWdldGxiX2NtYSBhbGxvY2F0aW9uIHBhdGhzLiBJdCByZXN0cmljdHMgYWxsb2NhdGlvbnMgdG8gYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiBgbm1hc2tgIGlzIE5VTEwgYW5kIGFkZHMgYSBgbm9kZV9pc3NldGAgY2hlY2sgaW4gYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ZjdjNDlmODI5ZTkwN2FhZWUyMGUwNzBiYjk1YzM2MzkxNGMyNTY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgNSAxODowODo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuY1xuaW5kZXggNTcxMjEyYjgwODM1ZWMuLmVlNjdlYTI5YzAwMzUxIDEwMDY0NFxuLS0tIGEvbW0vaHVnZXRsYi5jXG4rKysgYi9tbS9odWdldGxiLmNcbkBAIC0xODY0LDYgKzE4NjQsMTggQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxuIFx0XHRnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2spXG4ge1xuIFx0c3RydWN0IGZvbGlvICpmb2xpbztcbitcdG5vZGVtYXNrX3QgbG9jYWxfbm9kZV9tYXNrO1xuK1xuK1x0aWYgKCFubWFzaykge1xuK1x0XHR1bnNpZ25lZCBpbnQgY3B1c2V0X21lbXNfY29va2llO1xuK1xuK1x0XHRkbyB7XG4rXHRcdFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcbitcdFx0XHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XG4rXHRcdH0gd2hpbGUgKHJlYWRfbWVtc19hbGxvd2VkX3JldHJ5KGNwdXNldF9tZW1zX2Nvb2tpZSkpO1xuK1xuK1x0XHRubWFzayA9IFx1MDAyNmxvY2FsX25vZGVfbWFzaztcbitcdH1cbiBcbiBcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrLCBOVUxMKTtcbiBcdGlmIChmb2xpbylcbmRpZmYgLS1naXQgYS9tbS9odWdldGxiX2NtYS5jIGIvbW0vaHVnZXRsYl9jbWEuY1xuaW5kZXggMzkzNDRkNmM3OGQ4NGUuLjc5ZGJkMGJhYWZhM2U0IDEwMDY0NFxuLS0tIGEvbW0vaHVnZXRsYl9jbWEuY1xuKysrIGIvbW0vaHVnZXRsYl9jbWEuY1xuQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcbiBcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSlcbitcdGlmIChodWdldGxiX2NtYVtuaWRdIFx1MDAyNlx1MDAyNiBub2RlX2lzc2V0KG5pZCwgKm5vZGVtYXNrKSlcbiBcdFx0cGFnZSA9IGNtYV9hbGxvY19mcm96ZW5fY29tcG91bmQoaHVnZXRsYl9jbWFbbmlkXSwgb3JkZXIpO1xuIFxuIFx0aWYgKCFwYWdlIFx1MDAyNlx1MDAyNiAhKGdmcF9tYXNrIFx1MDAyNiBfX0dGUF9USElTTk9ERSkpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjA4OjUyLjU5MzQzMjQyMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MzY4OTc3OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIdWdldGxiIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgSHVnZVRMQiBjb2RlLCBzcGVjaWZpY2FsbHkgaW4gYG1tL2h1Z2V0bGIuY2AgYW5kIGBtbS9odWdldGxiX2NtYS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gVGhlIGNoYW5nZSBpbiBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgdXNpbmcgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAgd2hlbiBgbm1hc2tgIGlzIE5VTEwgaXMgaW50ZXJlc3RpbmcuIEl0IHNvdW5kcyBsaWtlIHdlJ3JlIGR5bmFtaWNhbGx5IG1hbmFnaW5nIG1lbW9yeSBhbGxvY2F0aW9uIGJhc2VkIG9uIENQVSBzZXRzLCB3aGljaCBjb3VsZCBiZSBhbiBpbXBvcnRhbnQgb3B0aW1pemF0aW9uIG9yIGNvbnN0cmFpbnQuIFRoZW4sIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLCB0aGV5IGFkZGVkIGEgbm9kZSBjaGVjayBiZWZvcmUgY2FsbGluZyBgY21hX2FsbG9jX2Zyb3plbl9jb21wb3VuZGAuIFRoYXQncyBhIHNwYXRpYWwgY29uc2lkZXJhdGlvbiwgc28gaXQncyBsaWtlbHkgcmVsYXRlZCB0byBOVU1BIGNvbmZpZ3VyYXRpb25zIG9yIG1lbW9yeSBwbGFjZW1lbnQgcG9saWN5LCBtYWtpbmcgc3VyZSB0byBhbGxvY2F0ZSBmcm9tIGFsbG93ZWQgbm9kZXMuXG5cbkkgbmVlZCB0byBxdWlja2x5IGZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBhZmZlY3RlZCBmdW5jdGlvbnMgLSBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgaW4gYG1tL2h1Z2V0bGIuY2AgYW5kIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gIGluIGBtbS9odWdldGxiX2NtYS5jYC4gSSBoYXZlIHRvIGdyYXNwIHRoZSBpbnRlbnQgb2YgdGhlIGNoYW5nZXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBjb2RlIGJhc2UuXG5cbkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCdzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkuIEknbGwgbmVlZCBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIHRoYXQncyBhIGdpdmVuLiBJJ20gYXNzdW1pbmcgYENPTkZJR19DTUFgIGlzIGFsc28gbmVjZXNzYXJ5LiBXaGF0IGFib3V0IGBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBgPyBJdOKAmXMgbm90IGNsZWFyLCBidXQgaXQgY291bGQgYmUgcmVsZXZhbnQsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLlxuXG5BbHJpZ2h0LCBJJ2xsIHVzZSBgZ3JlcGAgdG8gcXVpY2tseSBsb2NhdGUgYWxsIHJlZmVyZW5jZXMgdG8gYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgYW5kIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBhY3Jvc3MgdGhlIGNvZGUgYmFzZSB0byBoZWxwIGNvbnRleHR1YWxpemUgdGhlc2UgY2hhbmdlcy4gVW5kZXJzdGFuZGluZyB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIGlzIGtleSB0byBzZWVpbmcgdGhlIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE4MywiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjA4OjU4LjIzMDMzMjQ0OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQ2NzM4MjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTE3OTE9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfYnVkZHlfZnJvemVuX2ZvbGlvKGludCBvcmRlciwgZ2ZwX3QgZ2ZwX21hc2ssXFxuLS1cXG5tbS9odWdldGxiLmMtMTgzNS1cXG5tbS9odWdldGxiLmM6MTgzNjpzdGF0aWMgc3RydWN0IGZvbGlvICpvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcXG5tbS9odWdldGxiLmMtMTgzNy1cXHRcXHRnZnBfdCBnZnBfbWFzaywgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm1hc2ssXFxuLS1cXG5tbS9odWdldGxiLmMtMTg2Mi0gKi9cXG5tbS9odWdldGxiLmM6MTg2MzpzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxubW0vaHVnZXRsYi5jLTE4NjQtXFx0XFx0Z2ZwX3QgZ2ZwX21hc2ssIGludCBuaWQsIG5vZGVtYXNrX3QgKm5tYXNrKVxcbi0tXFxubW0vaHVnZXRsYi5jLTE4NzktXFxubW0vaHVnZXRsYi5jOjE4ODA6XFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCwgbm1hc2ssIE5VTEwpO1xcbm1tL2h1Z2V0bGIuYy0xODgxLVxcdGlmIChmb2xpbylcXG4tLVxcbm1tL2h1Z2V0bGIuYz0xOTA4PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX3Bvb2xfaHVnZV9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE5MTgtXFxubW0vaHVnZXRsYi5jOjE5MTk6XFx0XFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5vZGUsXFxubW0vaHVnZXRsYi5jLTE5MjAtXFx0XFx0XFx0XFx0XFx0bm9kZXNfYWxsb3dlZCwgbm9kZV9hbGxvY19ub3JldHJ5KTtcXG4tLVxcbm1tL2h1Z2V0bGIuYz0yMDg4PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX3N1cnBsdXNfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTIxMDAtXFxubW0vaHVnZXRsYi5jOjIxMDE6XFx0Zm9saW8gPSBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrKTtcXG5tbS9odWdldGxiLmMtMjEwMi1cXHRpZiAoIWZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jPTIxMzY9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsIGdmcF90IGdmcF9tYXNrLFxcbi0tXFxubW0vaHVnZXRsYi5jLTIxNDMtXFxubW0vaHVnZXRsYi5jOjIxNDQ6XFx0Zm9saW8gPSBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsIG5tYXNrKTtcXG5tbS9odWdldGxiLmMtMjE0NS1cXHRpZiAoIWZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jPTI2NTM9c3RhdGljIGludCBhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgZm9saW8gKm9sZF9mb2xpbyxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0yNjk4LVxcdFxcdFxcdGdmcF9tYXNrID0gaHRsYl9hbGxvY19tYXNrKGgpIHwgX19HRlBfVEhJU05PREU7XFxubW0vaHVnZXRsYi5jOjI2OTk6XFx0XFx0XFx0bmV3X2ZvbGlvID0gYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhoLCBnZnBfbWFzayxcXG5tbS9odWdldGxiLmMtMjcwMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBuaWQsIE5VTEwpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTMzODQ9c3RhdGljIHZvaWQgX19pbml0IGh1Z2V0bGJfaHN0YXRlX2FsbG9jX3BhZ2VzX29uZW5vZGUoc3RydWN0IGhzdGF0ZSAqaCwgaW50IG5pZClcXG4tLVxcbm1tL2h1Z2V0bGIuYy0zMzk3LVxcbm1tL2h1Z2V0bGIuYzozMzk4OlxcdFxcdFxcdGZvbGlvID0gb25seV9hbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvKGgsIGdmcF9tYXNrLCBuaWQsXFxubW0vaHVnZXRsYi5jLTMzOTktXFx0XFx0XFx0XFx0XFx0XFx1MDAyNm5vZGVfc3RhdGVzW05fTUVNT1JZXSwgTlVMTCk7XFxuLS1cXG5tbS9odWdldGxiLmMtMzQwMy1cXHRcXHRcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2Zm9saW9fbGlzdCk7XFxubW0vaHVnZXRsYi5jOjM0MDQ6XFx0XFx0XFx0XFx0Zm9saW8gPSBvbmx5X2FsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW8oaCwgZ2ZwX21hc2ssIG5pZCxcXG5tbS9odWdldGxiLmMtMzQwNS1cXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2bm9kZV9zdGF0ZXNbTl9NRU1PUlldLCBOVUxMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6MDk6MDAuMzc3MDc0MjExWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzcwMzUxMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2h1Z2V0bGIuYz0xMzYwPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxcbi0tXFxubW0vaHVnZXRsYi5jLTEzNjQtXFxubW0vaHVnZXRsYi5jOjEzNjU6XFx0Zm9saW8gPSBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8ob3JkZXIsIGdmcF9tYXNrLCBuaWQsIG5vZGVtYXNrKTtcXG5tbS9odWdldGxiLmMtMTM2Ni1cXHRpZiAoZm9saW8pXFxuLS1cXG5tbS9odWdldGxiX2NtYS5jPTIxPXZvaWQgaHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtMjYtXFxubW0vaHVnZXRsYl9jbWEuYzoyNzpzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxcbm1tL2h1Z2V0bGJfY21hLmMtMjgtXFx0XFx0aW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spXFxuLS1cXG5tbS9odWdldGxiX2NtYS5oPTY9dm9pZCBodWdldGxiX2NtYV9mcmVlX2Zyb3plbl9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG5tbS9odWdldGxiX2NtYS5oOjc6c3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG5tbS9odWdldGxiX2NtYS5oLTgtXFx0XFx0XFx0XFx0ICAgICAgaW50IG5pZCwgbm9kZW1hc2tfdCAqbm9kZW1hc2spO1xcbi0tXFxubW0vaHVnZXRsYl9jbWEuaD0xNj1zdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmgtMTktXFxubW0vaHVnZXRsYl9jbWEuaDoyMDpzdGF0aWMgaW5saW5lIHN0cnVjdCBmb2xpbyAqaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKGludCBvcmRlcixcXG5tbS9odWdldGxiX2NtYS5oLTIxLVxcdFxcdGdmcF90IGdmcF9tYXNrLFxcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODowOTowMi4zMTQxMTY0NzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjg3ODg5Mjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQWxsb2NhdGlvbiBQYXRocyBmb3IgSHVnZSBQYWdlcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGFuZCBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIHRoYXQgdGVsbHMgbWUgd2UncmUgbG9va2luZyBhdCBjb3JlIGFsbG9jYXRpb24gZnVuY3Rpb25zIGZvciBIdWdlIFBhZ2VzLiBJdCdzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgcGF0aHMgaGVyZS4gYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGxvb2tzIGxpa2UgdGhlIG1vcmUgZ2VuZXJhbC1wdXJwb3NlIGFsbG9jYXRvciwgYW5kIGl0J3MgY2FsbGVkIGJ5IGBhbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW9gLCBgYWxsb2NfbWlncmF0ZV9odWdldGxiX2ZvbGlvYCwgYW5kIGBhbGxvY19hbmRfZGlzc29sdmVfaHVnZXRsYl9mb2xpb2AuIFRoYXQgbWFrZXMgc2Vuc2U7IHRob3NlIGZ1bmN0aW9ucyBwcm9iYWJseSBoYW5kbGUgc3BlY2lmaWMgZWRnZSBjYXNlczogc3VycGx1cyBwYWdlcywgbWlncmF0aW9uLCBhbmQgcGFnZSBkaXNzb2x1dGlvbiwgcmVzcGVjdGl2ZWx5LiBPbiB0aGUgb3RoZXIgaGFuZCwgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgaXMgb25seSBjYWxsZWQgYnkgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2AuIFRoaXMgc3VnZ2VzdHMgaXQncyByZWxhdGVkIHRvIENNQSAoQ29udGlndW91cyBNZW1vcnkgQWxsb2NhdG9yKSBhbGxvY2F0aW9ucyBmb3IgZ2lnYW50aWMgcGFnZXMsIGxpa2VseSB3aGVyZSB0aGUgcGFnZXMgaGF2ZSBiZWVuIHByZS1mcm96ZW4gaW4gcGxhY2UsIG1heWJlIGR1cmluZyBib290IG9yIHN5c3RlbSBpbml0LiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBhbGxvY2F0aW9uIGZsb3cuXG5cbkdpdmVuIHRoZSBDTUEgaW52b2x2ZW1lbnQsIEkgc2hvdWxkIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiB0byBzZWUgaG93IGBodWdldGxiX2NtYS5jYCBpcyBlbmFibGVkLiBJdCdzIHByb2JhYmx5IGNvbmRpdGlvbmFsLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgbW0vS2NvbmZpZ2Agb3IgcG9zc2libHkgZXZlbiBgbW0vTWFrZWZpbGVgIHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0cmlnZ2VyIHRoZSBjb21waWxhdGlvbiBvZiB0aGF0IG1vZHVsZS4gVGhhdCB3aWxsIGdpdmUgbWUgaW1tZWRpYXRlIGNvbnRleHQgYXJvdW5kIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgcHJlcmVxdWlzaXRlcyB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2ggZnVsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MTMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjA5OjA2LjYwMjAwNzc3OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU1MTI1MDkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh1Z2V0bGJfY21hXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0PTk1PUtlcm5lbCBwYXJhbWV0ZXJzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dC0yMDYzLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjIwNjQ6XFx0aHVnZXRsYl9jbWE9XFx0W0hXLENNQSxFQVJMWV0gVGhlIHNpemUgb2YgYSBDTUEgYXJlYSB1c2VkIGZvciBhbGxvY2F0aW9uXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA2NS1cXHRcXHRcXHRvZiBnaWdhbnRpYyBodWdlcGFnZXMuIE9yIHVzaW5nIG5vZGUgZm9ybWF0LCB0aGUgc2l6ZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA3Ny1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dDoyMDc4OlxcdGh1Z2V0bGJfY21hX29ubHk9XFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA3OS1cXHRcXHRcXHRbSFcsQ01BLEVBUkxZXSBXaGVuIGFsbG9jYXRpbmcgbmV3IEh1Z2VUTEIgcGFnZXMsIG9ubHlcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0LTIwODEtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQ6MjA4MjpcXHRcXHRcXHRUaGlzIG9wdGlvbiBkb2VzIG5vdGhpbmcgaWYgaHVnZXRsYl9jbWE9IGlzIG5vdCBhbHNvXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA4My1cXHRcXHRcXHRzcGVjaWZpZWQuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvY3hsL2xpbnV4L2Vhcmx5LWJvb3QucnN0PTEyNj1vbiBOVU1BIG5vZGVzIHRoYXQgYXJlIG5vdCBvbmxpbmUgZHVyaW5nIGVhcmx5IGJvb3QuIDo6XFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2N4bC9saW51eC9lYXJseS1ib290LnJzdC0xMjctXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2N4bC9saW51eC9lYXJseS1ib290LnJzdDoxMjg6ICB2b2lkIF9faW5pdCBodWdldGxiX2NtYV9yZXNlcnZlKHZvaWQpIHtcXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvY3hsL2xpbnV4L2Vhcmx5LWJvb3QucnN0LTEyOS0gICAgaWYgKCFub2RlX29ubGluZShuaWQpKVxcbi0tXFxuTUFJTlRBSU5FUlM9MTIwMTg9RjpcXHRtbS9odWdldGxiX2Nncm91cC5jXFxuTUFJTlRBSU5FUlM6MTIwMTk6RjpcXHRtbS9odWdldGxiX2NtYS5jXFxuTUFJTlRBSU5FUlM6MTIwMjA6RjpcXHRtbS9odWdldGxiX2NtYS5oXFxuTUFJTlRBSU5FUlMtMTIwMjEtRjpcXHRtbS9odWdldGxiX3N5c2N0bC5jXFxuLS1cXG5hcmNoL2FybTY0L21tL2h1Z2V0bGJwYWdlLmMtMzgtI2lmZGVmIENPTkZJR19DTUFcXG5hcmNoL2FybTY0L21tL2h1Z2V0bGJwYWdlLmM6Mzk6dW5zaWduZWQgaW50IGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIodm9pZClcXG5hcmNoL2FybTY0L21tL2h1Z2V0bGJwYWdlLmMtNDAte1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2h1Z2V0bGJwYWdlLmM9MjAxPWFyY2hfaW5pdGNhbGwoaHVnZXRsYnBhZ2VfaW5pdCk7XFxuYXJjaC9wb3dlcnBjL21tL2h1Z2V0bGJwYWdlLmMtMjAyLVxcbmFyY2gvcG93ZXJwYy9tbS9odWdldGxicGFnZS5jOjIwMzp1bnNpZ25lZCBpbnQgX19pbml0IGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIodm9pZClcXG5hcmNoL3Bvd2VycGMvbW0vaHVnZXRsYnBhZ2UuYy0yMDQte1xcbi0tXFxuYXJjaC9yaXNjdi9tbS9odWdldGxicGFnZS5jPTQ0OD1hcmNoX2luaXRjYWxsKGdpZ2FudGljX3BhZ2VzX2luaXQpO1xcbi0tXFxuYXJjaC9yaXNjdi9tbS9odWdldGxicGFnZS5jLTQ1MC1cXG5hcmNoL3Jpc2N2L21tL2h1Z2V0bGJwYWdlLmM6NDUxOnVuc2lnbmVkIGludCBfX2luaXQgYXJjaF9odWdldGxiX2NtYV9vcmRlcih2b2lkKVxcbmFyY2gvcmlzY3YvbW0vaHVnZXRsYnBhZ2UuYy00NTIte1xcbi0tXFxuYXJjaC9zMzkwL21tL2h1Z2V0bGJwYWdlLmM9MjI1PWJvb2wgX19pbml0IGFyY2hfaHVnZXRsYl92YWxpZF9zaXplKHVuc2lnbmVkIGxvbmcgc2l6ZSlcXG4tLVxcbmFyY2gvczM5MC9tbS9odWdldGxicGFnZS5jLTIzNC1cXG5hcmNoL3MzOTAvbW0vaHVnZXRsYnBhZ2UuYzoyMzU6dW5zaWduZWQgaW50IF9faW5pdCBhcmNoX2h1Z2V0bGJfY21hX29yZGVyKHZvaWQpXFxuYXJjaC9zMzkwL21tL2h1Z2V0bGJwYWdlLmMtMjM2LXtcXG4tLVxcbmFyY2gveDg2L21tL2h1Z2V0bGJwYWdlLmM9NDI9YXJjaF9pbml0Y2FsbChnaWdhbnRpY19wYWdlc19pbml0KTtcXG4tLVxcbmFyY2gveDg2L21tL2h1Z2V0bGJwYWdlLmMtNDUtXFxuYXJjaC94ODYvbW0vaHVnZXRsYnBhZ2UuYzo0Njp1bnNpZ25lZCBpbnQgX19pbml0IGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIodm9pZClcXG5hcmNoL3g4Ni9tbS9odWdldGxicGFnZS5jLTQ3LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oPTI3Nj12b2lkIGh1Z2V0bGJfc3BsaXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcik7XFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMjc3LVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjI3ODp1bnNpZ25lZCBpbnQgYXJjaF9odWdldGxiX2NtYV9vcmRlcih2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0yNzktXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaD0xMjk4PXN0YXRpYyBpbmxpbmUgc3BpbmxvY2tfdCAqaHVnZV9wdGVfbG9jayhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMTMwOC0jaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19DTUEpXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MTMwOTpleHRlcm4gdm9pZCBfX2luaXQgaHVnZXRsYl9jbWFfcmVzZXJ2ZSh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0xMzEwLSNlbHNlXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MTMxMTpzdGF0aWMgaW5saW5lIF9faW5pdCB2b2lkIGh1Z2V0bGJfY21hX3Jlc2VydmUodm9pZClcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0xMzEyLXtcXG4tLVxcbm1tL01ha2VmaWxlPTgyPWlmZGVmIENPTkZJR19DTUFcXG5tbS9NYWtlZmlsZTo4MzpvYmotJChDT05GSUdfSFVHRVRMQkZTKVxcdCs9IGh1Z2V0bGJfY21hLm9cXG5tbS9NYWtlZmlsZS04NC1lbmRpZlxcbi0tXFxubW0vY21hLmg9OD1zdHJ1Y3QgY21hX2tvYmplY3Qge1xcbi0tXFxubW0vY21hLmgtMTQtICogTXVsdGktcmFuZ2Ugc3VwcG9ydC4gVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHRoZSBzaXplIG9mIHRoZSBhbGxvY2F0aW9uXFxubW0vY21hLmg6MTU6ICogaXMgbm90IGV4cGVjdGVkIHRvIGJlIGxhcmdlciB0aGFuIHRoZSBhbGlnbm1lbnQgKGxpa2Ugd2l0aCBodWdldGxiX2NtYSksXFxubW0vY21hLmgtMTYtICogYW5kIHRoZSB0b3RhbCBhbW91bnQgb2YgbWVtb3J5IHJlcXVlc3RlZCwgd2hpbGUgc21hbGxlciB0aGFuIHRoZSB0b3RhbFxcbi0tXFxubW0vaHVnZXRsYi5jLTUwLSNpbmNsdWRlIFxcXCJodWdldGxiX3ZtZW1tYXAuaFxcXCJcXG5tbS9odWdldGxiLmM6NTE6I2luY2x1ZGUgXFxcImh1Z2V0bGJfY21hLmhcXFwiXFxubW0vaHVnZXRsYi5jLTUyLSNpbmNsdWRlIFxcXCJodWdldGxiX2ludGVybmFsLmhcXFwiXFxuLS1cXG5tbS9odWdldGxiLmM9MTM2MD1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0xMzY0LVxcbm1tL2h1Z2V0bGIuYzoxMzY1OlxcdGZvbGlvID0gaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvKG9yZGVyLCBnZnBfbWFzaywgbmlkLCBub2RlbWFzayk7XFxubW0vaHVnZXRsYi5jLTEzNjYtXFx0aWYgKGZvbGlvKVxcbi0tXFxubW0vaHVnZXRsYi5jLTEzNjgtXFxubW0vaHVnZXRsYi5jOjEzNjk6XFx0aWYgKGh1Z2V0bGJfY21hX2V4Y2x1c2l2ZV9hbGxvYygpKVxcbm1tL2h1Z2V0bGIuYy0xMzcwLVxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxubW0vaHVnZXRsYi5jPTE0NTg9c3RhdGljIHZvaWQgX191cGRhdGVfYW5kX2ZyZWVfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE1MDctXFx0Vk1fQlVHX09OX0ZPTElPKGZvbGlvX3JlZl9jb3VudChmb2xpbyksIGZvbGlvKTtcXG5tbS9odWdldGxiLmM6MTUwODpcXHRpZiAoZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpXFxubW0vaHVnZXRsYi5jOjE1MDk6XFx0XFx0aHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oZm9saW8pO1xcbm1tL2h1Z2V0bGIuYy0xNTEwLVxcdGVsc2VcXG4tLVxcbm1tL2h1Z2V0bGIuYz0zMDQwPXN0YXRpYyBfX2luaXQgdm9pZCAqYWxsb2NfYm9vdG1lbShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgbmlkLCBib29sIG5vZGVfZXhhY3QpXFxuLS1cXG5tbS9odWdldGxiLmMtMzA0NS1cXHRpZiAoaHVnZXRsYl9lYXJseV9jbWEoaCkpXFxubW0vaHVnZXRsYi5jOjMwNDY6XFx0XFx0bSA9IGh1Z2V0bGJfY21hX2FsbG9jX2Jvb3RtZW0oaCwgXFx1MDAyNmxpc3Rub2RlLCBub2RlX2V4YWN0KTtcXG5tbS9odWdldGxiLmMtMzA0Ny1cXHRlbHNlIHtcXG4tLVxcbm1tL2h1Z2V0bGIuYz0zMTkyPXN0YXRpYyB2b2lkIF9faW5pdCBodWdldGxiX2Jvb3RtZW1faW5pdF9taWdyYXRldHlwZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vaHVnZXRsYi5jLTMxOTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3BhZ2VzOyBpICs9IHBhZ2VibG9ja19ucl9wYWdlcykge1xcbm1tL2h1Z2V0bGIuYzozMjAwOlxcdFxcdGlmIChmb2xpb190ZXN0X2h1Z2V0bGJfY21hKGZvbGlvKSlcXG5tbS9odWdldGxiLmMtMzIwMS1cXHRcXHRcXHRpbml0X2NtYV9wYWdlYmxvY2soZm9saW9fcGFnZShmb2xpbywgaSkpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTMyOTM9c3RhdGljIHZvaWQgX19pbml0IGdhdGhlcl9ib290bWVtX3ByZWFsbG9jX25vZGUodW5zaWduZWQgbG9uZyBuaWQpXFxuLS1cXG5tbS9odWdldGxiLmMtMzMzOC1cXHRcXHRpZiAoaHVnZXRsYl9ib290bWVtX3BhZ2VfZWFybHljbWEobSkpXFxubW0vaHVnZXRsYi5jOjMzMzk6XFx0XFx0XFx0Zm9saW9fc2V0X2h1Z2V0bGJfY21hKGZvbGlvKTtcXG5tbS9odWdldGxiLmMtMzM0MC1cXG4tLVxcbm1tL2h1Z2V0bGIuYy0zMzUwLVxcdFxcdCAqL1xcbm1tL2h1Z2V0bGIuYzozMzUxOlxcdFxcdGlmICghZm9saW9fdGVzdF9odWdldGxiX2NtYShmb2xpbykpXFxubW0vaHVnZXRsYi5jLTMzNTItXFx0XFx0XFx0YWRqdXN0X21hbmFnZWRfcGFnZV9jb3VudChwYWdlLCBwYWdlc19wZXJfaHVnZV9wYWdlKGgpKTtcXG4tLVxcbm1tL2h1Z2V0bGIuYz0zNTc3PXN0YXRpYyB2b2lkIF9faW5pdCBodWdldGxiX2hzdGF0ZV9hbGxvY19wYWdlcyhzdHJ1Y3QgaHN0YXRlICpoKVxcbi0tXFxubW0vaHVnZXRsYi5jLTM1ODQtXFx0ICovXFxubW0vaHVnZXRsYi5jOjM1ODU6XFx0aWYgKGhzdGF0ZV9pc19naWdhbnRpYyhoKSBcXHUwMDI2XFx1MDAyNiBodWdldGxiX2NtYV90b3RhbF9zaXplKCkgXFx1MDAyNlxcdTAwMjZcXG5tbS9odWdldGxiLmMtMzU4Ni1cXHQgICAgIWh1Z2V0bGJfZWFybHlfY21hKGgpKSB7XFxubW0vaHVnZXRsYi5jOjM1ODc6XFx0XFx0cHJfd2Fybl9vbmNlKFxcXCJIdWdlVExCOiBodWdldGxiX2NtYSBpcyBlbmFibGVkLCBza2lwIGJvb3QgdGltZSBhbGxvY2F0aW9uXFxcXG5cXFwiKTtcXG5tbS9odWdldGxiLmMtMzU4OC1cXHRcXHRyZXR1cm47XFxuLS1cXG5tbS9odWdldGxiLmM9MzYwNz1zdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9pbml0X2hzdGF0ZXModm9pZClcXG4tLVxcbm1tL2h1Z2V0bGIuYy0zNjM0LVxcdFxcdFxcdGNvbnRpbnVlO1xcbm1tL2h1Z2V0bGIuYzozNjM1OlxcdFxcdGlmIChodWdldGxiX2NtYV90b3RhbF9zaXplKCkgXFx1MDAyNlxcdTAwMjYgaC1cXHUwMDNlb3JkZXIgXFx1MDAzYz0gSFVHRVRMQl9QQUdFX09SREVSKVxcbm1tL2h1Z2V0bGIuYy0zNjM2LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubW0vaHVnZXRsYi5jPTM5MzE9c3RhdGljIGxvbmcgZGVtb3RlX2ZyZWVfaHVnZXRsYl9mb2xpb3Moc3RydWN0IGhzdGF0ZSAqc3JjLCBzdHJ1Y3QgaHN0YXRlICpkc3QsXFxuLS1cXG5tbS9odWdldGxiLmMtMzk1OC1cXG5tbS9odWdldGxiLmM6Mzk1OTpcXHRcXHRjbWEgPSBmb2xpb190ZXN0X2h1Z2V0bGJfY21hKGZvbGlvKTtcXG5tbS9odWdldGxiLmMtMzk2MC1cXG4tLVxcbm1tL2h1Z2V0bGIuYy0zOTc3LVxcdFxcdFxcdGlmIChjbWEpXFxubW0vaHVnZXRsYi5jOjM5Nzg6XFx0XFx0XFx0XFx0Zm9saW9fc2V0X2h1Z2V0bGJfY21hKG5ld19mb2xpbyk7XFxubW0vaHVnZXRsYi5jLTM5NzktXFx0XFx0XFx0bGlzdF9hZGQoXFx1MDAyNm5ld19mb2xpby1cXHUwMDNlbHJ1LCBcXHUwMDI2ZHN0X2xpc3QpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTQyMzk9c3RhdGljIF9faW5pdCB2b2lkIGh1Z2V0bGJfcGFyc2VfcGFyYW1zKHZvaWQpXFxuLS1cXG5tbS9odWdldGxiLmMtNDI0OS1cXG5tbS9odWdldGxiLmM6NDI1MDpcXHRodWdldGxiX2NtYV92YWxpZGF0ZV9wYXJhbXMoKTtcXG5tbS9odWdldGxiLmMtNDI1MS19XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTEyLSNpbmNsdWRlIFxcXCJpbnRlcm5hbC5oXFxcIlxcbm1tL2h1Z2V0bGJfY21hLmM6MTM6I2luY2x1ZGUgXFxcImh1Z2V0bGJfY21hLmhcXFwiXFxubW0vaHVnZXRsYl9jbWEuYy0xNC1cXG5tbS9odWdldGxiX2NtYS5jLTE1LVxcbm1tL2h1Z2V0bGJfY21hLmM6MTY6c3RhdGljIHN0cnVjdCBjbWEgKmh1Z2V0bGJfY21hW01BWF9OVU1OT0RFU10gX19yb19hZnRlcl9pbml0O1xcbm1tL2h1Z2V0bGJfY21hLmM6MTc6c3RhdGljIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9jbWFfc2l6ZV9pbl9ub2RlW01BWF9OVU1OT0RFU10gX19pbml0ZGF0YTtcXG5tbS9odWdldGxiX2NtYS5jOjE4OnN0YXRpYyBib29sIGh1Z2V0bGJfY21hX29ubHkgX19yb19hZnRlcl9pbml0O1xcbm1tL2h1Z2V0bGJfY21hLmM6MTk6c3RhdGljIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9jbWFfc2l6ZSBfX3JvX2FmdGVyX2luaXQ7XFxubW0vaHVnZXRsYl9jbWEuYy0yMC1cXG5tbS9odWdldGxiX2NtYS5jOjIxOnZvaWQgaHVnZXRsYl9jbWFfZnJlZV9mcm96ZW5fZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG5tbS9odWdldGxiX2NtYS5jLTIyLXtcXG5tbS9odWdldGxiX2NtYS5jOjIzOlxcdFdBUk5fT05fT05DRSghY21hX3JlbGVhc2VfZnJvemVuKGh1Z2V0bGJfY21hW2ZvbGlvX25pZChmb2xpbyldLFxcbm1tL2h1Z2V0bGJfY21hLmMtMjQtXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZmb2xpby1cXHUwMDNlcGFnZSwgZm9saW9fbnJfcGFnZXMoZm9saW8pKSk7XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTI2LVxcbm1tL2h1Z2V0bGJfY21hLmM6Mjc6c3RydWN0IGZvbGlvICpodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW8oaW50IG9yZGVyLCBnZnBfdCBnZnBfbWFzayxcXG5tbS9odWdldGxiX2NtYS5jLTI4LVxcdFxcdGludCBuaWQsIG5vZGVtYXNrX3QgKm5vZGVtYXNrKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0zMy1cXG5tbS9odWdldGxiX2NtYS5jOjM0OlxcdGlmICghaHVnZXRsYl9jbWFfc2l6ZSlcXG5tbS9odWdldGxiX2NtYS5jLTM1LVxcdFxcdHJldHVybiBOVUxMO1xcbm1tL2h1Z2V0bGJfY21hLmMtMzYtXFxubW0vaHVnZXRsYl9jbWEuYzozNzpcXHRpZiAoaHVnZXRsYl9jbWFbbmlkXSBcXHUwMDI2XFx1MDAyNiBub2RlX2lzc2V0KG5pZCwgKm5vZGVtYXNrKSlcXG5tbS9odWdldGxiX2NtYS5jOjM4OlxcdFxcdHBhZ2UgPSBjbWFfYWxsb2NfZnJvemVuX2NvbXBvdW5kKGh1Z2V0bGJfY21hW25pZF0sIG9yZGVyKTtcXG5tbS9odWdldGxiX2NtYS5jLTM5LVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy00MS1cXHRcXHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgKm5vZGVtYXNrKSB7XFxubW0vaHVnZXRsYl9jbWEuYzo0MjpcXHRcXHRcXHRpZiAobm9kZSA9PSBuaWQgfHwgIWh1Z2V0bGJfY21hW25vZGVdKVxcbm1tL2h1Z2V0bGJfY21hLmMtNDMtXFx0XFx0XFx0XFx0Y29udGludWU7XFxubW0vaHVnZXRsYl9jbWEuYy00NC1cXG5tbS9odWdldGxiX2NtYS5jOjQ1OlxcdFxcdFxcdHBhZ2UgPSBjbWFfYWxsb2NfZnJvemVuX2NvbXBvdW5kKGh1Z2V0bGJfY21hW25vZGVdLCBvcmRlcik7XFxubW0vaHVnZXRsYl9jbWEuYy00Ni1cXHRcXHRcXHRpZiAocGFnZSlcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtNTQtXFx0Zm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpO1xcbm1tL2h1Z2V0bGJfY21hLmM6NTU6XFx0Zm9saW9fc2V0X2h1Z2V0bGJfY21hKGZvbGlvKTtcXG5tbS9odWdldGxiX2NtYS5jLTU2LVxcdHJldHVybiBmb2xpbztcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmM9NTk9c3RydWN0IGh1Z2VfYm9vdG1lbV9wYWdlICogX19pbml0XFxubW0vaHVnZXRsYl9jbWEuYzo2MDpodWdldGxiX2NtYV9hbGxvY19ib290bWVtKHN0cnVjdCBoc3RhdGUgKmgsIGludCAqbmlkLCBib29sIG5vZGVfZXhhY3QpXFxubW0vaHVnZXRsYl9jbWEuYy02MS17XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTY1LVxcbm1tL2h1Z2V0bGJfY21hLmM6NjY6XFx0Y21hID0gaHVnZXRsYl9jbWFbKm5pZF07XFxubW0vaHVnZXRsYl9jbWEuYy02Ny1cXHRtID0gY21hX3Jlc2VydmVfZWFybHkoY21hLCBodWdlX3BhZ2Vfc2l6ZShoKSk7XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTcyLVxcdFxcdGZvcl9lYWNoX25vZGVfbWFzayhub2RlLCBodWdldGxiX2Jvb3RtZW1fbm9kZXMpIHtcXG5tbS9odWdldGxiX2NtYS5jOjczOlxcdFxcdFxcdGNtYSA9IGh1Z2V0bGJfY21hW25vZGVdO1xcbm1tL2h1Z2V0bGJfY21hLmMtNzQtXFx0XFx0XFx0aWYgKCFjbWEgfHwgbm9kZSA9PSAqbmlkKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy05MS1cXG5tbS9odWdldGxiX2NtYS5jOjkyOnN0YXRpYyBpbnQgX19pbml0IGNtZGxpbmVfcGFyc2VfaHVnZXRsYl9jbWEoY2hhciAqcClcXG5tbS9odWdldGxiX2NtYS5jLTkzLXtcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtMTA4LVxcdFxcdFxcdHRtcCA9IG1lbXBhcnNlKHMsIFxcdTAwMjZzKTtcXG5tbS9odWdldGxiX2NtYS5jOjEwOTpcXHRcXHRcXHRodWdldGxiX2NtYV9zaXplX2luX25vZGVbbmlkXSA9IHRtcDtcXG5tbS9odWdldGxiX2NtYS5jOjExMDpcXHRcXHRcXHRodWdldGxiX2NtYV9zaXplICs9IHRtcDtcXG5tbS9odWdldGxiX2NtYS5jLTExMS1cXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtMTIwLVxcdFxcdH0gZWxzZSB7XFxubW0vaHVnZXRsYl9jbWEuYzoxMjE6XFx0XFx0XFx0aHVnZXRsYl9jbWFfc2l6ZSA9IG1lbXBhcnNlKHAsIFxcdTAwMjZwKTtcXG5tbS9odWdldGxiX2NtYS5jLTEyMi1cXHRcXHRcXHRicmVhaztcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtMTI4LVxcbm1tL2h1Z2V0bGJfY21hLmM6MTI5OmVhcmx5X3BhcmFtKFxcXCJodWdldGxiX2NtYVxcXCIsIGNtZGxpbmVfcGFyc2VfaHVnZXRsYl9jbWEpO1xcbm1tL2h1Z2V0bGJfY21hLmMtMTMwLVxcbm1tL2h1Z2V0bGJfY21hLmM6MTMxOnN0YXRpYyBpbnQgX19pbml0IGNtZGxpbmVfcGFyc2VfaHVnZXRsYl9jbWFfb25seShjaGFyICpwKVxcbm1tL2h1Z2V0bGJfY21hLmMtMTMyLXtcXG5tbS9odWdldGxiX2NtYS5jOjEzMzpcXHRyZXR1cm4ga3N0cnRvYm9vbChwLCBcXHUwMDI2aHVnZXRsYl9jbWFfb25seSk7XFxubW0vaHVnZXRsYl9jbWEuYy0xMzQtfVxcbm1tL2h1Z2V0bGJfY21hLmMtMTM1LVxcbm1tL2h1Z2V0bGJfY21hLmM6MTM2OmVhcmx5X3BhcmFtKFxcXCJodWdldGxiX2NtYV9vbmx5XFxcIiwgY21kbGluZV9wYXJzZV9odWdldGxiX2NtYV9vbmx5KTtcXG5tbS9odWdldGxiX2NtYS5jLTEzNy1cXG5tbS9odWdldGxiX2NtYS5jOjEzODp1bnNpZ25lZCBpbnQgX193ZWFrIGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIodm9pZClcXG5tbS9odWdldGxiX2NtYS5jLTEzOS17XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTE0Mi1cXG5tbS9odWdldGxiX2NtYS5jOjE0Mzp2b2lkIF9faW5pdCBodWdldGxiX2NtYV9yZXNlcnZlKHZvaWQpXFxubW0vaHVnZXRsYl9jbWEuYy0xNDQte1xcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0xNDgtXFxubW0vaHVnZXRsYl9jbWEuYzoxNDk6XFx0aWYgKCFodWdldGxiX2NtYV9zaXplKVxcbm1tL2h1Z2V0bGJfY21hLmMtMTUwLVxcdFxcdHJldHVybjtcXG5tbS9odWdldGxiX2NtYS5jLTE1MS1cXG5tbS9odWdldGxiX2NtYS5jOjE1MjpcXHRvcmRlciA9IGFyY2hfaHVnZXRsYl9jbWFfb3JkZXIoKTtcXG5tbS9odWdldGxiX2NtYS5jLTE1My1cXHRpZiAoIW9yZGVyKSB7XFxubW0vaHVnZXRsYl9jbWEuYzoxNTQ6XFx0XFx0cHJfd2FybihcXFwiaHVnZXRsYl9jbWE6IHRoZSBvcHRpb24gaXNuJ3Qgc3VwcG9ydGVkIGJ5IGN1cnJlbnQgYXJjaFxcXFxuXFxcIik7XFxubW0vaHVnZXRsYl9jbWEuYy0xNTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0xNjktXFx0Zm9yIChuaWQgPSAwOyBuaWQgXFx1MDAzYyBNQVhfTlVNTk9ERVM7IG5pZCsrKSB7XFxubW0vaHVnZXRsYl9jbWEuYzoxNzA6XFx0XFx0c2l6ZSA9IGh1Z2V0bGJfY21hX3NpemVfaW5fbm9kZVtuaWRdO1xcbm1tL2h1Z2V0bGJfY21hLmMtMTcxLVxcdFxcdGlmIChzaXplID09IDApXFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTE3NC1cXHRcXHRpZiAoIW5vZGVfaXNzZXQobmlkLCBodWdldGxiX2Jvb3RtZW1fbm9kZXMpKSB7XFxubW0vaHVnZXRsYl9jbWEuYzoxNzU6XFx0XFx0XFx0cHJfd2FybihcXFwiaHVnZXRsYl9jbWE6IGludmFsaWQgbm9kZSAlZCBzcGVjaWZpZWRcXFxcblxcXCIsIG5pZCk7XFxubW0vaHVnZXRsYl9jbWEuYy0xNzYtXFx0XFx0fSBlbHNlIGlmICghSVNfQUxJR05FRChzaXplLCBnaWdhbnRpY19wYWdlX3NpemUpKSB7XFxubW0vaHVnZXRsYl9jbWEuYzoxNzc6XFx0XFx0XFx0cHJfd2FybihcXFwiaHVnZXRsYl9jbWE6IGNtYSBhcmVhIG9mIG5vZGUgJWQgbXVzdCBiZSBhIG11bHRpcGxlIG9mICVsdSBNaUJcXFxcblxcXCIsXFxubW0vaHVnZXRsYl9jbWEuYy0xNzgtXFx0XFx0XFx0XFx0bmlkLCBnaWdhbnRpY19wYWdlX3NpemUgLyBTWl8xTSk7XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTE4My1cXG5tbS9odWdldGxiX2NtYS5jOjE4NDpcXHRcXHRodWdldGxiX2NtYV9zaXplIC09IHNpemU7XFxubW0vaHVnZXRsYl9jbWEuYzoxODU6XFx0XFx0aHVnZXRsYl9jbWFfc2l6ZV9pbl9ub2RlW25pZF0gPSAwO1xcbm1tL2h1Z2V0bGJfY21hLmMtMTg2LVxcdH1cXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtMTg4LVxcdC8qIFZhbGlkYXRlIHRoZSBDTUEgc2l6ZSBhZ2FpbiBpbiBjYXNlIHNvbWUgaW52YWxpZCBub2RlcyBzcGVjaWZpZWQuICovXFxubW0vaHVnZXRsYl9jbWEuYzoxODk6XFx0aWYgKCFodWdldGxiX2NtYV9zaXplKVxcbm1tL2h1Z2V0bGJfY21hLmMtMTkwLVxcdFxcdHJldHVybjtcXG5tbS9odWdldGxiX2NtYS5jLTE5MS1cXG5tbS9odWdldGxiX2NtYS5jOjE5MjpcXHRpZiAoIUlTX0FMSUdORUQoaHVnZXRsYl9jbWFfc2l6ZSwgZ2lnYW50aWNfcGFnZV9zaXplKSkge1xcbm1tL2h1Z2V0bGJfY21hLmM6MTkzOlxcdFxcdHByX3dhcm4oXFxcImh1Z2V0bGJfY21hOiBjbWEgYXJlYSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJWx1IE1pQlxcXFxuXFxcIixcXG5tbS9odWdldGxiX2NtYS5jLTE5NC1cXHRcXHRcXHRnaWdhbnRpY19wYWdlX3NpemUgLyBTWl8xTSk7XFxubW0vaHVnZXRsYl9jbWEuYzoxOTU6XFx0XFx0aHVnZXRsYl9jbWFfc2l6ZSA9IDA7XFxubW0vaHVnZXRsYl9jbWEuYy0xOTYtXFx0XFx0cmV0dXJuO1xcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0yMDMtXFx0XFx0ICovXFxubW0vaHVnZXRsYl9jbWEuYzoyMDQ6XFx0XFx0cGVyX25vZGUgPSBESVZfUk9VTkRfVVAoaHVnZXRsYl9jbWFfc2l6ZSxcXG5tbS9odWdldGxiX2NtYS5jLTIwNS1cXHRcXHRcXHRcXHRcXHRub2Rlc193ZWlnaHQoaHVnZXRsYl9ib290bWVtX25vZGVzKSk7XFxubW0vaHVnZXRsYl9jbWEuYy0yMDYtXFx0XFx0cGVyX25vZGUgPSByb3VuZF91cChwZXJfbm9kZSwgZ2lnYW50aWNfcGFnZV9zaXplKTtcXG5tbS9odWdldGxiX2NtYS5jOjIwNzpcXHRcXHRwcl9pbmZvKFxcXCJodWdldGxiX2NtYTogcmVzZXJ2ZSAlbHUgTWlCLCB1cCB0byAlbHUgTWlCIHBlciBub2RlXFxcXG5cXFwiLFxcbm1tL2h1Z2V0bGJfY21hLmM6MjA4OlxcdFxcdFxcdGh1Z2V0bGJfY21hX3NpemUgLyBTWl8xTSwgcGVyX25vZGUgLyBTWl8xTSk7XFxubW0vaHVnZXRsYl9jbWEuYy0yMDktXFx0fVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0yMTYtXFx0XFx0aWYgKG5vZGVfc3BlY2lmaWNfY21hX2FsbG9jKSB7XFxubW0vaHVnZXRsYl9jbWEuYzoyMTc6XFx0XFx0XFx0aWYgKGh1Z2V0bGJfY21hX3NpemVfaW5fbm9kZVtuaWRdID09IDApXFxubW0vaHVnZXRsYl9jbWEuYy0yMTgtXFx0XFx0XFx0XFx0Y29udGludWU7XFxubW0vaHVnZXRsYl9jbWEuYy0yMTktXFxubW0vaHVnZXRsYl9jbWEuYzoyMjA6XFx0XFx0XFx0c2l6ZSA9IGh1Z2V0bGJfY21hX3NpemVfaW5fbm9kZVtuaWRdO1xcbm1tL2h1Z2V0bGJfY21hLmMtMjIxLVxcdFxcdH0gZWxzZSB7XFxubW0vaHVnZXRsYl9jbWEuYzoyMjI6XFx0XFx0XFx0c2l6ZSA9IG1pbihwZXJfbm9kZSwgaHVnZXRsYl9jbWFfc2l6ZSAtIHJlc2VydmVkKTtcXG5tbS9odWdldGxiX2NtYS5jLTIyMy1cXHRcXHR9XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jLTIzMi1cXHRcXHRcXHRcXHRcXHRIVUdFVExCX1BBR0VfT1JERVIsIG5hbWUsXFxubW0vaHVnZXRsYl9jbWEuYzoyMzM6XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmh1Z2V0bGJfY21hW25pZF0sIG5pZCk7XFxubW0vaHVnZXRsYl9jbWEuYy0yMzQtXFx0XFx0aWYgKHJlcykge1xcbm1tL2h1Z2V0bGJfY21hLmM6MjM1OlxcdFxcdFxcdHByX3dhcm4oXFxcImh1Z2V0bGJfY21hOiByZXNlcnZhdGlvbiBmYWlsZWQ6IGVyciAlZCwgbm9kZSAlZFxcXCIsXFxubW0vaHVnZXRsYl9jbWEuYy0yMzYtXFx0XFx0XFx0XFx0cmVzLCBuaWQpO1xcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0yNDAtXFx0XFx0cmVzZXJ2ZWQgKz0gc2l6ZTtcXG5tbS9odWdldGxiX2NtYS5jOjI0MTpcXHRcXHRwcl9pbmZvKFxcXCJodWdldGxiX2NtYTogcmVzZXJ2ZWQgJWx1IE1pQiBvbiBub2RlICVkXFxcXG5cXFwiLFxcbm1tL2h1Z2V0bGJfY21hLmMtMjQyLVxcdFxcdFxcdHNpemUgLyBTWl8xTSwgbmlkKTtcXG5tbS9odWdldGxiX2NtYS5jLTI0My1cXG5tbS9odWdldGxiX2NtYS5jOjI0NDpcXHRcXHRpZiAocmVzZXJ2ZWQgXFx1MDAzZT0gaHVnZXRsYl9jbWFfc2l6ZSlcXG5tbS9odWdldGxiX2NtYS5jLTI0NS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmMtMjQ5LVxcdFxcdC8qXFxubW0vaHVnZXRsYl9jbWEuYzoyNTA6XFx0XFx0ICogaHVnZXRsYl9jbWFfc2l6ZSBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBhbGxvY2F0aW9ucyBmcm9tXFxubW0vaHVnZXRsYl9jbWEuYy0yNTEtXFx0XFx0ICogY21hIGFyZSBwb3NzaWJsZS4gIFNldCB0byB6ZXJvIGlmIG5vIGNtYSByZWdpb25zIGFyZSBzZXQgdXAuXFxubW0vaHVnZXRsYl9jbWEuYy0yNTItXFx0XFx0ICovXFxubW0vaHVnZXRsYl9jbWEuYzoyNTM6XFx0XFx0aHVnZXRsYl9jbWFfc2l6ZSA9IDA7XFxubW0vaHVnZXRsYl9jbWEuYy0yNTQtfVxcbm1tL2h1Z2V0bGJfY21hLmMtMjU1LVxcbm1tL2h1Z2V0bGJfY21hLmM6MjU2OmJvb2wgaHVnZXRsYl9jbWFfZXhjbHVzaXZlX2FsbG9jKHZvaWQpXFxubW0vaHVnZXRsYl9jbWEuYy0yNTcte1xcbm1tL2h1Z2V0bGJfY21hLmM6MjU4OlxcdHJldHVybiBodWdldGxiX2NtYV9vbmx5O1xcbm1tL2h1Z2V0bGJfY21hLmMtMjU5LX1cXG5tbS9odWdldGxiX2NtYS5jLTI2MC1cXG5tbS9odWdldGxiX2NtYS5jOjI2MTp1bnNpZ25lZCBsb25nIF9faW5pdCBodWdldGxiX2NtYV90b3RhbF9zaXplKHZvaWQpXFxubW0vaHVnZXRsYl9jbWEuYy0yNjIte1xcbm1tL2h1Z2V0bGJfY21hLmM6MjYzOlxcdHJldHVybiBodWdldGxiX2NtYV9zaXplO1xcbm1tL2h1Z2V0bGJfY21hLmMtMjY0LX1cXG5tbS9odWdldGxiX2NtYS5jLTI2NS1cXG5tbS9odWdldGxiX2NtYS5jOjI2Njp2b2lkIF9faW5pdCBodWdldGxiX2NtYV92YWxpZGF0ZV9wYXJhbXModm9pZClcXG5tbS9odWdldGxiX2NtYS5jLTI2Ny17XFxubW0vaHVnZXRsYl9jbWEuYzoyNjg6XFx0aWYgKCFodWdldGxiX2NtYV9zaXplKVxcbm1tL2h1Z2V0bGJfY21hLmM6MjY5OlxcdFxcdGh1Z2V0bGJfY21hX29ubHkgPSBmYWxzZTtcXG5tbS9odWdldGxiX2NtYS5jLTI3MC19XFxuLS1cXG5tbS9odWdldGxiX2NtYS5jPTI3Mj1ib29sIF9faW5pdCBodWdldGxiX2Vhcmx5X2NtYShzdHJ1Y3QgaHN0YXRlICpoKVxcbi0tXFxubW0vaHVnZXRsYl9jbWEuYy0yNzYtXFxubW0vaHVnZXRsYl9jbWEuYzoyNzc6XFx0cmV0dXJuIGhzdGF0ZV9pc19naWdhbnRpYyhoKSBcXHUwMDI2XFx1MDAyNiBodWdldGxiX2NtYV9vbmx5O1xcbm1tL2h1Z2V0bGJfY21hLmMtMjc4LX1cXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmgtNS0jaWZkZWYgQ09ORklHX0NNQVxcbm1tL2h1Z2V0bGJfY21hLmg6Njp2b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbm1tL2h1Z2V0bGJfY21hLmg6NzpzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsIGdmcF90IGdmcF9tYXNrLFxcbm1tL2h1Z2V0bGJfY21hLmgtOC1cXHRcXHRcXHRcXHQgICAgICBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzayk7XFxubW0vaHVnZXRsYl9jbWEuaDo5OnN0cnVjdCBodWdlX2Jvb3RtZW1fcGFnZSAqaHVnZXRsYl9jbWFfYWxsb2NfYm9vdG1lbShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgKm5pZCxcXG5tbS9odWdldGxiX2NtYS5oLTEwLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBib29sIG5vZGVfZXhhY3QpO1xcbm1tL2h1Z2V0bGJfY21hLmg6MTE6Ym9vbCBodWdldGxiX2NtYV9leGNsdXNpdmVfYWxsb2Modm9pZCk7XFxubW0vaHVnZXRsYl9jbWEuaDoxMjp1bnNpZ25lZCBsb25nIGh1Z2V0bGJfY21hX3RvdGFsX3NpemUodm9pZCk7XFxubW0vaHVnZXRsYl9jbWEuaDoxMzp2b2lkIGh1Z2V0bGJfY21hX3ZhbGlkYXRlX3BhcmFtcyh2b2lkKTtcXG5tbS9odWdldGxiX2NtYS5oLTE0LWJvb2wgaHVnZXRsYl9lYXJseV9jbWEoc3RydWN0IGhzdGF0ZSAqaCk7XFxubW0vaHVnZXRsYl9jbWEuaC0xNS0jZWxzZVxcbm1tL2h1Z2V0bGJfY21hLmg6MTY6c3RhdGljIGlubGluZSB2b2lkIGh1Z2V0bGJfY21hX2ZyZWVfZnJvemVuX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxubW0vaHVnZXRsYl9jbWEuaC0xNy17XFxuLS1cXG5tbS9odWdldGxiX2NtYS5oLTE5LVxcbm1tL2h1Z2V0bGJfY21hLmg6MjA6c3RhdGljIGlubGluZSBzdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpbyhpbnQgb3JkZXIsXFxubW0vaHVnZXRsYl9jbWEuaC0yMS1cXHRcXHRnZnBfdCBnZnBfbWFzayxcXHRpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmg9MjY9c3RhdGljIGlubGluZVxcbm1tL2h1Z2V0bGJfY21hLmg6Mjc6c3RydWN0IGh1Z2VfYm9vdG1lbV9wYWdlICpodWdldGxiX2NtYV9hbGxvY19ib290bWVtKHN0cnVjdCBoc3RhdGUgKmgsIGludCAqbmlkLFxcbm1tL2h1Z2V0bGJfY21hLmgtMjgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGJvb2wgbm9kZV9leGFjdClcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmgtMzItXFxubW0vaHVnZXRsYl9jbWEuaDozMzpzdGF0aWMgaW5saW5lIGJvb2wgaHVnZXRsYl9jbWFfZXhjbHVzaXZlX2FsbG9jKHZvaWQpXFxubW0vaHVnZXRsYl9jbWEuaC0zNC17XFxuLS1cXG5tbS9odWdldGxiX2NtYS5oLTM3LVxcbm1tL2h1Z2V0bGJfY21hLmg6Mzg6c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfY21hX3RvdGFsX3NpemUodm9pZClcXG5tbS9odWdldGxiX2NtYS5oLTM5LXtcXG4tLVxcbm1tL2h1Z2V0bGJfY21hLmgtNDItXFxubW0vaHVnZXRsYl9jbWEuaDo0MzpzdGF0aWMgaW5saW5lIHZvaWQgaHVnZXRsYl9jbWFfdmFsaWRhdGVfcGFyYW1zKHZvaWQpXFxubW0vaHVnZXRsYl9jbWEuaC00NC17XFxuLS1cXG5tbS9tbV9pbml0LmM9MjY5NT12b2lkIF9faW5pdCBtbV9jb3JlX2luaXRfZWFybHkodm9pZClcXG5tbS9tbV9pbml0LmMtMjY5Ni17XFxubW0vbW1faW5pdC5jOjI2OTc6XFx0aHVnZXRsYl9jbWFfcmVzZXJ2ZSgpO1xcbm1tL21tX2luaXQuYy0yNjk4LVxcdGh1Z2V0bGJfYm9vdG1lbV9hbGxvYygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODowOTowOC40NTcxMzcxMjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxNjQ5MTAxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfSFVHRVRMQlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEyOTcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0PTk1PUtlcm5lbCBwYXJhbWV0ZXJzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dC0yMDg1LVxcdGh1Z2V0bGJfZnJlZV92bWVtbWFwPVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0OjIwODY6XFx0XFx0XFx0W0tOTF0gUmVxdWlyZXMgQ09ORklHX0hVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA4Ny1cXHRcXHRcXHRlbmFibGVkLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQtMjA5NS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dDoyMDk2OlxcdFxcdFxcdEJ1aWx0IHdpdGggQ09ORklHX0hVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQX0RFRkFVTFRfT049eSxcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dC0yMDk3LVxcdFxcdFxcdHRoZSBkZWZhdWx0IGlzIG9uLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3Q9MjA9c3lzdGVtIGNhbGwgb3Igc3RhbmRhcmQgU1lTViBzaGFyZWQgbWVtb3J5IHN5c3RlbSBjYWxscyAoc2htZ2V0LCBzaG1hdCkuXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3QtMjEtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3Q6MjI6Rmlyc3QgdGhlIExpbnV4IGtlcm5lbCBuZWVkcyB0byBiZSBidWlsdCB3aXRoIHRoZSBDT05GSUdfSFVHRVRMQkZTXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3Q6MjM6KHByZXNlbnQgdW5kZXIgXFxcIkZpbGUgc3lzdGVtc1xcXCIpIGFuZCBDT05GSUdfSFVHRVRMQl9QQUdFIChzZWxlY3RlZFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vaHVnZXRsYnBhZ2UucnN0OjI0OmF1dG9tYXRpY2FsbHkgd2hlbiBDT05GSUdfSFVHRVRMQkZTIGlzIHNlbGVjdGVkKSBjb25maWd1cmF0aW9uXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3QtMjUtb3B0aW9ucy5cXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vaHVnZXRsYnBhZ2UucnN0PTE3ND1odWdldGxiX2ZyZWVfdm1lbW1hcFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vaHVnZXRsYnBhZ2UucnN0OjE3NTpcXHRXaGVuIENPTkZJR19IVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUCBpcyBzZXQsIHRoaXMgZW5hYmxlcyBIdWdlVExCXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9odWdldGxicGFnZS5yc3QtMTc2LVxcdFZtZW1tYXAgT3B0aW1pemF0aW9uIChIVk8pLlxcbi0tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz0xOTEyPUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6MTkxMzpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTE5MTQtQ09ORklHX0NPTkZJR0ZTX0ZTPXlcXG4tLVxcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbXRlLmg9MTU3PXN0YXRpYyBpbmxpbmUgaW50IG10ZV9wdHJhY2VfY29weV90YWdzKHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQsXFxuLS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL210ZS5oLTE2NS1cXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL210ZS5oOjE2NjojaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19BUk02NF9NVEUpXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tdGUuaC0xNjctc3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3NldF9odWdldGxiX210ZV90YWdnZWQoc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbmFyY2gvYXJtNjQvbW0vTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfQVJNNjRfQ09OVFBURSlcXHQrPSBjb250cHRlLm9cXG5hcmNoL2FybTY0L21tL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSlcXHQrPSBodWdldGxicGFnZS5vXFxuYXJjaC9hcm02NC9tbS9NYWtlZmlsZS04LW9iai0kKENPTkZJR19QVERVTVApXFx0XFx0Kz0gcHRkdW1wLm9cXG4tLVxcbmFyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9wYWdlLmgtMzktICovXFxuYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3BhZ2UuaDo0MDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9wYWdlLmgtNDEtI2RlZmluZSBIUEFHRV9TSElGVCAyMlxcbi0tXFxuYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMjk9ZXh0ZXJuIHBnZF90IHN3YXBwZXJfcGdfZGlyW1BUUlNfUEVSX1BHRF07ICAvKiBsb2NhdGVkIGluIGhlYWQuUyAqL1xcbi0tXFxuYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMzEtLyogIEhVR0VUTEIgbm90IHdvcmtpbmcgY3VycmVudGx5ICAqL1xcbmFyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTMyOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMzMtI2RlZmluZSBwdGVfbWtodWdlKHB0ZSkgX19wdGUoKHB0ZV92YWwocHRlKSBcXHUwMDI2IH4weDMpIHwgSFZNX0hVR0VQQUdFX1NJWkUpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTEwMzU9Q09ORklHX1RNUEZTX1BPU0lYX0FDTD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMDM2OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTAzNy1DT05GSUdfQ09ORklHRlNfRlM9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX0hJR0hNRU0pXFx0XFx0Kz0gaGlnaG1lbS5vXFxuYXJjaC9sb29uZ2FyY2gvbW0vTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSlcXHQrPSBodWdldGxicGFnZS5vXFxuYXJjaC9sb29uZ2FyY2gvbW0vTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX0tBU0FOKVxcdFxcdCs9IGthc2FuX2luaXQub1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vdGxiLmM9MTM4PXN0YXRpYyB2b2lkIF9fdXBkYXRlX2h1Z2V0bGIoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgcHRlX3QgKnB0ZXApXFxuYXJjaC9sb29uZ2FyY2gvbW0vdGxiLmMtMTM5LXtcXG5hcmNoL2xvb25nYXJjaC9tbS90bGIuYzoxNDA6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL2xvb25nYXJjaC9tbS90bGIuYy0xNDEtXFx0aW50IGlkeDtcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnPTE0Mz1DT05GSUdfVE1QRlM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2Nhdml1bV9vY3Rlb25fZGVmY29uZmlnOjE0NDpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL21pcHMvY29uZmlncy9jYXZpdW1fb2N0ZW9uX2RlZmNvbmZpZy0xNDUtQ09ORklHX05GU19GUz15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uXzY0X2RlZmNvbmZpZz0xNDQ9Q09ORklHX1RNUEZTX1BPU0lYX0FDTD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWc6MTQ1OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTE0Ni1DT05GSUdfQ09ORklHRlNfRlM9eVxcbi0tXFxuYXJjaC9taXBzL21tL01ha2VmaWxlPTMxPW9iai0kKENPTkZJR19ISUdITUVNKVxcdFxcdCs9IGhpZ2htZW0ub1xcbmFyY2gvbWlwcy9tbS9NYWtlZmlsZTozMjpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKVxcdCs9IGh1Z2V0bGJwYWdlLm9cXG5hcmNoL21pcHMvbW0vTWFrZWZpbGUtMzMtb2JqLSQoQ09ORklHX0RNQV9OT05DT0hFUkVOVClcXHQrPSBkbWEtbm9uY29oZXJlbnQub1xcbi0tXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGFnZS5oPTkzPWV4dGVybiBpbnQgbnBtZW1fcmFuZ2VzO1xcbi0tXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGFnZS5oLTE0Ny1cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wYWdlLmg6MTQ4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGFnZS5oLTE0OS0jZGVmaW5lIEhQQUdFX1NISUZUXFx0XFx0UE1EX1NISUZUIC8qIGZpeGVkIGZvciB0cmFuc3BhcmVudCBodWdlIHBhZ2VzICovXFxuLS1cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wYWdlLmgtMTYzLSNlbmRpZlxcbmFyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3BhZ2UuaDoxNjQ6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wYWdlLmgtMTY1LVxcbi0tXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTY0PWV4dGVybiB2b2lkIF9fdXBkYXRlX2NhY2hlKHB0ZV90IHB0ZSk7XFxuLS1cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTcwLSNkZWZpbmUgX1BBR0VfVVNFUl9CSVQgICAgIDIwICAgLyogKDB4ODAwKSBTb2Z0d2FyZTogVXNlciBhY2Nlc3NpYmxlIHBhZ2UgKi9cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTcxOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE3Mi0jZGVmaW5lIF9QQUdFX1NQRUNJQUxfQklUICBfUEFHRV9ETUJfQklUICAvKiBETUIgZmVhdHVyZSBpcyBjdXJyZW50bHkgdW51c2VkICovXFxuLS1cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MzE1PXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rc3BlY2lhbChwdGVfdCBwdGUpXFx0eyBwdGVfdmFsKHB0ZSkgfD0gX1BBR0VfU1BFQ0lBTDsgcmV0dXJuIHB0ZTsgfVxcbi0tXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTMxOS0gKi9cXG5hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MzIwOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTMyMS0jZGVmaW5lIHB0ZV9odWdlKHB0ZSkgICAgICAgICAgIChwdGVfdmFsKHB0ZSkgXFx1MDAyNiBfUEFHRV9IVUdFKVxcbi0tXFxuYXJjaC9wYXJpc2Mva2VybmVsL2FzbS1vZmZzZXRzLmM9NDE9aW50IG1haW4odm9pZClcXG4tLVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTI3OC1cXHQgKiBhbmQga2VybmVsIGRhdGEgb24gcGh5c2ljYWwgaHVnZSBwYWdlcyAqL1xcbmFyY2gvcGFyaXNjL2tlcm5lbC9hc20tb2Zmc2V0cy5jOjI3OTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9hc20tb2Zmc2V0cy5jLTI4MC1cXHRERUZJTkUoSFVHRVBBR0VfU0laRSwgMVVMIFxcdTAwM2NcXHUwMDNjIFJFQUxfSFBBR0VfU0hJRlQpO1xcbi0tXFxuYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlMtNDgxLVxcdC5tYWNyb1xcdFxcdGNvbnZlcnRfZm9yX3RsYl9pbnNlcnQyMCBwdGUsdG1wXFxuYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlM6NDgyOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlMtNDgzLVxcdGNvcHlcXHRcXHRcXFxccHRlLFxcXFx0bXBcXG4tLVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zZXR1cC5jPTEwMT12b2lkIF9faW5pdCBzZXR1cF9hcmNoKGNoYXIgKipjbWRsaW5lX3ApXFxuLS1cXG5hcmNoL3BhcmlzYy9rZXJuZWwvc2V0dXAuYy0xMTQtXFx0XFx0KGludCkoUEFHRV9TSVpFIC8gMTAyNCkpO1xcbmFyY2gvcGFyaXNjL2tlcm5lbC9zZXR1cC5jOjExNTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zZXR1cC5jLTExNi1cXHRwcmludGsoS0VSTl9DT05UIFxcXCJlbmFibGVkIHdpdGggJWQgTUIgcGh5c2ljYWwgYW5kICVkIE1CIHZpcnR1YWwgc2l6ZVxcXCIsXFxuLS1cXG5hcmNoL3BhcmlzYy9tbS9NYWtlZmlsZT02PW9iai15XFx0IDo9IGluaXQubyBmYXVsdC5vIGlvcmVtYXAubyBmaXhtYXAub1xcbmFyY2gvcGFyaXNjL21tL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSkgKz0gaHVnZXRsYnBhZ2Uub1xcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWc9MTc4PUNPTkZJR19UTVBGUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWc6MTc5OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnLTE4MC1DT05GSUdfTkZTX0ZTPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnPTUwPUNPTkZJR19IUEZTX0ZTPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZzo1MTpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZy01Mi1DT05GSUdfSUtDT05GSUdfUFJPQz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWc9MjE0PUNPTkZJR19UTVBGUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZzVfZGVmY29uZmlnOjIxNTpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWctMjE2LUNPTkZJR19IRlNfRlM9bVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcGFzZW1pX2RlZmNvbmZpZz0xNTE9Q09ORklHX1RNUEZTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnOjE1MjpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnLTE1My1DT05GSUdfQ09ORklHRlNfRlM9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9Mjc4PUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjI3OTpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy0yODAtQ09ORklHX0NSQU1GUz1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9MzMzPUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzozMzQ6Q09ORklHX0hVR0VUTEJGUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTMzNS1DT05GSUdfSEZTX0ZTPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BzM19kZWZjb25maWc9MTM4PUNPTkZJR19UTVBGUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZzoxMzk6Q09ORklHX0hVR0VUTEJGUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHMzX2RlZmNvbmZpZy0xNDAtQ09ORklHX05GU19GUz15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZz0yNTc9Q09ORklHX1BST0NfS0NPUkU9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnOjI1ODpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZy0yNTktIyBDT05GSUdfTUlTQ19GSUxFU1lTVEVNUyBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtNzQtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9oYXNoLTY0ay5oOjc1OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaC03Ni0jZGVmaW5lIEhfUE1EX0ZSQUdfU0laRV9TSElGVCAgKEhfUE1EX0lOREVYX1NJWkUgKyAzICsgMSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaD0xNzU9c3RhdGljIGlubGluZSBpbnQgaGFzaF9fcmVtYXBfNGtfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTg2LSNkZWZpbmUgSF9QVEVfVEFCTEVfU0laRVxcdFBURV9GUkFHX1NJWkVcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmg6MTg3OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZCAoQ09ORklHX0hVR0VUTEJfUEFHRSlcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTg4LSNkZWZpbmUgSF9QTURfVEFCTEVfU0laRVxcdCgoc2l6ZW9mKHBtZF90KSBcXHUwMDNjXFx1MDAzYyBQTURfSU5ERVhfU0laRSkgKyBcXFxcXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTkyLSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC02NGsuaDoxOTM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2hhc2gtNjRrLmgtMTk0LSNkZWZpbmUgSF9QVURfVEFCTEVfU0laRVxcdCgoc2l6ZW9mKHB1ZF90KSBcXHUwMDNjXFx1MDAzYyBQVURfSU5ERVhfU0laRSkgK1xcdFxcXFxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oLTQ2LSAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oOjQ3OiNpZiBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0UpIFxcdTAwMjZcXHUwMDI2ICBkZWZpbmVkKENPTkZJR19QUENfNjRLX1BBR0VTKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaGFzaC5oLTQ4LSNkZWZpbmUgSF9QVURfQ0FDSEVfSU5ERVhcXHQoSF9QVURfSU5ERVhfU0laRSArIDEpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS1oYXNoLmg9NzEyPXN0cnVjdCBoYXNoX21tX2NvbnRleHQge1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUtaGFzaC5oLTcyMi1cXHRzdHJ1Y3Qgc2xpY2VfbWFzayBtYXNrXzRrO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvbW11LWhhc2guaDo3MjM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS1oYXNoLmgtNzI0LVxcdHN0cnVjdCBzbGljZV9tYXNrIG1hc2tfMTZtO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUuaD0xNjk9c3RhdGljIGlubGluZSBzdHJ1Y3Qgc2xpY2VfbWFzayAqc2xpY2VfbWFza19mb3Jfc2l6ZShtbV9jb250ZXh0X3QgKmN0eCwgaW50IHBzaXplKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUuaC0xNzQtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9tbXUuaDoxNzU6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L21tdS5oLTE3Ni1cXHRpZiAocHNpemUgPT0gTU1VX1BBR0VfMTZNKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ2FsbG9jLmg9NDg9c3RhdGljIGlubGluZSBwZ2RfdCAqcGdkX2FsbG9jKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ2FsbG9jLmgtNzMtXFx0ICovXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ2FsbG9jLmg6NzQ6I2lmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfUFBDXzY0S19QQUdFUykgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGdhbGxvYy5oLTc1LVxcdChIX1BHRF9JTkRFWF9TSVpFID09IEhfUFVEX0NBQ0hFX0lOREVYKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLTY0ay5oLTUtI2lmbmRlZiBfX0FTU0VNQkxFUl9fXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLTY0ay5oOjY6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUtNjRrLmgtNy1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUtNjRrLmg6ODojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS02NGsuaC05LVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9zbGljZS5oLTctI2lmZGVmIENPTkZJR19QUENfNjRTX0hBU0hfTU1VXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9zbGljZS5oOjg6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3NsaWNlLmgtOS0jZGVmaW5lIEhBVkVfQVJDSF9IVUdFVExCX1VOTUFQUEVEX0FSRUFcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmgtNC1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oOjU6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTYtI2luY2x1ZGUgXFx1MDAzY2FzbS9wYWdlLmhcXHUwMDNlXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oPTY3PWludCBodWdlX3B0ZXBfc2V0X2FjY2Vzc19mbGFncyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmgtNzItXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h1Z2V0bGIuaDo3MzojZWxzZSAvKiAhIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTc0LXN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF9odWdldGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHVnZXRsYi5oPTc5PXN0YXRpYyBpbmxpbmUgdm9pZCBfX2luaXQgaHVnZXRsYnBhZ2VfaW5pdF9kZWZhdWx0c2l6ZSh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h1Z2V0bGIuaC04MS19XFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h1Z2V0bGIuaDo4MjojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odWdldGxiLmgtODMtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFnZS5oLTI2LSNpZm5kZWYgX19BU1NFTUJMRVJfX1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWdlLmg6Mjc6I2lmbmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhZ2UuaC0yOC0jZGVmaW5lIEhQQUdFX1NISUZUIFBBR0VfU0hJRlRcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTQ0PXN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVfbW11X2NhY2hlX3JhbmdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNDgtXFx0aWYgKChtbXVfaGFzX2ZlYXR1cmUoTU1VX0ZUUl9IUFRFX1RBQkxFKSBcXHUwMDI2XFx1MDAyNiAhcmFkaXhfZW5hYmxlZCgpKSB8fFxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg6MTQ5OlxcdCAgICAoSVNfRU5BQkxFRChDT05GSUdfUFBDX0U1MDApIFxcdTAwMjZcXHUwMDI2IElTX0VOQUJMRUQoQ09ORklHX0hVR0VUTEJfUEFHRSkpKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTUwLVxcdFxcdF9fdXBkYXRlX21tdV9jYWNoZSh2bWEsIGFkZHJlc3MsIHB0ZXApO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3B0ZS13YWxrLmg9MTA9c3RhdGljIGlubGluZSBwdGVfdCAqZmluZF9saW51eF9wdGUocGdkX3QgKnBnZGlyLCB1bnNpZ25lZCBsb25nIGVhLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3B0ZS13YWxrLmgtMTgtI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX1ZNKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLXdhbGsuaDoxOTpcXHQhKGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRSkgfHwgZGVmaW5lZChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpKVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wdGUtd2Fsay5oLTIwLVxcdC8qXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jPTU0OT1pbnQgX19pbml0IGZhZHVtcF9yZXNlcnZlX21lbSh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYy01OTQtXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9mYWR1bXAuYzo1OTU6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMva2VybmVsL2ZhZHVtcC5jLTU5Ni1cXHRcXHQvKlxcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUz0xNjY9c2V0X2l2b3I6XFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTMwNy0gKi9cXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TOjMwODojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlMtMzA5LSNkZWZpbmUgRklORF9QVEVcXHRcXFxcXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TPTY2Nj1maW5pc2hfdGxiX2xvYWQ6XFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUzo2Njc6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTY2OC1cXHRjbXB3aVxcdDYsIHIxMCwgMFxcdFxcdFxcdC8qIGNoZWNrIGZvciBodWdlIHBhZ2UgKi9cXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlMtNzE4LVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlM6NzE5OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUy03MjAtXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TPTczOT1FTkRfTU1VX0ZUUl9TRUNUSU9OX0lGU0VUKE1NVV9GVFJfQklHX1BIWVMpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTc0Mi1cXHRybHdpbWlcXHRyMTIsIHIxMSwgMzItMTksIDI3LCAzMVxcdC8qIGV4dHJhY3QgV0lNR0UgZnJvbSBwdGUgKi9cXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TOjc0MzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlMtNzQ0LVxcdGJlcVxcdDYsIDNmXFx0XFx0XFx0LyogZG9uJ3QgbWFzayBpZiBwYWdlIGlzbid0IGh1Z2UgKi9cXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlM9NzUzPXRsYl93cml0ZV9lbnRyeTpcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF84NXh4LlMtNzU3LVxcdG1mc3ByXFx0cjEwLCBTUFJOX1NQUkdfVEhSRUFEXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzg1eHguUzo3NTg6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfODV4eC5TLTc1OS1cXHRiZXFcXHQ2LCA4ZiAvKiBza2lwIHJlc3RvcmUgZm9yIDRrIHBhZ2UgZmF1bHRzICovXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX05VTUEpICs9IG51bWEub1xcbmFyY2gvcG93ZXJwYy9tbS9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKVxcdCs9IGh1Z2V0bGJwYWdlLm9cXG5hcmNoL3Bvd2VycGMvbW0vTWFrZWZpbGUtMTYtb2JqLSQoQ09ORklHX05PVF9DT0hFUkVOVF9DQUNIRSkgKz0gZG1hLW5vbmNvaGVyZW50Lm9cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZT0xMj1lbmRpZlxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZS0xMy1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSlcXHQrPSBodWdldGxicGFnZS5vXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L01ha2VmaWxlLTE1LVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfUFBDX1JBRElYX01NVSlcXHQrPSByYWRpeF9wZ3RhYmxlLm8gcmFkaXhfdGxiLm9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvTWFrZWZpbGU6MTc6aWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfUFBDX1JBRElYX01NVSlcXHQrPSByYWRpeF9odWdldGxicGFnZS5vXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF90bGIuYz00MT12b2lkIGhwdGVfbmVlZF9mbHVzaChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdGxiLmMtNjItXFx0aWYgKGh1Z2UpIHtcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF90bGIuYzo2MzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3RsYi5jLTY0LVxcdFxcdHBzaXplID0gZ2V0X3NsaWNlX3BzaXplKG1tLCBhZGRyKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM9ODQ2PXN0YXRpYyBpbnQgX19pbml0IGh0YWJfZHRfc2Nhbl9wYWdlX3NpemVzKHVuc2lnbmVkIGxvbmcgbm9kZSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtOTIzLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6OTI0OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy05MjUtLypcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM9OTI5PXN0YXRpYyBpbnQgX19pbml0IGh0YWJfZHRfc2Nhbl9odWdlcGFnZV9ibG9ja3ModW5zaWduZWQgbG9uZyBub2RlLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy05NjYtfVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6OTY3OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy05NjgtXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTk5Nj1zdGF0aWMgdm9pZCBfX2luaXQgaHRhYl9zY2FuX3BhZ2Vfc2l6ZXModm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTAxOS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjEwMjA6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTEwMjEtXFx0aWYgKCFodWdldGxiX2Rpc2FibGVkIFxcdTAwMjZcXHUwMDI2ICFlYXJseV9yYWRpeF9lbmFibGVkKCkgKSB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTEwMjQtXFx0fVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTAyNTojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTAyNi19XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jPTE3MTg9aW50IGhhc2hfcGFnZV9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBlYSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTgzOC1cXHRcXHRcXHRcXHRcXHQgICAgIHRyYXAsIGZsYWdzLCBzc2l6ZSwgcHNpemUpO1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTgzOTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTg0MC1cXHRcXHRlbHNlXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM9NjI2PXZvaWQgcmFkaXhfX2xvY2FsX2ZsdXNoX3RsYl9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHZtYWRkcilcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmMtNjI3LXtcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfdGxiLmM6NjI4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTYyOS1cXHQvKiBuZWVkIHRoZSByZXR1cm4gZml4IGZvciBub2hhc2guYyAqL1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jPTk0NT12b2lkIHJhZGl4X19mbHVzaF90bGJfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyB2bWFkZHIpXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTk0Ni17XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jOjk0NzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYy05NDgtXFx0aWYgKGlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jPTExMTE9dm9pZCByYWRpeF9fZmx1c2hfdGxiX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTExMTQte1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF90bGIuYzoxMTE1OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3RsYi5jLTExMTYtXFx0aWYgKGlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsaWNlLmM9NjM2PUVYUE9SVF9TWU1CT0xfR1BMKHNsaWNlX2dldF91bm1hcHBlZF9hcmVhKTtcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xpY2UuYy02MzctXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsaWNlLmM6NjM4OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3NsaWNlLmMtNjM5LXN0YXRpYyBpbnQgZmlsZV90b19wc2l6ZShzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGljZS5jPTc1Nz12b2lkIHNsaWNlX3NldF9yYW5nZV9wc2l6ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zbGljZS5jLTc2Ny1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xpY2UuYzo3Njg6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvc2xpY2UuYy03NjktLypcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM9NjE3PXZvaWQgX19pbml0IG1tdV9lYXJseV9pbml0X2RldnRyZWUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtNjY0LVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM6NjY1OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19IVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRSkpXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy02NjYtXFx0XFx0aHVnZXRsYnBhZ2VfaW5pdF9kZWZhdWx0c2l6ZSgpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9NYWtlZmlsZT04PW9iai0kKENPTkZJR19SQU5ET01JWkVfQkFTRSlcXHQrPSBrYXNscl9ib29rZS5vXFxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9NYWtlZmlsZTo5OmlmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19QUENfRTUwMClcXHQrPSBlNTAwX2h1Z2V0bGJwYWdlLm9cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvdGxiLmM9Mjc4PXZvaWQgZmx1c2hfdGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgdm1hZGRyKVxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvdGxiLmMtMjc5LXtcXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL3RsYi5jOjI4MDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvdGxiLmMtMjgxLVxcdGlmICh2bWEgXFx1MDAyNlxcdTAwMjYgaXNfdm1faHVnZXRsYl9wYWdlKHZtYSkpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jPTI1NT1pbnQgcHRlcF9zZXRfYWNjZXNzX2ZsYWdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jLTI2OC1cXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jOjI2OTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLmMtMjcwLWludCBodWdlX3B0ZXBfc2V0X2FjY2Vzc19mbGFncyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlLmM9MzUzPXZvaWQgc2V0X2h1Z2VfcHRlX2F0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsIHB0ZV90ICpwdGVwLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUuYy0zODMtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL21tL3BndGFibGUuYzozODQ6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5hcmNoL3Bvd2VycGMvbW0vcGd0YWJsZS5jLTM4NS1cXG4tLVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc9MjkwPUNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc6MjkxOkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWctMjkyLUNPTkZJR19ORlNfRlM9eVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9NYWtlZmlsZT0xOT1vYmoteSArPSBwbWVtLm9cXG5hcmNoL3Jpc2N2L21tL01ha2VmaWxlLTIwLVxcbmFyY2gvcmlzY3YvbW0vTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSkgKz0gaHVnZXRsYnBhZ2Uub1xcbmFyY2gvcmlzY3YvbW0vTWFrZWZpbGUtMjItb2JqLSQoQ09ORklHX1BURFVNUCkgKz0gcHRkdW1wLm9cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz03MDY9Q09ORklHX1RNUEZTX1FVT1RBPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6NzA3OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy03MDgtQ09ORklHX0VDUllQVF9GUz1tXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9NjkyPUNPTkZJR19UTVBGU19RVU9UQT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjY5MzpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctNjk0LUNPTkZJR19FQ1JZUFRfRlM9bVxcbi0tXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaD0xMTExPXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rc3BlY2lhbChwdGVfdCBwdGUpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTExMTUtXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxMTE2OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xMTE3LXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21raHVnZShwdGVfdCBwdGUpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oPTE1NjA9c3RhdGljIGlubGluZSBwdWRfdCBwdWRfbWtkaXJ0eShwdWRfdCBwdWQpXFxuLS1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oLTE1NjctXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaDoxNTY4OiNpZiBkZWZpbmVkKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgfHwgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFKVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTU2OS1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWFzc2FnZV9wZ3Byb3RfcG1kKHBncHJvdF90IHBncHJvdClcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmg9MTYxOD1zdGF0aWMgaW5saW5lIHBtZF90IG1rX3BtZF9waHlzKHVuc2lnbmVkIGxvbmcgcGh5c3BhZ2UsIHBncHJvdF90IHBncHJvdClcXG4tLVxcbmFyY2gvczM5MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgtMTYyMi1cXG5hcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oOjE2MjM6I2VuZGlmIC8qIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSB8fCBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxuYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3BndGFibGUuaC0xNjI0LVxcbi0tXFxuYXJjaC9zMzkwL21tL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19ERUJVR19WSVJUVUFMKVxcdCs9IHBoeXNhZGRyLm9cXG5hcmNoL3MzOTAvbW0vTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSlcXHQrPSBodWdldGxicGFnZS5vXFxuYXJjaC9zMzkwL21tL01ha2VmaWxlLTEyLW9iai0kKENPTkZJR19QVERVTVApXFx0XFx0Kz0gZHVtcF9wYWdldGFibGVzLm9cXG4tLVxcbmFyY2gvc2gvY29uZmlncy9hcHNoNGFkMGFfZGVmY29uZmlnPTI1PUNPTkZJR19NRU1PUllfU0laRT0weDEwMDAwMDAwXFxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWc6MjY6Q09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzFNQj15XFxuYXJjaC9zaC9jb25maWdzL2Fwc2g0YWQwYV9kZWZjb25maWctMjctQ09ORklHX0tTTT15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3MvYXBzaDRhZDBhX2RlZmNvbmZpZz05Nz1DT05GSUdfVE1QRlM9eVxcbmFyY2gvc2gvY29uZmlncy9hcHNoNGFkMGFfZGVmY29uZmlnOjk4OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvc2gvY29uZmlncy9hcHNoNGFkMGFfZGVmY29uZmlnLTk5LUNPTkZJR19KRkZTMl9GUz15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3MvZHJlYW1jYXN0X2RlZmNvbmZpZz02ND1DT05GSUdfVE1QRlM9eVxcbmFyY2gvc2gvY29uZmlncy9kcmVhbWNhc3RfZGVmY29uZmlnOjY1OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvc2gvY29uZmlncy9kcmVhbWNhc3RfZGVmY29uZmlnLTY2LUNPTkZJR19SVENfQ0xBU1M9eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3I3NzgwbXBfZGVmY29uZmlnPTg0PUNPTkZJR19UTVBGUz15XFxuYXJjaC9zaC9jb25maWdzL3I3NzgwbXBfZGVmY29uZmlnOjg1OkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvc2gvY29uZmlncy9yNzc4MG1wX2RlZmNvbmZpZy04Ni1DT05GSUdfQ09ORklHRlNfRlM9bVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnPTE2PUNPTkZJR19NRU1PUllfU0laRT0weDA4MDAwMDAwXFxuYXJjaC9zaC9jb25maWdzL3I3Nzg1cnBfZGVmY29uZmlnOjE3OkNPTkZJR19IVUdFVExCX1BBR0VfU0laRV8xTUI9eVxcbmFyY2gvc2gvY29uZmlncy9yNzc4NXJwX2RlZmNvbmZpZy0xOC1DT05GSUdfU0hfU1RPUkVfUVVFVUVTPXlcXG4tLVxcbmFyY2gvc2gvY29uZmlncy9yNzc4NXJwX2RlZmNvbmZpZz03OT1DT05GSUdfVE1QRlM9eVxcbmFyY2gvc2gvY29uZmlncy9yNzc4NXJwX2RlZmNvbmZpZzo4MDpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvcjc3ODVycF9kZWZjb25maWctODEtQ09ORklHX0NPTkZJR0ZTX0ZTPW1cXG4tLVxcbmFyY2gvc2gvY29uZmlncy9zZGs3NzgwX2RlZmNvbmZpZz0xMTU9Q09ORklHX1RNUEZTX1BPU0lYX0FDTD15XFxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODBfZGVmY29uZmlnOjExNjpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4MF9kZWZjb25maWctMTE3LUNPTkZJR19NSU5JWF9GUz15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2RrNzc4Nl9kZWZjb25maWc9NDQ9Q09ORklHX05VTUE9eVxcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZzo0NTpDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfNjRNQj15XFxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnLTQ2LUNPTkZJR19LU009eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnPTE3OT1DT05GSUdfVE1QRlM9eVxcbmFyY2gvc2gvY29uZmlncy9zZGs3Nzg2X2RlZmNvbmZpZzoxODA6Q09ORklHX0hVR0VUTEJGUz15XFxuYXJjaC9zaC9jb25maWdzL3Nkazc3ODZfZGVmY29uZmlnLTE4MS1DT05GSUdfQ09ORklHRlNfRlM9eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3NlNzcyMl9kZWZjb25maWc9NDk9Q09ORklHX1RNUEZTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIyX2RlZmNvbmZpZzo1MDpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2U3NzIyX2RlZmNvbmZpZy01MS1DT05GSUdfUFJJTlRLX1RJTUU9eVxcbi0tXFxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWc9MTc9Q09ORklHX1BNQj15XFxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWc6MTg6Q09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzFNQj15XFxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWctMTktQ09ORklHX1NIX1NUT1JFX1FVRVVFUz15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2g3Nzg1bGNyXzMyYml0X2RlZmNvbmZpZz0xMjE9Q09ORklHX1RNUEZTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2g3Nzg1bGNyXzMyYml0X2RlZmNvbmZpZzoxMjI6Q09ORklHX0hVR0VUTEJGUz15XFxuYXJjaC9zaC9jb25maWdzL3NoNzc4NWxjcl8zMmJpdF9kZWZjb25maWctMTIzLUNPTkZJR19DT05GSUdGU19GUz15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWc9ODk9Q09ORklHX1RNUEZTPXlcXG5hcmNoL3NoL2NvbmZpZ3Mvc2h4M19kZWZjb25maWc6OTA6Q09ORklHX0hVR0VUTEJGUz15XFxuYXJjaC9zaC9jb25maWdzL3NoeDNfZGVmY29uZmlnLTkxLSMgQ09ORklHX0VOQUJMRV9NVVNUX0NIRUNLIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvc2gvY29uZmlncy91bDJfZGVmY29uZmlnPTcyPUNPTkZJR19UTVBGUz15XFxuYXJjaC9zaC9jb25maWdzL3VsMl9kZWZjb25maWc6NzM6Q09ORklHX0hVR0VUTEJGUz15XFxuYXJjaC9zaC9jb25maWdzL3VsMl9kZWZjb25maWctNzQtQ09ORklHX0NSQU1GUz15XFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWc9MTIyPUNPTkZJR19UTVBGUz15XFxuYXJjaC9zaC9jb25maWdzL3VycXVlbGxfZGVmY29uZmlnOjEyMzpDT05GSUdfSFVHRVRMQkZTPXlcXG5hcmNoL3NoL2NvbmZpZ3MvdXJxdWVsbF9kZWZjb25maWctMTI0LUNPTkZJR19DT05GSUdGU19GUz15XFxuLS1cXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaC0xNC1cXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaDoxNTojaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfNjRLKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oLTE2LSNkZWZpbmUgSFBBR0VfU0hJRlRcXHQxNlxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oOjE3OiNlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzI1NkspXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmgtMTgtI2RlZmluZSBIUEFHRV9TSElGVFxcdDE4XFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmg6MTk6I2VsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMU1CKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oLTIwLSNkZWZpbmUgSFBBR0VfU0hJRlRcXHQyMFxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oOjIxOiNlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzRNQilcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaC0yMi0jZGVmaW5lIEhQQUdFX1NISUZUXFx0MjJcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaDoyMzojZWxpZiBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0VfU0laRV82NE1CKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oLTI0LSNkZWZpbmUgSFBBR0VfU0hJRlRcXHQyNlxcbi0tXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmgtMjYtXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmg6Mjc6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaC0yOC0jZGVmaW5lIEhQQUdFX1NJWkVcXHRcXHQoMVVMIFxcdTAwM2NcXHUwMDNjIEhQQUdFX1NISUZUKVxcbi0tXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmg9OTc9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGNvcHlfcHRlYV9hdHRyaWJ1dGVzKHVuc2lnbmVkIGxvbmcgeClcXG4tLVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oLTEzNi0jaWYgZGVmaW5lZChDT05GSUdfWDJUTEIpXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmg6MTM3OiMgaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfNjRLKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oLTEzOC0jICBkZWZpbmUgX1BBR0VfU1pIVUdFXFx0KF9QQUdFX0VYVF9FU1oyKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oOjEzOTojIGVsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMjU2SylcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaC0xNDAtIyAgZGVmaW5lIF9QQUdFX1NaSFVHRVxcdChfUEFHRV9FWFRfRVNaMCB8IF9QQUdFX0VYVF9FU1oyKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oOjE0MTojIGVsaWYgZGVmaW5lZChDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfMU1CKVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oLTE0Mi0jICBkZWZpbmUgX1BBR0VfU1pIVUdFXFx0KF9QQUdFX0VYVF9FU1owIHwgX1BBR0VfRVhUX0VTWjEgfCBfUEFHRV9FWFRfRVNaMilcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaDoxNDM6IyBlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzRNQilcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaC0xNDQtIyAgZGVmaW5lIF9QQUdFX1NaSFVHRVxcdChfUEFHRV9FWFRfRVNaMylcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaDoxNDU6IyBlbGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzY0TUIpXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgtMTQ2LSMgIGRlZmluZSBfUEFHRV9TWkhVR0VcXHQoX1BBR0VfRVhUX0VTWjIgfCBfUEFHRV9FWFRfRVNaMylcXG4tLVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oLTE0OS0jZWxzZVxcbmFyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oOjE1MDojIGlmIGRlZmluZWQoQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFXzY0SylcXG5hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaC0xNTEtIyAgZGVmaW5lIF9QQUdFX1NaSFVHRVxcdChfUEFHRV9TWjEpXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmg6MTUyOiMgZWxpZiBkZWZpbmVkKENPTkZJR19IVUdFVExCX1BBR0VfU0laRV8xTUIpXFxuYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgtMTUzLSMgIGRlZmluZSBfUEFHRV9TWkhVR0VcXHQoX1BBR0VfU1owIHwgX1BBR0VfU1oxKVxcbi0tXFxuYXJjaC9zaC9tbS9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfREVCVUdfRlMpXFx0XFx0Kz0gJChkZWJ1Z2ZzLXkpXFxuYXJjaC9zaC9tbS9NYWtlZmlsZTozODpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFKVxcdCs9IGh1Z2V0bGJwYWdlLm9cXG5hcmNoL3NoL21tL01ha2VmaWxlLTM5LW9iai0kKENPTkZJR19QTUIpXFx0XFx0Kz0gcG1iLm9cXG4tLVxcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZz0xOTI9Q09ORklHX1RNUEZTPXlcXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWc6MTkzOkNPTkZJR19IVUdFVExCRlM9eVxcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZy0xOTQtQ09ORklHX1BSSU5US19USU1FPXlcXG4tLVxcbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTYtXFxuYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9odWdldGxiLmg6NzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vaHVnZXRsYi5oLTgtc3RydWN0IHB1ZF9odWdlX3BhdGNoX2VudHJ5IHtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODowOToxMC4yNzM2MzM0NjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDIyMDk1MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBIdWdlIFBhZ2UgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIGh1Z2UgcGFnZXMuIGBDT05GSUdfSFVHRVRMQl9QQUdFYCBpcyB0aGUga2V5IG9uZSwgYW5kIGl0J3MgcmVzcG9uc2libGUgZm9yIGJyaW5naW5nIGBodWdldGxicGFnZS5vYCBpbnRvIHRoZSBnYW1lIGFjcm9zcyBhIGJ1bmNoIG9mIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLiBUaGVuIHRoZXJlJ3MgYENPTkZJR19DTUFgLCB3aGljaCBlbmFibGVzIENNQS4gVGhhdCdzIENvbW1hLXNlcGFyYXRlZCBNZW1vcnkgQWxsb2NhdGlvbiwgaWYgSSByZWNhbGwuIE5vdywgYENPTkZJR19IVUdFVExCRlNgIGlzIHdoYXQgYWN0dWFsbHkgZW5hYmxlcyBgaHVnZXRsYl9jbWEub2Agd2l0aGluIGBtbS9NYWtlZmlsZWAuXG5cbkhvbGQgb24uLi4gbG9va2luZyBhdCBgbW0vTWFrZWZpbGVgIGRpcmVjdGx5LCBpdCBoYXMgdGhpcyBjb25kaXRpb25hbCBibG9jazpcblxuYGBgXG5pZmRlZiBDT05GSUdfQ01BXG5vYmotJChDT05GSUdfSFVHRVRMQkZTKSArPSBodWdldGxiX2NtYS5vXG5lbmRpZlxuYGBgXG5cblJpZ2h0LCBzbyBgQ09ORklHX0hVR0VUTEJGU2AgYW5kIGBDT05GSUdfQ01BYCAqYm90aCogbmVlZCB0byBiZSBlbmFibGVkIGZvciBgaHVnZXRsYl9jbWEub2AgdG8gZ2V0IGJ1aWx0LiBUaGF0IGV4cGxhaW5zIHdoeSBJJ20gc2VlaW5nIHRoaXMgcGFydGljdWxhciByZWxhdGlvbnNoaXAuIE5vdywgbGV0J3Mgc2VlIGhvdyBgbW0vaHVnZXRsYi5jYCBjb21waWxhdGlvbiBpcyBoYW5kbGVkLlxuXG5Pa2F5LCBoZXJlIGl0IGlzOlxuXG5gYGBcbm9iai0kKENPTkZJR19IVUdFVExCX1BBR0UpICs9IGh1Z2V0bGIub1xuYGBgXG5cbkFoYSEgYGh1Z2V0bGIub2AgaXMgdGllZCBkaXJlY3RseSB0byBgQ09ORklHX0hVR0VUTEJfUEFHRWAuIE5vdywgdGhlIGNydWNpYWwgcGllY2UgaXMgaG93IGBDT05GSUdfSFVHRVRMQl9QQUdFYCBpdHNlbGYgaXMgc2VsZWN0ZWQuIEl0J3MgbGlrZWx5IHJlbGF0ZWQgdG8gYENPTkZJR19IVUdFVExCRlNgLiBJIG5lZWQgdG8gY29uc3VsdCBlaXRoZXIgYGZzL0tjb25maWdgIG9yIGBtbS9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgZGlyZWN0IHNlbGVjdGlvbi4gSSBhbSBhc3N1bWluZyB0aGF0IGl0IGlzIHRoZSBkaXJlY3Qgc2VsZWN0aW9uLiBJIG5lZWQgdG8gYmUgc3VyZSwgb2YgY291cnNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDMwOCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6MDk6MTUuNjk1NzMwNDU0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkwOTI4NDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBIVUdFVExCRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvS2NvbmZpZz0yNDc9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXFxuLS1cXG5mcy9LY29uZmlnLTI0OS1cXG5mcy9LY29uZmlnOjI1MDptZW51Y29uZmlnIEhVR0VUTEJGU1xcbmZzL0tjb25maWctMjUxLVxcdGJvb2wgXFxcIkh1Z2VUTEIgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6MDk6MTcuNTg2NjYzNDAxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg0NDczNDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBIVUdFVExCX1BBR0VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zaC9tbS9LY29uZmlnPTE1OD1jaG9pY2VcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjMtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE2NDpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNjRLXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2NS1cXHRib29sIFxcXCI2NGtCXFxcIlxcbi0tXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2Ny1cXG5hcmNoL3NoL21tL0tjb25maWc6MTY4OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8yNTZLXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2OS1cXHRib29sIFxcXCIyNTZrQlxcXCJcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzEtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE3Mjpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfMU1CXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3My1cXHRib29sIFxcXCIxTUJcXFwiXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3NC1cXG5hcmNoL3NoL21tL0tjb25maWc6MTc1OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV80TUJcXG5hcmNoL3NoL21tL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIjRNQlxcXCJcXG4tLVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzgtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE3OTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfNjRNQlxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xODAtXFx0Ym9vbCBcXFwiNjRNQlxcXCJcXG4tLVxcbmZzL0tjb25maWc9MjYyPWlmIEhVR0VUTEJGU1xcbmZzL0tjb25maWc6MjYzOmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUF9ERUZBVUxUX09OXFxuZnMvS2NvbmZpZy0yNjQtXFx0Ym9vbCBcXFwiSHVnZVRMQiBWbWVtbWFwIE9wdGltaXphdGlvbiAoSFZPKSBkZWZhdWx0cyB0byBvblxcXCJcXG4tLVxcbmZzL0tjb25maWc9MjcxPWVuZGlmICMgSFVHRVRMQkZTXFxuZnMvS2NvbmZpZy0yNzItXFxuZnMvS2NvbmZpZzoyNzM6Y29uZmlnIEhVR0VUTEJfUEFHRVxcbmZzL0tjb25maWctMjc0LVxcdGRlZl9ib29sIEhVR0VUTEJGU1xcbi0tXFxuZnMvS2NvbmZpZy0yNzYtXFxuZnMvS2NvbmZpZzoyNzc6Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXFxuZnMvS2NvbmZpZy0yNzgtXFx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXFxuLS1cXG5tbS9LY29uZmlnPTcwNj1jb25maWcgQVJDSF9FTkFCTEVfVEhQX01JR1JBVElPTlxcbi0tXFxubW0vS2NvbmZpZy03MDgtXFxubW0vS2NvbmZpZzo3MDk6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFXFxubW0vS2NvbmZpZy03MTAtXFx0ZGVmX2Jvb2wgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODowOToxOS40NzExNDE4NjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5ODc4OTA0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCBteSBtZW50YWwgY2hlY2tsaXN0IGJlZ2lucyB3aXRoIHRoZSBvYnZpb3VzOlxuXG4qKkluaXRpYWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5TbywgYENPTkZJR19IVUdFVExCRlNgIGlzIHRoZSBjb3JuZXJzdG9uZSBoZXJlOyBpdCdzIHRoZSBvbmUgdGhhdCBwdWxscyBpbiBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIGFuZCB0aGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoZXkncmUgaW50cmluc2ljYWxseSBsaW5rZWQuIFRoZW4sIG9mIGNvdXJzZSwgdGhlIGBodWdldGxiX2NtYS5jYCBtb2R1bGUgZGVtYW5kcyBgQ09ORklHX0NNQWAuIEkga25ldyB0aGF0IG9uZSBieSBoZWFydC4gTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgZWxzZS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIHdlIG5lZWQgYENPTkZJR19DUFVTRVRTYCBmb3IgYGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZGAuIFRoYXQncyB0aGUga2V5IHRvIGtub3dpbmcgd2hlcmUgbGFyZ2UgcGFnZXMgYXJlIHZpc2libGUgdG8gcHJvY2Vzc2VzLiBBbHdheXMgbmVlZCB0byBiZSB0aG9yb3VnaCB3aXRoIHRoZSBkZXBlbmRlbmNpZXMuIEkgaGF2ZSB0byB0aGluayB0aHJvdWdoIHdoZXRoZXIgdGhlIGN1cnJlbnQgbWVtb3J5IHBvbGljeSwgYXMgY29udHJvbGxlZCBieSBjcHVzZXRzLCBpcyBhIGZhY3Rvci4gTGV0J3MgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU1OTcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6MDk6MjMuMTY5OTMzNDQ0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTAzNDE0MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2NwdXNldC5oPTgzPWV4dGVybiBub2RlbWFza190IGNwdXNldF9tZW1zX2FsbG93ZWQoc3RydWN0IHRhc2tfc3RydWN0ICpwKTtcXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oOjg0OiNkZWZpbmUgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkIChjdXJyZW50LVxcdTAwM2VtZW1zX2FsbG93ZWQpXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC04NS12b2lkIGNwdXNldF9pbml0X2N1cnJlbnRfbWVtc19hbGxvd2VkKHZvaWQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaD0yMTk9c3RhdGljIGlubGluZSBub2RlbWFza190IGNwdXNldF9tZW1zX2FsbG93ZWQoc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbi0tXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaC0yMjMtXFxuaW5jbHVkZS9saW51eC9jcHVzZXQuaDoyMjQ6I2RlZmluZSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQgKG5vZGVfc3RhdGVzW05fTUVNT1JZXSlcXG5pbmNsdWRlL2xpbnV4L2NwdXNldC5oLTIyNS1zdGF0aWMgaW5saW5lIHZvaWQgY3B1c2V0X2luaXRfY3VycmVudF9tZW1zX2FsbG93ZWQodm9pZCkge31cXG4tLVxcbmtlcm5lbC9zY2hlZC9mYWlyLmM9NDA3Nj1zdGF0aWMgdm9pZCB0YXNrX251bWFfd29yayhzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqd29yaylcXG4tLVxcbmtlcm5lbC9zY2hlZC9mYWlyLmMtNDEwNy1cXHQgKi9cXG5rZXJuZWwvc2NoZWQvZmFpci5jOjQxMDg6XFx0aWYgKGNwdXNldHNfZW5hYmxlZCgpIFxcdTAwMjZcXHUwMDI2IG5vZGVzX3dlaWdodChjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQpID09IDEpIHtcXG5rZXJuZWwvc2NoZWQvZmFpci5jOjQxMDk6XFx0XFx0dHJhY2Vfc2NoZWRfc2tpcF9jcHVzZXRfbnVtYShjdXJyZW50LCBcXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKTtcXG5rZXJuZWwvc2NoZWQvZmFpci5jLTQxMTAtXFx0XFx0cmV0dXJuO1xcbi0tXFxubW0vaHVnZXRsYi5jPTE4NjM9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTE4NzMtXFx0XFx0XFx0Y3B1c2V0X21lbXNfY29va2llID0gcmVhZF9tZW1zX2FsbG93ZWRfYmVnaW4oKTtcXG5tbS9odWdldGxiLmM6MTg3NDpcXHRcXHRcXHRsb2NhbF9ub2RlX21hc2sgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XFxubW0vaHVnZXRsYi5jLTE4NzUtXFx0XFx0fSB3aGlsZSAocmVhZF9tZW1zX2FsbG93ZWRfcmV0cnkoY3B1c2V0X21lbXNfY29va2llKSk7XFxuLS1cXG5tbS9odWdldGxiLmM9MjI1Nz1zdGF0aWMgaW50IGdhdGhlcl9zdXJwbHVzX3BhZ2VzKHN0cnVjdCBoc3RhdGUgKmgsIGxvbmcgZGVsdGEpXFxuLS1cXG5tbS9odWdldGxiLmMtMjI2OS1cXHRpZiAobWJpbmRfbm9kZW1hc2spXFxubW0vaHVnZXRsYi5jOjIyNzA6XFx0XFx0bm9kZXNfYW5kKGFsbG9jX25vZGVtYXNrLCAqbWJpbmRfbm9kZW1hc2ssIGNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCk7XFxubW0vaHVnZXRsYi5jLTIyNzEtXFx0ZWxzZVxcbm1tL2h1Z2V0bGIuYzoyMjcyOlxcdFxcdGFsbG9jX25vZGVtYXNrID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xcbm1tL2h1Z2V0bGIuYy0yMjczLVxcbi0tXFxubW0vaHVnZXRsYi5jPTQ1MTI9c3RhdGljIHVuc2lnbmVkIGludCBhbGxvd2VkX21lbXNfbnIoc3RydWN0IGhzdGF0ZSAqaClcXG4tLVxcbm1tL2h1Z2V0bGIuYy00NTIwLVxcdG1iaW5kX25vZGVtYXNrID0gcG9saWN5X21iaW5kX25vZGVtYXNrKGdmcF9tYXNrKTtcXG5tbS9odWdldGxiLmM6NDUyMTpcXHRmb3JfZWFjaF9ub2RlX21hc2sobm9kZSwgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKSB7XFxubW0vaHVnZXRsYi5jLTQ1MjItXFx0XFx0aWYgKCFtYmluZF9ub2RlbWFzayB8fCBub2RlX2lzc2V0KG5vZGUsICptYmluZF9ub2RlbWFzaykpXFxuLS1cXG5tbS9tZW1wb2xpY3kuYz00MDQ9c3RhdGljIGludCBtcG9sX3NldF9ub2RlbWFzayhzdHJ1Y3QgbWVtcG9saWN5ICpwb2wsXFxuLS1cXG5tbS9tZW1wb2xpY3kuYy00MTgtXFx0bm9kZXNfYW5kKG5zYy1cXHUwMDNlbWFzazEsXFxubW0vbWVtcG9saWN5LmM6NDE5OlxcdFxcdCAgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkLCBub2RlX3N0YXRlc1tOX01FTU9SWV0pO1xcbm1tL21lbXBvbGljeS5jLTQyMC1cXG4tLVxcbm1tL21lbXBvbGljeS5jLTQzMC1cXHRlbHNlXFxubW0vbWVtcG9saWN5LmM6NDMxOlxcdFxcdHBvbC1cXHUwMDNldy5jcHVzZXRfbWVtc19hbGxvd2VkID0gY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xcbm1tL21lbXBvbGljeS5jLTQzMi1cXG4tLVxcbm1tL21lbXBvbGljeS5jPTExNDc9c3RhdGljIGxvbmcgZG9fZ2V0X21lbXBvbGljeShpbnQgKnBvbGljeSwgbm9kZW1hc2tfdCAqbm1hc2ssXFxuLS1cXG5tbS9tZW1wb2xpY3kuYy0xMTYzLVxcdFxcdHRhc2tfbG9jayhjdXJyZW50KTtcXG5tbS9tZW1wb2xpY3kuYzoxMTY0OlxcdFxcdCpubWFzayAgPSBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XFxubW0vbWVtcG9saWN5LmMtMTE2NS1cXHRcXHR0YXNrX3VubG9jayhjdXJyZW50KTtcXG4tLVxcbm1tL29vbV9raWxsLmM9MjQ5PXN0YXRpYyBlbnVtIG9vbV9jb25zdHJhaW50IGNvbnN0cmFpbmVkX2FsbG9jKHN0cnVjdCBvb21fY29udHJvbCAqb2MpXFxuLS1cXG5tbS9vb21fa2lsbC5jLTI5OC1cXHRcXHRvYy1cXHUwMDNldG90YWxwYWdlcyA9IHRvdGFsX3N3YXBfcGFnZXM7XFxubW0vb29tX2tpbGwuYzoyOTk6XFx0XFx0Zm9yX2VhY2hfbm9kZV9tYXNrKG5pZCwgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKVxcbm1tL29vbV9raWxsLmMtMzAwLVxcdFxcdFxcdG9jLVxcdTAwM2V0b3RhbHBhZ2VzICs9IG5vZGVfcHJlc2VudF9wYWdlcyhuaWQpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTQ3MjU9X19hbGxvY19wYWdlc19zbG93cGF0aChnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQ4MDYtXFx0XFx0XFx0XFx0XFx0YWMtXFx1MDAzZWhpZ2hlc3Rfem9uZWlkeCxcXG5tbS9wYWdlX2FsbG9jLmM6NDgwNzpcXHRcXHRcXHRcXHRcXHRcXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkKTtcXG5tbS9wYWdlX2FsbG9jLmMtNDgwOC1cXHRcXHRpZiAoIXpvbmVsaXN0X3pvbmUoeikpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NTAyNj1zdGF0aWMgaW5saW5lIGJvb2wgcHJlcGFyZV9hbGxvY19wYWdlcyhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTUwNDItXFx0XFx0aWYgKGluX3Rhc2soKSBcXHUwMDI2XFx1MDAyNiAhYWMtXFx1MDAzZW5vZGVtYXNrKVxcbm1tL3BhZ2VfYWxsb2MuYzo1MDQzOlxcdFxcdFxcdGFjLVxcdTAwM2Vub2RlbWFzayA9IFxcdTAwMjZjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWQ7XFxubW0vcGFnZV9hbGxvYy5jLTUwNDQtXFx0XFx0ZWxzZVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTUyNjg9c3RydWN0IHBhZ2UgKl9fYWxsb2NfZnJvemVuX3BhZ2VzX25vcHJvZihnZnBfdCBnZnAsIHVuc2lnbmVkIGludCBvcmRlcixcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy01MzEyLVxcdCAqIFJlc3RvcmUgdGhlIG9yaWdpbmFsIG5vZGVtYXNrIGlmIGl0IHdhcyBwb3RlbnRpYWxseSByZXBsYWNlZCB3aXRoXFxubW0vcGFnZV9hbGxvYy5jOjUzMTM6XFx0ICogXFx1MDAyNmNwdXNldF9jdXJyZW50X21lbXNfYWxsb3dlZCB0byBvcHRpbWl6ZSB0aGUgZmFzdC1wYXRoIGF0dGVtcHQuXFxubW0vcGFnZV9hbGxvYy5jLTUzMTQtXFx0ICovXFxuLS1cXG5tbS9zaG93X21lbS5jPTExOT1zdGF0aWMgYm9vbCBzaG93X21lbV9ub2RlX3NraXAodW5zaWduZWQgaW50IGZsYWdzLCBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzaylcXG4tLVxcbm1tL3Nob3dfbWVtLmMtMTI5LVxcdGlmICghbm9kZW1hc2spXFxubW0vc2hvd19tZW0uYzoxMzA6XFx0XFx0bm9kZW1hc2sgPSBcXHUwMDI2Y3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkO1xcbm1tL3Nob3dfbWVtLmMtMTMxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODowOToyNS4wNzMzNTMxNzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzMjY5MDY2NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgSHVnZXRsYiBhbmQgSHVnZXRsYl9DTUEgQWxsb2NhdGlvbiBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIGlzIHBsYXlpbmcgYSByb2xlLCB3aGljaCBpcyBkZWZpbmVkIGluIGBjcHVzZXQuaGAuIEl0IGFwcGVhcnMgdG8gYmUgYmFzZWQgb24gYGN1cnJlbnQtXHUwMDNlbWVtc19hbGxvd2VkYCBpZiBjcHVzZXRzIGFyZSBlbmFibGVkLCBidXQgZGVmYXVsdHMgdG8gYG5vZGVfc3RhdGVzW05fTUVNT1JZXWAgb3RoZXJ3aXNlLiBUaGlzIHN1Z2dlc3RzIHRoYXQgZXZlbiB3aXRob3V0IGBDT05GSUdfQ1BVU0VUU2AsIHRoZSBjb2RlIG1pZ2h0IHN0aWxsIGJlIHJlbGV2YW50LCB0aG91Z2ggYENPTkZJR19IVUdFVExCRlNgIGFuZCBgQ09ORklHX0NNQWAgc2VlbSBsaWtlIHRoZSBtb3JlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb25zIGhlcmUuXG5cbk5vdywgZm9jdXNpbmcgb24gdGhlIGNvcmUgY2hhbmdlcywgdGhpcyBwYXRjaCB0b3VjaGVzIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBhbmQgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AuIEZ1bmN0aW9uYWxseSwgdGhlc2UgY2hhbmdlcyBsb29rIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEluIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCwgd2hlbiBgbm1hc2tgIGlzIE5VTEwsIGluc3RlYWQgb2YgcGFzc2luZyB0aGUgbnVsbCBtYXNrIGludG8gYG9ubHlfYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AsIGl0IG5vdyB1c2VzIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgLiBUaGF0J3MgaW1wb3J0YW50OyB0aGUgaW1wbGljYXRpb24gaXMgdGhhdCBhIE5VTEwgYG5tYXNrYCBhbGxvd3MgYWxsb2NhdGlvbiBmcm9tICphbnkqIG5vZGUsIGJ1dCBub3cgdGhlIGNvZGUgcmVzdHJpY3RzIGl0IHRvIHRoZSBjdXJyZW50IGNwdXNldCdzIGFsbG93ZWQgbWVtb3J5IG5vZGVzLiBUaGlzIGxvb2tzIGxpa2UgYSBjb25zdHJhaW50IHRvIHJlZHVjZSBtZW1vcnkgYWxsb2NhdGlvbiBmb290cHJpbnQuXG5cbkluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLCB0aGUgcGF0Y2ggYWRkcyBhIGBub2RlX2lzc2V0YCBjaGVjayBhZ2FpbnN0IGBub2RlbWFza2AgYmVmb3JlIGFsbG9jYXRpbmcgZnJvbSBgaHVnZXRsYl9jbWFbbmlkXWAuIFRoaXMgaXMgYW5vdGhlciB0YXJnZXRlZCByZXN0cmljdGlvbiwgdGhpcyB0aW1lIGVuc3VyaW5nIHRoYXQgb25seSBhbGxvd2VkIG5vZGVzIGFyZSB1c2VkIGZvciBhbGxvY2F0aW9uLlxuXG5UaGlzIGlzIGNsZWFybHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGh1Z2V0bGIgYW5kIGh1Z2V0bGJfY21hIG1lbW9yeSBhbGxvY2F0aW9uIHBhdGhzLiBJdCdzIHRpZ2h0ZW5pbmcgdGhlIG5vZGUgbWFzayBjb25zdHJhaW50cy4gU2luY2UgdGhpcyBpbnZvbHZlcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCB0aGlzIGFic29sdXRlbHkgd2FycmFudHMgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBwb2ludHMgaGVyZSBhcmUgYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gIGFuZCBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCwgYnV0IEkgc2hvdWxkIGNoZWNrIHRoZSBjYWxsZXJzIG9mIHRob3NlIGZ1bmN0aW9ucyB0b28uIGBhbGxvY19mcmVzaF9odWdldGxiX2ZvbGlvYCBpcyBzdGF0aWMuIEFscmlnaHQsIGxldCdzIGxvb2sgYXQgdGhlIGNhbGxzOiBgYWxsb2Nfc3VycGx1c19odWdldGxiX2ZvbGlvYCwgYGFsbG9jX21pZ3JhdGVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW9gLlxuXG5gaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYCBpcyBjYWxsZWQgYnkgYGFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb2AuIE9rYXksIGxldCdzIGluY2x1ZGUgdGhvc2UuXG5cblRoZXJlZm9yZSwgdGhlIHJldmlzZWQgZm9jdXMgc3ltYm9scyBhcmU6XG4qICAgYGFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9gXG4qICAgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2BcbiogICBgYWxsb2Nfc3VycGx1c19odWdldGxiX2ZvbGlvYFxuKiAgIGBhbGxvY19taWdyYXRlX2h1Z2V0bGJfZm9saW9gXG4qICAgYGFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvYFxuKiAgIGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gXG5cbkFuZCB0aGUgY29uZmlncyB0byBlbmFibGU6XG4qICAgYEhVR0VUTEJGU2BcbiogICBgQ01BYFxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgcmVhY2hhYmlsaXR5LiBgYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb2AgaXMgaW5kZWVkIGNhbGxlZCBieSBgYWxsb2Nfc3VycGx1c19odWdldGxiX2ZvbGlvYCwgYGFsbG9jX21pZ3JhdGVfaHVnZXRsYl9mb2xpb2AsIGFuZCBgYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW9gLCBhbmQgdGhvc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYnkgYGFsbG9jX2h1Z2V0bGJfZm9saW9gIGFuZCBtaWdyYXRpb24gYW5kIGlzb2xhdGlvbiBjb2RlIHJlc3BlY3RpdmVseS4gQWxzbywgYGh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb2AgaXMgY2FsbGVkIGJ5IGBhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9gIHdoaWNoIGlzIGNhbGxlZCBieSBgYWxsb2NfcG9vbF9odWdlX2ZvbGlvYC4gWXVwLCB0aGV5J3JlIGFsbCByZWFjaGFibGUuXG5cblRoZXJlZm9yZSwgaXQncyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSBwYXRjaCByZXN0cmljdHMgbWVtb3J5IGFsbG9jYXRpb24gdG8gc3BlY2lmaWMgbm9kZXMgZGV0ZXJtaW5lZCBieSBjcHVzZXQgY29uZmlndXJhdGlvbiBhbmQgaW50cm9kdWNlcyBub2RlIG1hc2sgY2hlY2tzLiBUaGVzZSBjaGFuZ2VzIGFyZSBjcnVjaWFsIGZvciBtZW1vcnkgYWxsb2NhdGlvbiBjb3JyZWN0bmVzcywgYW5kIGNhbiBiZSBjaGVja2VkIHdpdGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NTcsIk91dHB1dFRva2VucyI6MjAzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjA5OjM3LjQwMDI2MTgwMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwOTkzNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCRlNcIixcbiAgICBcIkNNQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFsbG9jX2ZyZXNoX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImh1Z2V0bGJfY21hX2FsbG9jX2Zyb3plbl9mb2xpb1wiLFxuICAgIFwiYWxsb2Nfc3VycGx1c19odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJhbGxvY19taWdyYXRlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImFsbG9jX2FuZF9kaXNzb2x2ZV9odWdldGxiX2ZvbGlvXCIsXG4gICAgXCJhbGxvY19naWdhbnRpY19mcm96ZW5fZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbm9kZSBtYXNrIGhhbmRsaW5nIGluIGh1Z2V0bGIgYW5kIGh1Z2V0bGJfY21hIGFsbG9jYXRpb24gcGF0aHMuIEl0IHJlc3RyaWN0cyBhbGxvY2F0aW9ucyB0byBgY3B1c2V0X2N1cnJlbnRfbWVtc19hbGxvd2VkYCB3aGVuIGBubWFza2AgaXMgTlVMTCBhbmQgYWRkcyBhIGBub2RlX2lzc2V0YCBjaGVjayBpbiBgaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJGU1wiLFxuICAgIFwiQ01BXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxsb2NfZnJlc2hfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiaHVnZXRsYl9jbWFfYWxsb2NfZnJvemVuX2ZvbGlvXCIsXG4gICAgXCJhbGxvY19zdXJwbHVzX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImFsbG9jX21pZ3JhdGVfaHVnZXRsYl9mb2xpb1wiLFxuICAgIFwiYWxsb2NfYW5kX2Rpc3NvbHZlX2h1Z2V0bGJfZm9saW9cIixcbiAgICBcImFsbG9jX2dpZ2FudGljX2Zyb3plbl9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBub2RlIG1hc2sgaGFuZGxpbmcgaW4gaHVnZXRsYiBhbmQgaHVnZXRsYl9jbWEgYWxsb2NhdGlvbiBwYXRocy4gSXQgcmVzdHJpY3RzIGFsbG9jYXRpb25zIHRvIGBjcHVzZXRfY3VycmVudF9tZW1zX2FsbG93ZWRgIHdoZW4gYG5tYXNrYCBpcyBOVUxMIGFuZCBhZGRzIGEgYG5vZGVfaXNzZXRgIGNoZWNrIGluIGBodWdldGxiX2NtYV9hbGxvY19mcm96ZW5fZm9saW9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowkkbx9[1] Phase: Succeeded StartedAt: 2026-07-05 18:09:48 +0000 UTC FinishedAt: 2026-07-05 18:09:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-05 18:09:48 +0000 UTC FinishedAt: 2026-07-05 18:09:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2] Phase: Succeeded StartedAt: 2026-07-05 18:09:48 +0000 UTC FinishedAt: 2026-07-05 22:24:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-05 18:09:48 +0000 UTC FinishedAt: 2026-07-05 22:24:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-05 18:09:48 +0000 UTC FinishedAt: 2026-07-05 18:10:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-05 18:09:48 +0000 UTC FinishedAt: 2026-07-05 18:10:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowkkbx9/series-workflowkkbx9-convert-artifact-506045859/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-05 18:10:54 +0000 UTC FinishedAt: 2026-07-05 18:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-05 18:10:54 +0000 UTC FinishedAt: 2026-07-05 18:42:01 +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:*f83e6fc7-9f9b-4f9e-9e5b-dafac1ff4cbd,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-workflowkkbx9/series-workflowkkbx9-convert-artifact-506045859/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": "d304788b-d0fe-4b07-bda2-67041399d79a", "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-workflowkkbx9/series-workflowkkbx9-build-action-3185842705/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-05 18:10:54 +0000 UTC FinishedAt: 2026-07-05 18:41:51 +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:*f83e6fc7-9f9b-4f9e-9e5b-dafac1ff4cbd,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-workflowkkbx9/series-workflowkkbx9-convert-artifact-506045859/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": "d304788b-d0fe-4b07-bda2-67041399d79a", "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-workflowkkbx9/series-workflowkkbx9-build-action-3185842705/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-05 18:42:01 +0000 UTC FinishedAt: 2026-07-05 18:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-05 18:42:01 +0000 UTC FinishedAt: 2026-07-05 18:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-05 18:42:01 +0000 UTC FinishedAt: 2026-07-05 18:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-05 18:42:01 +0000 UTC FinishedAt: 2026-07-05 18:42:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowkkbx9/series-workflowkkbx9-convert-artifact-1310317274/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-05 18:42:22 +0000 UTC FinishedAt: 2026-07-05 18:44:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-05 18:42:22 +0000 UTC FinishedAt: 2026-07-05 18:44:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d304788b-d0fe-4b07-bda2-67041399d79a,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-workflowkkbx9/series-workflowkkbx9-build-action-3185842705/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-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-05 18:44:54 +0000 UTC FinishedAt: 2026-07-05 18:44:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-05 18:44:54 +0000 UTC FinishedAt: 2026-07-05 18:44:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-05 18:44:54 +0000 UTC FinishedAt: 2026-07-05 19:19:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-05 18:44:54 +0000 UTC FinishedAt: 2026-07-05 19:19:41 +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:*f83e6fc7-9f9b-4f9e-9e5b-dafac1ff4cbd,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-workflowkkbx9/series-workflowkkbx9-convert-artifact-1310317274/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": "196ed06a-cae9-400c-9764-ce01cd41620e", "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-workflowkkbx9/series-workflowkkbx9-build-action-3278710718/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-05 18:44:54 +0000 UTC FinishedAt: 2026-07-05 19:19:31 +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:*f83e6fc7-9f9b-4f9e-9e5b-dafac1ff4cbd,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-workflowkkbx9/series-workflowkkbx9-convert-artifact-1310317274/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": "196ed06a-cae9-400c-9764-ce01cd41620e", "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-workflowkkbx9/series-workflowkkbx9-build-action-3278710718/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-05 19:19:41 +0000 UTC FinishedAt: 2026-07-05 19:19:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-05 19:19:41 +0000 UTC FinishedAt: 2026-07-05 19:19:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-05 19:19:41 +0000 UTC FinishedAt: 2026-07-05 19:22:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-05 19:19:41 +0000 UTC FinishedAt: 2026-07-05 19:21:52 +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:*196ed06a-cae9-400c-9764-ce01cd41620e,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-workflowkkbx9/series-workflowkkbx9-build-action-3278710718/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-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-05 19:22:02 +0000 UTC FinishedAt: 2026-07-05 22:24:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-05 19:22:02 +0000 UTC FinishedAt: 2026-07-05 22:24:20 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},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:*d304788b-d0fe-4b07-bda2-67041399d79a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*196ed06a-cae9-400c-9764-ce01cd41620e,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-workflowkkbx9/series-workflowkkbx9-build-action-3185842705/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-workflowkkbx9/series-workflowkkbx9-build-action-3278710718/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-05 19:22:02 +0000 UTC FinishedAt: 2026-07-05 19:22:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-05 19:22:02 +0000 UTC FinishedAt: 2026-07-05 19:22:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},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-workflowkkbx9/series-workflowkkbx9-convert-artifact-1176839823/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-05 19:22:02 +0000 UTC FinishedAt: 2026-07-05 19:22:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-05 19:22:02 +0000 UTC FinishedAt: 2026-07-05 19:22:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-05 19:22:02 +0000 UTC FinishedAt: 2026-07-05 19:22:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-05 19:22:48 +0000 UTC FinishedAt: 2026-07-05 22:24:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkkbx9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_fresh_hugetlb_folio","hugetlb_cma_alloc_frozen_folio","alloc_surplus_hugetlb_folio","alloc_migrate_hugetlb_folio","alloc_and_dissolve_hugetlb_folio","alloc_gigantic_frozen_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"230f0f19b98d9b512e4b0703405eb7dc73c6f91e","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","CMA"],"series_id":"1e008fa5-af8d-4691-8525-91d69f0f7f3b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-05 19:22:48 +0000 UTC FinishedAt: 2026-07-05 22:24:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d304788b-d0fe-4b07-bda2-67041399d79a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*196ed06a-cae9-400c-9764-ce01cd41620e,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-workflowkkbx9/series-workflowkkbx9-build-action-3185842705/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-workflowkkbx9/series-workflowkkbx9-build-action-3278710718/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-workflowkkbx9/series-workflowkkbx9-convert-artifact-1176839823/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,}