Name: series-workflowdch2h Phase: Succeeded StartedAt: 2026-07-13 15:06:12 +0000 UTC FinishedAt: 2026-07-13 20:12:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[0] Phase: Succeeded StartedAt: 2026-07-13 15:06:12 +0000 UTC FinishedAt: 2026-07-13 15:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 15:06:13 +0000 UTC FinishedAt: 2026-07-13 15:42:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bee763d5f341b99cf472afeb508d4988f62a6ca1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "HUGETLB_PAGE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bee763d5f341b99cf472afeb508d4988f62a6ca1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "HUGETLB_PAGE" ], "series_id": "1684777d-75fd-426b-9abb-a0c70a28e739" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "alloc_hugetlb_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+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtIVUdFVExCX1BBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGxvY19odWdldGxiX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGh1Z2V0bGIgZm9saW8gYWxsb2NhdGlvbiB3aGVyZSB1c2VkX2hwYWdlcyBpcyBub3QgY29ycmVjdGx5IHJlc3RvcmVkIG9uIGEgc3BlY2lmaWMgZXJyb3IgcGF0aCB3aGVuIGZhaWxpbmcgdG8gYmFjayBmcm9tIHRoZSBnbG9iYWwgcG9vbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBodWdldGxiIHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDExZjI5NTU5MTRjNzE3ODIwMzVjNWJmM2EzMDI3ZDJhZmVhZjc3ZTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxNTozNzowOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmNcbmluZGV4IGQ2YzgxMmQxODU3YjU3Li44NDEzZWM5MmQ4MzZkZSAxMDA2NDRcbi0tLSBhL21tL2h1Z2V0bGIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZXRsYi5jXG5AQCAtMzA3Myw2ICYjNDM7MzA3MywxOSBAQCBzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW8oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRpZiAobWFwX2NoZyBcdTAwMjZcdTAwMjYgIWdibF9jaGcpIHtcbiBcdFx0Z2JsX3Jlc2VydmUgPSBodWdlcGFnZV9zdWJwb29sX3B1dF9wYWdlcyhzcG9vbCwgMSk7XG4gXHRcdGh1Z2V0bGJfYWNjdF9tZW1vcnkoaCwgLWdibF9yZXNlcnZlKTtcbiYjNDM7XHR9IGVsc2UgaWYgKG1hcF9jaGcgXHUwMDI2XHUwMDI2IGdibF9jaGcgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IHNwb29sKSB7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogUmVzdG9yZSB1c2VkX2hwYWdlcyBmb3IgdGhlIGdsb2JhbGx5LXJlcXVlc3RlZCBwYWdlIHRoYXRcbiYjNDM7XHRcdCAqIGh1Z2VwYWdlX3N1YnBvb2xfZ2V0X3BhZ2VzKCkgY291bnRlZCBhZ2FpbnN0IHRoZSBzdWJwb29sJiMzOTtzXG4mIzQzO1x0XHQgKiBtYXhpbXVtLCBidXQgd2hpY2ggd2UgZmFpbGVkIHRvIGJhY2sgZnJvbSB0aGUgZ2xvYmFsIHBvb2wuXG4mIzQzO1x0XHQgKiBNaXJyb3JzIHRoZSBmaXggaW4gaHVnZXRsYl9yZXNlcnZlX3BhZ2VzKCkgKDFkM2Y5YmI0YzhhZikuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2c3Bvb2wtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdFx0aWYgKHNwb29sLVx1MDAzZW1heF9ocGFnZXMgIT0gLTEpXG4mIzQzO1x0XHRcdHNwb29sLVx1MDAzZXVzZWRfaHBhZ2VzIC09IGdibF9jaGc7XG4mIzQzO1x0XHR1bmxvY2tfb3JfcmVsZWFzZV9zdWJwb29sKHNwb29sLCBmbGFncyk7XG4gXHR9XG4gXG4gb3V0X2VuZF9yZXNlcnZhdGlvbjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIVUdFVExCRlMmIzM0OywKICAgICYjMzQ7SFVHRVRMQl9QQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWxsb2NfaHVnZXRsYl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBodWdldGxiIGZvbGlvIGFsbG9jYXRpb24gd2hlcmUgdXNlZF9ocGFnZXMgaXMgbm90IGNvcnJlY3RseSByZXN0b3JlZCBvbiBhIHNwZWNpZmljIGVycm9yIHBhdGggd2hlbiBmYWlsaW5nIHRvIGJhY2sgZnJvbSB0aGUgZ2xvYmFsIHBvb2wuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDExZjI5NTU5MTRjNzE3ODIwMzVjNWJmM2EzMDI3ZDJhZmVhZjc3ZTMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAxMyAxNTozNzowOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuYwppbmRleCBkNmM4MTJkMTg1N2I1Ny4uODQxM2VjOTJkODM2ZGUgMTAwNjQ0Ci0tLSBhL21tL2h1Z2V0bGIuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdldGxiLmMKQEAgLTMwNzMsNiAmIzQzOzMwNzMsMTkgQEAgc3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCWlmIChtYXBfY2hnICZhbXA7JmFtcDsgIWdibF9jaGcpIHsKIAkJZ2JsX3Jlc2VydmUgPSBodWdlcGFnZV9zdWJwb29sX3B1dF9wYWdlcyhzcG9vbCwgMSk7CiAJCWh1Z2V0bGJfYWNjdF9tZW1vcnkoaCwgLWdibF9yZXNlcnZlKTsKJiM0MzsJfSBlbHNlIGlmIChtYXBfY2hnICZhbXA7JmFtcDsgZ2JsX2NoZyAmZ3Q7IDAgJmFtcDsmYW1wOyBzcG9vbCkgewomIzQzOwkJLyoKJiM0MzsJCSAqIFJlc3RvcmUgdXNlZF9ocGFnZXMgZm9yIHRoZSBnbG9iYWxseS1yZXF1ZXN0ZWQgcGFnZSB0aGF0CiYjNDM7CQkgKiBodWdlcGFnZV9zdWJwb29sX2dldF9wYWdlcygpIGNvdW50ZWQgYWdhaW5zdCB0aGUgc3VicG9vbCYjMzk7cwomIzQzOwkJICogbWF4aW11bSwgYnV0IHdoaWNoIHdlIGZhaWxlZCB0byBiYWNrIGZyb20gdGhlIGdsb2JhbCBwb29sLgomIzQzOwkJICogTWlycm9ycyB0aGUgZml4IGluIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcygpICgxZDNmOWJiNGM4YWYpLgomIzQzOwkJICovCiYjNDM7CQl1bnNpZ25lZCBsb25nIGZsYWdzOwomIzQzOwomIzQzOwkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtzcG9vbC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJaWYgKHNwb29sLSZndDttYXhfaHBhZ2VzICE9IC0xKQomIzQzOwkJCXNwb29sLSZndDt1c2VkX2hwYWdlcyAtPSBnYmxfY2hnOwomIzQzOwkJdW5sb2NrX29yX3JlbGVhc2Vfc3VicG9vbChzcG9vbCwgZmxhZ3MpOwogCX0KIAogb3V0X2VuZF9yZXNlcnZhdGlvbjoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAwOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBodWdldGxiLmMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggd2l0aGluIGBtbS9odWdldGxiLmNgLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IGl0JiMzOTtzIGFsdGVyaW5nIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhbiBgZWxzZSBpZmAgY29uZGl0aW9uLCBhbmQgdGhlIGNvbmRpdGlvbnMgYXJlIHF1aXRlIHByZWNpc2U6IGBtYXBfY2hnYCwgYGdibF9jaGdgIGdyZWF0ZXIgdGhhbiB6ZXJvLCBhbmQgYHNwb29sYCBtdXN0IGFsbCBiZSB0cnVlIGZvciBpdCB0byBleGVjdXRlLiBXaXRoaW4gdGhpcyBuZXcgYmxvY2ssIGl0IGxvb2tzIGxpa2UgdGhlcmUmIzM5O3MgYSByZXN0b3JhdGlvbiBvZiBgdXNlZF9ocGFnZXNgLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBnbG9iYWxseSByZXF1ZXN0ZWQgcGFnZS4gVGhpcyBmZWVscyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBodWdlIHBhZ2Ugc3Vic3lzdGVtLCBhbmQgaXQgd2FycmFudHMgYSBkZWVwZXIgZGl2ZS4gSSBuZWVkIHRvIGdldCBiYWNrIGludG8gYGFsbG9jX2h1Z2V0bGJfZm9saW9gIHdpdGhpbiBgbW0vaHVnZXRsYi5jYCB0byBmdWxseSBncmFzcCBpdHMgaW1wYWN0IGFuZCBlbnN1cmUgaXQmIzM5O3MgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxsb2NfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdldGxiLmM9MjE0OT1zdHJ1Y3QgZm9saW8gKmFsbG9jX2J1ZGR5X2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMjE3Mi1cbm1tL2h1Z2V0bGIuYzoyMTczOnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19yZXNlcnZlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxubW0vaHVnZXRsYi5jLTIxNzQtXHRcdG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzaylcbi0tXG5tbS9odWdldGxiLmMtMjE5My0vKiBmb2xpbyBtaWdyYXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gKi9cbm1tL2h1Z2V0bGIuYzoyMTk0OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19ub2RlbWFzayhzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgcHJlZmVycmVkX25pZCxcbm1tL2h1Z2V0bGIuYy0yMTk1LVx0XHRub2RlbWFza190ICpubWFzaywgZ2ZwX3QgZ2ZwX21hc2ssIGJvb2wgYWxsb3dfYWxsb2NfZmFsbGJhY2spXG4tLVxubW0vaHVnZXRsYi5jPTI1Mjc9c3RhdGljIGxvbmcgdm1hX2RlbF9yZXNlcnZhdGlvbihzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbm1tL2h1Z2V0bGIuYy0yNTM0LSAqIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgdG8gcmVzdG9yZSByZXNlcnZhdGlvbiBpbmZvcm1hdGlvbiBvbiBlcnJvciBwYXRocy5cbm1tL2h1Z2V0bGIuYzoyNTM1OiAqIEl0IHNob3VsZCBPTkxZIGJlIGNhbGxlZCBmb3IgZm9saW9zIGFsbG9jYXRlZCB2aWEgYWxsb2NfaHVnZXRsYl9mb2xpbygpLFxubW0vaHVnZXRsYi5jLTI1MzYtICogYW5kIHRoZSBodWdldGxiIG11dGV4IHNob3VsZCByZW1haW4gaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyByb3V0aW5lLlxuLS1cbm1tL2h1Z2V0bGIuYy0yNTQxLSAqIDIpIE5vIHJlc2VydmF0aW9uIHdhcyBpbiBwbGFjZSBmb3IgdGhlIHBhZ2UsIHNvIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIGlzXG5tbS9odWdldGxiLmM6MjU0MjogKiAgICBub3Qgc2V0LiAgSG93ZXZlciwgYWxsb2NfaHVnZXRsYl9mb2xpbyBhbHdheXMgdXBkYXRlcyB0aGUgcmVzZXJ2ZSBtYXAuXG5tbS9odWdldGxiLmMtMjU0My0gKlxuLS1cbm1tL2h1Z2V0bGIuYy0yNTUwLSAqXG5tbS9odWdldGxiLmM6MjU1MTogKiBJbiBjYXNlIDIsIHNpbXBseSB1bmRvIHJlc2VydmUgbWFwIG1vZGlmaWNhdGlvbnMgZG9uZSBieSBhbGxvY19odWdldGxiX2ZvbGlvLlxubW0vaHVnZXRsYi5jLTI1NTItICovXG5tbS9odWdldGxiLmM9MjU1Mz12b2lkIHJlc3RvcmVfcmVzZXJ2ZV9vbl9lcnJvcihzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9odWdldGxiLmMtMjU3OS1cdFx0XHQgKiBUaGlzIGluZGljYXRlcyB0aGVyZSBpcyBhbiBlbnRyeSBpbiB0aGUgcmVzZXJ2ZSBtYXBcbm1tL2h1Z2V0bGIuYzoyNTgwOlx0XHRcdCAqIG5vdCBhZGRlZCBieSBhbGxvY19odWdldGxiX2ZvbGlvLiAgV2Uga25vdyBpdCB3YXMgYWRkZWRcbm1tL2h1Z2V0bGIuYzoyNTgxOlx0XHRcdCAqIGJlZm9yZSB0aGUgYWxsb2NfaHVnZXRsYl9mb2xpbyBjYWxsLCBvdGhlcndpc2Vcbm1tL2h1Z2V0bGIuYy0yNTgyLVx0XHRcdCAqIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIHdvdWxkIGJlIHNldCBvbiB0aGUgZm9saW8uXG4tLVxubW0vaHVnZXRsYi5jPTI5MjA9dHlwZWRlZiBlbnVtIHtcbi0tXG5tbS9odWdldGxiLmMtMjk0NS0gKi9cbm1tL2h1Z2V0bGIuYzoyOTQ2OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpbyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbm1tL2h1Z2V0bGIuYy0yOTQ3LVx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCBjb3dfZnJvbV9vd25lcilcbi0tXG5tbS9odWdldGxiLmM9NDkxMT1pbnQgY29weV9odWdldGxiX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmMsXG4tLVxubW0vaHVnZXRsYi5jLTUwMzItXHRcdFx0XHQvKiBEbyBub3QgdXNlIHJlc2VydmUgYXMgaXQmIzM5O3MgcHJpdmF0ZSBvd25lZCAqL1xubW0vaHVnZXRsYi5jOjUwMzM6XHRcdFx0XHRuZXdfZm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGFkZHIsIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy01MDM0LVx0XHRcdFx0aWYgKElTX0VSUihuZXdfZm9saW8pKSB7XG4tLVxubW0vaHVnZXRsYi5jPTU1MDE9c3RhdGljIHZtX2ZhdWx0X3QgaHVnZXRsYl93cChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5tbS9odWdldGxiLmMtNTU4Mi1cdHNwaW5fdW5sb2NrKHZtZi1cdTAwM2VwdGwpO1xubW0vaHVnZXRsYi5jOjU1ODM6XHRuZXdfZm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKHZtYSwgdm1mLVx1MDAzZWFkZHJlc3MsIGNvd19mcm9tX293bmVyKTtcbm1tL2h1Z2V0bGIuYy01NTg0LVxuLS1cbm1tL2h1Z2V0bGIuYz01NzczPXN0YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJfbm9fcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbi0tXG5tbS9odWdldGxiLmMtNTg0Mi1cbm1tL2h1Z2V0bGIuYzo1ODQzOlx0XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8odm1hLCB2bWYtXHUwMDNlYWRkcmVzcywgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTU4NDQtXHRcdGlmIChJU19FUlIoZm9saW8pKSB7XG4tLVxubW0vaHVnZXRsYi5jPTYwMjM9dm1fZmF1bHRfdCBodWdldGxiX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9odWdldGxiLmMtNjI1OC0gKi9cbm1tL2h1Z2V0bGIuYzo2MjU5OnN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fdm1hKHN0cnVjdCBoc3RhdGUgKmgsXG5tbS9odWdldGxiLmMtNjI2MC1cdFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcylcbi0tXG5tbS9odWdldGxiLmMtNjI3NS1cdCAqL1xubW0vaHVnZXRsYi5jOjYyNzY6XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soaCwgbm9kZSwgbm9kZW1hc2ssIGdmcF9tYXNrLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtNjI3Ny1cdG1wb2xfY29uZF9wdXQobXBvbCk7XG4tLVxubW0vaHVnZXRsYi5jPTYyODY9aW50IGh1Z2V0bGJfbWZpbGxfYXRvbWljX3B0ZShwdGVfdCAqZHN0X3B0ZSxcbi0tXG5tbS9odWdldGxiLmMtNjM0Mi1cbm1tL2h1Z2V0bGIuYzo2MzQzOlx0XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8oZHN0X3ZtYSwgZHN0X2FkZHIsIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy02MzQ0LVx0XHRpZiAoSVNfRVJSKGZvbGlvKSkge1xuLS1cbm1tL2h1Z2V0bGIuYy02MzY4LVx0XHRcdCAqL1xubW0vaHVnZXRsYi5jOjYzNjk6XHRcdFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvX3ZtYShoLCBkc3Rfdm1hLCBkc3RfYWRkcik7XG5tbS9odWdldGxiLmMtNjM3MC1cdFx0XHRpZiAoIWZvbGlvKSB7XG4tLVxubW0vaHVnZXRsYi5jLTYzODktXG5tbS9odWdldGxiLmM6NjM5MDpcdFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGRzdF9hZGRyLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtNjM5MS1cdFx0aWYgKElTX0VSUihmb2xpbykpIHtcbi0tXG5tbS9odWdldGxiLmM9NjY4Mz1sb25nIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbm1tL2h1Z2V0bGIuYy02ODAzLVx0XHRcdCAqIG1hcCBiZXR3ZWVuIHJlZ2lvbl9jaGcgYW5kIHJlZ2lvbl9hZGQuICBUaGlzXG5tbS9odWdldGxiLmM6NjgwNDpcdFx0XHQgKiBpbmRpY2F0ZXMgYSByYWNlIHdpdGggYWxsb2NfaHVnZXRsYl9mb2xpby4gIEFkanVzdFxubW0vaHVnZXRsYi5jLTY4MDUtXHRcdFx0ICogdGhlIHN1YnBvb2wgYW5kIHJlc2VydmUgY291bnRzIG1vZGlmaWVkIGFib3ZlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2MwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBhbGxvY19odWdldGxiX2ZvbGlvYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBodWdldGxiIGFsbG9jYXRpb24gaXNzdWUuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkLiBJdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgd2UgaGFuZGxlIGh1Z2V0bGIgYWxsb2NhdGlvbnMsIHNvIHVuZGVyc3RhbmRpbmcgaXQgaXMgY3J1Y2lhbC4gVGhlIHBhdGNoIGZvY3VzZXMgb24gYSBidWcgd2hlcmUgYHVzZWRfaHBhZ2VzYCBpc24mIzM5O3QgcHJvcGVybHkgcmVzdG9yZWQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIOKAkyBzcGVjaWZpY2FsbHksIHdoZW4gYGdibF9jaGdgIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBgc3Bvb2xgIGlzIGFjdGl2ZSwgYnV0IHdlIGZhaWwgdG8gc291cmNlIGZyb20gdGhlIGdsb2JhbCBwb29sLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyByYWNlLWNvbmRpdGlvbiBzY2VuYXJpbywgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB3aHkgdGhlIGNoZWNrIGFuZCByZXN0b3JhdGlvbiBhcmUgZmFpbGluZy4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gYG1tL2h1Z2V0bGIuY2AgdG8gZXhhbWluZSB0aGUgYGFsbG9jX2h1Z2V0bGJfZm9saW9gIGZ1bmN0aW9uIGRpcmVjdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBDT05GSUdfSFVHRVRMQl9QQUdFYCwgdG8gZW5zdXJlIG15IGVudmlyb25tZW50IGlzIHNldCB1cCBwcm9wZXJseSBmb3IgZGVidWdnaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYmVpbmcgcHJvcGVybHkgY29uZmlndXJlZCBzbyBJIGNhbiByZXByb2R1Y2UgdGhlIGZhaWx1cmUgYW5kIHRyYWNrIGRvd24gdGhlIHJvb3QgY2F1c2UuIFRoaXMgaW5mb3JtYXRpb24gc2hvdWxkIHByb3ZpZGUgY29udGV4dCBmb3IgZGVidWdnaW5nIHRoZSBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfSFVHRVRMQl9QQUdFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTg0PWVuZGlmXG5tbS9NYWtlZmlsZTo4NTpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVApXHQmIzQzOz0gaHVnZXRsYl92bWVtbWFwLm9cbm1tL01ha2VmaWxlLTg2LW9iai0kKENPTkZJR19OVU1BKSBcdCYjNDM7PSBtZW1wb2xpY3kub1xuLS1cbm1tL2RhbW9uL3ZhZGRyLmM9MjY3PXN0YXRpYyBpbnQgZGFtb25fbWtvbGRfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9kYW1vbi92YWRkci5jLTI5My1cbm1tL2RhbW9uL3ZhZGRyLmM6Mjk0OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9kYW1vbi92YWRkci5jLTI5NS1zdGF0aWMgdm9pZCBkYW1vbl9odWdldGxiX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmM9MzIyPXN0YXRpYyBpbnQgZGFtb25fbWtvbGRfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtMzQyLSNkZWZpbmUgZGFtb25fbWtvbGRfaHVnZXRsYl9lbnRyeSBOVUxMXG5tbS9kYW1vbi92YWRkci5jOjM0MzojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xubW0vZGFtb24vdmFkZHIuYy0zNDQtXG4tLVxubW0vZGFtb24vdmFkZHIuYz0zOTA9c3RhdGljIGludCBkYW1vbl95b3VuZ19wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtNDM3LVxubW0vZGFtb24vdmFkZHIuYzo0Mzg6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL2RhbW9uL3ZhZGRyLmMtNDM5LXN0YXRpYyBpbnQgZGFtb25feW91bmdfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtNDY5LSNkZWZpbmUgZGFtb25feW91bmdfaHVnZXRsYl9lbnRyeSBOVUxMXG5tbS9kYW1vbi92YWRkci5jOjQ3MDojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xubW0vZGFtb24vdmFkZHIuYy00NzEtXG4tLVxubW0vZGVidWdfdm1fcGd0YWJsZS5jPTg0ND1zdGF0aWMgdm9pZCBfX2luaXQgc3dhcF9taWdyYXRpb25fdGVzdHMoc3RydWN0IHBndGFibGVfZGVidWdfYXJncyAqYXJncylcbi0tXG5tbS9kZWJ1Z192bV9wZ3RhYmxlLmMtODgzLVxubW0vZGVidWdfdm1fcGd0YWJsZS5jOjg4NDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vZGVidWdfdm1fcGd0YWJsZS5jLTg4NS1zdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9iYXNpY190ZXN0cyhzdHJ1Y3QgcGd0YWJsZV9kZWJ1Z19hcmdzICphcmdzKVxuLS1cbm1tL2RlYnVnX3ZtX3BndGFibGUuYy04OTktfVxubW0vZGVidWdfdm1fcGd0YWJsZS5jOjkwMDojZWxzZSAgLyogIUNPTkZJR19IVUdFVExCX1BBR0UgKi9cbm1tL2RlYnVnX3ZtX3BndGFibGUuYy05MDEtc3RhdGljIHZvaWQgX19pbml0IGh1Z2V0bGJfYmFzaWNfdGVzdHMoc3RydWN0IHBndGFibGVfZGVidWdfYXJncyAqYXJncykgeyB9XG5tbS9kZWJ1Z192bV9wZ3RhYmxlLmM6OTAyOiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXG5tbS9kZWJ1Z192bV9wZ3RhYmxlLmMtOTAzLVxuLS1cbm1tL2htbS5jPTQ4ND1zdGF0aWMgaW50IGhtbV92bWFfd2Fsa19wdWQocHVkX3QgKnB1ZHAsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbm1tL2htbS5jLTU0MS1cbm1tL2htbS5jOjU0MjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vaG1tLmMtNTQzLXN0YXRpYyBpbnQgaG1tX3ZtYV93YWxrX2h1Z2V0bGJfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcbi0tXG5tbS9obW0uYy01OTQtI2RlZmluZSBobW1fdm1hX3dhbGtfaHVnZXRsYl9lbnRyeSBOVUxMXG5tbS9obW0uYzo1OTU6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbm1tL2htbS5jLTU5Ni1cbi0tXG5tbS9odWdldGxiLmM9MzM1OD12b2lkIF9faW5pdCBodWdldGxiX2Jvb3RtZW1fc3RydWN0X3BhZ2VfaW5pdCh2b2lkKVxuLS1cbm1tL2h1Z2V0bGIuYy0zMzY5LVx0fTtcbm1tL2h1Z2V0bGIuYzozMzcwOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcbm1tL2h1Z2V0bGIuYy0zMzcxLVx0c3RydWN0IHpvbmUgKnpvbmU7XG4tLVxubW0vaHVnZXRsYl92bWVtbWFwLmM9MzcyPXN0YXRpYyBpbnQgdm1lbW1hcF9yZW1hcF9hbGxvYyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS9odWdldGxiX3ZtZW1tYXAuYy0zODctXG5tbS9odWdldGxiX3ZtZW1tYXAuYzozODg6c3RhdGljIGJvb2wgdm1lbW1hcF9vcHRpbWl6ZV9lbmFibGVkID0gSVNfRU5BQkxFRChDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBfREVGQVVMVF9PTik7XG5tbS9odWdldGxiX3ZtZW1tYXAuYy0zODktc3RhdGljIGludCBfX2luaXQgaHVnZXRsYl92bWVtbWFwX29wdGltaXplX3BhcmFtKGNoYXIgKmJ1Zilcbi0tXG5tbS9odWdldGxiX3ZtZW1tYXAuaC0yMS1cbm1tL2h1Z2V0bGJfdm1lbW1hcC5oOjIyOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcbm1tL2h1Z2V0bGJfdm1lbW1hcC5oLTIzLWludCBodWdldGxiX3ZtZW1tYXBfcmVzdG9yZV9mb2xpbyhjb25zdCBzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbi0tXG5tbS9odWdldGxiX3ZtZW1tYXAuaD04Mz1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBodWdldGxiX3ZtZW1tYXBfb3B0aW1pemFibGVfc2l6ZShjb25zdCBzdHJ1Y3QgaHN0YXRlICpoKVxuLS1cbm1tL2h1Z2V0bGJfdm1lbW1hcC5oLTg2LX1cbm1tL2h1Z2V0bGJfdm1lbW1hcC5oOjg3OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVAgKi9cbm1tL2h1Z2V0bGJfdm1lbW1hcC5oLTg4LVxuLS1cbm1tL21lbWNvbnRyb2wuYz0zNzI9c3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtZW1jZ19ub2RlX3N0YXRfaXRlbXNbXSA9IHtcbi0tXG5tbS9tZW1jb250cm9sLmMtNDIyLVx0UEdSRUZJTEwsXG5tbS9tZW1jb250cm9sLmM6NDIzOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9tZW1jb250cm9sLmMtNDI0LVx0TlJfSFVHRVRMQixcbi0tXG5tbS9tZW1jb250cm9sLmM9MTU0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1lbW9yeV9zdGF0IG1lbW9yeV9zdGF0c1tdID0ge1xuLS1cbm1tL21lbWNvbnRyb2wuYy0xNTc5LVx0eyBcJiMzNDtzbGFiX3VucmVjbGFpbWFibGVcJiMzNDssXHRcdE5SX1NMQUJfVU5SRUNMQUlNQUJMRV9CXHRcdH0sXG5tbS9tZW1jb250cm9sLmM6MTU4MDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vbWVtY29udHJvbC5jLTE1ODEtXHR7IFwmIzM0O2h1Z2V0bGJcJiMzNDssXHRcdFx0TlJfSFVHRVRMQlx0XHRcdH0sXG4tLVxubW0vbWVtY29udHJvbC5jPTE2NzQ9dW5zaWduZWQgbG9uZyBtZW1jZ19wYWdlX3N0YXRlX2xvY2FsX291dHB1dChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBpdGVtKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xNjgwLVxubW0vbWVtY29udHJvbC5jOjE2ODE6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL21lbWNvbnRyb2wuYy0xNjgyLXN0YXRpYyBib29sIG1lbWNnX2FjY291bnRzX2h1Z2V0bGIodm9pZClcbi0tXG5tbS9tZW1jb250cm9sLmMtMTY4NS19XG5tbS9tZW1jb250cm9sLmM6MTY4NjojZWxzZSAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXG5tbS9tZW1jb250cm9sLmMtMTY4Ny1zdGF0aWMgYm9vbCBtZW1jZ19hY2NvdW50c19odWdldGxiKHZvaWQpXG4tLVxubW0vbWVtY29udHJvbC5jLTE2OTAtfVxubW0vbWVtY29udHJvbC5jOjE2OTE6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbm1tL21lbWNvbnRyb2wuYy0xNjkyLVxubW0vbWVtY29udHJvbC5jPTE2OTM9c3RhdGljIHZvaWQgbWVtY2dfc3RhdF9mb3JtYXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBzdHJ1Y3Qgc2VxX2J1ZiAqcylcbi0tXG5tbS9tZW1jb250cm9sLmMtMTcxMS1cbm1tL21lbWNvbnRyb2wuYzoxNzEyOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9tZW1jb250cm9sLmMtMTcxMy1cdFx0aWYgKHVubGlrZWx5KG1lbW9yeV9zdGF0c1tpXS5pZHggPT0gTlJfSFVHRVRMQikgXHUwMDI2XHUwMDI2XG4tLVxubW0vbWVtZmQuYz02OD1zdHJ1Y3QgZm9saW8gKm1lbWZkX2FsbG9jX2ZvbGlvKHN0cnVjdCBmaWxlICptZW1mZCwgcGdvZmZfdCBpZHgpXG5tbS9tZW1mZC5jLTY5LXtcbm1tL21lbWZkLmM6NzA6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL21lbWZkLmMtNzEtXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuLS1cbm1tL21lbW9yeS1mYWlsdXJlLmM9NzQyPXN0YXRpYyBpbnQgaHdwb2lzb25fcHRlX3JhbmdlKHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vbWVtb3J5LWZhaWx1cmUuYy03NzMtXG5tbS9tZW1vcnktZmFpbHVyZS5jOjc3NDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vbWVtb3J5LWZhaWx1cmUuYy03NzUtc3RhdGljIGludCBod3BvaXNvbl9odWdldGxiX3JhbmdlKHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuLS1cbm1tL21lbW9yeS1mYWlsdXJlLmM9MTg2ND1FWFBPUlRfU1lNQk9MX0dQTChtZl9kYXhfa2lsbF9wcm9jcyk7XG4tLVxubW0vbWVtb3J5LWZhaWx1cmUuYy0xODY2LVxubW0vbWVtb3J5LWZhaWx1cmUuYzoxODY3OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9tZW1vcnktZmFpbHVyZS5jLTE4NjgtXG4tLVxubW0vbWVtb3J5LWZhaWx1cmUuYz0yMTYxPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBmb2xpb19mcmVlX3Jhd19od3Aoc3RydWN0IGZvbGlvICpmb2xpbywgYm9vbCBmbGFnKVxuLS1cbm1tL21lbW9yeS1mYWlsdXJlLmMtMjE2NC19XG5tbS9tZW1vcnktZmFpbHVyZS5jOjIxNjU6I2VuZGlmXHQvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXG5tbS9tZW1vcnktZmFpbHVyZS5jLTIxNjYtXG4tLVxubW0vbWVtcG9saWN5LmM9NzcyPXN0YXRpYyBpbnQgcXVldWVfZm9saW9zX2h1Z2V0bGIocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcbi0tXG5tbS9tZW1wb2xpY3kuYy03NzUte1xubW0vbWVtcG9saWN5LmM6Nzc2OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9tZW1wb2xpY3kuYy03NzctXHRzdHJ1Y3QgcXVldWVfcGFnZXMgKnFwID0gd2Fsay1cdTAwM2Vwcml2YXRlO1xuLS1cbm1tL21pZ3JhdGUuYz0zNTE9c3RhdGljIGJvb2wgcmVtb3ZlX21pZ3JhdGlvbl9wdGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS9taWdyYXRlLmMtNDI2LVxubW0vbWlncmF0ZS5jOjQyNzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vbWlncmF0ZS5jLTQyOC1cdFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpIHtcbi0tXG5tbS9taWdyYXRlLmM9NDk0PXZvaWQgbWlncmF0aW9uX2VudHJ5X3dhaXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWQsXG4tLVxubW0vbWlncmF0ZS5jLTUyMS1cbm1tL21pZ3JhdGUuYzo1MjI6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL21pZ3JhdGUuYy01MjMtLypcbi0tXG5tbS9taW5jb3JlLmM9MjY9c3RhdGljIGludCBtaW5jb3JlX2h1Z2V0bGIocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzaywgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL21pbmNvcmUuYy0yOC17XG5tbS9taW5jb3JlLmM6Mjk6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL21pbmNvcmUuYy0zMC1cdHVuc2lnbmVkIGNoYXIgcHJlc2VudDtcbi0tXG5tbS9tbV9pbml0LmM9MTQyOD1zdGF0aWMgaW5saW5lIHZvaWQgc2V0dXBfdXNlbWFwKHN0cnVjdCB6b25lICp6b25lKSB7fVxuLS1cbm1tL21tX2luaXQuYy0xNDMwLVxubW0vbW1faW5pdC5jOjE0MzE6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxubW0vbW1faW5pdC5jLTE0MzItXG4tLVxubW0vbW1faW5pdC5jPTE0MzQ9c3RhdGljIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcbi0tXG5tbS9tbV9pbml0LmMtMTQ1MS19XG5tbS9tbV9pbml0LmM6MTQ1MjojZWxzZSAvKiBDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEUgKi9cbm1tL21tX2luaXQuYy0xNDUzLVxubW0vbW1faW5pdC5jLTE0NTQtLypcbm1tL21tX2luaXQuYzoxNDU1OiAqIFdoZW4gQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFIGlzIG5vdCBzZXQsIHNldF9wYWdlYmxvY2tfb3JkZXIoKVxubW0vbW1faW5pdC5jLTE0NTYtICogaXMgdW51c2VkIGFzIHBhZ2VibG9ja19vcmRlciBpcyBzZXQgYXQgY29tcGlsZS10aW1lLiBTZWVcbi0tXG5tbS9tbV9pbml0LmM9MTQ2MD1zdGF0aWMgaW5saW5lIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcbi0tXG5tbS9tbV9pbml0LmMtMTQ2My1cbm1tL21tX2luaXQuYzoxNDY0OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEUgKi9cbm1tL21tX2luaXQuYy0xNDY1LVxuLS1cbm1tL21wcm90ZWN0LmM9NzMwPXN0YXRpYyBpbnQgcHJvdF9ub25lX3B0ZV9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vbXByb3RlY3QuYy03MzctXG5tbS9tcHJvdGVjdC5jOjczODojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vbXByb3RlY3QuYy03Mzktc3RhdGljIGludCBwcm90X25vbmVfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYz0yMDg9Z2ZwX3QgZ2ZwX2FsbG93ZWRfbWFzayBfX3JlYWRfbW9zdGx5ID0gR0ZQX0JPT1RfTUFTSztcbm1tL3BhZ2VfYWxsb2MuYy0yMDktXG5tbS9wYWdlX2FsbG9jLmM6MjEwOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEVcbm1tL3BhZ2VfYWxsb2MuYy0yMTEtdW5zaWduZWQgaW50IHBhZ2VibG9ja19vcmRlciBfX3JlYWRfbW9zdGx5O1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz0xMDkwPXN0YXRpYyBpbnQgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMTE1Ni1cdFx0LyogdGhlIHRoaXJkIHRhaWwgcGFnZTogaHVnZXRsYiBzcGVjaWZpY3Mgb3ZlcmxhcCAtXHUwMDNlbWFwcGluZ3MgKi9cbm1tL3BhZ2VfYWxsb2MuYzoxMTU3Olx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfSFVHRVRMQl9QQUdFKSlcbm1tL3BhZ2VfYWxsb2MuYy0xMTU4LVx0XHRcdGJyZWFrO1xuLS1cbm1tL3BhZ2V3YWxrLmM9Mjg4PXN0YXRpYyBpbnQgd2Fsa19wZ2RfcmFuZ2UodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS9wYWdld2Fsay5jLTMyOC1cbm1tL3BhZ2V3YWxrLmM6MzI5OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9wYWdld2Fsay5jLTMzMC1zdGF0aWMgdW5zaWduZWQgbG9uZyBodWdldGxiX2VudHJ5X2VuZChzdHJ1Y3QgaHN0YXRlICpoLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vcGFnZXdhbGsuYz0zMzg9c3RhdGljIGludCB3YWxrX2h1Z2V0bGJfcmFuZ2UodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS9wYWdld2Fsay5jLTM2NS1cbm1tL3BhZ2V3YWxrLmM6MzY2OiNlbHNlIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbm1tL3BhZ2V3YWxrLmMtMzY3LXN0YXRpYyBpbnQgd2Fsa19odWdldGxiX3JhbmdlKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxubW0vcGFnZXdhbGsuYy0zNzItXG5tbS9wYWdld2Fsay5jOjM3MzojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xubW0vcGFnZXdhbGsuYy0zNzQtXG4tLVxubW0vcm1hcC5jPTMxMTQ9dm9pZCBybWFwX3dhbGtfbG9ja2VkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBybWFwX3dhbGtfY29udHJvbCAqcndjKVxuLS1cbm1tL3JtYXAuYy0zMTIzLVxubW0vcm1hcC5jOjMxMjQ6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL3JtYXAuYy0zMTI1LS8qXG4tLVxubW0vcm1hcC5jPTMxNDQ9dm9pZCBodWdldGxiX2FkZF9uZXdfYW5vbl9ybWFwKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vcm1hcC5jLTMxNTYtfVxubW0vcm1hcC5jOjMxNTc6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTMxMT12b2lkIHZtZW1tYXBfd3Jwcm90ZWN0X2h2byh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbm1tL3NwYXJzZS12bWVtbWFwLmMtMzIyLVxubW0vc3BhcnNlLXZtZW1tYXAuYzozMjM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxubW0vc3BhcnNlLXZtZW1tYXAuYy0zMjQtc3RhdGljIF9fbWVtaW5pdCBzdHJ1Y3QgcGFnZSAqdm1lbW1hcF9nZXRfdGFpbCh1bnNpZ25lZCBpbnQgb3JkZXIsIHN0cnVjdCB6b25lICp6b25lKVxuLS1cbm1tL3VzZXJmYXVsdGZkLmM9NzM0PXN0YXRpYyBpbnQgbWZpbGxfYXRvbWljX3B0ZV9wb2lzb24oc3RydWN0IG1maWxsX3N0YXRlICpzdGF0ZSlcbi0tXG5tbS91c2VyZmF1bHRmZC5jLTc3MC1cbm1tL3VzZXJmYXVsdGZkLmM6NzcxOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS91c2VyZmF1bHRmZC5jLTc3Mi0vKlxuLS1cbm1tL3VzZXJmYXVsdGZkLmM9Nzc3PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3NpemVfdCBtZmlsbF9hdG9taWNfaHVnZXRsYihcbi0tXG5tbS91c2VyZmF1bHRmZC5jLTkzNC19XG5tbS91c2VyZmF1bHRmZC5jOjkzNTojZWxzZSAvKiAhQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xubW0vdXNlcmZhdWx0ZmQuYy05MzYtLyogZmFpbCBhdCBidWlsZCB0aW1lIGlmIGdjYyBhdHRlbXB0cyB0byB1c2UgdGhpcyAqL1xubW0vdXNlcmZhdWx0ZmQuYz05Mzc9ZXh0ZXJuIHNzaXplX3QgbWZpbGxfYXRvbWljX2h1Z2V0bGIoc3RydWN0IHVzZXJmYXVsdGZkX2N0eCAqY3R4LFxuLS1cbm1tL3VzZXJmYXVsdGZkLmMtOTQyLVx0XHRcdFx0ICAgIHVmZmRfZmxhZ3NfdCBmbGFncyk7XG5tbS91c2VyZmF1bHRmZC5jOjk0MzojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xubW0vdXNlcmZhdWx0ZmQuYy05NDQtXG4tLVxubW0vdXNlcmZhdWx0ZmQuYz0yNjEzPXN0YXRpYyBpbmxpbmUgc3RydWN0IHVmZmRfbXNnIHVzZXJmYXVsdF9tc2codW5zaWduZWQgbG9uZyBhZGRyZXNzLFxuLS1cbm1tL3VzZXJmYXVsdGZkLmMtMjY0OC1cbm1tL3VzZXJmYXVsdGZkLmM6MjY0OTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vdXNlcmZhdWx0ZmQuYy0yNjUwLS8qXG4tLVxubW0vdXNlcmZhdWx0ZmQuYz0yNzA1PXN0YXRpYyBpbmxpbmUgYm9vbCB1c2VyZmF1bHRmZF9odWdlX211c3Rfd2FpdChzdHJ1Y3QgdXNlcmZhdWx0ZmRfY3R4ICpjdHgsXG4tLVxubW0vdXNlcmZhdWx0ZmQuYy0yNzEyLX1cbm1tL3VzZXJmYXVsdGZkLmM6MjcxMzojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xubW0vdXNlcmZhdWx0ZmQuYy0yNzE0LVxuLS1cbm1tL3ZtYWxsb2MuYz05ND1zdGF0aWMgaW50IHZtYXBfcHRlX3JhbmdlKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxubW0vdm1hbGxvYy5jLTEyMS1cbm1tL3ZtYWxsb2MuYzoxMjI6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL3ZtYWxsb2MuYy0xMjMtXHRcdHNpemUgPSBhcmNoX3ZtYXBfcHRlX3JhbmdlX21hcF9zaXplKGFkZHIsIGVuZCwgcGZuLCBtYXhfcGFnZV9zaGlmdCk7XG4tLVxubW0vdm1hbGxvYy5jPTM2Nj1zdGF0aWMgdm9pZCB2dW5tYXBfcHRlX3JhbmdlKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxubW0vdm1hbGxvYy5jLTM3Ni1cdGRvIHtcbm1tL3ZtYWxsb2MuYzozNzc6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL3ZtYWxsb2MuYy0zNzgtXHRcdHNpemUgPSBhcmNoX3ZtYXBfcHRlX3JhbmdlX3VubWFwX3NpemUoYWRkciwgcHRlKTtcbi0tXG5tbS92bXN0YXQuYz0xMTg4PWNvbnN0IGNoYXIgKiBjb25zdCB2bXN0YXRfdGV4dFtdID0ge1xuLS1cbm1tL3Ztc3RhdC5jLTEyOTMtXHRbSShQR1JFRklMTCldXHRcdFx0XHQ9IFwmIzM0O3BncmVmaWxsXCYjMzQ7LFxubW0vdm1zdGF0LmM6MTI5NDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vdm1zdGF0LmMtMTI5NS1cdFtJKE5SX0hVR0VUTEIpXVx0XHRcdFx0PSBcJiMzNDtucl9odWdldGxiXCYjMzQ7LFxuLS1cbm1tL3Ztc3RhdC5jLTEzODMtXG5tbS92bXN0YXQuYzoxMzg0OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS92bXN0YXQuYy0xMzg1LVx0W0koSFRMQl9CVUREWV9QR0FMTE9DKV1cdFx0XHQ9IFwmIzM0O2h0bGJfYnVkZHlfYWxsb2Nfc3VjY2Vzc1wmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDk5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSFVHRVRMQl9QQUdFIENvbmZpZ3VyYXRpb24gYW5kIGBhbGxvY19odWdldGxiX2ZvbGlvYCBGdW5jdGlvbioqCgpPa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBoZXJlIGlzIGBIVUdFVExCX1BBR0VgLiBNeSBwcmltYXJ5IGZvY3VzIGlzIG9uIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgZnVuY3Rpb24uIEhvbGQgb24gYSBzZWNvbmQsIGlzIHRoaXMgYSAqcmVhbGx5KiBob3QtcGF0aCBmdW5jdGlvbj8gTGV0IG1lIHRoaW5rLi4uIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgaHVnZXRsYiBmb2xpbyBhbGxvY2F0aW9uLCBzcGVjaWZpY2FsbHkgZHVyaW5nIHBhZ2UgZmF1bHRzIG9uIGh1Z2V0bGJmcyBvciB3aGVuIHVzaW5nIGBtbWFwYCB3aXRoIGBNQVBfSFVHRVRMQmAuIEFscmlnaHQsIGl0JiMzOTtzIG5vdCBhICpnZW5lcmljKiBob3QtcGF0aCBsaWtlIGBrbWFsbG9jYCBvciBgcGFnZV9mYXVsdGAuIEl0JiMzOTtzIGRlZmluaXRlbHkgc3BlY2lmaWMgdG8gdGhlIGh1Z2V0bGIgc3Vic3lzdGVtLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZCwgdGhvdWdoLiBSaWdodCwgdGhlIHBhdGNoIG1vZGlmaWVzIGBhbGxvY19odWdldGxiX2ZvbGlvYC4gVGhlIGJ1ZyBiZWluZyBmaXhlZCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGB1c2VkX2hwYWdlc2Agbm90IGJlaW5nIGNvcnJlY3RseSByZXN0b3JlZCB1bmRlciB2ZXJ5IHNwZWNpZmljIGNvbmRpdGlvbnMgd2l0aGluIGh1Z2V0bGIgZm9saW8gYWxsb2NhdGlvbjogd2hlbiBgbWFwX2NoZ2AsIGBnYmxfY2hnICZndDsgMGAsIGFuZCBgc3Bvb2xgIGFyZSBhbGwgdHJ1ZS4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc28gZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZCBoZXJlLgoKSnVzdCB0byBiZSBzdXJlLCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2Agc2lnbmF0dXJlIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBJJiMzOTttIG1pc3NpbmcuIE5vcGUsIHNlZW1zIGxpa2UgYGFsbG9jX2h1Z2V0bGJfZm9saW9gIGlzIHRoZSBwcmltYXJ5IG9uZSB0byBleGFtaW5lLiBPaCwgd2FpdC4uLiBpcyB0aGlzIGZ1bmN0aW9uIGBzdGF0aWNgIG9yIGV4cG9ydGVkPyBMZXQgbWUgc2VlLiBBaCwgZm91bmQgaXQsIGl0JiMzOTtzIGRlZmluZWQgaW4gYG1tL2h1Z2V0bGIuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxsb2NfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdldGxiLmM9MjE0OT1zdHJ1Y3QgZm9saW8gKmFsbG9jX2J1ZGR5X2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMjE3Mi1cbm1tL2h1Z2V0bGIuYzoyMTczOnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19yZXNlcnZlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxubW0vaHVnZXRsYi5jLTIxNzQtXHRcdG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzaylcbi0tXG5tbS9odWdldGxiLmMtMjE5My0vKiBmb2xpbyBtaWdyYXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gKi9cbm1tL2h1Z2V0bGIuYzoyMTk0OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19ub2RlbWFzayhzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgcHJlZmVycmVkX25pZCxcbm1tL2h1Z2V0bGIuYy0yMTk1LVx0XHRub2RlbWFza190ICpubWFzaywgZ2ZwX3QgZ2ZwX21hc2ssIGJvb2wgYWxsb3dfYWxsb2NfZmFsbGJhY2spXG4tLVxubW0vaHVnZXRsYi5jPTI1Mjc9c3RhdGljIGxvbmcgdm1hX2RlbF9yZXNlcnZhdGlvbihzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbm1tL2h1Z2V0bGIuYy0yNTM0LSAqIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgdG8gcmVzdG9yZSByZXNlcnZhdGlvbiBpbmZvcm1hdGlvbiBvbiBlcnJvciBwYXRocy5cbm1tL2h1Z2V0bGIuYzoyNTM1OiAqIEl0IHNob3VsZCBPTkxZIGJlIGNhbGxlZCBmb3IgZm9saW9zIGFsbG9jYXRlZCB2aWEgYWxsb2NfaHVnZXRsYl9mb2xpbygpLFxubW0vaHVnZXRsYi5jLTI1MzYtICogYW5kIHRoZSBodWdldGxiIG11dGV4IHNob3VsZCByZW1haW4gaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyByb3V0aW5lLlxuLS1cbm1tL2h1Z2V0bGIuYy0yNTQxLSAqIDIpIE5vIHJlc2VydmF0aW9uIHdhcyBpbiBwbGFjZSBmb3IgdGhlIHBhZ2UsIHNvIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIGlzXG5tbS9odWdldGxiLmM6MjU0MjogKiAgICBub3Qgc2V0LiAgSG93ZXZlciwgYWxsb2NfaHVnZXRsYl9mb2xpbyBhbHdheXMgdXBkYXRlcyB0aGUgcmVzZXJ2ZSBtYXAuXG5tbS9odWdldGxiLmMtMjU0My0gKlxuLS1cbm1tL2h1Z2V0bGIuYy0yNTUwLSAqXG5tbS9odWdldGxiLmM6MjU1MTogKiBJbiBjYXNlIDIsIHNpbXBseSB1bmRvIHJlc2VydmUgbWFwIG1vZGlmaWNhdGlvbnMgZG9uZSBieSBhbGxvY19odWdldGxiX2ZvbGlvLlxubW0vaHVnZXRsYi5jLTI1NTItICovXG5tbS9odWdldGxiLmM9MjU1Mz12b2lkIHJlc3RvcmVfcmVzZXJ2ZV9vbl9lcnJvcihzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9odWdldGxiLmMtMjU3OS1cdFx0XHQgKiBUaGlzIGluZGljYXRlcyB0aGVyZSBpcyBhbiBlbnRyeSBpbiB0aGUgcmVzZXJ2ZSBtYXBcbm1tL2h1Z2V0bGIuYzoyNTgwOlx0XHRcdCAqIG5vdCBhZGRlZCBieSBhbGxvY19odWdldGxiX2ZvbGlvLiAgV2Uga25vdyBpdCB3YXMgYWRkZWRcbm1tL2h1Z2V0bGIuYzoyNTgxOlx0XHRcdCAqIGJlZm9yZSB0aGUgYWxsb2NfaHVnZXRsYl9mb2xpbyBjYWxsLCBvdGhlcndpc2Vcbm1tL2h1Z2V0bGIuYy0yNTgyLVx0XHRcdCAqIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIHdvdWxkIGJlIHNldCBvbiB0aGUgZm9saW8uXG4tLVxubW0vaHVnZXRsYi5jPTI5MjA9dHlwZWRlZiBlbnVtIHtcbi0tXG5tbS9odWdldGxiLmMtMjk0NS0gKi9cbm1tL2h1Z2V0bGIuYzoyOTQ2OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpbyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbm1tL2h1Z2V0bGIuYy0yOTQ3LVx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCBjb3dfZnJvbV9vd25lcilcbi0tXG5tbS9odWdldGxiLmM9NDkxMT1pbnQgY29weV9odWdldGxiX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmMsXG4tLVxubW0vaHVnZXRsYi5jLTUwMzItXHRcdFx0XHQvKiBEbyBub3QgdXNlIHJlc2VydmUgYXMgaXQmIzM5O3MgcHJpdmF0ZSBvd25lZCAqL1xubW0vaHVnZXRsYi5jOjUwMzM6XHRcdFx0XHRuZXdfZm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGFkZHIsIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy01MDM0LVx0XHRcdFx0aWYgKElTX0VSUihuZXdfZm9saW8pKSB7XG4tLVxubW0vaHVnZXRsYi5jPTU1MDE9c3RhdGljIHZtX2ZhdWx0X3QgaHVnZXRsYl93cChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5tbS9odWdldGxiLmMtNTU4Mi1cdHNwaW5fdW5sb2NrKHZtZi1cdTAwM2VwdGwpO1xubW0vaHVnZXRsYi5jOjU1ODM6XHRuZXdfZm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKHZtYSwgdm1mLVx1MDAzZWFkZHJlc3MsIGNvd19mcm9tX293bmVyKTtcbm1tL2h1Z2V0bGIuYy01NTg0LVxuLS1cbm1tL2h1Z2V0bGIuYz01NzczPXN0YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJfbm9fcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbi0tXG5tbS9odWdldGxiLmMtNTg0Mi1cbm1tL2h1Z2V0bGIuYzo1ODQzOlx0XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8odm1hLCB2bWYtXHUwMDNlYWRkcmVzcywgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTU4NDQtXHRcdGlmIChJU19FUlIoZm9saW8pKSB7XG4tLVxubW0vaHVnZXRsYi5jPTYwMjM9dm1fZmF1bHRfdCBodWdldGxiX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9odWdldGxiLmMtNjI1OC0gKi9cbm1tL2h1Z2V0bGIuYzo2MjU5OnN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fdm1hKHN0cnVjdCBoc3RhdGUgKmgsXG5tbS9odWdldGxiLmMtNjI2MC1cdFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcylcbi0tXG5tbS9odWdldGxiLmMtNjI3NS1cdCAqL1xubW0vaHVnZXRsYi5jOjYyNzY6XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soaCwgbm9kZSwgbm9kZW1hc2ssIGdmcF9tYXNrLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtNjI3Ny1cdG1wb2xfY29uZF9wdXQobXBvbCk7XG4tLVxubW0vaHVnZXRsYi5jPTYyODY9aW50IGh1Z2V0bGJfbWZpbGxfYXRvbWljX3B0ZShwdGVfdCAqZHN0X3B0ZSxcbi0tXG5tbS9odWdldGxiLmMtNjM0Mi1cbm1tL2h1Z2V0bGIuYzo2MzQzOlx0XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8oZHN0X3ZtYSwgZHN0X2FkZHIsIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy02MzQ0LVx0XHRpZiAoSVNfRVJSKGZvbGlvKSkge1xuLS1cbm1tL2h1Z2V0bGIuYy02MzY4LVx0XHRcdCAqL1xubW0vaHVnZXRsYi5jOjYzNjk6XHRcdFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvX3ZtYShoLCBkc3Rfdm1hLCBkc3RfYWRkcik7XG5tbS9odWdldGxiLmMtNjM3MC1cdFx0XHRpZiAoIWZvbGlvKSB7XG4tLVxubW0vaHVnZXRsYi5jLTYzODktXG5tbS9odWdldGxiLmM6NjM5MDpcdFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGRzdF9hZGRyLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtNjM5MS1cdFx0aWYgKElTX0VSUihmb2xpbykpIHtcbi0tXG5tbS9odWdldGxiLmM9NjY4Mz1sb25nIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbm1tL2h1Z2V0bGIuYy02ODAzLVx0XHRcdCAqIG1hcCBiZXR3ZWVuIHJlZ2lvbl9jaGcgYW5kIHJlZ2lvbl9hZGQuICBUaGlzXG5tbS9odWdldGxiLmM6NjgwNDpcdFx0XHQgKiBpbmRpY2F0ZXMgYSByYWNlIHdpdGggYWxsb2NfaHVnZXRsYl9mb2xpby4gIEFkanVzdFxubW0vaHVnZXRsYi5jLTY4MDUtXHRcdFx0ICogdGhlIHN1YnBvb2wgYW5kIHJlc2VydmUgY291bnRzIG1vZGlmaWVkIGFib3ZlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NjEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGBhbGxvY19odWdldGxiX2ZvbGlvYCYjMzk7cyBTY29wZSBhbmQgVXNhZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGFsbG9jX2h1Z2V0bGJfZm9saW9gIGZ1bmN0aW9uLiBJbnRlcmVzdGluZywgaXQmIzM5O3MgKm5vdCogc3RhdGljLCBtZWFuaW5nIGl0JiMzOTtzIHBvdGVudGlhbGx5IHVzZWQgb3V0c2lkZSB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LiBIb2xkIG9uLCBsZXQgbWUgcmVmcmVzaCBteSBtZW1vcnkuIFJpZ2h0LCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGBzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW8oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCBjb3dfZnJvbV9vd25lcilgLiBOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmV4cG9ydGVkKiB0byBvdGhlciBtb2R1bGVzLCBvciBpcyBpdCBqdXN0IHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gaXRzIGRlZmluaW5nIGZpbGU/IEl0JiMzOTtzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBJIG5lZWQgdG8gcXVpY2tseSBjaGVjayB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLCB0byBhc2NlcnRhaW4gd2hldGhlciBpdCYjMzk7cyBzYWZlIHRvIG1vZGlmeSBvciBub3QuIExldCYjMzk7cyBzZWUuLi4gYSBxdWljayBjcm9zcy1yZWZlcmVuY2UgY2hlY2sgc2hvdWxkIGRvIHRoZSB0cmljay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxsb2NfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0PTE4MT1hcmUgYWxsb2NhdGVkIGFuZCBpbnN0YW50aWF0ZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgbWFwcGluZy4gIFRoZSBhbGxvY2F0aW9uXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE4MjppcyBwZXJmb3JtZWQgd2l0aGluIHRoZSByb3V0aW5lIGFsbG9jX2h1Z2V0bGJfZm9saW8oKTo6XG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE4My1cbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q6MTg0Olx0c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0xODUtXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IGF2b2lkX3Jlc2VydmUpXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE4Ni1cbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q6MTg3OmFsbG9jX2h1Z2V0bGJfZm9saW8gaXMgcGFzc2VkIGEgVk1BIHBvaW50ZXIgYW5kIGEgdmlydHVhbCBhZGRyZXNzLCBzbyBpdCBjYW5cbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3QtMTg4LWNvbnN1bHQgdGhlIHJlc2VydmF0aW9uIG1hcCB0byBkZXRlcm1pbmUgaWYgYSByZXNlcnZhdGlvbiBleGlzdHMuICBJbiBhZGRpdGlvbixcbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q6MTg5OmFsbG9jX2h1Z2V0bGJfZm9saW8gdGFrZXMgdGhlIGFyZ3VtZW50IGF2b2lkX3Jlc2VydmUgd2hpY2ggaW5kaWNhdGVzIHJlc2VydmVzXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE5MC1zaG91bGQgbm90IGJlIHVzZWQgZXZlbiBpZiBpdCBhcHBlYXJzIHRoZXkgaGF2ZSBiZWVuIHNldCBhc2lkZSBmb3IgdGhlXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdD0yMDc9aXMgY2FsbGVkLiAgVGhpcyByb3V0aW5lIHRha2VzIHR3byBhcmd1bWVudHMgcmVsYXRlZCB0byByZXNlcnZhdGlvbnM6XG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0yMDktLSBhdm9pZF9yZXNlcnZlLCB0aGlzIGlzIHRoZSBzYW1lIHZhbHVlL2FyZ3VtZW50IHBhc3NlZCB0b1xuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoyMTA6ICBhbGxvY19odWdldGxiX2ZvbGlvKCkuXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTIxMS0tIGNoZywgZXZlbiB0aG91Z2ggdGhpcyBhcmd1bWVudCBpcyBvZiB0eXBlIGxvbmcgb25seSB0aGUgdmFsdWVzIDAgb3IgMSBhcmVcbi0tXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0PTI0Nz1JdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSByZXNlcnZlIG1hcCBjb3VsZCBoYXZlIGJlZW4gY2hhbmdlZCBiZXR3ZWVuIHRoZSBjYWxsXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjI0ODp0byB2bWFfbmVlZHNfcmVzZXJ2YXRpb24oKSBhdCB0aGUgYmVnaW5uaW5nIG9mIGFsbG9jX2h1Z2V0bGJfZm9saW8oKSBhbmQgdGhlXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTI0OS1jYWxsIHRvIHZtYV9jb21taXRfcmVzZXJ2YXRpb24oKSBhZnRlciB0aGUgZm9saW8gd2FzIGFsbG9jYXRlZC4gIFRoaXMgd291bGRcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdD0xMTY9SFBBR0VfUkVTVl9PV05FUuagh+W/l+iiq+iuvue9ru+8jOS7peihqOaYjuivpVZNQeaLpeaciemihOeVmeOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE0NS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE0NjrlvZPkuI7pooTnlZnnm7jlhbPnmoTlt6jpobXlnKjnm7jlupTnmoTmmKDlsITkuK3ooqvliIbphY3lkozlrp7kvovljJbml7bvvIzpooTnlZnlsLHooqvmtojogJfkuobjgILor6XliIbphY3mmK/lnKjlh73mlbBhbGxvY19odWdldGxiX2ZvbGlvLi4uXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0xNDct5Lit6L+b6KGM55qEOjpcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE0OC1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE0OTpcdHN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpbyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE1MC1cdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgYXZvaWRfcmVzZXJ2ZSlcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE1MS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE1MjphbGxvY19odWdldGxiX2ZvbGlv6KKr5Lyg6YCS57uZ5LiA5LiqVk1B5oyH6ZKI5ZKM5LiA5Liq6Jma5ouf5Zyw5Z2A77yM5Zug5q2k5a6D5Y+v5Lul5p+l6ZiF6aKE55WZ5pig5bCE5Lul56Gu5a6a5piv5ZCm5a2Y5Zyo6aKE55WZ44CCXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoxNTM65q2k5aSW77yMYWxsb2NfaHVnZXRsYl9mb2xpb+mcgOimgeS4gOS4quWPguaVsGF2b2lkX3Jlc2VydmXvvIzor6Xlj4LmlbDooajnpLrljbPkvb/nnIvotbfmnaXlt7Lnu4/kuLrmjIflrprnmoTlnLDlnYDpooTnlZnkuoZcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE1NC3pooTnlZnvvIzkuZ/kuI3lupTor6Xkvb/nlKjpooTnlZnjgIJhdm9pZF9yZXNlcnZl5Y+C5pWw5pyA5bi46KKr55So5LqO5YaZ5pe25ou36LSd5ZKM6aG16Z2i6L+B56e755qE5oOF5Ya15LiL77yM5Y2z546w5pyJ6aG16Z2i55qE6aKdXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q9MTYwPXZtYV9uZWVkc19yZXNlcnZhdGlvbigp6L+U5Zue55qE5YC86YCa5bi45Li6MOaIljHjgILlpoLmnpzor6XlnLDlnYDlrZjlnKjpooTnlZnvvIzliJnkuLow77yM5aaC5p6c5LiN5a2Y5Zyo6aKE55WZ77yM5YiZ5Li6MeOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE2NS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE2NjotIGF2b2lkX3Jlc2VydmXvvIzov5nmmK/kvKDpgJLnu5lhbGxvY19odWdldGxiX2ZvbGlvKCnnmoTlkIzkuIDkuKrlgLwv5Y+C5pWw44CCXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0xNjctLSBjaGfvvIzlsL3nrqHov5nkuKrlj4LmlbDnmoTnsbvlnovmmK9sb25n77yM5L2G5Y+q5pyJMOaIljHnmoTlgLzooqvkvKDpgJLnu5lkZXF1ZXVlX2h1Z2VfcGFnZV92bWHjgILlpoLmnpzor6XlgLzkuLow77yMXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q9MTkzPVNldFBhZ2VQcml2YXRlKHBhZ2Up5ZKMcmVzdl9odWdlX3BhZ2VzLeOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTIwMi1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjIwMzrlnKhhbGxvY19odWdldGxiX2ZvbGlvKCnlvIDlp4vosIPnlKh2bWFfbmVlZHNfcmVzZXJ2YXRpb24oKeWSjOmhtemdouWIhumFjeWQjuiwg+eUqFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3QtMjA0LXZtYV9jb21taXRfcmVzZXJ2YXRpb24oKeS5i+mXtO+8jOmihOeVmeaYoOWwhOacieWPr+iDveiiq+aUueWPmOOAguWmguaenGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlc+WcqOWFsVxuLS1cbmZzL2h1Z2V0bGJmcy9pbm9kZS5jPTcwMD1zdGF0aWMgbG9uZyBodWdldGxiZnNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCxcbi0tXG5mcy9odWdldGxiZnMvaW5vZGUuYy03OTItXHRcdCAqL1xuZnMvaHVnZXRsYmZzL2lub2RlLmM6NzkzOlx0XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8oXHUwMDI2cHNldWRvX3ZtYSwgYWRkciwgZmFsc2UpO1xuZnMvaHVnZXRsYmZzL2lub2RlLmMtNzk0LVx0XHRpZiAoSVNfRVJSKGZvbGlvKSkge1xuLS1cbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTgxMy1cdFx0ICogZm9saW9fdW5sb2NrIGJlY2F1c2UgbG9ja2VkIGJ5IGh1Z2V0bGJfYWRkX3RvX3BhZ2VfY2FjaGUoKVxuZnMvaHVnZXRsYmZzL2lub2RlLmM6ODE0Olx0XHQgKiBmb2xpb19wdXQoKSBkdWUgdG8gcmVmZXJlbmNlIGZyb20gYWxsb2NfaHVnZXRsYl9mb2xpbygpXG5mcy9odWdldGxiZnMvaW5vZGUuYy04MTUtXHRcdCAqL1xuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oPTcwMT1zdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfYWxsb2NfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTcwMi1cdFx0c3RydWN0IG1lbXBvbGljeV9pbnRlcnByZXRlZCAqbXBvbGksIHU4IGFsbG9jX2ZsYWdzKTtcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjcwMzpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW8oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC03MDQtXHRcdFx0XHR1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgY293X2Zyb21fb3duZXIpO1xuaW5jbHVkZS9saW51eC9odWdldGxiLmg6NzA1OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19ub2RlbWFzayhzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgcHJlZmVycmVkX25pZCxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTcwNi1cdFx0XHRcdG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzayxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTcwNy1cdFx0XHRcdGJvb2wgYWxsb3dfYWxsb2NfZmFsbGJhY2spO1xuaW5jbHVkZS9saW51eC9odWdldGxiLmg6NzA4OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19yZXNlcnZlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtNzA5LVx0XHRcdFx0XHQgIG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzayk7XG4tLVxuaW5jbHVkZS9saW51eC9odWdldGxiLmg9MTEyMz1zdGF0aWMgaW5saW5lIHZvaWQgd2FpdF9mb3JfZnJlZWRfaHVnZXRsYl9mb2xpb3Modm9pZClcbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0xMTI2LVxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MTEyNzpzdGF0aWMgaW5saW5lIHN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpbyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTExMjgtXHRcdFx0XHRcdCAgIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaD0xMTM0PXN0YXRpYyBpbmxpbmUgc3RydWN0IGZvbGlvICpcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjExMzU6YWxsb2NfaHVnZXRsYl9mb2xpb19yZXNlcnZlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMTEzNi1cdFx0XHQgICAgbm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrKVxuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oPTExNDE9c3RhdGljIGlubGluZSBzdHJ1Y3QgZm9saW8gKlxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MTE0MjphbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMTE0My1cdFx0XHRub2RlbWFza190ICpubWFzaywgZ2ZwX3QgZ2ZwX21hc2ssXG4tLVxubW0vaHVnZXRsYi5jPTIxNDk9c3RydWN0IGZvbGlvICphbGxvY19idWRkeV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTIxNzItXG5tbS9odWdldGxiLmM6MjE3MzpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fcmVzZXJ2ZShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgcHJlZmVycmVkX25pZCxcbm1tL2h1Z2V0bGIuYy0yMTc0LVx0XHRub2RlbWFza190ICpubWFzaywgZ2ZwX3QgZ2ZwX21hc2spXG4tLVxubW0vaHVnZXRsYi5jLTIxOTMtLyogZm9saW8gbWlncmF0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uICovXG5tbS9odWdldGxiLmM6MjE5NDpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soc3RydWN0IGhzdGF0ZSAqaCwgaW50IHByZWZlcnJlZF9uaWQsXG5tbS9odWdldGxiLmMtMjE5NS1cdFx0bm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrLCBib29sIGFsbG93X2FsbG9jX2ZhbGxiYWNrKVxuLS1cbm1tL2h1Z2V0bGIuYz0yNTI3PXN0YXRpYyBsb25nIHZtYV9kZWxfcmVzZXJ2YXRpb24oc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMjUzNC0gKiBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIHRvIHJlc3RvcmUgcmVzZXJ2YXRpb24gaW5mb3JtYXRpb24gb24gZXJyb3IgcGF0aHMuXG5tbS9odWdldGxiLmM6MjUzNTogKiBJdCBzaG91bGQgT05MWSBiZSBjYWxsZWQgZm9yIGZvbGlvcyBhbGxvY2F0ZWQgdmlhIGFsbG9jX2h1Z2V0bGJfZm9saW8oKSxcbm1tL2h1Z2V0bGIuYy0yNTM2LSAqIGFuZCB0aGUgaHVnZXRsYiBtdXRleCBzaG91bGQgcmVtYWluIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgcm91dGluZS5cbi0tXG5tbS9odWdldGxiLmMtMjU0MS0gKiAyKSBObyByZXNlcnZhdGlvbiB3YXMgaW4gcGxhY2UgZm9yIHRoZSBwYWdlLCBzbyBodWdldGxiX3Jlc3RvcmVfcmVzZXJ2ZSBpc1xubW0vaHVnZXRsYi5jOjI1NDI6ICogICAgbm90IHNldC4gIEhvd2V2ZXIsIGFsbG9jX2h1Z2V0bGJfZm9saW8gYWx3YXlzIHVwZGF0ZXMgdGhlIHJlc2VydmUgbWFwLlxubW0vaHVnZXRsYi5jLTI1NDMtICpcbi0tXG5tbS9odWdldGxiLmMtMjU1MC0gKlxubW0vaHVnZXRsYi5jOjI1NTE6ICogSW4gY2FzZSAyLCBzaW1wbHkgdW5kbyByZXNlcnZlIG1hcCBtb2RpZmljYXRpb25zIGRvbmUgYnkgYWxsb2NfaHVnZXRsYl9mb2xpby5cbm1tL2h1Z2V0bGIuYy0yNTUyLSAqL1xubW0vaHVnZXRsYi5jPTI1NTM9dm9pZCByZXN0b3JlX3Jlc2VydmVfb25fZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vaHVnZXRsYi5jLTI1NzktXHRcdFx0ICogVGhpcyBpbmRpY2F0ZXMgdGhlcmUgaXMgYW4gZW50cnkgaW4gdGhlIHJlc2VydmUgbWFwXG5tbS9odWdldGxiLmM6MjU4MDpcdFx0XHQgKiBub3QgYWRkZWQgYnkgYWxsb2NfaHVnZXRsYl9mb2xpby4gIFdlIGtub3cgaXQgd2FzIGFkZGVkXG5tbS9odWdldGxiLmM6MjU4MTpcdFx0XHQgKiBiZWZvcmUgdGhlIGFsbG9jX2h1Z2V0bGJfZm9saW8gY2FsbCwgb3RoZXJ3aXNlXG5tbS9odWdldGxiLmMtMjU4Mi1cdFx0XHQgKiBodWdldGxiX3Jlc3RvcmVfcmVzZXJ2ZSB3b3VsZCBiZSBzZXQgb24gdGhlIGZvbGlvLlxuLS1cbm1tL2h1Z2V0bGIuYz0yOTIwPXR5cGVkZWYgZW51bSB7XG4tLVxubW0vaHVnZXRsYi5jLTI5NDUtICovXG5tbS9odWdldGxiLmM6Mjk0NjpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW8oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG5tbS9odWdldGxiLmMtMjk0Ny1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgY293X2Zyb21fb3duZXIpXG4tLVxubW0vaHVnZXRsYi5jPTQ5MTE9aW50IGNvcHlfaHVnZXRsYl9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVjdCAqc3JjLFxuLS1cbm1tL2h1Z2V0bGIuYy01MDMyLVx0XHRcdFx0LyogRG8gbm90IHVzZSByZXNlcnZlIGFzIGl0JiMzOTtzIHByaXZhdGUgb3duZWQgKi9cbm1tL2h1Z2V0bGIuYzo1MDMzOlx0XHRcdFx0bmV3X2ZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBhZGRyLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtNTAzNC1cdFx0XHRcdGlmIChJU19FUlIobmV3X2ZvbGlvKSkge1xuLS1cbm1tL2h1Z2V0bGIuYz01NTAxPXN0YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJfd3Aoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxubW0vaHVnZXRsYi5jLTU1ODItXHRzcGluX3VubG9jayh2bWYtXHUwMDNlcHRsKTtcbm1tL2h1Z2V0bGIuYzo1NTgzOlx0bmV3X2ZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyh2bWEsIHZtZi1cdTAwM2VhZGRyZXNzLCBjb3dfZnJvbV9vd25lcik7XG5tbS9odWdldGxiLmMtNTU4NC1cbi0tXG5tbS9odWdldGxiLmM9NTc3Mz1zdGF0aWMgdm1fZmF1bHRfdCBodWdldGxiX25vX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxubW0vaHVnZXRsYi5jLTU4NDItXG5tbS9odWdldGxiLmM6NTg0MzpcdFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKHZtYSwgdm1mLVx1MDAzZWFkZHJlc3MsIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy01ODQ0LVx0XHRpZiAoSVNfRVJSKGZvbGlvKSkge1xuLS1cbm1tL2h1Z2V0bGIuYz02MDIzPXZtX2ZhdWx0X3QgaHVnZXRsYl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vaHVnZXRsYi5jLTYyNTgtICovXG5tbS9odWdldGxiLmM6NjI1OTpzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvX3ZtYShzdHJ1Y3QgaHN0YXRlICpoLFxubW0vaHVnZXRsYi5jLTYyNjAtXHRcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpXG4tLVxubW0vaHVnZXRsYi5jLTYyNzUtXHQgKi9cbm1tL2h1Z2V0bGIuYzo2Mjc2Olx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKGgsIG5vZGUsIG5vZGVtYXNrLCBnZnBfbWFzaywgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTYyNzctXHRtcG9sX2NvbmRfcHV0KG1wb2wpO1xuLS1cbm1tL2h1Z2V0bGIuYz02Mjg2PWludCBodWdldGxiX21maWxsX2F0b21pY19wdGUocHRlX3QgKmRzdF9wdGUsXG4tLVxubW0vaHVnZXRsYi5jLTYzNDItXG5tbS9odWdldGxiLmM6NjM0MzpcdFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGRzdF9hZGRyLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtNjM0NC1cdFx0aWYgKElTX0VSUihmb2xpbykpIHtcbi0tXG5tbS9odWdldGxiLmMtNjM2OC1cdFx0XHQgKi9cbm1tL2h1Z2V0bGIuYzo2MzY5Olx0XHRcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpb192bWEoaCwgZHN0X3ZtYSwgZHN0X2FkZHIpO1xubW0vaHVnZXRsYi5jLTYzNzAtXHRcdFx0aWYgKCFmb2xpbykge1xuLS1cbm1tL2h1Z2V0bGIuYy02Mzg5LVxubW0vaHVnZXRsYi5jOjYzOTA6XHRcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBkc3RfYWRkciwgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTYzOTEtXHRcdGlmIChJU19FUlIoZm9saW8pKSB7XG4tLVxubW0vaHVnZXRsYi5jPTY2ODM9bG9uZyBodWdldGxiX3Jlc2VydmVfcGFnZXMoc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5tbS9odWdldGxiLmMtNjgwMy1cdFx0XHQgKiBtYXAgYmV0d2VlbiByZWdpb25fY2hnIGFuZCByZWdpb25fYWRkLiAgVGhpc1xubW0vaHVnZXRsYi5jOjY4MDQ6XHRcdFx0ICogaW5kaWNhdGVzIGEgcmFjZSB3aXRoIGFsbG9jX2h1Z2V0bGJfZm9saW8uICBBZGp1c3Rcbm1tL2h1Z2V0bGIuYy02ODA1LVx0XHRcdCAqIHRoZSBzdWJwb29sIGFuZCByZXNlcnZlIGNvdW50cyBtb2RpZmllZCBhYm92ZVxuLS1cbm1tL21lbWZkLmM9Njg9c3RydWN0IGZvbGlvICptZW1mZF9hbGxvY19mb2xpbyhzdHJ1Y3QgZmlsZSAqbWVtZmQsIHBnb2ZmX3QgaWR4KVxuLS1cbm1tL21lbWZkLmMtOTMtXG5tbS9tZW1mZC5jOjk0Olx0XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW9fcmVzZXJ2ZShoLFxubW0vbWVtZmQuYy05NS1cdFx0XHRcdFx0XHQgICAgbnVtYV9ub2RlX2lkKCksXG4tLVxubW0vbWVtcG9saWN5LmM9MTQzNT1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19taWdyYXRpb25fdGFyZ2V0X2J5X21wb2woc3RydWN0IGZvbGlvICpzcmMsXG4tLVxubW0vbWVtcG9saWN5LmMtMTQ1NC1cdFx0bm9kZW1hc2sgPSBwb2xpY3lfbm9kZW1hc2soZ2ZwLCBwb2wsIGlseCwgXHUwMDI2bmlkKTtcbm1tL21lbXBvbGljeS5jOjE0NTU6XHRcdHJldHVybiBhbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKGgsIG5pZCwgbm9kZW1hc2ssIGdmcCxcbm1tL21lbXBvbGljeS5jLTE0NTYtXHRcdFx0XHRodGxiX2FsbG93X2FsbG9jX2ZhbGxiYWNrKE1SX01FTVBPTElDWV9NQklORCkpO1xuLS1cbm1tL21pZ3JhdGUuYz0yMTk5PXN0cnVjdCBmb2xpbyAqYWxsb2NfbWlncmF0aW9uX3RhcmdldChzdHJ1Y3QgZm9saW8gKnNyYywgdW5zaWduZWQgbG9uZyBwcml2YXRlKVxuLS1cbm1tL21pZ3JhdGUuYy0yMjE2LVx0XHRnZnBfbWFzayA9IGh0bGJfbW9kaWZ5X2FsbG9jX21hc2soaCwgZ2ZwX21hc2spO1xubW0vbWlncmF0ZS5jOjIyMTc6XHRcdHJldHVybiBhbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKGgsIG5pZCxcbm1tL21pZ3JhdGUuYy0yMjE4LVx0XHRcdFx0XHRcdG10Yy1cdTAwM2VubWFzaywgZ2ZwX21hc2ssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MDE3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIHNvIGBhbGxvY19odWdldGxiX2ZvbGlvYC4uLiB0aGF0JiMzOTtzIHRoZSBrZXkgZnVuY3Rpb24uIEl0JiMzOTtzIGV4cG9ydGVkLCB3aGljaCBpcyBnb29kOyBtYWtlcyBpdCBhY2Nlc3NpYmxlLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgZW50cnkgcG9pbnQuIFRoZSBpbmNsdWRlIGZpbGUgYGluY2x1ZGUvbGludXgvaHVnZXRsYi5oYCB0ZWxscyBtZSBpdHMgZGVmaW5pdGlvbiwgYW5kIHRoZSB1c2FnZXMgaW4gYGZzL2h1Z2V0bGJmcy9pbm9kZS5jYCBhbmQgYG1tL2h1Z2V0bGIuY2AgZ2l2ZSBtZSBzb21lIGNvbnRleHQuIEl0JiMzOTtzIGRlZmluaXRlbHkgYSB2aWFibGUgZnV6emluZyB0YXJnZXQsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIHBhdGNoIGlzIGZvY3VzZWQgb24gaXQuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGZ1bmN0aW9ucyBoaWRpbmcgaW4gdGhlIHNoYWRvd3MgdGhhdCB0aGlzIHBhdGNoIGluZGlyZWN0bHkgdG91Y2hlcy4gTm9wZSwgYGFsbG9jX2h1Z2V0bGJfZm9saW9gIHNlZW1zIHRvIGJlIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiAKClJpZ2h0LCB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIGFuZCBpdCYjMzk7cyB0aGUgcmlnaHQgb25lLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucywganVzdCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcywgcHJvYmFibHkgYGZzL2h1Z2V0bGJmcy9LY29uZmlnYCBvciBzb21ldGhpbmcgc2ltaWxhciwganVzdCB0byBiZSBjZXJ0YWluLiBKdXN0IG1ha2luZyBzdXJlIG5vIG90aGVyIG9wdGlvbnMgYXJlIHJlbGV2YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSFVHRVRMQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3NoL21tL0tjb25maWc9MTU4PWNob2ljZVxuLS1cbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjMtXG5hcmNoL3NoL21tL0tjb25maWc6MTY0OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV82NEtcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjUtXHRib29sIFwmIzM0OzY0a0JcJiMzNDtcbi0tXG5hcmNoL3NoL21tL0tjb25maWctMTY3LVxuYXJjaC9zaC9tbS9LY29uZmlnOjE2ODpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfMjU2S1xuYXJjaC9zaC9tbS9LY29uZmlnLTE2OS1cdGJvb2wgXCYjMzQ7MjU2a0JcJiMzNDtcbi0tXG5hcmNoL3NoL21tL0tjb25maWctMTcxLVxuYXJjaC9zaC9tbS9LY29uZmlnOjE3Mjpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfMU1CXG5hcmNoL3NoL21tL0tjb25maWctMTczLVx0Ym9vbCBcJiMzNDsxTUJcJiMzNDtcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzQtXG5hcmNoL3NoL21tL0tjb25maWc6MTc1OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV80TUJcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0OzRNQlwmIzM0O1xuLS1cbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzgtXG5hcmNoL3NoL21tL0tjb25maWc6MTc5OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV82NE1CXG5hcmNoL3NoL21tL0tjb25maWctMTgwLVx0Ym9vbCBcJiMzNDs2NE1CXCYjMzQ7XG4tLVxuZnMvS2NvbmZpZz0yNDc9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXG4tLVxuZnMvS2NvbmZpZy0yNDktXG5mcy9LY29uZmlnOjI1MDptZW51Y29uZmlnIEhVR0VUTEJGU1xuZnMvS2NvbmZpZy0yNTEtXHRib29sIFwmIzM0O0h1Z2VUTEIgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL0tjb25maWc9MjYyPWlmIEhVR0VUTEJGU1xuZnMvS2NvbmZpZzoyNjM6Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQX0RFRkFVTFRfT05cbmZzL0tjb25maWctMjY0LVx0Ym9vbCBcJiMzNDtIdWdlVExCIFZtZW1tYXAgT3B0aW1pemF0aW9uIChIVk8pIGRlZmF1bHRzIHRvIG9uXCYjMzQ7XG4tLVxuZnMvS2NvbmZpZz0yNzE9ZW5kaWYgIyBIVUdFVExCRlNcbmZzL0tjb25maWctMjcyLVxuZnMvS2NvbmZpZzoyNzM6Y29uZmlnIEhVR0VUTEJfUEFHRVxuZnMvS2NvbmZpZy0yNzQtXHRkZWZfYm9vbCBIVUdFVExCRlNcbi0tXG5mcy9LY29uZmlnLTI3Ni1cbmZzL0tjb25maWc6Mjc3OmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxuZnMvS2NvbmZpZy0yNzgtXHRkZWZfYm9vbCBIVUdFVExCX1BBR0Vcbi0tXG5mcy9LY29uZmlnLTI4Mi1cbmZzL0tjb25maWc6MjgzOmNvbmZpZyBIVUdFVExCX1BNRF9QQUdFX1RBQkxFX1NIQVJJTkdcbmZzL0tjb25maWctMjg0LVx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXG4tLVxubW0vS2NvbmZpZz03MDY9Y29uZmlnIEFSQ0hfSEFTX1BNRF9TT0ZUTEVBVkVTXG4tLVxubW0vS2NvbmZpZy03MDgtXG5tbS9LY29uZmlnOjcwOTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEVcbm1tL0tjb25maWctNzEwLVx0ZGVmX2Jvb2wgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE3OAoJCQkJCQkJb3V0cHV0OiAxMDAKCQkJCQkJCXRob3VnaHRzOiAxNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEhVR0VUTEJGUyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gdGhlIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIGl0JiMzOTtzIGNsZWFyIHRoYXQgYEhVR0VUTEJGU2AgaXMgdGhlICpwcmltYXJ5KiBjb25maWd1cmF0aW9uIGl0ZW0gb2YgaW50ZXJlc3QuIFRoZSBkZWZpbml0aW9uIG9mIGBIVUdFVExCX1BBR0VgIChgZGVmX2Jvb2wgSFVHRVRMQkZTYCkgY29uZmlybXMgdGhhdCBgSFVHRVRMQkZTYCBpcyB0aGUgY29yZSBjb250cm9sLiBUaGVyZWZvcmUsIGVuYWJsaW5nIGBIVUdFVExCRlNgIGlzIHRoZSBrZXkgYWN0aW9uLgoKSSYjMzk7bGwgcmV0dXJuIGJvdGggYEhVR0VUTEJGU2AgYW5kIGBIVUdFVExCX1BBR0VgIGluIHRoZSBvdXRwdXQsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGNvdmVyIGFueSBlZGdlIGNhc2VzLiBIb3dldmVyLCB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIGlzIGVzc2VudGlhbDogZW5hYmxpbmcgYEhVR0VUTEJGU2AgaXMgZW5vdWdoIHRvIHRyaWdnZXIgdGhlIGRlc2lyZWQgYmVoYXZpb3IuCgpIZXJlJiMzOTtzIG15IGRpc3RpbGxlZCBzdW1tYXJ5OiB0aGlzIHBhdGNoIGlzIHJlbGV2YW50IHRvIGZ1enppbmcgYmVjYXVzZSBvZiB0aGUgY2hhbmdlcyBpdCBpbnRyb2R1Y2VzIGluIGZvbGlvIGFsbG9jYXRpb24gZm9yIGh1Z2UgcGFnZXMuIFRoZSBrZXkgZnVuY3Rpb24gaXMgYGFsbG9jX2h1Z2V0bGJfZm9saW9gLiBFbmFibGluZyB0aGUgY29uZmlncyBgSFVHRVRMQkZTYCBhbmQgYEhVR0VUTEJfUEFHRWAgd2lsbCBiZSBuZWNlc3NhcnkuIFRoZSBidWcgZml4ZWQgaXMgYSBmdW5jdGlvbmFsIGlzc3VlIHdpdGhpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0sIGRlYWxpbmcgd2l0aCBjb3JyZWN0IHJlc3RvcmF0aW9uIG9mIHVzZWQgaHBhZ2VzIGR1cmluZyBlcnJvciBwYXRocyB3aGVuIGFsbG9jYXRpbmcgZnJvbSB0aGUgZ2xvYmFsIHBvb2wuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIVUdFVExCRlMmIzM0OywKICAgICYjMzQ7SFVHRVRMQl9QQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWxsb2NfaHVnZXRsYl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBodWdldGxiIGZvbGlvIGFsbG9jYXRpb24gd2hlcmUgdXNlZF9ocGFnZXMgaXMgbm90IGNvcnJlY3RseSByZXN0b3JlZCBvbiBhIHNwZWNpZmljIGVycm9yIHBhdGggd2hlbiBmYWlsaW5nIHRvIGJhY2sgZnJvbSB0aGUgZ2xvYmFsIHBvb2wuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtIVUdFVExCX1BBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGxvY19odWdldGxiX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGh1Z2V0bGIgZm9saW8gYWxsb2NhdGlvbiB3aGVyZSB1c2VkX2hwYWdlcyBpcyBub3QgY29ycmVjdGx5IHJlc3RvcmVkIG9uIGEgc3BlY2lmaWMgZXJyb3IgcGF0aCB3aGVuIGZhaWxpbmcgdG8gYmFjayBmcm9tIHRoZSBnbG9iYWwgcG9vbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBodWdldGxiIHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM3OjEwLjYyMDM0ODQ4OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTMyMzg4NzMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCRlNcIixcbiAgICBcIkhVR0VUTEJfUEFHRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFsbG9jX2h1Z2V0bGJfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBodWdldGxiIGZvbGlvIGFsbG9jYXRpb24gd2hlcmUgdXNlZF9ocGFnZXMgaXMgbm90IGNvcnJlY3RseSByZXN0b3JlZCBvbiBhIHNwZWNpZmljIGVycm9yIHBhdGggd2hlbiBmYWlsaW5nIHRvIGJhY2sgZnJvbSB0aGUgZ2xvYmFsIHBvb2wuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM3OjEwLjYyMDM1NTMwOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4NjcwNjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTFmMjk1NTkxNGM3MTc4MjAzNWM1YmYzYTMwMjdkMmFmZWFmNzdlM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAxNTozNzowOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmNcXG5pbmRleCBkNmM4MTJkMTg1N2I1Ny4uODQxM2VjOTJkODM2ZGUgMTAwNjQ0XFxuLS0tIGEvbW0vaHVnZXRsYi5jXFxuKysrIGIvbW0vaHVnZXRsYi5jXFxuQEAgLTMwNzMsNiArMzA3MywxOSBAQCBzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW8oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuIFxcdGlmIChtYXBfY2hnIFxcdTAwMjZcXHUwMDI2ICFnYmxfY2hnKSB7XFxuIFxcdFxcdGdibF9yZXNlcnZlID0gaHVnZXBhZ2Vfc3VicG9vbF9wdXRfcGFnZXMoc3Bvb2wsIDEpO1xcbiBcXHRcXHRodWdldGxiX2FjY3RfbWVtb3J5KGgsIC1nYmxfcmVzZXJ2ZSk7XFxuK1xcdH0gZWxzZSBpZiAobWFwX2NoZyBcXHUwMDI2XFx1MDAyNiBnYmxfY2hnIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBzcG9vbCkge1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBSZXN0b3JlIHVzZWRfaHBhZ2VzIGZvciB0aGUgZ2xvYmFsbHktcmVxdWVzdGVkIHBhZ2UgdGhhdFxcbitcXHRcXHQgKiBodWdlcGFnZV9zdWJwb29sX2dldF9wYWdlcygpIGNvdW50ZWQgYWdhaW5zdCB0aGUgc3VicG9vbCdzXFxuK1xcdFxcdCAqIG1heGltdW0sIGJ1dCB3aGljaCB3ZSBmYWlsZWQgdG8gYmFjayBmcm9tIHRoZSBnbG9iYWwgcG9vbC5cXG4rXFx0XFx0ICogTWlycm9ycyB0aGUgZml4IGluIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcygpICgxZDNmOWJiNGM4YWYpLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4rXFxuK1xcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZzcG9vbC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRpZiAoc3Bvb2wtXFx1MDAzZW1heF9ocGFnZXMgIT0gLTEpXFxuK1xcdFxcdFxcdHNwb29sLVxcdTAwM2V1c2VkX2hwYWdlcyAtPSBnYmxfY2hnO1xcbitcXHRcXHR1bmxvY2tfb3JfcmVsZWFzZV9zdWJwb29sKHNwb29sLCBmbGFncyk7XFxuIFxcdH1cXG4gXFxuIG91dF9lbmRfcmVzZXJ2YXRpb246XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM3OjExLjEwOTc3MDU1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI0ODM0NDQ5NTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJGU1wiLFxuICAgIFwiSFVHRVRMQl9QQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxsb2NfaHVnZXRsYl9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGh1Z2V0bGIgZm9saW8gYWxsb2NhdGlvbiB3aGVyZSB1c2VkX2hwYWdlcyBpcyBub3QgY29ycmVjdGx5IHJlc3RvcmVkIG9uIGEgc3BlY2lmaWMgZXJyb3IgcGF0aCB3aGVuIGZhaWxpbmcgdG8gYmFjayBmcm9tIHRoZSBnbG9iYWwgcG9vbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBodWdldGxiIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMWYyOTU1OTE0YzcxNzgyMDM1YzViZjNhMzAyN2QyYWZlYWY3N2UzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMTU6Mzc6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmNcbmluZGV4IGQ2YzgxMmQxODU3YjU3Li44NDEzZWM5MmQ4MzZkZSAxMDA2NDRcbi0tLSBhL21tL2h1Z2V0bGIuY1xuKysrIGIvbW0vaHVnZXRsYi5jXG5AQCAtMzA3Myw2ICszMDczLDE5IEBAIHN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpbyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbiBcdGlmIChtYXBfY2hnIFx1MDAyNlx1MDAyNiAhZ2JsX2NoZykge1xuIFx0XHRnYmxfcmVzZXJ2ZSA9IGh1Z2VwYWdlX3N1YnBvb2xfcHV0X3BhZ2VzKHNwb29sLCAxKTtcbiBcdFx0aHVnZXRsYl9hY2N0X21lbW9yeShoLCAtZ2JsX3Jlc2VydmUpO1xuK1x0fSBlbHNlIGlmIChtYXBfY2hnIFx1MDAyNlx1MDAyNiBnYmxfY2hnIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBzcG9vbCkge1xuK1x0XHQvKlxuK1x0XHQgKiBSZXN0b3JlIHVzZWRfaHBhZ2VzIGZvciB0aGUgZ2xvYmFsbHktcmVxdWVzdGVkIHBhZ2UgdGhhdFxuK1x0XHQgKiBodWdlcGFnZV9zdWJwb29sX2dldF9wYWdlcygpIGNvdW50ZWQgYWdhaW5zdCB0aGUgc3VicG9vbCdzXG4rXHRcdCAqIG1heGltdW0sIGJ1dCB3aGljaCB3ZSBmYWlsZWQgdG8gYmFjayBmcm9tIHRoZSBnbG9iYWwgcG9vbC5cbitcdFx0ICogTWlycm9ycyB0aGUgZml4IGluIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcygpICgxZDNmOWJiNGM4YWYpLlxuK1x0XHQgKi9cbitcdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbitcbitcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2c3Bvb2wtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0XHRpZiAoc3Bvb2wtXHUwMDNlbWF4X2hwYWdlcyAhPSAtMSlcbitcdFx0XHRzcG9vbC1cdTAwM2V1c2VkX2hwYWdlcyAtPSBnYmxfY2hnO1xuK1x0XHR1bmxvY2tfb3JfcmVsZWFzZV9zdWJwb29sKHNwb29sLCBmbGFncyk7XG4gXHR9XG4gXG4gb3V0X2VuZF9yZXNlcnZhdGlvbjpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM3OjExLjEwOTc3NzM2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwODI3OTE1ODU4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBodWdldGxiLmMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHdpdGhpbiBgbW0vaHVnZXRsYi5jYC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGhvdyBpdCdzIGFsdGVyaW5nIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhbiBgZWxzZSBpZmAgY29uZGl0aW9uLCBhbmQgdGhlIGNvbmRpdGlvbnMgYXJlIHF1aXRlIHByZWNpc2U6IGBtYXBfY2hnYCwgYGdibF9jaGdgIGdyZWF0ZXIgdGhhbiB6ZXJvLCBhbmQgYHNwb29sYCBtdXN0IGFsbCBiZSB0cnVlIGZvciBpdCB0byBleGVjdXRlLiBXaXRoaW4gdGhpcyBuZXcgYmxvY2ssIGl0IGxvb2tzIGxpa2UgdGhlcmUncyBhIHJlc3RvcmF0aW9uIG9mIGB1c2VkX2hwYWdlc2AsIHNwZWNpZmljYWxseSBmb3IgdGhlIGdsb2JhbGx5IHJlcXVlc3RlZCBwYWdlLiBUaGlzIGZlZWxzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGh1Z2UgcGFnZSBzdWJzeXN0ZW0sIGFuZCBpdCB3YXJyYW50cyBhIGRlZXBlciBkaXZlLiBJIG5lZWQgdG8gZ2V0IGJhY2sgaW50byBgYWxsb2NfaHVnZXRsYl9mb2xpb2Agd2l0aGluIGBtbS9odWdldGxiLmNgIHRvIGZ1bGx5IGdyYXNwIGl0cyBpbXBhY3QgYW5kIGVuc3VyZSBpdCdzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzg6NTkuMzg4OTM3ODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAwNDU5OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFsbG9jX2h1Z2V0bGJfZm9saW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vaHVnZXRsYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2h1Z2V0bGIuYz0yMTQ5PXN0cnVjdCBmb2xpbyAqYWxsb2NfYnVkZHlfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTIxNzItXFxubW0vaHVnZXRsYi5jOjIxNzM6c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvX3Jlc2VydmUoc3RydWN0IGhzdGF0ZSAqaCwgaW50IHByZWZlcnJlZF9uaWQsXFxubW0vaHVnZXRsYi5jLTIxNzQtXFx0XFx0bm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrKVxcbi0tXFxubW0vaHVnZXRsYi5jLTIxOTMtLyogZm9saW8gbWlncmF0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uICovXFxubW0vaHVnZXRsYi5jOjIxOTQ6c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxcbm1tL2h1Z2V0bGIuYy0yMTk1LVxcdFxcdG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzaywgYm9vbCBhbGxvd19hbGxvY19mYWxsYmFjaylcXG4tLVxcbm1tL2h1Z2V0bGIuYz0yNTI3PXN0YXRpYyBsb25nIHZtYV9kZWxfcmVzZXJ2YXRpb24oc3RydWN0IGhzdGF0ZSAqaCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0yNTM0LSAqIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgdG8gcmVzdG9yZSByZXNlcnZhdGlvbiBpbmZvcm1hdGlvbiBvbiBlcnJvciBwYXRocy5cXG5tbS9odWdldGxiLmM6MjUzNTogKiBJdCBzaG91bGQgT05MWSBiZSBjYWxsZWQgZm9yIGZvbGlvcyBhbGxvY2F0ZWQgdmlhIGFsbG9jX2h1Z2V0bGJfZm9saW8oKSxcXG5tbS9odWdldGxiLmMtMjUzNi0gKiBhbmQgdGhlIGh1Z2V0bGIgbXV0ZXggc2hvdWxkIHJlbWFpbiBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIHJvdXRpbmUuXFxuLS1cXG5tbS9odWdldGxiLmMtMjU0MS0gKiAyKSBObyByZXNlcnZhdGlvbiB3YXMgaW4gcGxhY2UgZm9yIHRoZSBwYWdlLCBzbyBodWdldGxiX3Jlc3RvcmVfcmVzZXJ2ZSBpc1xcbm1tL2h1Z2V0bGIuYzoyNTQyOiAqICAgIG5vdCBzZXQuICBIb3dldmVyLCBhbGxvY19odWdldGxiX2ZvbGlvIGFsd2F5cyB1cGRhdGVzIHRoZSByZXNlcnZlIG1hcC5cXG5tbS9odWdldGxiLmMtMjU0My0gKlxcbi0tXFxubW0vaHVnZXRsYi5jLTI1NTAtICpcXG5tbS9odWdldGxiLmM6MjU1MTogKiBJbiBjYXNlIDIsIHNpbXBseSB1bmRvIHJlc2VydmUgbWFwIG1vZGlmaWNhdGlvbnMgZG9uZSBieSBhbGxvY19odWdldGxiX2ZvbGlvLlxcbm1tL2h1Z2V0bGIuYy0yNTUyLSAqL1xcbm1tL2h1Z2V0bGIuYz0yNTUzPXZvaWQgcmVzdG9yZV9yZXNlcnZlX29uX2Vycm9yKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vaHVnZXRsYi5jLTI1NzktXFx0XFx0XFx0ICogVGhpcyBpbmRpY2F0ZXMgdGhlcmUgaXMgYW4gZW50cnkgaW4gdGhlIHJlc2VydmUgbWFwXFxubW0vaHVnZXRsYi5jOjI1ODA6XFx0XFx0XFx0ICogbm90IGFkZGVkIGJ5IGFsbG9jX2h1Z2V0bGJfZm9saW8uICBXZSBrbm93IGl0IHdhcyBhZGRlZFxcbm1tL2h1Z2V0bGIuYzoyNTgxOlxcdFxcdFxcdCAqIGJlZm9yZSB0aGUgYWxsb2NfaHVnZXRsYl9mb2xpbyBjYWxsLCBvdGhlcndpc2VcXG5tbS9odWdldGxiLmMtMjU4Mi1cXHRcXHRcXHQgKiBodWdldGxiX3Jlc3RvcmVfcmVzZXJ2ZSB3b3VsZCBiZSBzZXQgb24gdGhlIGZvbGlvLlxcbi0tXFxubW0vaHVnZXRsYi5jPTI5MjA9dHlwZWRlZiBlbnVtIHtcXG4tLVxcbm1tL2h1Z2V0bGIuYy0yOTQ1LSAqL1xcbm1tL2h1Z2V0bGIuYzoyOTQ2OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpbyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG5tbS9odWdldGxiLmMtMjk0Ny1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBhZGRyLCBib29sIGNvd19mcm9tX293bmVyKVxcbi0tXFxubW0vaHVnZXRsYi5jPTQ5MTE9aW50IGNvcHlfaHVnZXRsYl9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVjdCAqc3JjLFxcbi0tXFxubW0vaHVnZXRsYi5jLTUwMzItXFx0XFx0XFx0XFx0LyogRG8gbm90IHVzZSByZXNlcnZlIGFzIGl0J3MgcHJpdmF0ZSBvd25lZCAqL1xcbm1tL2h1Z2V0bGIuYzo1MDMzOlxcdFxcdFxcdFxcdG5ld19mb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8oZHN0X3ZtYSwgYWRkciwgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy01MDM0LVxcdFxcdFxcdFxcdGlmIChJU19FUlIobmV3X2ZvbGlvKSkge1xcbi0tXFxubW0vaHVnZXRsYi5jPTU1MDE9c3RhdGljIHZtX2ZhdWx0X3QgaHVnZXRsYl93cChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbm1tL2h1Z2V0bGIuYy01NTgyLVxcdHNwaW5fdW5sb2NrKHZtZi1cXHUwMDNlcHRsKTtcXG5tbS9odWdldGxiLmM6NTU4MzpcXHRuZXdfZm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKHZtYSwgdm1mLVxcdTAwM2VhZGRyZXNzLCBjb3dfZnJvbV9vd25lcik7XFxubW0vaHVnZXRsYi5jLTU1ODQtXFxuLS1cXG5tbS9odWdldGxiLmM9NTc3Mz1zdGF0aWMgdm1fZmF1bHRfdCBodWdldGxiX25vX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5tbS9odWdldGxiLmMtNTg0Mi1cXG5tbS9odWdldGxiLmM6NTg0MzpcXHRcXHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8odm1hLCB2bWYtXFx1MDAzZWFkZHJlc3MsIGZhbHNlKTtcXG5tbS9odWdldGxiLmMtNTg0NC1cXHRcXHRpZiAoSVNfRVJSKGZvbGlvKSkge1xcbi0tXFxubW0vaHVnZXRsYi5jPTYwMjM9dm1fZmF1bHRfdCBodWdldGxiX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL2h1Z2V0bGIuYy02MjU4LSAqL1xcbm1tL2h1Z2V0bGIuYzo2MjU5OnN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fdm1hKHN0cnVjdCBoc3RhdGUgKmgsXFxubW0vaHVnZXRsYi5jLTYyNjAtXFx0XFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcylcXG4tLVxcbm1tL2h1Z2V0bGIuYy02Mjc1LVxcdCAqL1xcbm1tL2h1Z2V0bGIuYzo2Mjc2OlxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpb19ub2RlbWFzayhoLCBub2RlLCBub2RlbWFzaywgZ2ZwX21hc2ssIGZhbHNlKTtcXG5tbS9odWdldGxiLmMtNjI3Ny1cXHRtcG9sX2NvbmRfcHV0KG1wb2wpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTYyODY9aW50IGh1Z2V0bGJfbWZpbGxfYXRvbWljX3B0ZShwdGVfdCAqZHN0X3B0ZSxcXG4tLVxcbm1tL2h1Z2V0bGIuYy02MzQyLVxcbm1tL2h1Z2V0bGIuYzo2MzQzOlxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBkc3RfYWRkciwgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy02MzQ0LVxcdFxcdGlmIChJU19FUlIoZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmMtNjM2OC1cXHRcXHRcXHQgKi9cXG5tbS9odWdldGxiLmM6NjM2OTpcXHRcXHRcXHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW9fdm1hKGgsIGRzdF92bWEsIGRzdF9hZGRyKTtcXG5tbS9odWdldGxiLmMtNjM3MC1cXHRcXHRcXHRpZiAoIWZvbGlvKSB7XFxuLS1cXG5tbS9odWdldGxiLmMtNjM4OS1cXG5tbS9odWdldGxiLmM6NjM5MDpcXHRcXHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8oZHN0X3ZtYSwgZHN0X2FkZHIsIGZhbHNlKTtcXG5tbS9odWdldGxiLmMtNjM5MS1cXHRcXHRpZiAoSVNfRVJSKGZvbGlvKSkge1xcbi0tXFxubW0vaHVnZXRsYi5jPTY2ODM9bG9uZyBodWdldGxiX3Jlc2VydmVfcGFnZXMoc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbm1tL2h1Z2V0bGIuYy02ODAzLVxcdFxcdFxcdCAqIG1hcCBiZXR3ZWVuIHJlZ2lvbl9jaGcgYW5kIHJlZ2lvbl9hZGQuICBUaGlzXFxubW0vaHVnZXRsYi5jOjY4MDQ6XFx0XFx0XFx0ICogaW5kaWNhdGVzIGEgcmFjZSB3aXRoIGFsbG9jX2h1Z2V0bGJfZm9saW8uICBBZGp1c3RcXG5tbS9odWdldGxiLmMtNjgwNS1cXHRcXHRcXHQgKiB0aGUgc3VicG9vbCBhbmQgcmVzZXJ2ZSBjb3VudHMgbW9kaWZpZWQgYWJvdmVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzg6NTkuNjg5NDA0MTIyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgwMjAyMjkxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGh1Z2V0bGIgYWxsb2NhdGlvbiBpc3N1ZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlIGBhbGxvY19odWdldGxiX2ZvbGlvYCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQuIEl0J3MgdGhlIGNvcmUgb2YgaG93IHdlIGhhbmRsZSBodWdldGxiIGFsbG9jYXRpb25zLCBzbyB1bmRlcnN0YW5kaW5nIGl0IGlzIGNydWNpYWwuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIGEgYnVnIHdoZXJlIGB1c2VkX2hwYWdlc2AgaXNuJ3QgcHJvcGVybHkgcmVzdG9yZWQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIOKAkyBzcGVjaWZpY2FsbHksIHdoZW4gYGdibF9jaGdgIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBgc3Bvb2xgIGlzIGFjdGl2ZSwgYnV0IHdlIGZhaWwgdG8gc291cmNlIGZyb20gdGhlIGdsb2JhbCBwb29sLiBUaGF0J3MgYSBjbGFzc2ljIHJhY2UtY29uZGl0aW9uIHNjZW5hcmlvLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gd2h5IHRoZSBjaGVjayBhbmQgcmVzdG9yYXRpb24gYXJlIGZhaWxpbmcuXG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSdtIGdvaW5nIHRvIGp1bXAgaW50byBgbW0vaHVnZXRsYi5jYCB0byBleGFtaW5lIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgZnVuY3Rpb24gZGlyZWN0bHkuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIHNwZWNpZmljYWxseSBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIHRvIGVuc3VyZSBteSBlbnZpcm9ubWVudCBpcyBzZXQgdXAgcHJvcGVybHkgZm9yIGRlYnVnZ2luZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGJlaW5nIHByb3Blcmx5IGNvbmZpZ3VyZWQgc28gSSBjYW4gcmVwcm9kdWNlIHRoZSBmYWlsdXJlIGFuZCB0cmFjayBkb3duIHRoZSByb290IGNhdXNlLiBUaGlzIGluZm9ybWF0aW9uIHNob3VsZCBwcm92aWRlIGNvbnRleHQgZm9yIGRlYnVnZ2luZyB0aGUgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNjMsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6NTcuNzA5NjM1Mjc3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODk4OTY4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfSFVHRVRMQl9QQUdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT04ND1lbmRpZlxcbm1tL01ha2VmaWxlOjg1Om9iai0kKENPTkZJR19IVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUClcXHQrPSBodWdldGxiX3ZtZW1tYXAub1xcbm1tL01ha2VmaWxlLTg2LW9iai0kKENPTkZJR19OVU1BKSBcXHQrPSBtZW1wb2xpY3kub1xcbi0tXFxubW0vZGFtb24vdmFkZHIuYz0yNjc9c3RhdGljIGludCBkYW1vbl9ta29sZF9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy0yOTMtXFxubW0vZGFtb24vdmFkZHIuYzoyOTQ6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5tbS9kYW1vbi92YWRkci5jLTI5NS1zdGF0aWMgdm9pZCBkYW1vbl9odWdldGxiX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYz0zMjI9c3RhdGljIGludCBkYW1vbl9ta29sZF9odWdldGxiX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgaG1hc2ssXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTM0Mi0jZGVmaW5lIGRhbW9uX21rb2xkX2h1Z2V0bGJfZW50cnkgTlVMTFxcbm1tL2RhbW9uL3ZhZGRyLmM6MzQzOiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxubW0vZGFtb24vdmFkZHIuYy0zNDQtXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTM5MD1zdGF0aWMgaW50IGRhbW9uX3lvdW5nX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTQzNy1cXG5tbS9kYW1vbi92YWRkci5jOjQzODojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL2RhbW9uL3ZhZGRyLmMtNDM5LXN0YXRpYyBpbnQgZGFtb25feW91bmdfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy00NjktI2RlZmluZSBkYW1vbl95b3VuZ19odWdldGxiX2VudHJ5IE5VTExcXG5tbS9kYW1vbi92YWRkci5jOjQ3MDojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbm1tL2RhbW9uL3ZhZGRyLmMtNDcxLVxcbi0tXFxubW0vZGVidWdfdm1fcGd0YWJsZS5jPTg0ND1zdGF0aWMgdm9pZCBfX2luaXQgc3dhcF9taWdyYXRpb25fdGVzdHMoc3RydWN0IHBndGFibGVfZGVidWdfYXJncyAqYXJncylcXG4tLVxcbm1tL2RlYnVnX3ZtX3BndGFibGUuYy04ODMtXFxubW0vZGVidWdfdm1fcGd0YWJsZS5jOjg4NDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL2RlYnVnX3ZtX3BndGFibGUuYy04ODUtc3RhdGljIHZvaWQgX19pbml0IGh1Z2V0bGJfYmFzaWNfdGVzdHMoc3RydWN0IHBndGFibGVfZGVidWdfYXJncyAqYXJncylcXG4tLVxcbm1tL2RlYnVnX3ZtX3BndGFibGUuYy04OTktfVxcbm1tL2RlYnVnX3ZtX3BndGFibGUuYzo5MDA6I2Vsc2UgIC8qICFDT05GSUdfSFVHRVRMQl9QQUdFICovXFxubW0vZGVidWdfdm1fcGd0YWJsZS5jLTkwMS1zdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9iYXNpY190ZXN0cyhzdHJ1Y3QgcGd0YWJsZV9kZWJ1Z19hcmdzICphcmdzKSB7IH1cXG5tbS9kZWJ1Z192bV9wZ3RhYmxlLmM6OTAyOiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxubW0vZGVidWdfdm1fcGd0YWJsZS5jLTkwMy1cXG4tLVxcbm1tL2htbS5jPTQ4ND1zdGF0aWMgaW50IGhtbV92bWFfd2Fsa19wdWQocHVkX3QgKnB1ZHAsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxubW0vaG1tLmMtNTQxLVxcbm1tL2htbS5jOjU0MjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL2htbS5jLTU0My1zdGF0aWMgaW50IGhtbV92bWFfd2Fsa19odWdldGxiX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgaG1hc2ssXFxuLS1cXG5tbS9obW0uYy01OTQtI2RlZmluZSBobW1fdm1hX3dhbGtfaHVnZXRsYl9lbnRyeSBOVUxMXFxubW0vaG1tLmM6NTk1OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxubW0vaG1tLmMtNTk2LVxcbi0tXFxubW0vaHVnZXRsYi5jPTMzNTg9dm9pZCBfX2luaXQgaHVnZXRsYl9ib290bWVtX3N0cnVjdF9wYWdlX2luaXQodm9pZClcXG4tLVxcbm1tL2h1Z2V0bGIuYy0zMzY5LVxcdH07XFxubW0vaHVnZXRsYi5jOjMzNzA6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxcbm1tL2h1Z2V0bGIuYy0zMzcxLVxcdHN0cnVjdCB6b25lICp6b25lO1xcbi0tXFxubW0vaHVnZXRsYl92bWVtbWFwLmM9MzcyPXN0YXRpYyBpbnQgdm1lbW1hcF9yZW1hcF9hbGxvYyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbm1tL2h1Z2V0bGJfdm1lbW1hcC5jLTM4Ny1cXG5tbS9odWdldGxiX3ZtZW1tYXAuYzozODg6c3RhdGljIGJvb2wgdm1lbW1hcF9vcHRpbWl6ZV9lbmFibGVkID0gSVNfRU5BQkxFRChDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBfREVGQVVMVF9PTik7XFxubW0vaHVnZXRsYl92bWVtbWFwLmMtMzg5LXN0YXRpYyBpbnQgX19pbml0IGh1Z2V0bGJfdm1lbW1hcF9vcHRpbWl6ZV9wYXJhbShjaGFyICpidWYpXFxuLS1cXG5tbS9odWdldGxiX3ZtZW1tYXAuaC0yMS1cXG5tbS9odWdldGxiX3ZtZW1tYXAuaDoyMjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXFxubW0vaHVnZXRsYl92bWVtbWFwLmgtMjMtaW50IGh1Z2V0bGJfdm1lbW1hcF9yZXN0b3JlX2ZvbGlvKGNvbnN0IHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbi0tXFxubW0vaHVnZXRsYl92bWVtbWFwLmg9ODM9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaHVnZXRsYl92bWVtbWFwX29wdGltaXphYmxlX3NpemUoY29uc3Qgc3RydWN0IGhzdGF0ZSAqaClcXG4tLVxcbm1tL2h1Z2V0bGJfdm1lbW1hcC5oLTg2LX1cXG5tbS9odWdldGxiX3ZtZW1tYXAuaDo4NzojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQICovXFxubW0vaHVnZXRsYl92bWVtbWFwLmgtODgtXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MzcyPXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWVtY2dfbm9kZV9zdGF0X2l0ZW1zW10gPSB7XFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNDIyLVxcdFBHUkVGSUxMLFxcbm1tL21lbWNvbnRyb2wuYzo0MjM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5tbS9tZW1jb250cm9sLmMtNDI0LVxcdE5SX0hVR0VUTEIsXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MTU0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1lbW9yeV9zdGF0IG1lbW9yeV9zdGF0c1tdID0ge1xcbi0tXFxubW0vbWVtY29udHJvbC5jLTE1NzktXFx0eyBcXFwic2xhYl91bnJlY2xhaW1hYmxlXFxcIixcXHRcXHROUl9TTEFCX1VOUkVDTEFJTUFCTEVfQlxcdFxcdH0sXFxubW0vbWVtY29udHJvbC5jOjE1ODA6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5tbS9tZW1jb250cm9sLmMtMTU4MS1cXHR7IFxcXCJodWdldGxiXFxcIixcXHRcXHRcXHROUl9IVUdFVExCXFx0XFx0XFx0fSxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0xNjc0PXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9sb2NhbF9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xNjgwLVxcbm1tL21lbWNvbnRyb2wuYzoxNjgxOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vbWVtY29udHJvbC5jLTE2ODItc3RhdGljIGJvb2wgbWVtY2dfYWNjb3VudHNfaHVnZXRsYih2b2lkKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTE2ODUtfVxcbm1tL21lbWNvbnRyb2wuYzoxNjg2OiNlbHNlIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5tbS9tZW1jb250cm9sLmMtMTY4Ny1zdGF0aWMgYm9vbCBtZW1jZ19hY2NvdW50c19odWdldGxiKHZvaWQpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTY5MC19XFxubW0vbWVtY29udHJvbC5jOjE2OTE6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5tbS9tZW1jb250cm9sLmMtMTY5Mi1cXG5tbS9tZW1jb250cm9sLmM9MTY5Mz1zdGF0aWMgdm9pZCBtZW1jZ19zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTE3MTEtXFxubW0vbWVtY29udHJvbC5jOjE3MTI6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5tbS9tZW1jb250cm9sLmMtMTcxMy1cXHRcXHRpZiAodW5saWtlbHkobWVtb3J5X3N0YXRzW2ldLmlkeCA9PSBOUl9IVUdFVExCKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubW0vbWVtZmQuYz02OD1zdHJ1Y3QgZm9saW8gKm1lbWZkX2FsbG9jX2ZvbGlvKHN0cnVjdCBmaWxlICptZW1mZCwgcGdvZmZfdCBpZHgpXFxubW0vbWVtZmQuYy02OS17XFxubW0vbWVtZmQuYzo3MDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21lbWZkLmMtNzEtXFx0c3RydWN0IGZvbGlvICpmb2xpbztcXG4tLVxcbm1tL21lbW9yeS1mYWlsdXJlLmM9NzQyPXN0YXRpYyBpbnQgaHdwb2lzb25fcHRlX3JhbmdlKHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9tZW1vcnktZmFpbHVyZS5jLTc3My1cXG5tbS9tZW1vcnktZmFpbHVyZS5jOjc3NDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21lbW9yeS1mYWlsdXJlLmMtNzc1LXN0YXRpYyBpbnQgaHdwb2lzb25faHVnZXRsYl9yYW5nZShwdGVfdCAqcHRlcCwgdW5zaWduZWQgbG9uZyBobWFzayxcXG4tLVxcbm1tL21lbW9yeS1mYWlsdXJlLmM9MTg2ND1FWFBPUlRfU1lNQk9MX0dQTChtZl9kYXhfa2lsbF9wcm9jcyk7XFxuLS1cXG5tbS9tZW1vcnktZmFpbHVyZS5jLTE4NjYtXFxubW0vbWVtb3J5LWZhaWx1cmUuYzoxODY3OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vbWVtb3J5LWZhaWx1cmUuYy0xODY4LVxcbi0tXFxubW0vbWVtb3J5LWZhaWx1cmUuYz0yMTYxPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBmb2xpb19mcmVlX3Jhd19od3Aoc3RydWN0IGZvbGlvICpmb2xpbywgYm9vbCBmbGFnKVxcbi0tXFxubW0vbWVtb3J5LWZhaWx1cmUuYy0yMTY0LX1cXG5tbS9tZW1vcnktZmFpbHVyZS5jOjIxNjU6I2VuZGlmXFx0LyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbm1tL21lbW9yeS1mYWlsdXJlLmMtMjE2Ni1cXG4tLVxcbm1tL21lbXBvbGljeS5jPTc3Mj1zdGF0aWMgaW50IHF1ZXVlX2ZvbGlvc19odWdldGxiKHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgaG1hc2ssXFxuLS1cXG5tbS9tZW1wb2xpY3kuYy03NzUte1xcbm1tL21lbXBvbGljeS5jOjc3NjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21lbXBvbGljeS5jLTc3Ny1cXHRzdHJ1Y3QgcXVldWVfcGFnZXMgKnFwID0gd2Fsay1cXHUwMDNlcHJpdmF0ZTtcXG4tLVxcbm1tL21pZ3JhdGUuYz0zNTE9c3RhdGljIGJvb2wgcmVtb3ZlX21pZ3JhdGlvbl9wdGUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbm1tL21pZ3JhdGUuYy00MjYtXFxubW0vbWlncmF0ZS5jOjQyNzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21pZ3JhdGUuYy00MjgtXFx0XFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpIHtcXG4tLVxcbm1tL21pZ3JhdGUuYz00OTQ9dm9pZCBtaWdyYXRpb25fZW50cnlfd2FpdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZCxcXG4tLVxcbm1tL21pZ3JhdGUuYy01MjEtXFxubW0vbWlncmF0ZS5jOjUyMjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21pZ3JhdGUuYy01MjMtLypcXG4tLVxcbm1tL21pbmNvcmUuYz0yNj1zdGF0aWMgaW50IG1pbmNvcmVfaHVnZXRsYihwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9taW5jb3JlLmMtMjgte1xcbm1tL21pbmNvcmUuYzoyOTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21pbmNvcmUuYy0zMC1cXHR1bnNpZ25lZCBjaGFyIHByZXNlbnQ7XFxuLS1cXG5tbS9tbV9pbml0LmM9MTQyOD1zdGF0aWMgaW5saW5lIHZvaWQgc2V0dXBfdXNlbWFwKHN0cnVjdCB6b25lICp6b25lKSB7fVxcbi0tXFxubW0vbW1faW5pdC5jLTE0MzAtXFxubW0vbW1faW5pdC5jOjE0MzE6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxcbm1tL21tX2luaXQuYy0xNDMyLVxcbi0tXFxubW0vbW1faW5pdC5jPTE0MzQ9c3RhdGljIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcXG4tLVxcbm1tL21tX2luaXQuYy0xNDUxLX1cXG5tbS9tbV9pbml0LmM6MTQ1MjojZWxzZSAvKiBDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEUgKi9cXG5tbS9tbV9pbml0LmMtMTQ1My1cXG5tbS9tbV9pbml0LmMtMTQ1NC0vKlxcbm1tL21tX2luaXQuYzoxNDU1OiAqIFdoZW4gQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFIGlzIG5vdCBzZXQsIHNldF9wYWdlYmxvY2tfb3JkZXIoKVxcbm1tL21tX2luaXQuYy0xNDU2LSAqIGlzIHVudXNlZCBhcyBwYWdlYmxvY2tfb3JkZXIgaXMgc2V0IGF0IGNvbXBpbGUtdGltZS4gU2VlXFxuLS1cXG5tbS9tbV9pbml0LmM9MTQ2MD1zdGF0aWMgaW5saW5lIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcXG4tLVxcbm1tL21tX2luaXQuYy0xNDYzLVxcbm1tL21tX2luaXQuYzoxNDY0OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEUgKi9cXG5tbS9tbV9pbml0LmMtMTQ2NS1cXG4tLVxcbm1tL21wcm90ZWN0LmM9NzMwPXN0YXRpYyBpbnQgcHJvdF9ub25lX3B0ZV9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9tcHJvdGVjdC5jLTczNy1cXG5tbS9tcHJvdGVjdC5jOjczODojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21wcm90ZWN0LmMtNzM5LXN0YXRpYyBpbnQgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0yMDg9Z2ZwX3QgZ2ZwX2FsbG93ZWRfbWFzayBfX3JlYWRfbW9zdGx5ID0gR0ZQX0JPT1RfTUFTSztcXG5tbS9wYWdlX2FsbG9jLmMtMjA5LVxcbm1tL3BhZ2VfYWxsb2MuYzoyMTA6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxcbm1tL3BhZ2VfYWxsb2MuYy0yMTEtdW5zaWduZWQgaW50IHBhZ2VibG9ja19vcmRlciBfX3JlYWRfbW9zdGx5O1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTEwOTA9c3RhdGljIGludCBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHN0cnVjdCBwYWdlICpoZWFkX3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTExNTYtXFx0XFx0LyogdGhlIHRoaXJkIHRhaWwgcGFnZTogaHVnZXRsYiBzcGVjaWZpY3Mgb3ZlcmxhcCAtXFx1MDAzZW1hcHBpbmdzICovXFxubW0vcGFnZV9hbGxvYy5jOjExNTc6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0hVR0VUTEJfUEFHRSkpXFxubW0vcGFnZV9hbGxvYy5jLTExNTgtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5tbS9wYWdld2Fsay5jPTI4OD1zdGF0aWMgaW50IHdhbGtfcGdkX3JhbmdlKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5tbS9wYWdld2Fsay5jLTMyOC1cXG5tbS9wYWdld2Fsay5jOjMyOTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL3BhZ2V3YWxrLmMtMzMwLXN0YXRpYyB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZW50cnlfZW5kKHN0cnVjdCBoc3RhdGUgKmgsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL3BhZ2V3YWxrLmM9MzM4PXN0YXRpYyBpbnQgd2Fsa19odWdldGxiX3JhbmdlKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5tbS9wYWdld2Fsay5jLTM2NS1cXG5tbS9wYWdld2Fsay5jOjM2NjojZWxzZSAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxubW0vcGFnZXdhbGsuYy0zNjctc3RhdGljIGludCB3YWxrX2h1Z2V0bGJfcmFuZ2UodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbm1tL3BhZ2V3YWxrLmMtMzcyLVxcbm1tL3BhZ2V3YWxrLmM6MzczOiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxubW0vcGFnZXdhbGsuYy0zNzQtXFxuLS1cXG5tbS9ybWFwLmM9MzExND12b2lkIHJtYXBfd2Fsa19sb2NrZWQoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHJtYXBfd2Fsa19jb250cm9sICpyd2MpXFxuLS1cXG5tbS9ybWFwLmMtMzEyMy1cXG5tbS9ybWFwLmM6MzEyNDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL3JtYXAuYy0zMTI1LS8qXFxuLS1cXG5tbS9ybWFwLmM9MzE0ND12b2lkIGh1Z2V0bGJfYWRkX25ld19hbm9uX3JtYXAoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbm1tL3JtYXAuYy0zMTU2LX1cXG5tbS9ybWFwLmM6MzE1NzojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYz0zMTE9dm9pZCB2bWVtbWFwX3dycHJvdGVjdF9odm8odW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmMtMzIyLVxcbm1tL3NwYXJzZS12bWVtbWFwLmM6MzIzOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTMyNC1zdGF0aWMgX19tZW1pbml0IHN0cnVjdCBwYWdlICp2bWVtbWFwX2dldF90YWlsKHVuc2lnbmVkIGludCBvcmRlciwgc3RydWN0IHpvbmUgKnpvbmUpXFxuLS1cXG5tbS91c2VyZmF1bHRmZC5jPTczND1zdGF0aWMgaW50IG1maWxsX2F0b21pY19wdGVfcG9pc29uKHN0cnVjdCBtZmlsbF9zdGF0ZSAqc3RhdGUpXFxuLS1cXG5tbS91c2VyZmF1bHRmZC5jLTc3MC1cXG5tbS91c2VyZmF1bHRmZC5jOjc3MTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL3VzZXJmYXVsdGZkLmMtNzcyLS8qXFxuLS1cXG5tbS91c2VyZmF1bHRmZC5jPTc3Nz1zdGF0aWMgX19hbHdheXNfaW5saW5lIHNzaXplX3QgbWZpbGxfYXRvbWljX2h1Z2V0bGIoXFxuLS1cXG5tbS91c2VyZmF1bHRmZC5jLTkzNC19XFxubW0vdXNlcmZhdWx0ZmQuYzo5MzU6I2Vsc2UgLyogIUNPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5tbS91c2VyZmF1bHRmZC5jLTkzNi0vKiBmYWlsIGF0IGJ1aWxkIHRpbWUgaWYgZ2NjIGF0dGVtcHRzIHRvIHVzZSB0aGlzICovXFxubW0vdXNlcmZhdWx0ZmQuYz05Mzc9ZXh0ZXJuIHNzaXplX3QgbWZpbGxfYXRvbWljX2h1Z2V0bGIoc3RydWN0IHVzZXJmYXVsdGZkX2N0eCAqY3R4LFxcbi0tXFxubW0vdXNlcmZhdWx0ZmQuYy05NDItXFx0XFx0XFx0XFx0ICAgIHVmZmRfZmxhZ3NfdCBmbGFncyk7XFxubW0vdXNlcmZhdWx0ZmQuYzo5NDM6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5tbS91c2VyZmF1bHRmZC5jLTk0NC1cXG4tLVxcbm1tL3VzZXJmYXVsdGZkLmM9MjYxMz1zdGF0aWMgaW5saW5lIHN0cnVjdCB1ZmZkX21zZyB1c2VyZmF1bHRfbXNnKHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcXG4tLVxcbm1tL3VzZXJmYXVsdGZkLmMtMjY0OC1cXG5tbS91c2VyZmF1bHRmZC5jOjI2NDk6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5tbS91c2VyZmF1bHRmZC5jLTI2NTAtLypcXG4tLVxcbm1tL3VzZXJmYXVsdGZkLmM9MjcwNT1zdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfaHVnZV9tdXN0X3dhaXQoc3RydWN0IHVzZXJmYXVsdGZkX2N0eCAqY3R4LFxcbi0tXFxubW0vdXNlcmZhdWx0ZmQuYy0yNzEyLX1cXG5tbS91c2VyZmF1bHRmZC5jOjI3MTM6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5tbS91c2VyZmF1bHRmZC5jLTI3MTQtXFxuLS1cXG5tbS92bWFsbG9jLmM9OTQ9c3RhdGljIGludCB2bWFwX3B0ZV9yYW5nZShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxubW0vdm1hbGxvYy5jLTEyMS1cXG5tbS92bWFsbG9jLmM6MTIyOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vdm1hbGxvYy5jLTEyMy1cXHRcXHRzaXplID0gYXJjaF92bWFwX3B0ZV9yYW5nZV9tYXBfc2l6ZShhZGRyLCBlbmQsIHBmbiwgbWF4X3BhZ2Vfc2hpZnQpO1xcbi0tXFxubW0vdm1hbGxvYy5jPTM2Nj1zdGF0aWMgdm9pZCB2dW5tYXBfcHRlX3JhbmdlKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5tbS92bWFsbG9jLmMtMzc2LVxcdGRvIHtcXG5tbS92bWFsbG9jLmM6Mzc3OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vdm1hbGxvYy5jLTM3OC1cXHRcXHRzaXplID0gYXJjaF92bWFwX3B0ZV9yYW5nZV91bm1hcF9zaXplKGFkZHIsIHB0ZSk7XFxuLS1cXG5tbS92bXN0YXQuYz0xMTg4PWNvbnN0IGNoYXIgKiBjb25zdCB2bXN0YXRfdGV4dFtdID0ge1xcbi0tXFxubW0vdm1zdGF0LmMtMTI5My1cXHRbSShQR1JFRklMTCldXFx0XFx0XFx0XFx0PSBcXFwicGdyZWZpbGxcXFwiLFxcbm1tL3Ztc3RhdC5jOjEyOTQ6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5tbS92bXN0YXQuYy0xMjk1LVxcdFtJKE5SX0hVR0VUTEIpXVxcdFxcdFxcdFxcdD0gXFxcIm5yX2h1Z2V0bGJcXFwiLFxcbi0tXFxubW0vdm1zdGF0LmMtMTM4My1cXG5tbS92bXN0YXQuYzoxMzg0OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vdm1zdGF0LmMtMTM4NS1cXHRbSShIVExCX0JVRERZX1BHQUxMT0MpXVxcdFxcdFxcdD0gXFxcImh0bGJfYnVkZHlfYWxsb2Nfc3VjY2Vzc1xcXCIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM5OjU3LjgxODYzMTEyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjkyNzgxODAzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhVR0VUTEJfUEFHRSBDb25maWd1cmF0aW9uIGFuZCBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBoZXJlIGlzIGBIVUdFVExCX1BBR0VgLiBNeSBwcmltYXJ5IGZvY3VzIGlzIG9uIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgZnVuY3Rpb24uIEhvbGQgb24gYSBzZWNvbmQsIGlzIHRoaXMgYSAqcmVhbGx5KiBob3QtcGF0aCBmdW5jdGlvbj8gTGV0IG1lIHRoaW5rLi4uIGl0J3MgY2FsbGVkIGR1cmluZyBodWdldGxiIGZvbGlvIGFsbG9jYXRpb24sIHNwZWNpZmljYWxseSBkdXJpbmcgcGFnZSBmYXVsdHMgb24gaHVnZXRsYmZzIG9yIHdoZW4gdXNpbmcgYG1tYXBgIHdpdGggYE1BUF9IVUdFVExCYC4gQWxyaWdodCwgaXQncyBub3QgYSAqZ2VuZXJpYyogaG90LXBhdGggbGlrZSBga21hbGxvY2Agb3IgYHBhZ2VfZmF1bHRgLiBJdCdzIGRlZmluaXRlbHkgc3BlY2lmaWMgdG8gdGhlIGh1Z2V0bGIgc3Vic3lzdGVtLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQsIHRob3VnaC4gUmlnaHQsIHRoZSBwYXRjaCBtb2RpZmllcyBgYWxsb2NfaHVnZXRsYl9mb2xpb2AuIFRoZSBidWcgYmVpbmcgZml4ZWQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBgdXNlZF9ocGFnZXNgIG5vdCBiZWluZyBjb3JyZWN0bHkgcmVzdG9yZWQgdW5kZXIgdmVyeSBzcGVjaWZpYyBjb25kaXRpb25zIHdpdGhpbiBodWdldGxiIGZvbGlvIGFsbG9jYXRpb246IHdoZW4gYG1hcF9jaGdgLCBgZ2JsX2NoZyBcdTAwM2UgMGAsIGFuZCBgc3Bvb2xgIGFyZSBhbGwgdHJ1ZS4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBmdXp6aW5nIGlzIGRlZmluaXRlbHkgd2FycmFudGVkIGhlcmUuXG5cbkp1c3QgdG8gYmUgc3VyZSwgbGV0J3MgZG91YmxlLWNoZWNrIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2Agc2lnbmF0dXJlIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBJJ20gbWlzc2luZy4gTm9wZSwgc2VlbXMgbGlrZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgaXMgdGhlIHByaW1hcnkgb25lIHRvIGV4YW1pbmUuIE9oLCB3YWl0Li4uIGlzIHRoaXMgZnVuY3Rpb24gYHN0YXRpY2Agb3IgZXhwb3J0ZWQ/IExldCBtZSBzZWUuIEFoLCBmb3VuZCBpdCwgaXQncyBkZWZpbmVkIGluIGBtbS9odWdldGxiLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDk5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjQwOjA0Ljc0NjQ1MDk3NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU4MDY2MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWxsb2NfaHVnZXRsYl9mb2xpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9odWdldGxiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTIxNDk9c3RydWN0IGZvbGlvICphbGxvY19idWRkeV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxuLS1cXG5tbS9odWdldGxiLmMtMjE3Mi1cXG5tbS9odWdldGxiLmM6MjE3MzpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fcmVzZXJ2ZShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgcHJlZmVycmVkX25pZCxcXG5tbS9odWdldGxiLmMtMjE3NC1cXHRcXHRub2RlbWFza190ICpubWFzaywgZ2ZwX3QgZ2ZwX21hc2spXFxuLS1cXG5tbS9odWdldGxiLmMtMjE5My0vKiBmb2xpbyBtaWdyYXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gKi9cXG5tbS9odWdldGxiLmM6MjE5NDpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soc3RydWN0IGhzdGF0ZSAqaCwgaW50IHByZWZlcnJlZF9uaWQsXFxubW0vaHVnZXRsYi5jLTIxOTUtXFx0XFx0bm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrLCBib29sIGFsbG93X2FsbG9jX2ZhbGxiYWNrKVxcbi0tXFxubW0vaHVnZXRsYi5jPTI1Mjc9c3RhdGljIGxvbmcgdm1hX2RlbF9yZXNlcnZhdGlvbihzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTI1MzQtICogVGhpcyByb3V0aW5lIGlzIGNhbGxlZCB0byByZXN0b3JlIHJlc2VydmF0aW9uIGluZm9ybWF0aW9uIG9uIGVycm9yIHBhdGhzLlxcbm1tL2h1Z2V0bGIuYzoyNTM1OiAqIEl0IHNob3VsZCBPTkxZIGJlIGNhbGxlZCBmb3IgZm9saW9zIGFsbG9jYXRlZCB2aWEgYWxsb2NfaHVnZXRsYl9mb2xpbygpLFxcbm1tL2h1Z2V0bGIuYy0yNTM2LSAqIGFuZCB0aGUgaHVnZXRsYiBtdXRleCBzaG91bGQgcmVtYWluIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgcm91dGluZS5cXG4tLVxcbm1tL2h1Z2V0bGIuYy0yNTQxLSAqIDIpIE5vIHJlc2VydmF0aW9uIHdhcyBpbiBwbGFjZSBmb3IgdGhlIHBhZ2UsIHNvIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIGlzXFxubW0vaHVnZXRsYi5jOjI1NDI6ICogICAgbm90IHNldC4gIEhvd2V2ZXIsIGFsbG9jX2h1Z2V0bGJfZm9saW8gYWx3YXlzIHVwZGF0ZXMgdGhlIHJlc2VydmUgbWFwLlxcbm1tL2h1Z2V0bGIuYy0yNTQzLSAqXFxuLS1cXG5tbS9odWdldGxiLmMtMjU1MC0gKlxcbm1tL2h1Z2V0bGIuYzoyNTUxOiAqIEluIGNhc2UgMiwgc2ltcGx5IHVuZG8gcmVzZXJ2ZSBtYXAgbW9kaWZpY2F0aW9ucyBkb25lIGJ5IGFsbG9jX2h1Z2V0bGJfZm9saW8uXFxubW0vaHVnZXRsYi5jLTI1NTItICovXFxubW0vaHVnZXRsYi5jPTI1NTM9dm9pZCByZXN0b3JlX3Jlc2VydmVfb25fZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9odWdldGxiLmMtMjU3OS1cXHRcXHRcXHQgKiBUaGlzIGluZGljYXRlcyB0aGVyZSBpcyBhbiBlbnRyeSBpbiB0aGUgcmVzZXJ2ZSBtYXBcXG5tbS9odWdldGxiLmM6MjU4MDpcXHRcXHRcXHQgKiBub3QgYWRkZWQgYnkgYWxsb2NfaHVnZXRsYl9mb2xpby4gIFdlIGtub3cgaXQgd2FzIGFkZGVkXFxubW0vaHVnZXRsYi5jOjI1ODE6XFx0XFx0XFx0ICogYmVmb3JlIHRoZSBhbGxvY19odWdldGxiX2ZvbGlvIGNhbGwsIG90aGVyd2lzZVxcbm1tL2h1Z2V0bGIuYy0yNTgyLVxcdFxcdFxcdCAqIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIHdvdWxkIGJlIHNldCBvbiB0aGUgZm9saW8uXFxuLS1cXG5tbS9odWdldGxiLmM9MjkyMD10eXBlZGVmIGVudW0ge1xcbi0tXFxubW0vaHVnZXRsYi5jLTI5NDUtICovXFxubW0vaHVnZXRsYi5jOjI5NDY6c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbm1tL2h1Z2V0bGIuYy0yOTQ3LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgY293X2Zyb21fb3duZXIpXFxuLS1cXG5tbS9odWdldGxiLmM9NDkxMT1pbnQgY29weV9odWdldGxiX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmMsXFxuLS1cXG5tbS9odWdldGxiLmMtNTAzMi1cXHRcXHRcXHRcXHQvKiBEbyBub3QgdXNlIHJlc2VydmUgYXMgaXQncyBwcml2YXRlIG93bmVkICovXFxubW0vaHVnZXRsYi5jOjUwMzM6XFx0XFx0XFx0XFx0bmV3X2ZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBhZGRyLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTUwMzQtXFx0XFx0XFx0XFx0aWYgKElTX0VSUihuZXdfZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmM9NTUwMT1zdGF0aWMgdm1fZmF1bHRfdCBodWdldGxiX3dwKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxubW0vaHVnZXRsYi5jLTU1ODItXFx0c3Bpbl91bmxvY2sodm1mLVxcdTAwM2VwdGwpO1xcbm1tL2h1Z2V0bGIuYzo1NTgzOlxcdG5ld19mb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8odm1hLCB2bWYtXFx1MDAzZWFkZHJlc3MsIGNvd19mcm9tX293bmVyKTtcXG5tbS9odWdldGxiLmMtNTU4NC1cXG4tLVxcbm1tL2h1Z2V0bGIuYz01NzczPXN0YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJfbm9fcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbm1tL2h1Z2V0bGIuYy01ODQyLVxcbm1tL2h1Z2V0bGIuYzo1ODQzOlxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyh2bWEsIHZtZi1cXHUwMDNlYWRkcmVzcywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy01ODQ0LVxcdFxcdGlmIChJU19FUlIoZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmM9NjAyMz12bV9mYXVsdF90IGh1Z2V0bGJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vaHVnZXRsYi5jLTYyNTgtICovXFxubW0vaHVnZXRsYi5jOjYyNTk6c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb192bWEoc3RydWN0IGhzdGF0ZSAqaCxcXG5tbS9odWdldGxiLmMtNjI2MC1cXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKVxcbi0tXFxubW0vaHVnZXRsYi5jLTYyNzUtXFx0ICovXFxubW0vaHVnZXRsYi5jOjYyNzY6XFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKGgsIG5vZGUsIG5vZGVtYXNrLCBnZnBfbWFzaywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy02Mjc3LVxcdG1wb2xfY29uZF9wdXQobXBvbCk7XFxuLS1cXG5tbS9odWdldGxiLmM9NjI4Nj1pbnQgaHVnZXRsYl9tZmlsbF9hdG9taWNfcHRlKHB0ZV90ICpkc3RfcHRlLFxcbi0tXFxubW0vaHVnZXRsYi5jLTYzNDItXFxubW0vaHVnZXRsYi5jOjYzNDM6XFx0XFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGRzdF9hZGRyLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTYzNDQtXFx0XFx0aWYgKElTX0VSUihmb2xpbykpIHtcXG4tLVxcbm1tL2h1Z2V0bGIuYy02MzY4LVxcdFxcdFxcdCAqL1xcbm1tL2h1Z2V0bGIuYzo2MzY5OlxcdFxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpb192bWEoaCwgZHN0X3ZtYSwgZHN0X2FkZHIpO1xcbm1tL2h1Z2V0bGIuYy02MzcwLVxcdFxcdFxcdGlmICghZm9saW8pIHtcXG4tLVxcbm1tL2h1Z2V0bGIuYy02Mzg5LVxcbm1tL2h1Z2V0bGIuYzo2MzkwOlxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBkc3RfYWRkciwgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy02MzkxLVxcdFxcdGlmIChJU19FUlIoZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmM9NjY4Mz1sb25nIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxubW0vaHVnZXRsYi5jLTY4MDMtXFx0XFx0XFx0ICogbWFwIGJldHdlZW4gcmVnaW9uX2NoZyBhbmQgcmVnaW9uX2FkZC4gIFRoaXNcXG5tbS9odWdldGxiLmM6NjgwNDpcXHRcXHRcXHQgKiBpbmRpY2F0ZXMgYSByYWNlIHdpdGggYWxsb2NfaHVnZXRsYl9mb2xpby4gIEFkanVzdFxcbm1tL2h1Z2V0bGIuYy02ODA1LVxcdFxcdFxcdCAqIHRoZSBzdWJwb29sIGFuZCByZXNlcnZlIGNvdW50cyBtb2RpZmllZCBhYm92ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTo0MDowNS4wMDIyNjYwMTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njk0OTEyMTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGBhbGxvY19odWdldGxiX2ZvbGlvYCdzIFNjb3BlIGFuZCBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGFsbG9jX2h1Z2V0bGJfZm9saW9gIGZ1bmN0aW9uLiBJbnRlcmVzdGluZywgaXQncyAqbm90KiBzdGF0aWMsIG1lYW5pbmcgaXQncyBwb3RlbnRpYWxseSB1c2VkIG91dHNpZGUgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdC4gSG9sZCBvbiwgbGV0IG1lIHJlZnJlc2ggbXkgbWVtb3J5LiBSaWdodCwgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBgc3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgY293X2Zyb21fb3duZXIpYC4gTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5ICpleHBvcnRlZCogdG8gb3RoZXIgbW9kdWxlcywgb3IgaXMgaXQganVzdCB1c2VkIGludGVybmFsbHkgd2l0aGluIGl0cyBkZWZpbmluZyBmaWxlPyBJdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBJIG5lZWQgdG8gcXVpY2tseSBjaGVjayB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLCB0byBhc2NlcnRhaW4gd2hldGhlciBpdCdzIHNhZmUgdG8gbW9kaWZ5IG9yIG5vdC4gTGV0J3Mgc2VlLi4uIGEgcXVpY2sgY3Jvc3MtcmVmZXJlbmNlIGNoZWNrIHNob3VsZCBkbyB0aGUgdHJpY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDYxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6NDA6MTEuNjk3MTgxMjcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk3MTIzMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFsbG9jX2h1Z2V0bGJfZm9saW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q9MTgxPWFyZSBhbGxvY2F0ZWQgYW5kIGluc3RhbnRpYXRlZCBpbiB0aGUgY29ycmVzcG9uZGluZyBtYXBwaW5nLiAgVGhlIGFsbG9jYXRpb25cXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE4MjppcyBwZXJmb3JtZWQgd2l0aGluIHRoZSByb3V0aW5lIGFsbG9jX2h1Z2V0bGJfZm9saW8oKTo6XFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0xODMtXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoxODQ6XFx0c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3QtMTg1LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgYXZvaWRfcmVzZXJ2ZSlcXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE4Ni1cXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE4NzphbGxvY19odWdldGxiX2ZvbGlvIGlzIHBhc3NlZCBhIFZNQSBwb2ludGVyIGFuZCBhIHZpcnR1YWwgYWRkcmVzcywgc28gaXQgY2FuXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0xODgtY29uc3VsdCB0aGUgcmVzZXJ2YXRpb24gbWFwIHRvIGRldGVybWluZSBpZiBhIHJlc2VydmF0aW9uIGV4aXN0cy4gIEluIGFkZGl0aW9uLFxcbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q6MTg5OmFsbG9jX2h1Z2V0bGJfZm9saW8gdGFrZXMgdGhlIGFyZ3VtZW50IGF2b2lkX3Jlc2VydmUgd2hpY2ggaW5kaWNhdGVzIHJlc2VydmVzXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0xOTAtc2hvdWxkIG5vdCBiZSB1c2VkIGV2ZW4gaWYgaXQgYXBwZWFycyB0aGV5IGhhdmUgYmVlbiBzZXQgYXNpZGUgZm9yIHRoZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdD0yMDc9aXMgY2FsbGVkLiAgVGhpcyByb3V0aW5lIHRha2VzIHR3byBhcmd1bWVudHMgcmVsYXRlZCB0byByZXNlcnZhdGlvbnM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTIwOS0tIGF2b2lkX3Jlc2VydmUsIHRoaXMgaXMgdGhlIHNhbWUgdmFsdWUvYXJndW1lbnQgcGFzc2VkIHRvXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoyMTA6ICBhbGxvY19odWdldGxiX2ZvbGlvKCkuXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0yMTEtLSBjaGcsIGV2ZW4gdGhvdWdoIHRoaXMgYXJndW1lbnQgaXMgb2YgdHlwZSBsb25nIG9ubHkgdGhlIHZhbHVlcyAwIG9yIDEgYXJlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0PTI0Nz1JdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSByZXNlcnZlIG1hcCBjb3VsZCBoYXZlIGJlZW4gY2hhbmdlZCBiZXR3ZWVuIHRoZSBjYWxsXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoyNDg6dG8gdm1hX25lZWRzX3Jlc2VydmF0aW9uKCkgYXQgdGhlIGJlZ2lubmluZyBvZiBhbGxvY19odWdldGxiX2ZvbGlvKCkgYW5kIHRoZVxcbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3QtMjQ5LWNhbGwgdG8gdm1hX2NvbW1pdF9yZXNlcnZhdGlvbigpIGFmdGVyIHRoZSBmb2xpbyB3YXMgYWxsb2NhdGVkLiAgVGhpcyB3b3VsZFxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q9MTE2PUhQQUdFX1JFU1ZfT1dORVLmoIflv5fooqvorr7nva7vvIzku6XooajmmI7or6VWTUHmi6XmnInpooTnlZnjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE0NS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoxNDY65b2T5LiO6aKE55WZ55u45YWz55qE5beo6aG15Zyo55u45bqU55qE5pig5bCE5Lit6KKr5YiG6YWN5ZKM5a6e5L6L5YyW5pe277yM6aKE55WZ5bCx6KKr5raI6ICX5LqG44CC6K+l5YiG6YWN5piv5Zyo5Ye95pWwYWxsb2NfaHVnZXRsYl9mb2xpby4uLlxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE0Ny3kuK3ov5vooYznmoQ6OlxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE0OC1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoxNDk6XFx0c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE1MC1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IGF2b2lkX3Jlc2VydmUpXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3QtMTUxLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE1MjphbGxvY19odWdldGxiX2ZvbGlv6KKr5Lyg6YCS57uZ5LiA5LiqVk1B5oyH6ZKI5ZKM5LiA5Liq6Jma5ouf5Zyw5Z2A77yM5Zug5q2k5a6D5Y+v5Lul5p+l6ZiF6aKE55WZ5pig5bCE5Lul56Gu5a6a5piv5ZCm5a2Y5Zyo6aKE55WZ44CCXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q6MTUzOuatpOWklu+8jGFsbG9jX2h1Z2V0bGJfZm9saW/pnIDopoHkuIDkuKrlj4LmlbBhdm9pZF9yZXNlcnZl77yM6K+l5Y+C5pWw6KGo56S65Y2z5L2/55yL6LW35p2l5bey57uP5Li65oyH5a6a55qE5Zyw5Z2A6aKE55WZ5LqGXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3QtMTU0LemihOeVme+8jOS5n+S4jeW6lOivpeS9v+eUqOmihOeVmeOAgmF2b2lkX3Jlc2VydmXlj4LmlbDmnIDluLjooqvnlKjkuo7lhpnml7bmi7fotJ3lkozpobXpnaLov4Hnp7vnmoTmg4XlhrXkuIvvvIzljbPnjrDmnInpobXpnaLnmoTpop1cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0PTE2MD12bWFfbmVlZHNfcmVzZXJ2YXRpb24oKei/lOWbnueahOWAvOmAmuW4uOS4ujDmiJYx44CC5aaC5p6c6K+l5Zyw5Z2A5a2Y5Zyo6aKE55WZ77yM5YiZ5Li6MO+8jOWmguaenOS4jeWtmOWcqOmihOeVme+8jOWImeS4ujHjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE2NS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoxNjY6LSBhdm9pZF9yZXNlcnZl77yM6L+Z5piv5Lyg6YCS57uZYWxsb2NfaHVnZXRsYl9mb2xpbygp55qE5ZCM5LiA5Liq5YC8L+WPguaVsOOAglxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE2Ny0tIGNoZ++8jOWwveeuoei/meS4quWPguaVsOeahOexu+Wei+aYr2xvbmfvvIzkvYblj6rmnIkw5oiWMeeahOWAvOiiq+S8oOmAkue7mWRlcXVldWVfaHVnZV9wYWdlX3ZtYeOAguWmguaenOivpeWAvOS4ujDvvIxcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0PTE5Mz1TZXRQYWdlUHJpdmF0ZShwYWdlKeWSjHJlc3ZfaHVnZV9wYWdlcy3jgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTIwMi1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoyMDM65ZyoYWxsb2NfaHVnZXRsYl9mb2xpbygp5byA5aeL6LCD55Sodm1hX25lZWRzX3Jlc2VydmF0aW9uKCnlkozpobXpnaLliIbphY3lkI7osIPnlKhcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0yMDQtdm1hX2NvbW1pdF9yZXNlcnZhdGlvbigp5LmL6Ze077yM6aKE55WZ5pig5bCE5pyJ5Y+v6IO96KKr5pS55Y+Y44CC5aaC5p6caHVnZXRsYl9yZXNlcnZlX3BhZ2Vz5Zyo5YWxXFxuLS1cXG5mcy9odWdldGxiZnMvaW5vZGUuYz03MDA9c3RhdGljIGxvbmcgaHVnZXRsYmZzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsXFxuLS1cXG5mcy9odWdldGxiZnMvaW5vZGUuYy03OTItXFx0XFx0ICovXFxuZnMvaHVnZXRsYmZzL2lub2RlLmM6NzkzOlxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhcXHUwMDI2cHNldWRvX3ZtYSwgYWRkciwgZmFsc2UpO1xcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTc5NC1cXHRcXHRpZiAoSVNfRVJSKGZvbGlvKSkge1xcbi0tXFxuZnMvaHVnZXRsYmZzL2lub2RlLmMtODEzLVxcdFxcdCAqIGZvbGlvX3VubG9jayBiZWNhdXNlIGxvY2tlZCBieSBodWdldGxiX2FkZF90b19wYWdlX2NhY2hlKClcXG5mcy9odWdldGxiZnMvaW5vZGUuYzo4MTQ6XFx0XFx0ICogZm9saW9fcHV0KCkgZHVlIHRvIHJlZmVyZW5jZSBmcm9tIGFsbG9jX2h1Z2V0bGJfZm9saW8oKVxcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTgxNS1cXHRcXHQgKi9cXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oPTcwMT1zdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfYWxsb2NfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC03MDItXFx0XFx0c3RydWN0IG1lbXBvbGljeV9pbnRlcnByZXRlZCAqbXBvbGksIHU4IGFsbG9jX2ZsYWdzKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaDo3MDM6c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTcwNC1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgY293X2Zyb21fb3duZXIpO1xcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjcwNTpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soc3RydWN0IGhzdGF0ZSAqaCwgaW50IHByZWZlcnJlZF9uaWQsXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtNzA2LVxcdFxcdFxcdFxcdG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzayxcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC03MDctXFx0XFx0XFx0XFx0Ym9vbCBhbGxvd19hbGxvY19mYWxsYmFjayk7XFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6NzA4OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19yZXNlcnZlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTcwOS1cXHRcXHRcXHRcXHRcXHQgIG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzayk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaD0xMTIzPXN0YXRpYyBpbmxpbmUgdm9pZCB3YWl0X2Zvcl9mcmVlZF9odWdldGxiX2ZvbGlvcyh2b2lkKVxcbi0tXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMTEyNi1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaDoxMTI3OnN0YXRpYyBpbmxpbmUgc3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTExMjgtXFx0XFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg9MTEzND1zdGF0aWMgaW5saW5lIHN0cnVjdCBmb2xpbyAqXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MTEzNTphbGxvY19odWdldGxiX2ZvbGlvX3Jlc2VydmUoc3RydWN0IGhzdGF0ZSAqaCwgaW50IHByZWZlcnJlZF9uaWQsXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMTEzNi1cXHRcXHRcXHQgICAgbm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrKVxcbi0tXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg9MTE0MT1zdGF0aWMgaW5saW5lIHN0cnVjdCBmb2xpbyAqXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MTE0MjphbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTExNDMtXFx0XFx0XFx0bm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrLFxcbi0tXFxubW0vaHVnZXRsYi5jPTIxNDk9c3RydWN0IGZvbGlvICphbGxvY19idWRkeV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxuLS1cXG5tbS9odWdldGxiLmMtMjE3Mi1cXG5tbS9odWdldGxiLmM6MjE3MzpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fcmVzZXJ2ZShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgcHJlZmVycmVkX25pZCxcXG5tbS9odWdldGxiLmMtMjE3NC1cXHRcXHRub2RlbWFza190ICpubWFzaywgZ2ZwX3QgZ2ZwX21hc2spXFxuLS1cXG5tbS9odWdldGxiLmMtMjE5My0vKiBmb2xpbyBtaWdyYXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gKi9cXG5tbS9odWdldGxiLmM6MjE5NDpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soc3RydWN0IGhzdGF0ZSAqaCwgaW50IHByZWZlcnJlZF9uaWQsXFxubW0vaHVnZXRsYi5jLTIxOTUtXFx0XFx0bm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrLCBib29sIGFsbG93X2FsbG9jX2ZhbGxiYWNrKVxcbi0tXFxubW0vaHVnZXRsYi5jPTI1Mjc9c3RhdGljIGxvbmcgdm1hX2RlbF9yZXNlcnZhdGlvbihzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTI1MzQtICogVGhpcyByb3V0aW5lIGlzIGNhbGxlZCB0byByZXN0b3JlIHJlc2VydmF0aW9uIGluZm9ybWF0aW9uIG9uIGVycm9yIHBhdGhzLlxcbm1tL2h1Z2V0bGIuYzoyNTM1OiAqIEl0IHNob3VsZCBPTkxZIGJlIGNhbGxlZCBmb3IgZm9saW9zIGFsbG9jYXRlZCB2aWEgYWxsb2NfaHVnZXRsYl9mb2xpbygpLFxcbm1tL2h1Z2V0bGIuYy0yNTM2LSAqIGFuZCB0aGUgaHVnZXRsYiBtdXRleCBzaG91bGQgcmVtYWluIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgcm91dGluZS5cXG4tLVxcbm1tL2h1Z2V0bGIuYy0yNTQxLSAqIDIpIE5vIHJlc2VydmF0aW9uIHdhcyBpbiBwbGFjZSBmb3IgdGhlIHBhZ2UsIHNvIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIGlzXFxubW0vaHVnZXRsYi5jOjI1NDI6ICogICAgbm90IHNldC4gIEhvd2V2ZXIsIGFsbG9jX2h1Z2V0bGJfZm9saW8gYWx3YXlzIHVwZGF0ZXMgdGhlIHJlc2VydmUgbWFwLlxcbm1tL2h1Z2V0bGIuYy0yNTQzLSAqXFxuLS1cXG5tbS9odWdldGxiLmMtMjU1MC0gKlxcbm1tL2h1Z2V0bGIuYzoyNTUxOiAqIEluIGNhc2UgMiwgc2ltcGx5IHVuZG8gcmVzZXJ2ZSBtYXAgbW9kaWZpY2F0aW9ucyBkb25lIGJ5IGFsbG9jX2h1Z2V0bGJfZm9saW8uXFxubW0vaHVnZXRsYi5jLTI1NTItICovXFxubW0vaHVnZXRsYi5jPTI1NTM9dm9pZCByZXN0b3JlX3Jlc2VydmVfb25fZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9odWdldGxiLmMtMjU3OS1cXHRcXHRcXHQgKiBUaGlzIGluZGljYXRlcyB0aGVyZSBpcyBhbiBlbnRyeSBpbiB0aGUgcmVzZXJ2ZSBtYXBcXG5tbS9odWdldGxiLmM6MjU4MDpcXHRcXHRcXHQgKiBub3QgYWRkZWQgYnkgYWxsb2NfaHVnZXRsYl9mb2xpby4gIFdlIGtub3cgaXQgd2FzIGFkZGVkXFxubW0vaHVnZXRsYi5jOjI1ODE6XFx0XFx0XFx0ICogYmVmb3JlIHRoZSBhbGxvY19odWdldGxiX2ZvbGlvIGNhbGwsIG90aGVyd2lzZVxcbm1tL2h1Z2V0bGIuYy0yNTgyLVxcdFxcdFxcdCAqIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIHdvdWxkIGJlIHNldCBvbiB0aGUgZm9saW8uXFxuLS1cXG5tbS9odWdldGxiLmM9MjkyMD10eXBlZGVmIGVudW0ge1xcbi0tXFxubW0vaHVnZXRsYi5jLTI5NDUtICovXFxubW0vaHVnZXRsYi5jOjI5NDY6c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbm1tL2h1Z2V0bGIuYy0yOTQ3LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgY293X2Zyb21fb3duZXIpXFxuLS1cXG5tbS9odWdldGxiLmM9NDkxMT1pbnQgY29weV9odWdldGxiX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmMsXFxuLS1cXG5tbS9odWdldGxiLmMtNTAzMi1cXHRcXHRcXHRcXHQvKiBEbyBub3QgdXNlIHJlc2VydmUgYXMgaXQncyBwcml2YXRlIG93bmVkICovXFxubW0vaHVnZXRsYi5jOjUwMzM6XFx0XFx0XFx0XFx0bmV3X2ZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBhZGRyLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTUwMzQtXFx0XFx0XFx0XFx0aWYgKElTX0VSUihuZXdfZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmM9NTUwMT1zdGF0aWMgdm1fZmF1bHRfdCBodWdldGxiX3dwKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxubW0vaHVnZXRsYi5jLTU1ODItXFx0c3Bpbl91bmxvY2sodm1mLVxcdTAwM2VwdGwpO1xcbm1tL2h1Z2V0bGIuYzo1NTgzOlxcdG5ld19mb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8odm1hLCB2bWYtXFx1MDAzZWFkZHJlc3MsIGNvd19mcm9tX293bmVyKTtcXG5tbS9odWdldGxiLmMtNTU4NC1cXG4tLVxcbm1tL2h1Z2V0bGIuYz01NzczPXN0YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJfbm9fcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbm1tL2h1Z2V0bGIuYy01ODQyLVxcbm1tL2h1Z2V0bGIuYzo1ODQzOlxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyh2bWEsIHZtZi1cXHUwMDNlYWRkcmVzcywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy01ODQ0LVxcdFxcdGlmIChJU19FUlIoZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmM9NjAyMz12bV9mYXVsdF90IGh1Z2V0bGJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vaHVnZXRsYi5jLTYyNTgtICovXFxubW0vaHVnZXRsYi5jOjYyNTk6c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb192bWEoc3RydWN0IGhzdGF0ZSAqaCxcXG5tbS9odWdldGxiLmMtNjI2MC1cXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKVxcbi0tXFxubW0vaHVnZXRsYi5jLTYyNzUtXFx0ICovXFxubW0vaHVnZXRsYi5jOjYyNzY6XFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKGgsIG5vZGUsIG5vZGVtYXNrLCBnZnBfbWFzaywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy02Mjc3LVxcdG1wb2xfY29uZF9wdXQobXBvbCk7XFxuLS1cXG5tbS9odWdldGxiLmM9NjI4Nj1pbnQgaHVnZXRsYl9tZmlsbF9hdG9taWNfcHRlKHB0ZV90ICpkc3RfcHRlLFxcbi0tXFxubW0vaHVnZXRsYi5jLTYzNDItXFxubW0vaHVnZXRsYi5jOjYzNDM6XFx0XFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGRzdF9hZGRyLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTYzNDQtXFx0XFx0aWYgKElTX0VSUihmb2xpbykpIHtcXG4tLVxcbm1tL2h1Z2V0bGIuYy02MzY4LVxcdFxcdFxcdCAqL1xcbm1tL2h1Z2V0bGIuYzo2MzY5OlxcdFxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpb192bWEoaCwgZHN0X3ZtYSwgZHN0X2FkZHIpO1xcbm1tL2h1Z2V0bGIuYy02MzcwLVxcdFxcdFxcdGlmICghZm9saW8pIHtcXG4tLVxcbm1tL2h1Z2V0bGIuYy02Mzg5LVxcbm1tL2h1Z2V0bGIuYzo2MzkwOlxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBkc3RfYWRkciwgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy02MzkxLVxcdFxcdGlmIChJU19FUlIoZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmM9NjY4Mz1sb25nIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxubW0vaHVnZXRsYi5jLTY4MDMtXFx0XFx0XFx0ICogbWFwIGJldHdlZW4gcmVnaW9uX2NoZyBhbmQgcmVnaW9uX2FkZC4gIFRoaXNcXG5tbS9odWdldGxiLmM6NjgwNDpcXHRcXHRcXHQgKiBpbmRpY2F0ZXMgYSByYWNlIHdpdGggYWxsb2NfaHVnZXRsYl9mb2xpby4gIEFkanVzdFxcbm1tL2h1Z2V0bGIuYy02ODA1LVxcdFxcdFxcdCAqIHRoZSBzdWJwb29sIGFuZCByZXNlcnZlIGNvdW50cyBtb2RpZmllZCBhYm92ZVxcbi0tXFxubW0vbWVtZmQuYz02OD1zdHJ1Y3QgZm9saW8gKm1lbWZkX2FsbG9jX2ZvbGlvKHN0cnVjdCBmaWxlICptZW1mZCwgcGdvZmZfdCBpZHgpXFxuLS1cXG5tbS9tZW1mZC5jLTkzLVxcbm1tL21lbWZkLmM6OTQ6XFx0XFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvX3Jlc2VydmUoaCxcXG5tbS9tZW1mZC5jLTk1LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBudW1hX25vZGVfaWQoKSxcXG4tLVxcbm1tL21lbXBvbGljeS5jPTE0MzU9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfbWlncmF0aW9uX3RhcmdldF9ieV9tcG9sKHN0cnVjdCBmb2xpbyAqc3JjLFxcbi0tXFxubW0vbWVtcG9saWN5LmMtMTQ1NC1cXHRcXHRub2RlbWFzayA9IHBvbGljeV9ub2RlbWFzayhnZnAsIHBvbCwgaWx4LCBcXHUwMDI2bmlkKTtcXG5tbS9tZW1wb2xpY3kuYzoxNDU1OlxcdFxcdHJldHVybiBhbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKGgsIG5pZCwgbm9kZW1hc2ssIGdmcCxcXG5tbS9tZW1wb2xpY3kuYy0xNDU2LVxcdFxcdFxcdFxcdGh0bGJfYWxsb3dfYWxsb2NfZmFsbGJhY2soTVJfTUVNUE9MSUNZX01CSU5EKSk7XFxuLS1cXG5tbS9taWdyYXRlLmM9MjE5OT1zdHJ1Y3QgZm9saW8gKmFsbG9jX21pZ3JhdGlvbl90YXJnZXQoc3RydWN0IGZvbGlvICpzcmMsIHVuc2lnbmVkIGxvbmcgcHJpdmF0ZSlcXG4tLVxcbm1tL21pZ3JhdGUuYy0yMjE2LVxcdFxcdGdmcF9tYXNrID0gaHRsYl9tb2RpZnlfYWxsb2NfbWFzayhoLCBnZnBfbWFzayk7XFxubW0vbWlncmF0ZS5jOjIyMTc6XFx0XFx0cmV0dXJuIGFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soaCwgbmlkLFxcbm1tL21pZ3JhdGUuYy0yMjE4LVxcdFxcdFxcdFxcdFxcdFxcdG10Yy1cXHUwMDNlbm1hc2ssIGdmcF9tYXNrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTo0MDoxMy43OTQzMTA1ODZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxODgwMDYxODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBgYWxsb2NfaHVnZXRsYl9mb2xpb2AuLi4gdGhhdCdzIHRoZSBrZXkgZnVuY3Rpb24uIEl0J3MgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2Q7IG1ha2VzIGl0IGFjY2Vzc2libGUsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBlbnRyeSBwb2ludC4gVGhlIGluY2x1ZGUgZmlsZSBgaW5jbHVkZS9saW51eC9odWdldGxiLmhgIHRlbGxzIG1lIGl0cyBkZWZpbml0aW9uLCBhbmQgdGhlIHVzYWdlcyBpbiBgZnMvaHVnZXRsYmZzL2lub2RlLmNgIGFuZCBgbW0vaHVnZXRsYi5jYCBnaXZlIG1lIHNvbWUgY29udGV4dC4gSXQncyBkZWZpbml0ZWx5IGEgdmlhYmxlIGZ1enppbmcgdGFyZ2V0LCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBwYXRjaCBpcyBmb2N1c2VkIG9uIGl0LlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gdGhlcmUgYXJlbid0IGFueSBvdGhlciBmdW5jdGlvbnMgaGlkaW5nIGluIHRoZSBzaGFkb3dzIHRoYXQgdGhpcyBwYXRjaCBpbmRpcmVjdGx5IHRvdWNoZXMuIE5vcGUsIGBhbGxvY19odWdldGxiX2ZvbGlvYCBzZWVtcyB0byBiZSB0aGUgb25seSBmdW5jdGlvbiB0byBmb2N1cyBvbi4gXG5cblJpZ2h0LCB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIGFuZCBpdCdzIHRoZSByaWdodCBvbmUuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMsIHByb2JhYmx5IGBmcy9odWdldGxiZnMvS2NvbmZpZ2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIGp1c3QgdG8gYmUgY2VydGFpbi4gSnVzdCBtYWtpbmcgc3VyZSBubyBvdGhlciBvcHRpb25zIGFyZSByZWxldmFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwMTcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6NDA6MjMuOTgyMzE5MzA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQwNjcyMzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBIVUdFVExCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3NoL21tL0tjb25maWc9MTU4PWNob2ljZVxcbi0tXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2My1cXG5hcmNoL3NoL21tL0tjb25maWc6MTY0OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV82NEtcXG5hcmNoL3NoL21tL0tjb25maWctMTY1LVxcdGJvb2wgXFxcIjY0a0JcXFwiXFxuLS1cXG5hcmNoL3NoL21tL0tjb25maWctMTY3LVxcbmFyY2gvc2gvbW0vS2NvbmZpZzoxNjg6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzI1NktcXG5hcmNoL3NoL21tL0tjb25maWctMTY5LVxcdGJvb2wgXFxcIjI1NmtCXFxcIlxcbi0tXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3MS1cXG5hcmNoL3NoL21tL0tjb25maWc6MTcyOmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8xTUJcXG5hcmNoL3NoL21tL0tjb25maWctMTczLVxcdGJvb2wgXFxcIjFNQlxcXCJcXG5hcmNoL3NoL21tL0tjb25maWctMTc0LVxcbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzU6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzRNQlxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiNE1CXFxcIlxcbi0tXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3OC1cXG5hcmNoL3NoL21tL0tjb25maWc6MTc5OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV82NE1CXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE4MC1cXHRib29sIFxcXCI2NE1CXFxcIlxcbi0tXFxuZnMvS2NvbmZpZz0yNDc9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXFxuLS1cXG5mcy9LY29uZmlnLTI0OS1cXG5mcy9LY29uZmlnOjI1MDptZW51Y29uZmlnIEhVR0VUTEJGU1xcbmZzL0tjb25maWctMjUxLVxcdGJvb2wgXFxcIkh1Z2VUTEIgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL0tjb25maWc9MjYyPWlmIEhVR0VUTEJGU1xcbmZzL0tjb25maWc6MjYzOmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUF9ERUZBVUxUX09OXFxuZnMvS2NvbmZpZy0yNjQtXFx0Ym9vbCBcXFwiSHVnZVRMQiBWbWVtbWFwIE9wdGltaXphdGlvbiAoSFZPKSBkZWZhdWx0cyB0byBvblxcXCJcXG4tLVxcbmZzL0tjb25maWc9MjcxPWVuZGlmICMgSFVHRVRMQkZTXFxuZnMvS2NvbmZpZy0yNzItXFxuZnMvS2NvbmZpZzoyNzM6Y29uZmlnIEhVR0VUTEJfUEFHRVxcbmZzL0tjb25maWctMjc0LVxcdGRlZl9ib29sIEhVR0VUTEJGU1xcbi0tXFxuZnMvS2NvbmZpZy0yNzYtXFxuZnMvS2NvbmZpZzoyNzc6Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXFxuZnMvS2NvbmZpZy0yNzgtXFx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXFxuLS1cXG5mcy9LY29uZmlnLTI4Mi1cXG5mcy9LY29uZmlnOjI4Mzpjb25maWcgSFVHRVRMQl9QTURfUEFHRV9UQUJMRV9TSEFSSU5HXFxuZnMvS2NvbmZpZy0yODQtXFx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXFxuLS1cXG5tbS9LY29uZmlnPTcwNj1jb25maWcgQVJDSF9IQVNfUE1EX1NPRlRMRUFWRVNcXG4tLVxcbm1tL0tjb25maWctNzA4LVxcbm1tL0tjb25maWc6NzA5OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxcbm1tL0tjb25maWctNzEwLVxcdGRlZl9ib29sIG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6NDA6MjYuMTIzMDE1NzM5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NzQyMzQ3NzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBIVUdFVExCRlMgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB0aGUgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgaXQncyBjbGVhciB0aGF0IGBIVUdFVExCRlNgIGlzIHRoZSAqcHJpbWFyeSogY29uZmlndXJhdGlvbiBpdGVtIG9mIGludGVyZXN0LiBUaGUgZGVmaW5pdGlvbiBvZiBgSFVHRVRMQl9QQUdFYCAoYGRlZl9ib29sIEhVR0VUTEJGU2ApIGNvbmZpcm1zIHRoYXQgYEhVR0VUTEJGU2AgaXMgdGhlIGNvcmUgY29udHJvbC4gVGhlcmVmb3JlLCBlbmFibGluZyBgSFVHRVRMQkZTYCBpcyB0aGUga2V5IGFjdGlvbi5cblxuSSdsbCByZXR1cm4gYm90aCBgSFVHRVRMQkZTYCBhbmQgYEhVR0VUTEJfUEFHRWAgaW4gdGhlIG91dHB1dCwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgY292ZXIgYW55IGVkZ2UgY2FzZXMuIEhvd2V2ZXIsIHVuZGVyc3RhbmRpbmcgdGhlIGNvcmUgaXMgZXNzZW50aWFsOiBlbmFibGluZyBgSFVHRVRMQkZTYCBpcyBlbm91Z2ggdG8gdHJpZ2dlciB0aGUgZGVzaXJlZCBiZWhhdmlvci5cblxuSGVyZSdzIG15IGRpc3RpbGxlZCBzdW1tYXJ5OiB0aGlzIHBhdGNoIGlzIHJlbGV2YW50IHRvIGZ1enppbmcgYmVjYXVzZSBvZiB0aGUgY2hhbmdlcyBpdCBpbnRyb2R1Y2VzIGluIGZvbGlvIGFsbG9jYXRpb24gZm9yIGh1Z2UgcGFnZXMuIFRoZSBrZXkgZnVuY3Rpb24gaXMgYGFsbG9jX2h1Z2V0bGJfZm9saW9gLiBFbmFibGluZyB0aGUgY29uZmlncyBgSFVHRVRMQkZTYCBhbmQgYEhVR0VUTEJfUEFHRWAgd2lsbCBiZSBuZWNlc3NhcnkuIFRoZSBidWcgZml4ZWQgaXMgYSBmdW5jdGlvbmFsIGlzc3VlIHdpdGhpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0sIGRlYWxpbmcgd2l0aCBjb3JyZWN0IHJlc3RvcmF0aW9uIG9mIHVzZWQgaHBhZ2VzIGR1cmluZyBlcnJvciBwYXRocyB3aGVuIGFsbG9jYXRpbmcgZnJvbSB0aGUgZ2xvYmFsIHBvb2wuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTc4LCJPdXRwdXRUb2tlbnMiOjEwMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTo0MDo1NS44NjUzNjYxOTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODg0OTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFVHRVRMQkZTXCIsXG4gICAgXCJIVUdFVExCX1BBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbGxvY19odWdldGxiX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gaHVnZXRsYiBmb2xpbyBhbGxvY2F0aW9uIHdoZXJlIHVzZWRfaHBhZ2VzIGlzIG5vdCBjb3JyZWN0bHkgcmVzdG9yZWQgb24gYSBzcGVjaWZpYyBlcnJvciBwYXRoIHdoZW4gZmFpbGluZyB0byBiYWNrIGZyb20gdGhlIGdsb2JhbCBwb29sLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGh1Z2V0bGIgc3Vic3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJGU1wiLFxuICAgIFwiSFVHRVRMQl9QQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxsb2NfaHVnZXRsYl9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGh1Z2V0bGIgZm9saW8gYWxsb2NhdGlvbiB3aGVyZSB1c2VkX2hwYWdlcyBpcyBub3QgY29ycmVjdGx5IHJlc3RvcmVkIG9uIGEgc3BlY2lmaWMgZXJyb3IgcGF0aCB3aGVuIGZhaWxpbmcgdG8gYmFjayBmcm9tIHRoZSBnbG9iYWwgcG9vbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBodWdldGxiIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdch2h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 15:06:13 +0000 UTC FinishedAt: 2026-07-13 15:40:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bee763d5f341b99cf472afeb508d4988f62a6ca1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "HUGETLB_PAGE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bee763d5f341b99cf472afeb508d4988f62a6ca1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HUGETLBFS", "HUGETLB_PAGE" ], "series_id": "1684777d-75fd-426b-9abb-a0c70a28e739" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "alloc_hugetlb_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+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtIVUdFVExCX1BBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGxvY19odWdldGxiX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGh1Z2V0bGIgZm9saW8gYWxsb2NhdGlvbiB3aGVyZSB1c2VkX2hwYWdlcyBpcyBub3QgY29ycmVjdGx5IHJlc3RvcmVkIG9uIGEgc3BlY2lmaWMgZXJyb3IgcGF0aCB3aGVuIGZhaWxpbmcgdG8gYmFjayBmcm9tIHRoZSBnbG9iYWwgcG9vbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBodWdldGxiIHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDExZjI5NTU5MTRjNzE3ODIwMzVjNWJmM2EzMDI3ZDJhZmVhZjc3ZTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxNTozNzowOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmNcbmluZGV4IGQ2YzgxMmQxODU3YjU3Li44NDEzZWM5MmQ4MzZkZSAxMDA2NDRcbi0tLSBhL21tL2h1Z2V0bGIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZXRsYi5jXG5AQCAtMzA3Myw2ICYjNDM7MzA3MywxOSBAQCBzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW8oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRpZiAobWFwX2NoZyBcdTAwMjZcdTAwMjYgIWdibF9jaGcpIHtcbiBcdFx0Z2JsX3Jlc2VydmUgPSBodWdlcGFnZV9zdWJwb29sX3B1dF9wYWdlcyhzcG9vbCwgMSk7XG4gXHRcdGh1Z2V0bGJfYWNjdF9tZW1vcnkoaCwgLWdibF9yZXNlcnZlKTtcbiYjNDM7XHR9IGVsc2UgaWYgKG1hcF9jaGcgXHUwMDI2XHUwMDI2IGdibF9jaGcgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IHNwb29sKSB7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogUmVzdG9yZSB1c2VkX2hwYWdlcyBmb3IgdGhlIGdsb2JhbGx5LXJlcXVlc3RlZCBwYWdlIHRoYXRcbiYjNDM7XHRcdCAqIGh1Z2VwYWdlX3N1YnBvb2xfZ2V0X3BhZ2VzKCkgY291bnRlZCBhZ2FpbnN0IHRoZSBzdWJwb29sJiMzOTtzXG4mIzQzO1x0XHQgKiBtYXhpbXVtLCBidXQgd2hpY2ggd2UgZmFpbGVkIHRvIGJhY2sgZnJvbSB0aGUgZ2xvYmFsIHBvb2wuXG4mIzQzO1x0XHQgKiBNaXJyb3JzIHRoZSBmaXggaW4gaHVnZXRsYl9yZXNlcnZlX3BhZ2VzKCkgKDFkM2Y5YmI0YzhhZikuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4mIzQzO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2c3Bvb2wtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdFx0aWYgKHNwb29sLVx1MDAzZW1heF9ocGFnZXMgIT0gLTEpXG4mIzQzO1x0XHRcdHNwb29sLVx1MDAzZXVzZWRfaHBhZ2VzIC09IGdibF9jaGc7XG4mIzQzO1x0XHR1bmxvY2tfb3JfcmVsZWFzZV9zdWJwb29sKHNwb29sLCBmbGFncyk7XG4gXHR9XG4gXG4gb3V0X2VuZF9yZXNlcnZhdGlvbjpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIVUdFVExCRlMmIzM0OywKICAgICYjMzQ7SFVHRVRMQl9QQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWxsb2NfaHVnZXRsYl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBodWdldGxiIGZvbGlvIGFsbG9jYXRpb24gd2hlcmUgdXNlZF9ocGFnZXMgaXMgbm90IGNvcnJlY3RseSByZXN0b3JlZCBvbiBhIHNwZWNpZmljIGVycm9yIHBhdGggd2hlbiBmYWlsaW5nIHRvIGJhY2sgZnJvbSB0aGUgZ2xvYmFsIHBvb2wuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDExZjI5NTU5MTRjNzE3ODIwMzVjNWJmM2EzMDI3ZDJhZmVhZjc3ZTMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAxMyAxNTozNzowOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuYwppbmRleCBkNmM4MTJkMTg1N2I1Ny4uODQxM2VjOTJkODM2ZGUgMTAwNjQ0Ci0tLSBhL21tL2h1Z2V0bGIuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9odWdldGxiLmMKQEAgLTMwNzMsNiAmIzQzOzMwNzMsMTkgQEAgc3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCWlmIChtYXBfY2hnICZhbXA7JmFtcDsgIWdibF9jaGcpIHsKIAkJZ2JsX3Jlc2VydmUgPSBodWdlcGFnZV9zdWJwb29sX3B1dF9wYWdlcyhzcG9vbCwgMSk7CiAJCWh1Z2V0bGJfYWNjdF9tZW1vcnkoaCwgLWdibF9yZXNlcnZlKTsKJiM0MzsJfSBlbHNlIGlmIChtYXBfY2hnICZhbXA7JmFtcDsgZ2JsX2NoZyAmZ3Q7IDAgJmFtcDsmYW1wOyBzcG9vbCkgewomIzQzOwkJLyoKJiM0MzsJCSAqIFJlc3RvcmUgdXNlZF9ocGFnZXMgZm9yIHRoZSBnbG9iYWxseS1yZXF1ZXN0ZWQgcGFnZSB0aGF0CiYjNDM7CQkgKiBodWdlcGFnZV9zdWJwb29sX2dldF9wYWdlcygpIGNvdW50ZWQgYWdhaW5zdCB0aGUgc3VicG9vbCYjMzk7cwomIzQzOwkJICogbWF4aW11bSwgYnV0IHdoaWNoIHdlIGZhaWxlZCB0byBiYWNrIGZyb20gdGhlIGdsb2JhbCBwb29sLgomIzQzOwkJICogTWlycm9ycyB0aGUgZml4IGluIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcygpICgxZDNmOWJiNGM4YWYpLgomIzQzOwkJICovCiYjNDM7CQl1bnNpZ25lZCBsb25nIGZsYWdzOwomIzQzOwomIzQzOwkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtzcG9vbC0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJaWYgKHNwb29sLSZndDttYXhfaHBhZ2VzICE9IC0xKQomIzQzOwkJCXNwb29sLSZndDt1c2VkX2hwYWdlcyAtPSBnYmxfY2hnOwomIzQzOwkJdW5sb2NrX29yX3JlbGVhc2Vfc3VicG9vbChzcG9vbCwgZmxhZ3MpOwogCX0KIAogb3V0X2VuZF9yZXNlcnZhdGlvbjoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAwOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBodWdldGxiLmMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggd2l0aGluIGBtbS9odWdldGxiLmNgLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IGl0JiMzOTtzIGFsdGVyaW5nIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhbiBgZWxzZSBpZmAgY29uZGl0aW9uLCBhbmQgdGhlIGNvbmRpdGlvbnMgYXJlIHF1aXRlIHByZWNpc2U6IGBtYXBfY2hnYCwgYGdibF9jaGdgIGdyZWF0ZXIgdGhhbiB6ZXJvLCBhbmQgYHNwb29sYCBtdXN0IGFsbCBiZSB0cnVlIGZvciBpdCB0byBleGVjdXRlLiBXaXRoaW4gdGhpcyBuZXcgYmxvY2ssIGl0IGxvb2tzIGxpa2UgdGhlcmUmIzM5O3MgYSByZXN0b3JhdGlvbiBvZiBgdXNlZF9ocGFnZXNgLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBnbG9iYWxseSByZXF1ZXN0ZWQgcGFnZS4gVGhpcyBmZWVscyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBodWdlIHBhZ2Ugc3Vic3lzdGVtLCBhbmQgaXQgd2FycmFudHMgYSBkZWVwZXIgZGl2ZS4gSSBuZWVkIHRvIGdldCBiYWNrIGludG8gYGFsbG9jX2h1Z2V0bGJfZm9saW9gIHdpdGhpbiBgbW0vaHVnZXRsYi5jYCB0byBmdWxseSBncmFzcCBpdHMgaW1wYWN0IGFuZCBlbnN1cmUgaXQmIzM5O3MgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxsb2NfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdldGxiLmM9MjE0OT1zdHJ1Y3QgZm9saW8gKmFsbG9jX2J1ZGR5X2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMjE3Mi1cbm1tL2h1Z2V0bGIuYzoyMTczOnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19yZXNlcnZlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxubW0vaHVnZXRsYi5jLTIxNzQtXHRcdG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzaylcbi0tXG5tbS9odWdldGxiLmMtMjE5My0vKiBmb2xpbyBtaWdyYXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gKi9cbm1tL2h1Z2V0bGIuYzoyMTk0OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19ub2RlbWFzayhzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgcHJlZmVycmVkX25pZCxcbm1tL2h1Z2V0bGIuYy0yMTk1LVx0XHRub2RlbWFza190ICpubWFzaywgZ2ZwX3QgZ2ZwX21hc2ssIGJvb2wgYWxsb3dfYWxsb2NfZmFsbGJhY2spXG4tLVxubW0vaHVnZXRsYi5jPTI1Mjc9c3RhdGljIGxvbmcgdm1hX2RlbF9yZXNlcnZhdGlvbihzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbm1tL2h1Z2V0bGIuYy0yNTM0LSAqIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgdG8gcmVzdG9yZSByZXNlcnZhdGlvbiBpbmZvcm1hdGlvbiBvbiBlcnJvciBwYXRocy5cbm1tL2h1Z2V0bGIuYzoyNTM1OiAqIEl0IHNob3VsZCBPTkxZIGJlIGNhbGxlZCBmb3IgZm9saW9zIGFsbG9jYXRlZCB2aWEgYWxsb2NfaHVnZXRsYl9mb2xpbygpLFxubW0vaHVnZXRsYi5jLTI1MzYtICogYW5kIHRoZSBodWdldGxiIG11dGV4IHNob3VsZCByZW1haW4gaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyByb3V0aW5lLlxuLS1cbm1tL2h1Z2V0bGIuYy0yNTQxLSAqIDIpIE5vIHJlc2VydmF0aW9uIHdhcyBpbiBwbGFjZSBmb3IgdGhlIHBhZ2UsIHNvIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIGlzXG5tbS9odWdldGxiLmM6MjU0MjogKiAgICBub3Qgc2V0LiAgSG93ZXZlciwgYWxsb2NfaHVnZXRsYl9mb2xpbyBhbHdheXMgdXBkYXRlcyB0aGUgcmVzZXJ2ZSBtYXAuXG5tbS9odWdldGxiLmMtMjU0My0gKlxuLS1cbm1tL2h1Z2V0bGIuYy0yNTUwLSAqXG5tbS9odWdldGxiLmM6MjU1MTogKiBJbiBjYXNlIDIsIHNpbXBseSB1bmRvIHJlc2VydmUgbWFwIG1vZGlmaWNhdGlvbnMgZG9uZSBieSBhbGxvY19odWdldGxiX2ZvbGlvLlxubW0vaHVnZXRsYi5jLTI1NTItICovXG5tbS9odWdldGxiLmM9MjU1Mz12b2lkIHJlc3RvcmVfcmVzZXJ2ZV9vbl9lcnJvcihzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9odWdldGxiLmMtMjU3OS1cdFx0XHQgKiBUaGlzIGluZGljYXRlcyB0aGVyZSBpcyBhbiBlbnRyeSBpbiB0aGUgcmVzZXJ2ZSBtYXBcbm1tL2h1Z2V0bGIuYzoyNTgwOlx0XHRcdCAqIG5vdCBhZGRlZCBieSBhbGxvY19odWdldGxiX2ZvbGlvLiAgV2Uga25vdyBpdCB3YXMgYWRkZWRcbm1tL2h1Z2V0bGIuYzoyNTgxOlx0XHRcdCAqIGJlZm9yZSB0aGUgYWxsb2NfaHVnZXRsYl9mb2xpbyBjYWxsLCBvdGhlcndpc2Vcbm1tL2h1Z2V0bGIuYy0yNTgyLVx0XHRcdCAqIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIHdvdWxkIGJlIHNldCBvbiB0aGUgZm9saW8uXG4tLVxubW0vaHVnZXRsYi5jPTI5MjA9dHlwZWRlZiBlbnVtIHtcbi0tXG5tbS9odWdldGxiLmMtMjk0NS0gKi9cbm1tL2h1Z2V0bGIuYzoyOTQ2OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpbyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbm1tL2h1Z2V0bGIuYy0yOTQ3LVx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCBjb3dfZnJvbV9vd25lcilcbi0tXG5tbS9odWdldGxiLmM9NDkxMT1pbnQgY29weV9odWdldGxiX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmMsXG4tLVxubW0vaHVnZXRsYi5jLTUwMzItXHRcdFx0XHQvKiBEbyBub3QgdXNlIHJlc2VydmUgYXMgaXQmIzM5O3MgcHJpdmF0ZSBvd25lZCAqL1xubW0vaHVnZXRsYi5jOjUwMzM6XHRcdFx0XHRuZXdfZm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGFkZHIsIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy01MDM0LVx0XHRcdFx0aWYgKElTX0VSUihuZXdfZm9saW8pKSB7XG4tLVxubW0vaHVnZXRsYi5jPTU1MDE9c3RhdGljIHZtX2ZhdWx0X3QgaHVnZXRsYl93cChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5tbS9odWdldGxiLmMtNTU4Mi1cdHNwaW5fdW5sb2NrKHZtZi1cdTAwM2VwdGwpO1xubW0vaHVnZXRsYi5jOjU1ODM6XHRuZXdfZm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKHZtYSwgdm1mLVx1MDAzZWFkZHJlc3MsIGNvd19mcm9tX293bmVyKTtcbm1tL2h1Z2V0bGIuYy01NTg0LVxuLS1cbm1tL2h1Z2V0bGIuYz01NzczPXN0YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJfbm9fcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbi0tXG5tbS9odWdldGxiLmMtNTg0Mi1cbm1tL2h1Z2V0bGIuYzo1ODQzOlx0XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8odm1hLCB2bWYtXHUwMDNlYWRkcmVzcywgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTU4NDQtXHRcdGlmIChJU19FUlIoZm9saW8pKSB7XG4tLVxubW0vaHVnZXRsYi5jPTYwMjM9dm1fZmF1bHRfdCBodWdldGxiX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9odWdldGxiLmMtNjI1OC0gKi9cbm1tL2h1Z2V0bGIuYzo2MjU5OnN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fdm1hKHN0cnVjdCBoc3RhdGUgKmgsXG5tbS9odWdldGxiLmMtNjI2MC1cdFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcylcbi0tXG5tbS9odWdldGxiLmMtNjI3NS1cdCAqL1xubW0vaHVnZXRsYi5jOjYyNzY6XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soaCwgbm9kZSwgbm9kZW1hc2ssIGdmcF9tYXNrLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtNjI3Ny1cdG1wb2xfY29uZF9wdXQobXBvbCk7XG4tLVxubW0vaHVnZXRsYi5jPTYyODY9aW50IGh1Z2V0bGJfbWZpbGxfYXRvbWljX3B0ZShwdGVfdCAqZHN0X3B0ZSxcbi0tXG5tbS9odWdldGxiLmMtNjM0Mi1cbm1tL2h1Z2V0bGIuYzo2MzQzOlx0XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8oZHN0X3ZtYSwgZHN0X2FkZHIsIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy02MzQ0LVx0XHRpZiAoSVNfRVJSKGZvbGlvKSkge1xuLS1cbm1tL2h1Z2V0bGIuYy02MzY4LVx0XHRcdCAqL1xubW0vaHVnZXRsYi5jOjYzNjk6XHRcdFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvX3ZtYShoLCBkc3Rfdm1hLCBkc3RfYWRkcik7XG5tbS9odWdldGxiLmMtNjM3MC1cdFx0XHRpZiAoIWZvbGlvKSB7XG4tLVxubW0vaHVnZXRsYi5jLTYzODktXG5tbS9odWdldGxiLmM6NjM5MDpcdFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGRzdF9hZGRyLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtNjM5MS1cdFx0aWYgKElTX0VSUihmb2xpbykpIHtcbi0tXG5tbS9odWdldGxiLmM9NjY4Mz1sb25nIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbm1tL2h1Z2V0bGIuYy02ODAzLVx0XHRcdCAqIG1hcCBiZXR3ZWVuIHJlZ2lvbl9jaGcgYW5kIHJlZ2lvbl9hZGQuICBUaGlzXG5tbS9odWdldGxiLmM6NjgwNDpcdFx0XHQgKiBpbmRpY2F0ZXMgYSByYWNlIHdpdGggYWxsb2NfaHVnZXRsYl9mb2xpby4gIEFkanVzdFxubW0vaHVnZXRsYi5jLTY4MDUtXHRcdFx0ICogdGhlIHN1YnBvb2wgYW5kIHJlc2VydmUgY291bnRzIG1vZGlmaWVkIGFib3ZlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA2MwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBhbGxvY19odWdldGxiX2ZvbGlvYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBodWdldGxiIGFsbG9jYXRpb24gaXNzdWUuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkLiBJdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgd2UgaGFuZGxlIGh1Z2V0bGIgYWxsb2NhdGlvbnMsIHNvIHVuZGVyc3RhbmRpbmcgaXQgaXMgY3J1Y2lhbC4gVGhlIHBhdGNoIGZvY3VzZXMgb24gYSBidWcgd2hlcmUgYHVzZWRfaHBhZ2VzYCBpc24mIzM5O3QgcHJvcGVybHkgcmVzdG9yZWQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIOKAkyBzcGVjaWZpY2FsbHksIHdoZW4gYGdibF9jaGdgIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBgc3Bvb2xgIGlzIGFjdGl2ZSwgYnV0IHdlIGZhaWwgdG8gc291cmNlIGZyb20gdGhlIGdsb2JhbCBwb29sLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyByYWNlLWNvbmRpdGlvbiBzY2VuYXJpbywgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB3aHkgdGhlIGNoZWNrIGFuZCByZXN0b3JhdGlvbiBhcmUgZmFpbGluZy4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gYG1tL2h1Z2V0bGIuY2AgdG8gZXhhbWluZSB0aGUgYGFsbG9jX2h1Z2V0bGJfZm9saW9gIGZ1bmN0aW9uIGRpcmVjdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBDT05GSUdfSFVHRVRMQl9QQUdFYCwgdG8gZW5zdXJlIG15IGVudmlyb25tZW50IGlzIHNldCB1cCBwcm9wZXJseSBmb3IgZGVidWdnaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYmVpbmcgcHJvcGVybHkgY29uZmlndXJlZCBzbyBJIGNhbiByZXByb2R1Y2UgdGhlIGZhaWx1cmUgYW5kIHRyYWNrIGRvd24gdGhlIHJvb3QgY2F1c2UuIFRoaXMgaW5mb3JtYXRpb24gc2hvdWxkIHByb3ZpZGUgY29udGV4dCBmb3IgZGVidWdnaW5nIHRoZSBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfSFVHRVRMQl9QQUdFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTg0PWVuZGlmXG5tbS9NYWtlZmlsZTo4NTpvYmotJChDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVApXHQmIzQzOz0gaHVnZXRsYl92bWVtbWFwLm9cbm1tL01ha2VmaWxlLTg2LW9iai0kKENPTkZJR19OVU1BKSBcdCYjNDM7PSBtZW1wb2xpY3kub1xuLS1cbm1tL2RhbW9uL3ZhZGRyLmM9MjY3PXN0YXRpYyBpbnQgZGFtb25fbWtvbGRfcG1kX2VudHJ5KHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5tbS9kYW1vbi92YWRkci5jLTI5My1cbm1tL2RhbW9uL3ZhZGRyLmM6Mjk0OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9kYW1vbi92YWRkci5jLTI5NS1zdGF0aWMgdm9pZCBkYW1vbl9odWdldGxiX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmM9MzIyPXN0YXRpYyBpbnQgZGFtb25fbWtvbGRfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtMzQyLSNkZWZpbmUgZGFtb25fbWtvbGRfaHVnZXRsYl9lbnRyeSBOVUxMXG5tbS9kYW1vbi92YWRkci5jOjM0MzojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xubW0vZGFtb24vdmFkZHIuYy0zNDQtXG4tLVxubW0vZGFtb24vdmFkZHIuYz0zOTA9c3RhdGljIGludCBkYW1vbl95b3VuZ19wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtNDM3LVxubW0vZGFtb24vdmFkZHIuYzo0Mzg6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL2RhbW9uL3ZhZGRyLmMtNDM5LXN0YXRpYyBpbnQgZGFtb25feW91bmdfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtNDY5LSNkZWZpbmUgZGFtb25feW91bmdfaHVnZXRsYl9lbnRyeSBOVUxMXG5tbS9kYW1vbi92YWRkci5jOjQ3MDojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xubW0vZGFtb24vdmFkZHIuYy00NzEtXG4tLVxubW0vZGVidWdfdm1fcGd0YWJsZS5jPTg0ND1zdGF0aWMgdm9pZCBfX2luaXQgc3dhcF9taWdyYXRpb25fdGVzdHMoc3RydWN0IHBndGFibGVfZGVidWdfYXJncyAqYXJncylcbi0tXG5tbS9kZWJ1Z192bV9wZ3RhYmxlLmMtODgzLVxubW0vZGVidWdfdm1fcGd0YWJsZS5jOjg4NDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vZGVidWdfdm1fcGd0YWJsZS5jLTg4NS1zdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9iYXNpY190ZXN0cyhzdHJ1Y3QgcGd0YWJsZV9kZWJ1Z19hcmdzICphcmdzKVxuLS1cbm1tL2RlYnVnX3ZtX3BndGFibGUuYy04OTktfVxubW0vZGVidWdfdm1fcGd0YWJsZS5jOjkwMDojZWxzZSAgLyogIUNPTkZJR19IVUdFVExCX1BBR0UgKi9cbm1tL2RlYnVnX3ZtX3BndGFibGUuYy05MDEtc3RhdGljIHZvaWQgX19pbml0IGh1Z2V0bGJfYmFzaWNfdGVzdHMoc3RydWN0IHBndGFibGVfZGVidWdfYXJncyAqYXJncykgeyB9XG5tbS9kZWJ1Z192bV9wZ3RhYmxlLmM6OTAyOiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXG5tbS9kZWJ1Z192bV9wZ3RhYmxlLmMtOTAzLVxuLS1cbm1tL2htbS5jPTQ4ND1zdGF0aWMgaW50IGhtbV92bWFfd2Fsa19wdWQocHVkX3QgKnB1ZHAsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbm1tL2htbS5jLTU0MS1cbm1tL2htbS5jOjU0MjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vaG1tLmMtNTQzLXN0YXRpYyBpbnQgaG1tX3ZtYV93YWxrX2h1Z2V0bGJfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcbi0tXG5tbS9obW0uYy01OTQtI2RlZmluZSBobW1fdm1hX3dhbGtfaHVnZXRsYl9lbnRyeSBOVUxMXG5tbS9obW0uYzo1OTU6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbm1tL2htbS5jLTU5Ni1cbi0tXG5tbS9odWdldGxiLmM9MzM1OD12b2lkIF9faW5pdCBodWdldGxiX2Jvb3RtZW1fc3RydWN0X3BhZ2VfaW5pdCh2b2lkKVxuLS1cbm1tL2h1Z2V0bGIuYy0zMzY5LVx0fTtcbm1tL2h1Z2V0bGIuYzozMzcwOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcbm1tL2h1Z2V0bGIuYy0zMzcxLVx0c3RydWN0IHpvbmUgKnpvbmU7XG4tLVxubW0vaHVnZXRsYl92bWVtbWFwLmM9MzcyPXN0YXRpYyBpbnQgdm1lbW1hcF9yZW1hcF9hbGxvYyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS9odWdldGxiX3ZtZW1tYXAuYy0zODctXG5tbS9odWdldGxiX3ZtZW1tYXAuYzozODg6c3RhdGljIGJvb2wgdm1lbW1hcF9vcHRpbWl6ZV9lbmFibGVkID0gSVNfRU5BQkxFRChDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBfREVGQVVMVF9PTik7XG5tbS9odWdldGxiX3ZtZW1tYXAuYy0zODktc3RhdGljIGludCBfX2luaXQgaHVnZXRsYl92bWVtbWFwX29wdGltaXplX3BhcmFtKGNoYXIgKmJ1Zilcbi0tXG5tbS9odWdldGxiX3ZtZW1tYXAuaC0yMS1cbm1tL2h1Z2V0bGJfdm1lbW1hcC5oOjIyOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcbm1tL2h1Z2V0bGJfdm1lbW1hcC5oLTIzLWludCBodWdldGxiX3ZtZW1tYXBfcmVzdG9yZV9mb2xpbyhjb25zdCBzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbi0tXG5tbS9odWdldGxiX3ZtZW1tYXAuaD04Mz1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBodWdldGxiX3ZtZW1tYXBfb3B0aW1pemFibGVfc2l6ZShjb25zdCBzdHJ1Y3QgaHN0YXRlICpoKVxuLS1cbm1tL2h1Z2V0bGJfdm1lbW1hcC5oLTg2LX1cbm1tL2h1Z2V0bGJfdm1lbW1hcC5oOjg3OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVAgKi9cbm1tL2h1Z2V0bGJfdm1lbW1hcC5oLTg4LVxuLS1cbm1tL21lbWNvbnRyb2wuYz0zNzI9c3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtZW1jZ19ub2RlX3N0YXRfaXRlbXNbXSA9IHtcbi0tXG5tbS9tZW1jb250cm9sLmMtNDIyLVx0UEdSRUZJTEwsXG5tbS9tZW1jb250cm9sLmM6NDIzOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9tZW1jb250cm9sLmMtNDI0LVx0TlJfSFVHRVRMQixcbi0tXG5tbS9tZW1jb250cm9sLmM9MTU0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1lbW9yeV9zdGF0IG1lbW9yeV9zdGF0c1tdID0ge1xuLS1cbm1tL21lbWNvbnRyb2wuYy0xNTc5LVx0eyBcJiMzNDtzbGFiX3VucmVjbGFpbWFibGVcJiMzNDssXHRcdE5SX1NMQUJfVU5SRUNMQUlNQUJMRV9CXHRcdH0sXG5tbS9tZW1jb250cm9sLmM6MTU4MDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vbWVtY29udHJvbC5jLTE1ODEtXHR7IFwmIzM0O2h1Z2V0bGJcJiMzNDssXHRcdFx0TlJfSFVHRVRMQlx0XHRcdH0sXG4tLVxubW0vbWVtY29udHJvbC5jPTE2NzQ9dW5zaWduZWQgbG9uZyBtZW1jZ19wYWdlX3N0YXRlX2xvY2FsX291dHB1dChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBpdGVtKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xNjgwLVxubW0vbWVtY29udHJvbC5jOjE2ODE6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL21lbWNvbnRyb2wuYy0xNjgyLXN0YXRpYyBib29sIG1lbWNnX2FjY291bnRzX2h1Z2V0bGIodm9pZClcbi0tXG5tbS9tZW1jb250cm9sLmMtMTY4NS19XG5tbS9tZW1jb250cm9sLmM6MTY4NjojZWxzZSAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXG5tbS9tZW1jb250cm9sLmMtMTY4Ny1zdGF0aWMgYm9vbCBtZW1jZ19hY2NvdW50c19odWdldGxiKHZvaWQpXG4tLVxubW0vbWVtY29udHJvbC5jLTE2OTAtfVxubW0vbWVtY29udHJvbC5jOjE2OTE6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbm1tL21lbWNvbnRyb2wuYy0xNjkyLVxubW0vbWVtY29udHJvbC5jPTE2OTM9c3RhdGljIHZvaWQgbWVtY2dfc3RhdF9mb3JtYXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBzdHJ1Y3Qgc2VxX2J1ZiAqcylcbi0tXG5tbS9tZW1jb250cm9sLmMtMTcxMS1cbm1tL21lbWNvbnRyb2wuYzoxNzEyOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9tZW1jb250cm9sLmMtMTcxMy1cdFx0aWYgKHVubGlrZWx5KG1lbW9yeV9zdGF0c1tpXS5pZHggPT0gTlJfSFVHRVRMQikgXHUwMDI2XHUwMDI2XG4tLVxubW0vbWVtZmQuYz02OD1zdHJ1Y3QgZm9saW8gKm1lbWZkX2FsbG9jX2ZvbGlvKHN0cnVjdCBmaWxlICptZW1mZCwgcGdvZmZfdCBpZHgpXG5tbS9tZW1mZC5jLTY5LXtcbm1tL21lbWZkLmM6NzA6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL21lbWZkLmMtNzEtXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuLS1cbm1tL21lbW9yeS1mYWlsdXJlLmM9NzQyPXN0YXRpYyBpbnQgaHdwb2lzb25fcHRlX3JhbmdlKHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vbWVtb3J5LWZhaWx1cmUuYy03NzMtXG5tbS9tZW1vcnktZmFpbHVyZS5jOjc3NDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vbWVtb3J5LWZhaWx1cmUuYy03NzUtc3RhdGljIGludCBod3BvaXNvbl9odWdldGxiX3JhbmdlKHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuLS1cbm1tL21lbW9yeS1mYWlsdXJlLmM9MTg2ND1FWFBPUlRfU1lNQk9MX0dQTChtZl9kYXhfa2lsbF9wcm9jcyk7XG4tLVxubW0vbWVtb3J5LWZhaWx1cmUuYy0xODY2LVxubW0vbWVtb3J5LWZhaWx1cmUuYzoxODY3OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9tZW1vcnktZmFpbHVyZS5jLTE4NjgtXG4tLVxubW0vbWVtb3J5LWZhaWx1cmUuYz0yMTYxPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBmb2xpb19mcmVlX3Jhd19od3Aoc3RydWN0IGZvbGlvICpmb2xpbywgYm9vbCBmbGFnKVxuLS1cbm1tL21lbW9yeS1mYWlsdXJlLmMtMjE2NC19XG5tbS9tZW1vcnktZmFpbHVyZS5jOjIxNjU6I2VuZGlmXHQvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXG5tbS9tZW1vcnktZmFpbHVyZS5jLTIxNjYtXG4tLVxubW0vbWVtcG9saWN5LmM9NzcyPXN0YXRpYyBpbnQgcXVldWVfZm9saW9zX2h1Z2V0bGIocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcbi0tXG5tbS9tZW1wb2xpY3kuYy03NzUte1xubW0vbWVtcG9saWN5LmM6Nzc2OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9tZW1wb2xpY3kuYy03NzctXHRzdHJ1Y3QgcXVldWVfcGFnZXMgKnFwID0gd2Fsay1cdTAwM2Vwcml2YXRlO1xuLS1cbm1tL21pZ3JhdGUuYz0zNTE9c3RhdGljIGJvb2wgcmVtb3ZlX21pZ3JhdGlvbl9wdGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS9taWdyYXRlLmMtNDI2LVxubW0vbWlncmF0ZS5jOjQyNzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vbWlncmF0ZS5jLTQyOC1cdFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpIHtcbi0tXG5tbS9taWdyYXRlLmM9NDk0PXZvaWQgbWlncmF0aW9uX2VudHJ5X3dhaXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBtZF90ICpwbWQsXG4tLVxubW0vbWlncmF0ZS5jLTUyMS1cbm1tL21pZ3JhdGUuYzo1MjI6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL21pZ3JhdGUuYy01MjMtLypcbi0tXG5tbS9taW5jb3JlLmM9MjY9c3RhdGljIGludCBtaW5jb3JlX2h1Z2V0bGIocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzaywgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL21pbmNvcmUuYy0yOC17XG5tbS9taW5jb3JlLmM6Mjk6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL21pbmNvcmUuYy0zMC1cdHVuc2lnbmVkIGNoYXIgcHJlc2VudDtcbi0tXG5tbS9tbV9pbml0LmM9MTQyOD1zdGF0aWMgaW5saW5lIHZvaWQgc2V0dXBfdXNlbWFwKHN0cnVjdCB6b25lICp6b25lKSB7fVxuLS1cbm1tL21tX2luaXQuYy0xNDMwLVxubW0vbW1faW5pdC5jOjE0MzE6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxubW0vbW1faW5pdC5jLTE0MzItXG4tLVxubW0vbW1faW5pdC5jPTE0MzQ9c3RhdGljIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcbi0tXG5tbS9tbV9pbml0LmMtMTQ1MS19XG5tbS9tbV9pbml0LmM6MTQ1MjojZWxzZSAvKiBDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEUgKi9cbm1tL21tX2luaXQuYy0xNDUzLVxubW0vbW1faW5pdC5jLTE0NTQtLypcbm1tL21tX2luaXQuYzoxNDU1OiAqIFdoZW4gQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFIGlzIG5vdCBzZXQsIHNldF9wYWdlYmxvY2tfb3JkZXIoKVxubW0vbW1faW5pdC5jLTE0NTYtICogaXMgdW51c2VkIGFzIHBhZ2VibG9ja19vcmRlciBpcyBzZXQgYXQgY29tcGlsZS10aW1lLiBTZWVcbi0tXG5tbS9tbV9pbml0LmM9MTQ2MD1zdGF0aWMgaW5saW5lIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcbi0tXG5tbS9tbV9pbml0LmMtMTQ2My1cbm1tL21tX2luaXQuYzoxNDY0OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEUgKi9cbm1tL21tX2luaXQuYy0xNDY1LVxuLS1cbm1tL21wcm90ZWN0LmM9NzMwPXN0YXRpYyBpbnQgcHJvdF9ub25lX3B0ZV9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vbXByb3RlY3QuYy03MzctXG5tbS9tcHJvdGVjdC5jOjczODojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vbXByb3RlY3QuYy03Mzktc3RhdGljIGludCBwcm90X25vbmVfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYz0yMDg9Z2ZwX3QgZ2ZwX2FsbG93ZWRfbWFzayBfX3JlYWRfbW9zdGx5ID0gR0ZQX0JPT1RfTUFTSztcbm1tL3BhZ2VfYWxsb2MuYy0yMDktXG5tbS9wYWdlX2FsbG9jLmM6MjEwOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEVcbm1tL3BhZ2VfYWxsb2MuYy0yMTEtdW5zaWduZWQgaW50IHBhZ2VibG9ja19vcmRlciBfX3JlYWRfbW9zdGx5O1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz0xMDkwPXN0YXRpYyBpbnQgZnJlZV90YWlsX3BhZ2VfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqaGVhZF9wYWdlLCBzdHJ1Y3QgcGFnZSAqcGFnZSlcbi0tXG5tbS9wYWdlX2FsbG9jLmMtMTE1Ni1cdFx0LyogdGhlIHRoaXJkIHRhaWwgcGFnZTogaHVnZXRsYiBzcGVjaWZpY3Mgb3ZlcmxhcCAtXHUwMDNlbWFwcGluZ3MgKi9cbm1tL3BhZ2VfYWxsb2MuYzoxMTU3Olx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfSFVHRVRMQl9QQUdFKSlcbm1tL3BhZ2VfYWxsb2MuYy0xMTU4LVx0XHRcdGJyZWFrO1xuLS1cbm1tL3BhZ2V3YWxrLmM9Mjg4PXN0YXRpYyBpbnQgd2Fsa19wZ2RfcmFuZ2UodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS9wYWdld2Fsay5jLTMyOC1cbm1tL3BhZ2V3YWxrLmM6MzI5OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS9wYWdld2Fsay5jLTMzMC1zdGF0aWMgdW5zaWduZWQgbG9uZyBodWdldGxiX2VudHJ5X2VuZChzdHJ1Y3QgaHN0YXRlICpoLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vcGFnZXdhbGsuYz0zMzg9c3RhdGljIGludCB3YWxrX2h1Z2V0bGJfcmFuZ2UodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5tbS9wYWdld2Fsay5jLTM2NS1cbm1tL3BhZ2V3YWxrLmM6MzY2OiNlbHNlIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbm1tL3BhZ2V3YWxrLmMtMzY3LXN0YXRpYyBpbnQgd2Fsa19odWdldGxiX3JhbmdlKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxubW0vcGFnZXdhbGsuYy0zNzItXG5tbS9wYWdld2Fsay5jOjM3MzojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xubW0vcGFnZXdhbGsuYy0zNzQtXG4tLVxubW0vcm1hcC5jPTMxMTQ9dm9pZCBybWFwX3dhbGtfbG9ja2VkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN0cnVjdCBybWFwX3dhbGtfY29udHJvbCAqcndjKVxuLS1cbm1tL3JtYXAuYy0zMTIzLVxubW0vcm1hcC5jOjMxMjQ6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL3JtYXAuYy0zMTI1LS8qXG4tLVxubW0vcm1hcC5jPTMxNDQ9dm9pZCBodWdldGxiX2FkZF9uZXdfYW5vbl9ybWFwKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tLVxubW0vcm1hcC5jLTMxNTYtfVxubW0vcm1hcC5jOjMxNTc6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cbi0tXG5tbS9zcGFyc2Utdm1lbW1hcC5jPTMxMT12b2lkIHZtZW1tYXBfd3Jwcm90ZWN0X2h2byh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxuLS1cbm1tL3NwYXJzZS12bWVtbWFwLmMtMzIyLVxubW0vc3BhcnNlLXZtZW1tYXAuYzozMjM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxubW0vc3BhcnNlLXZtZW1tYXAuYy0zMjQtc3RhdGljIF9fbWVtaW5pdCBzdHJ1Y3QgcGFnZSAqdm1lbW1hcF9nZXRfdGFpbCh1bnNpZ25lZCBpbnQgb3JkZXIsIHN0cnVjdCB6b25lICp6b25lKVxuLS1cbm1tL3VzZXJmYXVsdGZkLmM9NzM0PXN0YXRpYyBpbnQgbWZpbGxfYXRvbWljX3B0ZV9wb2lzb24oc3RydWN0IG1maWxsX3N0YXRlICpzdGF0ZSlcbi0tXG5tbS91c2VyZmF1bHRmZC5jLTc3MC1cbm1tL3VzZXJmYXVsdGZkLmM6NzcxOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS91c2VyZmF1bHRmZC5jLTc3Mi0vKlxuLS1cbm1tL3VzZXJmYXVsdGZkLmM9Nzc3PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3NpemVfdCBtZmlsbF9hdG9taWNfaHVnZXRsYihcbi0tXG5tbS91c2VyZmF1bHRmZC5jLTkzNC19XG5tbS91c2VyZmF1bHRmZC5jOjkzNTojZWxzZSAvKiAhQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xubW0vdXNlcmZhdWx0ZmQuYy05MzYtLyogZmFpbCBhdCBidWlsZCB0aW1lIGlmIGdjYyBhdHRlbXB0cyB0byB1c2UgdGhpcyAqL1xubW0vdXNlcmZhdWx0ZmQuYz05Mzc9ZXh0ZXJuIHNzaXplX3QgbWZpbGxfYXRvbWljX2h1Z2V0bGIoc3RydWN0IHVzZXJmYXVsdGZkX2N0eCAqY3R4LFxuLS1cbm1tL3VzZXJmYXVsdGZkLmMtOTQyLVx0XHRcdFx0ICAgIHVmZmRfZmxhZ3NfdCBmbGFncyk7XG5tbS91c2VyZmF1bHRmZC5jOjk0MzojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xubW0vdXNlcmZhdWx0ZmQuYy05NDQtXG4tLVxubW0vdXNlcmZhdWx0ZmQuYz0yNjEzPXN0YXRpYyBpbmxpbmUgc3RydWN0IHVmZmRfbXNnIHVzZXJmYXVsdF9tc2codW5zaWduZWQgbG9uZyBhZGRyZXNzLFxuLS1cbm1tL3VzZXJmYXVsdGZkLmMtMjY0OC1cbm1tL3VzZXJmYXVsdGZkLmM6MjY0OTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vdXNlcmZhdWx0ZmQuYy0yNjUwLS8qXG4tLVxubW0vdXNlcmZhdWx0ZmQuYz0yNzA1PXN0YXRpYyBpbmxpbmUgYm9vbCB1c2VyZmF1bHRmZF9odWdlX211c3Rfd2FpdChzdHJ1Y3QgdXNlcmZhdWx0ZmRfY3R4ICpjdHgsXG4tLVxubW0vdXNlcmZhdWx0ZmQuYy0yNzEyLX1cbm1tL3VzZXJmYXVsdGZkLmM6MjcxMzojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xubW0vdXNlcmZhdWx0ZmQuYy0yNzE0LVxuLS1cbm1tL3ZtYWxsb2MuYz05ND1zdGF0aWMgaW50IHZtYXBfcHRlX3JhbmdlKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxubW0vdm1hbGxvYy5jLTEyMS1cbm1tL3ZtYWxsb2MuYzoxMjI6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL3ZtYWxsb2MuYy0xMjMtXHRcdHNpemUgPSBhcmNoX3ZtYXBfcHRlX3JhbmdlX21hcF9zaXplKGFkZHIsIGVuZCwgcGZuLCBtYXhfcGFnZV9zaGlmdCk7XG4tLVxubW0vdm1hbGxvYy5jPTM2Nj1zdGF0aWMgdm9pZCB2dW5tYXBfcHRlX3JhbmdlKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxubW0vdm1hbGxvYy5jLTM3Ni1cdGRvIHtcbm1tL3ZtYWxsb2MuYzozNzc6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0Vcbm1tL3ZtYWxsb2MuYy0zNzgtXHRcdHNpemUgPSBhcmNoX3ZtYXBfcHRlX3JhbmdlX3VubWFwX3NpemUoYWRkciwgcHRlKTtcbi0tXG5tbS92bXN0YXQuYz0xMTg4PWNvbnN0IGNoYXIgKiBjb25zdCB2bXN0YXRfdGV4dFtdID0ge1xuLS1cbm1tL3Ztc3RhdC5jLTEyOTMtXHRbSShQR1JFRklMTCldXHRcdFx0XHQ9IFwmIzM0O3BncmVmaWxsXCYjMzQ7LFxubW0vdm1zdGF0LmM6MTI5NDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxubW0vdm1zdGF0LmMtMTI5NS1cdFtJKE5SX0hVR0VUTEIpXVx0XHRcdFx0PSBcJiMzNDtucl9odWdldGxiXCYjMzQ7LFxuLS1cbm1tL3Ztc3RhdC5jLTEzODMtXG5tbS92bXN0YXQuYzoxMzg0OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXG5tbS92bXN0YXQuYy0xMzg1LVx0W0koSFRMQl9CVUREWV9QR0FMTE9DKV1cdFx0XHQ9IFwmIzM0O2h0bGJfYnVkZHlfYWxsb2Nfc3VjY2Vzc1wmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDk5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSFVHRVRMQl9QQUdFIENvbmZpZ3VyYXRpb24gYW5kIGBhbGxvY19odWdldGxiX2ZvbGlvYCBGdW5jdGlvbioqCgpPa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBoZXJlIGlzIGBIVUdFVExCX1BBR0VgLiBNeSBwcmltYXJ5IGZvY3VzIGlzIG9uIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgZnVuY3Rpb24uIEhvbGQgb24gYSBzZWNvbmQsIGlzIHRoaXMgYSAqcmVhbGx5KiBob3QtcGF0aCBmdW5jdGlvbj8gTGV0IG1lIHRoaW5rLi4uIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgaHVnZXRsYiBmb2xpbyBhbGxvY2F0aW9uLCBzcGVjaWZpY2FsbHkgZHVyaW5nIHBhZ2UgZmF1bHRzIG9uIGh1Z2V0bGJmcyBvciB3aGVuIHVzaW5nIGBtbWFwYCB3aXRoIGBNQVBfSFVHRVRMQmAuIEFscmlnaHQsIGl0JiMzOTtzIG5vdCBhICpnZW5lcmljKiBob3QtcGF0aCBsaWtlIGBrbWFsbG9jYCBvciBgcGFnZV9mYXVsdGAuIEl0JiMzOTtzIGRlZmluaXRlbHkgc3BlY2lmaWMgdG8gdGhlIGh1Z2V0bGIgc3Vic3lzdGVtLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZCwgdGhvdWdoLiBSaWdodCwgdGhlIHBhdGNoIG1vZGlmaWVzIGBhbGxvY19odWdldGxiX2ZvbGlvYC4gVGhlIGJ1ZyBiZWluZyBmaXhlZCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGB1c2VkX2hwYWdlc2Agbm90IGJlaW5nIGNvcnJlY3RseSByZXN0b3JlZCB1bmRlciB2ZXJ5IHNwZWNpZmljIGNvbmRpdGlvbnMgd2l0aGluIGh1Z2V0bGIgZm9saW8gYWxsb2NhdGlvbjogd2hlbiBgbWFwX2NoZ2AsIGBnYmxfY2hnICZndDsgMGAsIGFuZCBgc3Bvb2xgIGFyZSBhbGwgdHJ1ZS4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc28gZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZCBoZXJlLgoKSnVzdCB0byBiZSBzdXJlLCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2Agc2lnbmF0dXJlIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBJJiMzOTttIG1pc3NpbmcuIE5vcGUsIHNlZW1zIGxpa2UgYGFsbG9jX2h1Z2V0bGJfZm9saW9gIGlzIHRoZSBwcmltYXJ5IG9uZSB0byBleGFtaW5lLiBPaCwgd2FpdC4uLiBpcyB0aGlzIGZ1bmN0aW9uIGBzdGF0aWNgIG9yIGV4cG9ydGVkPyBMZXQgbWUgc2VlLiBBaCwgZm91bmQgaXQsIGl0JiMzOTtzIGRlZmluZWQgaW4gYG1tL2h1Z2V0bGIuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxsb2NfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2h1Z2V0bGIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdldGxiLmM9MjE0OT1zdHJ1Y3QgZm9saW8gKmFsbG9jX2J1ZGR5X2h1Z2V0bGJfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMjE3Mi1cbm1tL2h1Z2V0bGIuYzoyMTczOnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19yZXNlcnZlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxubW0vaHVnZXRsYi5jLTIxNzQtXHRcdG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzaylcbi0tXG5tbS9odWdldGxiLmMtMjE5My0vKiBmb2xpbyBtaWdyYXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gKi9cbm1tL2h1Z2V0bGIuYzoyMTk0OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19ub2RlbWFzayhzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgcHJlZmVycmVkX25pZCxcbm1tL2h1Z2V0bGIuYy0yMTk1LVx0XHRub2RlbWFza190ICpubWFzaywgZ2ZwX3QgZ2ZwX21hc2ssIGJvb2wgYWxsb3dfYWxsb2NfZmFsbGJhY2spXG4tLVxubW0vaHVnZXRsYi5jPTI1Mjc9c3RhdGljIGxvbmcgdm1hX2RlbF9yZXNlcnZhdGlvbihzdHJ1Y3QgaHN0YXRlICpoLFxuLS1cbm1tL2h1Z2V0bGIuYy0yNTM0LSAqIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgdG8gcmVzdG9yZSByZXNlcnZhdGlvbiBpbmZvcm1hdGlvbiBvbiBlcnJvciBwYXRocy5cbm1tL2h1Z2V0bGIuYzoyNTM1OiAqIEl0IHNob3VsZCBPTkxZIGJlIGNhbGxlZCBmb3IgZm9saW9zIGFsbG9jYXRlZCB2aWEgYWxsb2NfaHVnZXRsYl9mb2xpbygpLFxubW0vaHVnZXRsYi5jLTI1MzYtICogYW5kIHRoZSBodWdldGxiIG11dGV4IHNob3VsZCByZW1haW4gaGVsZCB3aGVuIGNhbGxpbmcgdGhpcyByb3V0aW5lLlxuLS1cbm1tL2h1Z2V0bGIuYy0yNTQxLSAqIDIpIE5vIHJlc2VydmF0aW9uIHdhcyBpbiBwbGFjZSBmb3IgdGhlIHBhZ2UsIHNvIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIGlzXG5tbS9odWdldGxiLmM6MjU0MjogKiAgICBub3Qgc2V0LiAgSG93ZXZlciwgYWxsb2NfaHVnZXRsYl9mb2xpbyBhbHdheXMgdXBkYXRlcyB0aGUgcmVzZXJ2ZSBtYXAuXG5tbS9odWdldGxiLmMtMjU0My0gKlxuLS1cbm1tL2h1Z2V0bGIuYy0yNTUwLSAqXG5tbS9odWdldGxiLmM6MjU1MTogKiBJbiBjYXNlIDIsIHNpbXBseSB1bmRvIHJlc2VydmUgbWFwIG1vZGlmaWNhdGlvbnMgZG9uZSBieSBhbGxvY19odWdldGxiX2ZvbGlvLlxubW0vaHVnZXRsYi5jLTI1NTItICovXG5tbS9odWdldGxiLmM9MjU1Mz12b2lkIHJlc3RvcmVfcmVzZXJ2ZV9vbl9lcnJvcihzdHJ1Y3QgaHN0YXRlICpoLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9odWdldGxiLmMtMjU3OS1cdFx0XHQgKiBUaGlzIGluZGljYXRlcyB0aGVyZSBpcyBhbiBlbnRyeSBpbiB0aGUgcmVzZXJ2ZSBtYXBcbm1tL2h1Z2V0bGIuYzoyNTgwOlx0XHRcdCAqIG5vdCBhZGRlZCBieSBhbGxvY19odWdldGxiX2ZvbGlvLiAgV2Uga25vdyBpdCB3YXMgYWRkZWRcbm1tL2h1Z2V0bGIuYzoyNTgxOlx0XHRcdCAqIGJlZm9yZSB0aGUgYWxsb2NfaHVnZXRsYl9mb2xpbyBjYWxsLCBvdGhlcndpc2Vcbm1tL2h1Z2V0bGIuYy0yNTgyLVx0XHRcdCAqIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIHdvdWxkIGJlIHNldCBvbiB0aGUgZm9saW8uXG4tLVxubW0vaHVnZXRsYi5jPTI5MjA9dHlwZWRlZiBlbnVtIHtcbi0tXG5tbS9odWdldGxiLmMtMjk0NS0gKi9cbm1tL2h1Z2V0bGIuYzoyOTQ2OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpbyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbm1tL2h1Z2V0bGIuYy0yOTQ3LVx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCBjb3dfZnJvbV9vd25lcilcbi0tXG5tbS9odWdldGxiLmM9NDkxMT1pbnQgY29weV9odWdldGxiX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmMsXG4tLVxubW0vaHVnZXRsYi5jLTUwMzItXHRcdFx0XHQvKiBEbyBub3QgdXNlIHJlc2VydmUgYXMgaXQmIzM5O3MgcHJpdmF0ZSBvd25lZCAqL1xubW0vaHVnZXRsYi5jOjUwMzM6XHRcdFx0XHRuZXdfZm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGFkZHIsIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy01MDM0LVx0XHRcdFx0aWYgKElTX0VSUihuZXdfZm9saW8pKSB7XG4tLVxubW0vaHVnZXRsYi5jPTU1MDE9c3RhdGljIHZtX2ZhdWx0X3QgaHVnZXRsYl93cChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5tbS9odWdldGxiLmMtNTU4Mi1cdHNwaW5fdW5sb2NrKHZtZi1cdTAwM2VwdGwpO1xubW0vaHVnZXRsYi5jOjU1ODM6XHRuZXdfZm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKHZtYSwgdm1mLVx1MDAzZWFkZHJlc3MsIGNvd19mcm9tX293bmVyKTtcbm1tL2h1Z2V0bGIuYy01NTg0LVxuLS1cbm1tL2h1Z2V0bGIuYz01NzczPXN0YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJfbm9fcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbi0tXG5tbS9odWdldGxiLmMtNTg0Mi1cbm1tL2h1Z2V0bGIuYzo1ODQzOlx0XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8odm1hLCB2bWYtXHUwMDNlYWRkcmVzcywgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTU4NDQtXHRcdGlmIChJU19FUlIoZm9saW8pKSB7XG4tLVxubW0vaHVnZXRsYi5jPTYwMjM9dm1fZmF1bHRfdCBodWdldGxiX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9odWdldGxiLmMtNjI1OC0gKi9cbm1tL2h1Z2V0bGIuYzo2MjU5OnN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fdm1hKHN0cnVjdCBoc3RhdGUgKmgsXG5tbS9odWdldGxiLmMtNjI2MC1cdFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcylcbi0tXG5tbS9odWdldGxiLmMtNjI3NS1cdCAqL1xubW0vaHVnZXRsYi5jOjYyNzY6XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soaCwgbm9kZSwgbm9kZW1hc2ssIGdmcF9tYXNrLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtNjI3Ny1cdG1wb2xfY29uZF9wdXQobXBvbCk7XG4tLVxubW0vaHVnZXRsYi5jPTYyODY9aW50IGh1Z2V0bGJfbWZpbGxfYXRvbWljX3B0ZShwdGVfdCAqZHN0X3B0ZSxcbi0tXG5tbS9odWdldGxiLmMtNjM0Mi1cbm1tL2h1Z2V0bGIuYzo2MzQzOlx0XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8oZHN0X3ZtYSwgZHN0X2FkZHIsIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy02MzQ0LVx0XHRpZiAoSVNfRVJSKGZvbGlvKSkge1xuLS1cbm1tL2h1Z2V0bGIuYy02MzY4LVx0XHRcdCAqL1xubW0vaHVnZXRsYi5jOjYzNjk6XHRcdFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvX3ZtYShoLCBkc3Rfdm1hLCBkc3RfYWRkcik7XG5tbS9odWdldGxiLmMtNjM3MC1cdFx0XHRpZiAoIWZvbGlvKSB7XG4tLVxubW0vaHVnZXRsYi5jLTYzODktXG5tbS9odWdldGxiLmM6NjM5MDpcdFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGRzdF9hZGRyLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtNjM5MS1cdFx0aWYgKElTX0VSUihmb2xpbykpIHtcbi0tXG5tbS9odWdldGxiLmM9NjY4Mz1sb25nIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbm1tL2h1Z2V0bGIuYy02ODAzLVx0XHRcdCAqIG1hcCBiZXR3ZWVuIHJlZ2lvbl9jaGcgYW5kIHJlZ2lvbl9hZGQuICBUaGlzXG5tbS9odWdldGxiLmM6NjgwNDpcdFx0XHQgKiBpbmRpY2F0ZXMgYSByYWNlIHdpdGggYWxsb2NfaHVnZXRsYl9mb2xpby4gIEFkanVzdFxubW0vaHVnZXRsYi5jLTY4MDUtXHRcdFx0ICogdGhlIHN1YnBvb2wgYW5kIHJlc2VydmUgY291bnRzIG1vZGlmaWVkIGFib3ZlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NjEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGBhbGxvY19odWdldGxiX2ZvbGlvYCYjMzk7cyBTY29wZSBhbmQgVXNhZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGFsbG9jX2h1Z2V0bGJfZm9saW9gIGZ1bmN0aW9uLiBJbnRlcmVzdGluZywgaXQmIzM5O3MgKm5vdCogc3RhdGljLCBtZWFuaW5nIGl0JiMzOTtzIHBvdGVudGlhbGx5IHVzZWQgb3V0c2lkZSB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LiBIb2xkIG9uLCBsZXQgbWUgcmVmcmVzaCBteSBtZW1vcnkuIFJpZ2h0LCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGBzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW8oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCBjb3dfZnJvbV9vd25lcilgLiBOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmV4cG9ydGVkKiB0byBvdGhlciBtb2R1bGVzLCBvciBpcyBpdCBqdXN0IHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gaXRzIGRlZmluaW5nIGZpbGU/IEl0JiMzOTtzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBJIG5lZWQgdG8gcXVpY2tseSBjaGVjayB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLCB0byBhc2NlcnRhaW4gd2hldGhlciBpdCYjMzk7cyBzYWZlIHRvIG1vZGlmeSBvciBub3QuIExldCYjMzk7cyBzZWUuLi4gYSBxdWljayBjcm9zcy1yZWZlcmVuY2UgY2hlY2sgc2hvdWxkIGRvIHRoZSB0cmljay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxsb2NfaHVnZXRsYl9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0PTE4MT1hcmUgYWxsb2NhdGVkIGFuZCBpbnN0YW50aWF0ZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgbWFwcGluZy4gIFRoZSBhbGxvY2F0aW9uXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE4MjppcyBwZXJmb3JtZWQgd2l0aGluIHRoZSByb3V0aW5lIGFsbG9jX2h1Z2V0bGJfZm9saW8oKTo6XG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE4My1cbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q6MTg0Olx0c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0xODUtXHRcdFx0XHQgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IGF2b2lkX3Jlc2VydmUpXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE4Ni1cbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q6MTg3OmFsbG9jX2h1Z2V0bGJfZm9saW8gaXMgcGFzc2VkIGEgVk1BIHBvaW50ZXIgYW5kIGEgdmlydHVhbCBhZGRyZXNzLCBzbyBpdCBjYW5cbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3QtMTg4LWNvbnN1bHQgdGhlIHJlc2VydmF0aW9uIG1hcCB0byBkZXRlcm1pbmUgaWYgYSByZXNlcnZhdGlvbiBleGlzdHMuICBJbiBhZGRpdGlvbixcbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q6MTg5OmFsbG9jX2h1Z2V0bGJfZm9saW8gdGFrZXMgdGhlIGFyZ3VtZW50IGF2b2lkX3Jlc2VydmUgd2hpY2ggaW5kaWNhdGVzIHJlc2VydmVzXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE5MC1zaG91bGQgbm90IGJlIHVzZWQgZXZlbiBpZiBpdCBhcHBlYXJzIHRoZXkgaGF2ZSBiZWVuIHNldCBhc2lkZSBmb3IgdGhlXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdD0yMDc9aXMgY2FsbGVkLiAgVGhpcyByb3V0aW5lIHRha2VzIHR3byBhcmd1bWVudHMgcmVsYXRlZCB0byByZXNlcnZhdGlvbnM6XG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0yMDktLSBhdm9pZF9yZXNlcnZlLCB0aGlzIGlzIHRoZSBzYW1lIHZhbHVlL2FyZ3VtZW50IHBhc3NlZCB0b1xuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoyMTA6ICBhbGxvY19odWdldGxiX2ZvbGlvKCkuXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTIxMS0tIGNoZywgZXZlbiB0aG91Z2ggdGhpcyBhcmd1bWVudCBpcyBvZiB0eXBlIGxvbmcgb25seSB0aGUgdmFsdWVzIDAgb3IgMSBhcmVcbi0tXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0PTI0Nz1JdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSByZXNlcnZlIG1hcCBjb3VsZCBoYXZlIGJlZW4gY2hhbmdlZCBiZXR3ZWVuIHRoZSBjYWxsXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjI0ODp0byB2bWFfbmVlZHNfcmVzZXJ2YXRpb24oKSBhdCB0aGUgYmVnaW5uaW5nIG9mIGFsbG9jX2h1Z2V0bGJfZm9saW8oKSBhbmQgdGhlXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTI0OS1jYWxsIHRvIHZtYV9jb21taXRfcmVzZXJ2YXRpb24oKSBhZnRlciB0aGUgZm9saW8gd2FzIGFsbG9jYXRlZC4gIFRoaXMgd291bGRcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdD0xMTY9SFBBR0VfUkVTVl9PV05FUuagh+W/l+iiq+iuvue9ru+8jOS7peihqOaYjuivpVZNQeaLpeaciemihOeVmeOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE0NS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE0NjrlvZPkuI7pooTnlZnnm7jlhbPnmoTlt6jpobXlnKjnm7jlupTnmoTmmKDlsITkuK3ooqvliIbphY3lkozlrp7kvovljJbml7bvvIzpooTnlZnlsLHooqvmtojogJfkuobjgILor6XliIbphY3mmK/lnKjlh73mlbBhbGxvY19odWdldGxiX2ZvbGlvLi4uXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0xNDct5Lit6L+b6KGM55qEOjpcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE0OC1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE0OTpcdHN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpbyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE1MC1cdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgYXZvaWRfcmVzZXJ2ZSlcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE1MS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE1MjphbGxvY19odWdldGxiX2ZvbGlv6KKr5Lyg6YCS57uZ5LiA5LiqVk1B5oyH6ZKI5ZKM5LiA5Liq6Jma5ouf5Zyw5Z2A77yM5Zug5q2k5a6D5Y+v5Lul5p+l6ZiF6aKE55WZ5pig5bCE5Lul56Gu5a6a5piv5ZCm5a2Y5Zyo6aKE55WZ44CCXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoxNTM65q2k5aSW77yMYWxsb2NfaHVnZXRsYl9mb2xpb+mcgOimgeS4gOS4quWPguaVsGF2b2lkX3Jlc2VydmXvvIzor6Xlj4LmlbDooajnpLrljbPkvb/nnIvotbfmnaXlt7Lnu4/kuLrmjIflrprnmoTlnLDlnYDpooTnlZnkuoZcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE1NC3pooTnlZnvvIzkuZ/kuI3lupTor6Xkvb/nlKjpooTnlZnjgIJhdm9pZF9yZXNlcnZl5Y+C5pWw5pyA5bi46KKr55So5LqO5YaZ5pe25ou36LSd5ZKM6aG16Z2i6L+B56e755qE5oOF5Ya15LiL77yM5Y2z546w5pyJ6aG16Z2i55qE6aKdXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q9MTYwPXZtYV9uZWVkc19yZXNlcnZhdGlvbigp6L+U5Zue55qE5YC86YCa5bi45Li6MOaIljHjgILlpoLmnpzor6XlnLDlnYDlrZjlnKjpooTnlZnvvIzliJnkuLow77yM5aaC5p6c5LiN5a2Y5Zyo6aKE55WZ77yM5YiZ5Li6MeOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE2NS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE2NjotIGF2b2lkX3Jlc2VydmXvvIzov5nmmK/kvKDpgJLnu5lhbGxvY19odWdldGxiX2ZvbGlvKCnnmoTlkIzkuIDkuKrlgLwv5Y+C5pWw44CCXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0xNjctLSBjaGfvvIzlsL3nrqHov5nkuKrlj4LmlbDnmoTnsbvlnovmmK9sb25n77yM5L2G5Y+q5pyJMOaIljHnmoTlgLzooqvkvKDpgJLnu5lkZXF1ZXVlX2h1Z2VfcGFnZV92bWHjgILlpoLmnpzor6XlgLzkuLow77yMXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q9MTkzPVNldFBhZ2VQcml2YXRlKHBhZ2Up5ZKMcmVzdl9odWdlX3BhZ2VzLeOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTIwMi1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjIwMzrlnKhhbGxvY19odWdldGxiX2ZvbGlvKCnlvIDlp4vosIPnlKh2bWFfbmVlZHNfcmVzZXJ2YXRpb24oKeWSjOmhtemdouWIhumFjeWQjuiwg+eUqFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3QtMjA0LXZtYV9jb21taXRfcmVzZXJ2YXRpb24oKeS5i+mXtO+8jOmihOeVmeaYoOWwhOacieWPr+iDveiiq+aUueWPmOOAguWmguaenGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlc+WcqOWFsVxuLS1cbmZzL2h1Z2V0bGJmcy9pbm9kZS5jPTcwMD1zdGF0aWMgbG9uZyBodWdldGxiZnNfZmFsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCxcbi0tXG5mcy9odWdldGxiZnMvaW5vZGUuYy03OTItXHRcdCAqL1xuZnMvaHVnZXRsYmZzL2lub2RlLmM6NzkzOlx0XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8oXHUwMDI2cHNldWRvX3ZtYSwgYWRkciwgZmFsc2UpO1xuZnMvaHVnZXRsYmZzL2lub2RlLmMtNzk0LVx0XHRpZiAoSVNfRVJSKGZvbGlvKSkge1xuLS1cbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTgxMy1cdFx0ICogZm9saW9fdW5sb2NrIGJlY2F1c2UgbG9ja2VkIGJ5IGh1Z2V0bGJfYWRkX3RvX3BhZ2VfY2FjaGUoKVxuZnMvaHVnZXRsYmZzL2lub2RlLmM6ODE0Olx0XHQgKiBmb2xpb19wdXQoKSBkdWUgdG8gcmVmZXJlbmNlIGZyb20gYWxsb2NfaHVnZXRsYl9mb2xpbygpXG5mcy9odWdldGxiZnMvaW5vZGUuYy04MTUtXHRcdCAqL1xuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oPTcwMT1zdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfYWxsb2NfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTcwMi1cdFx0c3RydWN0IG1lbXBvbGljeV9pbnRlcnByZXRlZCAqbXBvbGksIHU4IGFsbG9jX2ZsYWdzKTtcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjcwMzpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW8oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC03MDQtXHRcdFx0XHR1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgY293X2Zyb21fb3duZXIpO1xuaW5jbHVkZS9saW51eC9odWdldGxiLmg6NzA1OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19ub2RlbWFzayhzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgcHJlZmVycmVkX25pZCxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTcwNi1cdFx0XHRcdG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzayxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTcwNy1cdFx0XHRcdGJvb2wgYWxsb3dfYWxsb2NfZmFsbGJhY2spO1xuaW5jbHVkZS9saW51eC9odWdldGxiLmg6NzA4OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19yZXNlcnZlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtNzA5LVx0XHRcdFx0XHQgIG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzayk7XG4tLVxuaW5jbHVkZS9saW51eC9odWdldGxiLmg9MTEyMz1zdGF0aWMgaW5saW5lIHZvaWQgd2FpdF9mb3JfZnJlZWRfaHVnZXRsYl9mb2xpb3Modm9pZClcbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC0xMTI2LVxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MTEyNzpzdGF0aWMgaW5saW5lIHN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpbyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTExMjgtXHRcdFx0XHRcdCAgIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaD0xMTM0PXN0YXRpYyBpbmxpbmUgc3RydWN0IGZvbGlvICpcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjExMzU6YWxsb2NfaHVnZXRsYl9mb2xpb19yZXNlcnZlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMTEzNi1cdFx0XHQgICAgbm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrKVxuLS1cbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oPTExNDE9c3RhdGljIGlubGluZSBzdHJ1Y3QgZm9saW8gKlxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MTE0MjphbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMTE0My1cdFx0XHRub2RlbWFza190ICpubWFzaywgZ2ZwX3QgZ2ZwX21hc2ssXG4tLVxubW0vaHVnZXRsYi5jPTIxNDk9c3RydWN0IGZvbGlvICphbGxvY19idWRkeV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXG4tLVxubW0vaHVnZXRsYi5jLTIxNzItXG5tbS9odWdldGxiLmM6MjE3MzpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fcmVzZXJ2ZShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgcHJlZmVycmVkX25pZCxcbm1tL2h1Z2V0bGIuYy0yMTc0LVx0XHRub2RlbWFza190ICpubWFzaywgZ2ZwX3QgZ2ZwX21hc2spXG4tLVxubW0vaHVnZXRsYi5jLTIxOTMtLyogZm9saW8gbWlncmF0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uICovXG5tbS9odWdldGxiLmM6MjE5NDpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soc3RydWN0IGhzdGF0ZSAqaCwgaW50IHByZWZlcnJlZF9uaWQsXG5tbS9odWdldGxiLmMtMjE5NS1cdFx0bm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrLCBib29sIGFsbG93X2FsbG9jX2ZhbGxiYWNrKVxuLS1cbm1tL2h1Z2V0bGIuYz0yNTI3PXN0YXRpYyBsb25nIHZtYV9kZWxfcmVzZXJ2YXRpb24oc3RydWN0IGhzdGF0ZSAqaCxcbi0tXG5tbS9odWdldGxiLmMtMjUzNC0gKiBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIHRvIHJlc3RvcmUgcmVzZXJ2YXRpb24gaW5mb3JtYXRpb24gb24gZXJyb3IgcGF0aHMuXG5tbS9odWdldGxiLmM6MjUzNTogKiBJdCBzaG91bGQgT05MWSBiZSBjYWxsZWQgZm9yIGZvbGlvcyBhbGxvY2F0ZWQgdmlhIGFsbG9jX2h1Z2V0bGJfZm9saW8oKSxcbm1tL2h1Z2V0bGIuYy0yNTM2LSAqIGFuZCB0aGUgaHVnZXRsYiBtdXRleCBzaG91bGQgcmVtYWluIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgcm91dGluZS5cbi0tXG5tbS9odWdldGxiLmMtMjU0MS0gKiAyKSBObyByZXNlcnZhdGlvbiB3YXMgaW4gcGxhY2UgZm9yIHRoZSBwYWdlLCBzbyBodWdldGxiX3Jlc3RvcmVfcmVzZXJ2ZSBpc1xubW0vaHVnZXRsYi5jOjI1NDI6ICogICAgbm90IHNldC4gIEhvd2V2ZXIsIGFsbG9jX2h1Z2V0bGJfZm9saW8gYWx3YXlzIHVwZGF0ZXMgdGhlIHJlc2VydmUgbWFwLlxubW0vaHVnZXRsYi5jLTI1NDMtICpcbi0tXG5tbS9odWdldGxiLmMtMjU1MC0gKlxubW0vaHVnZXRsYi5jOjI1NTE6ICogSW4gY2FzZSAyLCBzaW1wbHkgdW5kbyByZXNlcnZlIG1hcCBtb2RpZmljYXRpb25zIGRvbmUgYnkgYWxsb2NfaHVnZXRsYl9mb2xpby5cbm1tL2h1Z2V0bGIuYy0yNTUyLSAqL1xubW0vaHVnZXRsYi5jPTI1NTM9dm9pZCByZXN0b3JlX3Jlc2VydmVfb25fZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vaHVnZXRsYi5jLTI1NzktXHRcdFx0ICogVGhpcyBpbmRpY2F0ZXMgdGhlcmUgaXMgYW4gZW50cnkgaW4gdGhlIHJlc2VydmUgbWFwXG5tbS9odWdldGxiLmM6MjU4MDpcdFx0XHQgKiBub3QgYWRkZWQgYnkgYWxsb2NfaHVnZXRsYl9mb2xpby4gIFdlIGtub3cgaXQgd2FzIGFkZGVkXG5tbS9odWdldGxiLmM6MjU4MTpcdFx0XHQgKiBiZWZvcmUgdGhlIGFsbG9jX2h1Z2V0bGJfZm9saW8gY2FsbCwgb3RoZXJ3aXNlXG5tbS9odWdldGxiLmMtMjU4Mi1cdFx0XHQgKiBodWdldGxiX3Jlc3RvcmVfcmVzZXJ2ZSB3b3VsZCBiZSBzZXQgb24gdGhlIGZvbGlvLlxuLS1cbm1tL2h1Z2V0bGIuYz0yOTIwPXR5cGVkZWYgZW51bSB7XG4tLVxubW0vaHVnZXRsYi5jLTI5NDUtICovXG5tbS9odWdldGxiLmM6Mjk0NjpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW8oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG5tbS9odWdldGxiLmMtMjk0Ny1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgY293X2Zyb21fb3duZXIpXG4tLVxubW0vaHVnZXRsYi5jPTQ5MTE9aW50IGNvcHlfaHVnZXRsYl9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVjdCAqc3JjLFxuLS1cbm1tL2h1Z2V0bGIuYy01MDMyLVx0XHRcdFx0LyogRG8gbm90IHVzZSByZXNlcnZlIGFzIGl0JiMzOTtzIHByaXZhdGUgb3duZWQgKi9cbm1tL2h1Z2V0bGIuYzo1MDMzOlx0XHRcdFx0bmV3X2ZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBhZGRyLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtNTAzNC1cdFx0XHRcdGlmIChJU19FUlIobmV3X2ZvbGlvKSkge1xuLS1cbm1tL2h1Z2V0bGIuYz01NTAxPXN0YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJfd3Aoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxubW0vaHVnZXRsYi5jLTU1ODItXHRzcGluX3VubG9jayh2bWYtXHUwMDNlcHRsKTtcbm1tL2h1Z2V0bGIuYzo1NTgzOlx0bmV3X2ZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyh2bWEsIHZtZi1cdTAwM2VhZGRyZXNzLCBjb3dfZnJvbV9vd25lcik7XG5tbS9odWdldGxiLmMtNTU4NC1cbi0tXG5tbS9odWdldGxiLmM9NTc3Mz1zdGF0aWMgdm1fZmF1bHRfdCBodWdldGxiX25vX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxubW0vaHVnZXRsYi5jLTU4NDItXG5tbS9odWdldGxiLmM6NTg0MzpcdFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKHZtYSwgdm1mLVx1MDAzZWFkZHJlc3MsIGZhbHNlKTtcbm1tL2h1Z2V0bGIuYy01ODQ0LVx0XHRpZiAoSVNfRVJSKGZvbGlvKSkge1xuLS1cbm1tL2h1Z2V0bGIuYz02MDIzPXZtX2ZhdWx0X3QgaHVnZXRsYl9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vaHVnZXRsYi5jLTYyNTgtICovXG5tbS9odWdldGxiLmM6NjI1OTpzdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvX3ZtYShzdHJ1Y3QgaHN0YXRlICpoLFxubW0vaHVnZXRsYi5jLTYyNjAtXHRcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpXG4tLVxubW0vaHVnZXRsYi5jLTYyNzUtXHQgKi9cbm1tL2h1Z2V0bGIuYzo2Mjc2Olx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKGgsIG5vZGUsIG5vZGVtYXNrLCBnZnBfbWFzaywgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTYyNzctXHRtcG9sX2NvbmRfcHV0KG1wb2wpO1xuLS1cbm1tL2h1Z2V0bGIuYz02Mjg2PWludCBodWdldGxiX21maWxsX2F0b21pY19wdGUocHRlX3QgKmRzdF9wdGUsXG4tLVxubW0vaHVnZXRsYi5jLTYzNDItXG5tbS9odWdldGxiLmM6NjM0MzpcdFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGRzdF9hZGRyLCBmYWxzZSk7XG5tbS9odWdldGxiLmMtNjM0NC1cdFx0aWYgKElTX0VSUihmb2xpbykpIHtcbi0tXG5tbS9odWdldGxiLmMtNjM2OC1cdFx0XHQgKi9cbm1tL2h1Z2V0bGIuYzo2MzY5Olx0XHRcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpb192bWEoaCwgZHN0X3ZtYSwgZHN0X2FkZHIpO1xubW0vaHVnZXRsYi5jLTYzNzAtXHRcdFx0aWYgKCFmb2xpbykge1xuLS1cbm1tL2h1Z2V0bGIuYy02Mzg5LVxubW0vaHVnZXRsYi5jOjYzOTA6XHRcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBkc3RfYWRkciwgZmFsc2UpO1xubW0vaHVnZXRsYi5jLTYzOTEtXHRcdGlmIChJU19FUlIoZm9saW8pKSB7XG4tLVxubW0vaHVnZXRsYi5jPTY2ODM9bG9uZyBodWdldGxiX3Jlc2VydmVfcGFnZXMoc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5tbS9odWdldGxiLmMtNjgwMy1cdFx0XHQgKiBtYXAgYmV0d2VlbiByZWdpb25fY2hnIGFuZCByZWdpb25fYWRkLiAgVGhpc1xubW0vaHVnZXRsYi5jOjY4MDQ6XHRcdFx0ICogaW5kaWNhdGVzIGEgcmFjZSB3aXRoIGFsbG9jX2h1Z2V0bGJfZm9saW8uICBBZGp1c3Rcbm1tL2h1Z2V0bGIuYy02ODA1LVx0XHRcdCAqIHRoZSBzdWJwb29sIGFuZCByZXNlcnZlIGNvdW50cyBtb2RpZmllZCBhYm92ZVxuLS1cbm1tL21lbWZkLmM9Njg9c3RydWN0IGZvbGlvICptZW1mZF9hbGxvY19mb2xpbyhzdHJ1Y3QgZmlsZSAqbWVtZmQsIHBnb2ZmX3QgaWR4KVxuLS1cbm1tL21lbWZkLmMtOTMtXG5tbS9tZW1mZC5jOjk0Olx0XHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW9fcmVzZXJ2ZShoLFxubW0vbWVtZmQuYy05NS1cdFx0XHRcdFx0XHQgICAgbnVtYV9ub2RlX2lkKCksXG4tLVxubW0vbWVtcG9saWN5LmM9MTQzNT1zdGF0aWMgc3RydWN0IGZvbGlvICphbGxvY19taWdyYXRpb25fdGFyZ2V0X2J5X21wb2woc3RydWN0IGZvbGlvICpzcmMsXG4tLVxubW0vbWVtcG9saWN5LmMtMTQ1NC1cdFx0bm9kZW1hc2sgPSBwb2xpY3lfbm9kZW1hc2soZ2ZwLCBwb2wsIGlseCwgXHUwMDI2bmlkKTtcbm1tL21lbXBvbGljeS5jOjE0NTU6XHRcdHJldHVybiBhbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKGgsIG5pZCwgbm9kZW1hc2ssIGdmcCxcbm1tL21lbXBvbGljeS5jLTE0NTYtXHRcdFx0XHRodGxiX2FsbG93X2FsbG9jX2ZhbGxiYWNrKE1SX01FTVBPTElDWV9NQklORCkpO1xuLS1cbm1tL21pZ3JhdGUuYz0yMTk5PXN0cnVjdCBmb2xpbyAqYWxsb2NfbWlncmF0aW9uX3RhcmdldChzdHJ1Y3QgZm9saW8gKnNyYywgdW5zaWduZWQgbG9uZyBwcml2YXRlKVxuLS1cbm1tL21pZ3JhdGUuYy0yMjE2LVx0XHRnZnBfbWFzayA9IGh0bGJfbW9kaWZ5X2FsbG9jX21hc2soaCwgZ2ZwX21hc2spO1xubW0vbWlncmF0ZS5jOjIyMTc6XHRcdHJldHVybiBhbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKGgsIG5pZCxcbm1tL21pZ3JhdGUuYy0yMjE4LVx0XHRcdFx0XHRcdG10Yy1cdTAwM2VubWFzaywgZ2ZwX21hc2ssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MDE3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIHNvIGBhbGxvY19odWdldGxiX2ZvbGlvYC4uLiB0aGF0JiMzOTtzIHRoZSBrZXkgZnVuY3Rpb24uIEl0JiMzOTtzIGV4cG9ydGVkLCB3aGljaCBpcyBnb29kOyBtYWtlcyBpdCBhY2Nlc3NpYmxlLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgZW50cnkgcG9pbnQuIFRoZSBpbmNsdWRlIGZpbGUgYGluY2x1ZGUvbGludXgvaHVnZXRsYi5oYCB0ZWxscyBtZSBpdHMgZGVmaW5pdGlvbiwgYW5kIHRoZSB1c2FnZXMgaW4gYGZzL2h1Z2V0bGJmcy9pbm9kZS5jYCBhbmQgYG1tL2h1Z2V0bGIuY2AgZ2l2ZSBtZSBzb21lIGNvbnRleHQuIEl0JiMzOTtzIGRlZmluaXRlbHkgYSB2aWFibGUgZnV6emluZyB0YXJnZXQsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIHBhdGNoIGlzIGZvY3VzZWQgb24gaXQuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGZ1bmN0aW9ucyBoaWRpbmcgaW4gdGhlIHNoYWRvd3MgdGhhdCB0aGlzIHBhdGNoIGluZGlyZWN0bHkgdG91Y2hlcy4gTm9wZSwgYGFsbG9jX2h1Z2V0bGJfZm9saW9gIHNlZW1zIHRvIGJlIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiAKClJpZ2h0LCB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIGFuZCBpdCYjMzk7cyB0aGUgcmlnaHQgb25lLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucywganVzdCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcywgcHJvYmFibHkgYGZzL2h1Z2V0bGJmcy9LY29uZmlnYCBvciBzb21ldGhpbmcgc2ltaWxhciwganVzdCB0byBiZSBjZXJ0YWluLiBKdXN0IG1ha2luZyBzdXJlIG5vIG90aGVyIG9wdGlvbnMgYXJlIHJlbGV2YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSFVHRVRMQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3NoL21tL0tjb25maWc9MTU4PWNob2ljZVxuLS1cbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjMtXG5hcmNoL3NoL21tL0tjb25maWc6MTY0OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV82NEtcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNjUtXHRib29sIFwmIzM0OzY0a0JcJiMzNDtcbi0tXG5hcmNoL3NoL21tL0tjb25maWctMTY3LVxuYXJjaC9zaC9tbS9LY29uZmlnOjE2ODpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfMjU2S1xuYXJjaC9zaC9tbS9LY29uZmlnLTE2OS1cdGJvb2wgXCYjMzQ7MjU2a0JcJiMzNDtcbi0tXG5hcmNoL3NoL21tL0tjb25maWctMTcxLVxuYXJjaC9zaC9tbS9LY29uZmlnOjE3Mjpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfMU1CXG5hcmNoL3NoL21tL0tjb25maWctMTczLVx0Ym9vbCBcJiMzNDsxTUJcJiMzNDtcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzQtXG5hcmNoL3NoL21tL0tjb25maWc6MTc1OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV80TUJcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0OzRNQlwmIzM0O1xuLS1cbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzgtXG5hcmNoL3NoL21tL0tjb25maWc6MTc5OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV82NE1CXG5hcmNoL3NoL21tL0tjb25maWctMTgwLVx0Ym9vbCBcJiMzNDs2NE1CXCYjMzQ7XG4tLVxuZnMvS2NvbmZpZz0yNDc9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXG4tLVxuZnMvS2NvbmZpZy0yNDktXG5mcy9LY29uZmlnOjI1MDptZW51Y29uZmlnIEhVR0VUTEJGU1xuZnMvS2NvbmZpZy0yNTEtXHRib29sIFwmIzM0O0h1Z2VUTEIgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL0tjb25maWc9MjYyPWlmIEhVR0VUTEJGU1xuZnMvS2NvbmZpZzoyNjM6Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQX0RFRkFVTFRfT05cbmZzL0tjb25maWctMjY0LVx0Ym9vbCBcJiMzNDtIdWdlVExCIFZtZW1tYXAgT3B0aW1pemF0aW9uIChIVk8pIGRlZmF1bHRzIHRvIG9uXCYjMzQ7XG4tLVxuZnMvS2NvbmZpZz0yNzE9ZW5kaWYgIyBIVUdFVExCRlNcbmZzL0tjb25maWctMjcyLVxuZnMvS2NvbmZpZzoyNzM6Y29uZmlnIEhVR0VUTEJfUEFHRVxuZnMvS2NvbmZpZy0yNzQtXHRkZWZfYm9vbCBIVUdFVExCRlNcbi0tXG5mcy9LY29uZmlnLTI3Ni1cbmZzL0tjb25maWc6Mjc3OmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxuZnMvS2NvbmZpZy0yNzgtXHRkZWZfYm9vbCBIVUdFVExCX1BBR0Vcbi0tXG5mcy9LY29uZmlnLTI4Mi1cbmZzL0tjb25maWc6MjgzOmNvbmZpZyBIVUdFVExCX1BNRF9QQUdFX1RBQkxFX1NIQVJJTkdcbmZzL0tjb25maWctMjg0LVx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXG4tLVxubW0vS2NvbmZpZz03MDY9Y29uZmlnIEFSQ0hfSEFTX1BNRF9TT0ZUTEVBVkVTXG4tLVxubW0vS2NvbmZpZy03MDgtXG5tbS9LY29uZmlnOjcwOTpjb25maWcgSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEVcbm1tL0tjb25maWctNzEwLVx0ZGVmX2Jvb2wgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE3OAoJCQkJCQkJb3V0cHV0OiAxMDAKCQkJCQkJCXRob3VnaHRzOiAxNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEhVR0VUTEJGUyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gdGhlIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIGl0JiMzOTtzIGNsZWFyIHRoYXQgYEhVR0VUTEJGU2AgaXMgdGhlICpwcmltYXJ5KiBjb25maWd1cmF0aW9uIGl0ZW0gb2YgaW50ZXJlc3QuIFRoZSBkZWZpbml0aW9uIG9mIGBIVUdFVExCX1BBR0VgIChgZGVmX2Jvb2wgSFVHRVRMQkZTYCkgY29uZmlybXMgdGhhdCBgSFVHRVRMQkZTYCBpcyB0aGUgY29yZSBjb250cm9sLiBUaGVyZWZvcmUsIGVuYWJsaW5nIGBIVUdFVExCRlNgIGlzIHRoZSBrZXkgYWN0aW9uLgoKSSYjMzk7bGwgcmV0dXJuIGJvdGggYEhVR0VUTEJGU2AgYW5kIGBIVUdFVExCX1BBR0VgIGluIHRoZSBvdXRwdXQsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIGNvdmVyIGFueSBlZGdlIGNhc2VzLiBIb3dldmVyLCB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIGlzIGVzc2VudGlhbDogZW5hYmxpbmcgYEhVR0VUTEJGU2AgaXMgZW5vdWdoIHRvIHRyaWdnZXIgdGhlIGRlc2lyZWQgYmVoYXZpb3IuCgpIZXJlJiMzOTtzIG15IGRpc3RpbGxlZCBzdW1tYXJ5OiB0aGlzIHBhdGNoIGlzIHJlbGV2YW50IHRvIGZ1enppbmcgYmVjYXVzZSBvZiB0aGUgY2hhbmdlcyBpdCBpbnRyb2R1Y2VzIGluIGZvbGlvIGFsbG9jYXRpb24gZm9yIGh1Z2UgcGFnZXMuIFRoZSBrZXkgZnVuY3Rpb24gaXMgYGFsbG9jX2h1Z2V0bGJfZm9saW9gLiBFbmFibGluZyB0aGUgY29uZmlncyBgSFVHRVRMQkZTYCBhbmQgYEhVR0VUTEJfUEFHRWAgd2lsbCBiZSBuZWNlc3NhcnkuIFRoZSBidWcgZml4ZWQgaXMgYSBmdW5jdGlvbmFsIGlzc3VlIHdpdGhpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0sIGRlYWxpbmcgd2l0aCBjb3JyZWN0IHJlc3RvcmF0aW9uIG9mIHVzZWQgaHBhZ2VzIGR1cmluZyBlcnJvciBwYXRocyB3aGVuIGFsbG9jYXRpbmcgZnJvbSB0aGUgZ2xvYmFsIHBvb2wuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIVUdFVExCRlMmIzM0OywKICAgICYjMzQ7SFVHRVRMQl9QQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWxsb2NfaHVnZXRsYl9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBodWdldGxiIGZvbGlvIGFsbG9jYXRpb24gd2hlcmUgdXNlZF9ocGFnZXMgaXMgbm90IGNvcnJlY3RseSByZXN0b3JlZCBvbiBhIHNwZWNpZmljIGVycm9yIHBhdGggd2hlbiBmYWlsaW5nIHRvIGJhY2sgZnJvbSB0aGUgZ2xvYmFsIHBvb2wuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hVR0VUTEJGUyYjMzQ7LAogICAgJiMzNDtIVUdFVExCX1BBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGxvY19odWdldGxiX2ZvbGlvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGh1Z2V0bGIgZm9saW8gYWxsb2NhdGlvbiB3aGVyZSB1c2VkX2hwYWdlcyBpcyBub3QgY29ycmVjdGx5IHJlc3RvcmVkIG9uIGEgc3BlY2lmaWMgZXJyb3IgcGF0aCB3aGVuIGZhaWxpbmcgdG8gYmFjayBmcm9tIHRoZSBnbG9iYWwgcG9vbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBodWdldGxiIHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM3OjEwLjYyMDM0ODQ4OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTMyMzg4NzMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIVUdFVExCRlNcIixcbiAgICBcIkhVR0VUTEJfUEFHRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFsbG9jX2h1Z2V0bGJfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBodWdldGxiIGZvbGlvIGFsbG9jYXRpb24gd2hlcmUgdXNlZF9ocGFnZXMgaXMgbm90IGNvcnJlY3RseSByZXN0b3JlZCBvbiBhIHNwZWNpZmljIGVycm9yIHBhdGggd2hlbiBmYWlsaW5nIHRvIGJhY2sgZnJvbSB0aGUgZ2xvYmFsIHBvb2wuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM3OjEwLjYyMDM1NTMwOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4NjcwNjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTFmMjk1NTkxNGM3MTc4MjAzNWM1YmYzYTMwMjdkMmFmZWFmNzdlM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAxNTozNzowOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmNcXG5pbmRleCBkNmM4MTJkMTg1N2I1Ny4uODQxM2VjOTJkODM2ZGUgMTAwNjQ0XFxuLS0tIGEvbW0vaHVnZXRsYi5jXFxuKysrIGIvbW0vaHVnZXRsYi5jXFxuQEAgLTMwNzMsNiArMzA3MywxOSBAQCBzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW8oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuIFxcdGlmIChtYXBfY2hnIFxcdTAwMjZcXHUwMDI2ICFnYmxfY2hnKSB7XFxuIFxcdFxcdGdibF9yZXNlcnZlID0gaHVnZXBhZ2Vfc3VicG9vbF9wdXRfcGFnZXMoc3Bvb2wsIDEpO1xcbiBcXHRcXHRodWdldGxiX2FjY3RfbWVtb3J5KGgsIC1nYmxfcmVzZXJ2ZSk7XFxuK1xcdH0gZWxzZSBpZiAobWFwX2NoZyBcXHUwMDI2XFx1MDAyNiBnYmxfY2hnIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBzcG9vbCkge1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBSZXN0b3JlIHVzZWRfaHBhZ2VzIGZvciB0aGUgZ2xvYmFsbHktcmVxdWVzdGVkIHBhZ2UgdGhhdFxcbitcXHRcXHQgKiBodWdlcGFnZV9zdWJwb29sX2dldF9wYWdlcygpIGNvdW50ZWQgYWdhaW5zdCB0aGUgc3VicG9vbCdzXFxuK1xcdFxcdCAqIG1heGltdW0sIGJ1dCB3aGljaCB3ZSBmYWlsZWQgdG8gYmFjayBmcm9tIHRoZSBnbG9iYWwgcG9vbC5cXG4rXFx0XFx0ICogTWlycm9ycyB0aGUgZml4IGluIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcygpICgxZDNmOWJiNGM4YWYpLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4rXFxuK1xcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZzcG9vbC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRpZiAoc3Bvb2wtXFx1MDAzZW1heF9ocGFnZXMgIT0gLTEpXFxuK1xcdFxcdFxcdHNwb29sLVxcdTAwM2V1c2VkX2hwYWdlcyAtPSBnYmxfY2hnO1xcbitcXHRcXHR1bmxvY2tfb3JfcmVsZWFzZV9zdWJwb29sKHNwb29sLCBmbGFncyk7XFxuIFxcdH1cXG4gXFxuIG91dF9lbmRfcmVzZXJ2YXRpb246XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM3OjExLjEwOTc3MDU1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI0ODM0NDQ5NTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJGU1wiLFxuICAgIFwiSFVHRVRMQl9QQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxsb2NfaHVnZXRsYl9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGh1Z2V0bGIgZm9saW8gYWxsb2NhdGlvbiB3aGVyZSB1c2VkX2hwYWdlcyBpcyBub3QgY29ycmVjdGx5IHJlc3RvcmVkIG9uIGEgc3BlY2lmaWMgZXJyb3IgcGF0aCB3aGVuIGZhaWxpbmcgdG8gYmFjayBmcm9tIHRoZSBnbG9iYWwgcG9vbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBodWdldGxiIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMWYyOTU1OTE0YzcxNzgyMDM1YzViZjNhMzAyN2QyYWZlYWY3N2UzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMTU6Mzc6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmNcbmluZGV4IGQ2YzgxMmQxODU3YjU3Li44NDEzZWM5MmQ4MzZkZSAxMDA2NDRcbi0tLSBhL21tL2h1Z2V0bGIuY1xuKysrIGIvbW0vaHVnZXRsYi5jXG5AQCAtMzA3Myw2ICszMDczLDE5IEBAIHN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpbyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbiBcdGlmIChtYXBfY2hnIFx1MDAyNlx1MDAyNiAhZ2JsX2NoZykge1xuIFx0XHRnYmxfcmVzZXJ2ZSA9IGh1Z2VwYWdlX3N1YnBvb2xfcHV0X3BhZ2VzKHNwb29sLCAxKTtcbiBcdFx0aHVnZXRsYl9hY2N0X21lbW9yeShoLCAtZ2JsX3Jlc2VydmUpO1xuK1x0fSBlbHNlIGlmIChtYXBfY2hnIFx1MDAyNlx1MDAyNiBnYmxfY2hnIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBzcG9vbCkge1xuK1x0XHQvKlxuK1x0XHQgKiBSZXN0b3JlIHVzZWRfaHBhZ2VzIGZvciB0aGUgZ2xvYmFsbHktcmVxdWVzdGVkIHBhZ2UgdGhhdFxuK1x0XHQgKiBodWdlcGFnZV9zdWJwb29sX2dldF9wYWdlcygpIGNvdW50ZWQgYWdhaW5zdCB0aGUgc3VicG9vbCdzXG4rXHRcdCAqIG1heGltdW0sIGJ1dCB3aGljaCB3ZSBmYWlsZWQgdG8gYmFjayBmcm9tIHRoZSBnbG9iYWwgcG9vbC5cbitcdFx0ICogTWlycm9ycyB0aGUgZml4IGluIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcygpICgxZDNmOWJiNGM4YWYpLlxuK1x0XHQgKi9cbitcdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbitcbitcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2c3Bvb2wtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0XHRpZiAoc3Bvb2wtXHUwMDNlbWF4X2hwYWdlcyAhPSAtMSlcbitcdFx0XHRzcG9vbC1cdTAwM2V1c2VkX2hwYWdlcyAtPSBnYmxfY2hnO1xuK1x0XHR1bmxvY2tfb3JfcmVsZWFzZV9zdWJwb29sKHNwb29sLCBmbGFncyk7XG4gXHR9XG4gXG4gb3V0X2VuZF9yZXNlcnZhdGlvbjpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM3OjExLjEwOTc3NzM2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwODI3OTE1ODU4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBodWdldGxiLmMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHdpdGhpbiBgbW0vaHVnZXRsYi5jYC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGhvdyBpdCdzIGFsdGVyaW5nIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhbiBgZWxzZSBpZmAgY29uZGl0aW9uLCBhbmQgdGhlIGNvbmRpdGlvbnMgYXJlIHF1aXRlIHByZWNpc2U6IGBtYXBfY2hnYCwgYGdibF9jaGdgIGdyZWF0ZXIgdGhhbiB6ZXJvLCBhbmQgYHNwb29sYCBtdXN0IGFsbCBiZSB0cnVlIGZvciBpdCB0byBleGVjdXRlLiBXaXRoaW4gdGhpcyBuZXcgYmxvY2ssIGl0IGxvb2tzIGxpa2UgdGhlcmUncyBhIHJlc3RvcmF0aW9uIG9mIGB1c2VkX2hwYWdlc2AsIHNwZWNpZmljYWxseSBmb3IgdGhlIGdsb2JhbGx5IHJlcXVlc3RlZCBwYWdlLiBUaGlzIGZlZWxzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGh1Z2UgcGFnZSBzdWJzeXN0ZW0sIGFuZCBpdCB3YXJyYW50cyBhIGRlZXBlciBkaXZlLiBJIG5lZWQgdG8gZ2V0IGJhY2sgaW50byBgYWxsb2NfaHVnZXRsYl9mb2xpb2Agd2l0aGluIGBtbS9odWdldGxiLmNgIHRvIGZ1bGx5IGdyYXNwIGl0cyBpbXBhY3QgYW5kIGVuc3VyZSBpdCdzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzg6NTkuMzg4OTM3ODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAwNDU5OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFsbG9jX2h1Z2V0bGJfZm9saW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vaHVnZXRsYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2h1Z2V0bGIuYz0yMTQ5PXN0cnVjdCBmb2xpbyAqYWxsb2NfYnVkZHlfaHVnZXRsYl9mb2xpbyhzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTIxNzItXFxubW0vaHVnZXRsYi5jOjIxNzM6c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvX3Jlc2VydmUoc3RydWN0IGhzdGF0ZSAqaCwgaW50IHByZWZlcnJlZF9uaWQsXFxubW0vaHVnZXRsYi5jLTIxNzQtXFx0XFx0bm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrKVxcbi0tXFxubW0vaHVnZXRsYi5jLTIxOTMtLyogZm9saW8gbWlncmF0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uICovXFxubW0vaHVnZXRsYi5jOjIxOTQ6c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxcbm1tL2h1Z2V0bGIuYy0yMTk1LVxcdFxcdG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzaywgYm9vbCBhbGxvd19hbGxvY19mYWxsYmFjaylcXG4tLVxcbm1tL2h1Z2V0bGIuYz0yNTI3PXN0YXRpYyBsb25nIHZtYV9kZWxfcmVzZXJ2YXRpb24oc3RydWN0IGhzdGF0ZSAqaCxcXG4tLVxcbm1tL2h1Z2V0bGIuYy0yNTM0LSAqIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgdG8gcmVzdG9yZSByZXNlcnZhdGlvbiBpbmZvcm1hdGlvbiBvbiBlcnJvciBwYXRocy5cXG5tbS9odWdldGxiLmM6MjUzNTogKiBJdCBzaG91bGQgT05MWSBiZSBjYWxsZWQgZm9yIGZvbGlvcyBhbGxvY2F0ZWQgdmlhIGFsbG9jX2h1Z2V0bGJfZm9saW8oKSxcXG5tbS9odWdldGxiLmMtMjUzNi0gKiBhbmQgdGhlIGh1Z2V0bGIgbXV0ZXggc2hvdWxkIHJlbWFpbiBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIHJvdXRpbmUuXFxuLS1cXG5tbS9odWdldGxiLmMtMjU0MS0gKiAyKSBObyByZXNlcnZhdGlvbiB3YXMgaW4gcGxhY2UgZm9yIHRoZSBwYWdlLCBzbyBodWdldGxiX3Jlc3RvcmVfcmVzZXJ2ZSBpc1xcbm1tL2h1Z2V0bGIuYzoyNTQyOiAqICAgIG5vdCBzZXQuICBIb3dldmVyLCBhbGxvY19odWdldGxiX2ZvbGlvIGFsd2F5cyB1cGRhdGVzIHRoZSByZXNlcnZlIG1hcC5cXG5tbS9odWdldGxiLmMtMjU0My0gKlxcbi0tXFxubW0vaHVnZXRsYi5jLTI1NTAtICpcXG5tbS9odWdldGxiLmM6MjU1MTogKiBJbiBjYXNlIDIsIHNpbXBseSB1bmRvIHJlc2VydmUgbWFwIG1vZGlmaWNhdGlvbnMgZG9uZSBieSBhbGxvY19odWdldGxiX2ZvbGlvLlxcbm1tL2h1Z2V0bGIuYy0yNTUyLSAqL1xcbm1tL2h1Z2V0bGIuYz0yNTUzPXZvaWQgcmVzdG9yZV9yZXNlcnZlX29uX2Vycm9yKHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vaHVnZXRsYi5jLTI1NzktXFx0XFx0XFx0ICogVGhpcyBpbmRpY2F0ZXMgdGhlcmUgaXMgYW4gZW50cnkgaW4gdGhlIHJlc2VydmUgbWFwXFxubW0vaHVnZXRsYi5jOjI1ODA6XFx0XFx0XFx0ICogbm90IGFkZGVkIGJ5IGFsbG9jX2h1Z2V0bGJfZm9saW8uICBXZSBrbm93IGl0IHdhcyBhZGRlZFxcbm1tL2h1Z2V0bGIuYzoyNTgxOlxcdFxcdFxcdCAqIGJlZm9yZSB0aGUgYWxsb2NfaHVnZXRsYl9mb2xpbyBjYWxsLCBvdGhlcndpc2VcXG5tbS9odWdldGxiLmMtMjU4Mi1cXHRcXHRcXHQgKiBodWdldGxiX3Jlc3RvcmVfcmVzZXJ2ZSB3b3VsZCBiZSBzZXQgb24gdGhlIGZvbGlvLlxcbi0tXFxubW0vaHVnZXRsYi5jPTI5MjA9dHlwZWRlZiBlbnVtIHtcXG4tLVxcbm1tL2h1Z2V0bGIuYy0yOTQ1LSAqL1xcbm1tL2h1Z2V0bGIuYzoyOTQ2OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpbyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG5tbS9odWdldGxiLmMtMjk0Ny1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBhZGRyLCBib29sIGNvd19mcm9tX293bmVyKVxcbi0tXFxubW0vaHVnZXRsYi5jPTQ5MTE9aW50IGNvcHlfaHVnZXRsYl9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVjdCAqc3JjLFxcbi0tXFxubW0vaHVnZXRsYi5jLTUwMzItXFx0XFx0XFx0XFx0LyogRG8gbm90IHVzZSByZXNlcnZlIGFzIGl0J3MgcHJpdmF0ZSBvd25lZCAqL1xcbm1tL2h1Z2V0bGIuYzo1MDMzOlxcdFxcdFxcdFxcdG5ld19mb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8oZHN0X3ZtYSwgYWRkciwgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy01MDM0LVxcdFxcdFxcdFxcdGlmIChJU19FUlIobmV3X2ZvbGlvKSkge1xcbi0tXFxubW0vaHVnZXRsYi5jPTU1MDE9c3RhdGljIHZtX2ZhdWx0X3QgaHVnZXRsYl93cChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbm1tL2h1Z2V0bGIuYy01NTgyLVxcdHNwaW5fdW5sb2NrKHZtZi1cXHUwMDNlcHRsKTtcXG5tbS9odWdldGxiLmM6NTU4MzpcXHRuZXdfZm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKHZtYSwgdm1mLVxcdTAwM2VhZGRyZXNzLCBjb3dfZnJvbV9vd25lcik7XFxubW0vaHVnZXRsYi5jLTU1ODQtXFxuLS1cXG5tbS9odWdldGxiLmM9NTc3Mz1zdGF0aWMgdm1fZmF1bHRfdCBodWdldGxiX25vX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5tbS9odWdldGxiLmMtNTg0Mi1cXG5tbS9odWdldGxiLmM6NTg0MzpcXHRcXHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8odm1hLCB2bWYtXFx1MDAzZWFkZHJlc3MsIGZhbHNlKTtcXG5tbS9odWdldGxiLmMtNTg0NC1cXHRcXHRpZiAoSVNfRVJSKGZvbGlvKSkge1xcbi0tXFxubW0vaHVnZXRsYi5jPTYwMjM9dm1fZmF1bHRfdCBodWdldGxiX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL2h1Z2V0bGIuYy02MjU4LSAqL1xcbm1tL2h1Z2V0bGIuYzo2MjU5OnN0YXRpYyBzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fdm1hKHN0cnVjdCBoc3RhdGUgKmgsXFxubW0vaHVnZXRsYi5jLTYyNjAtXFx0XFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcylcXG4tLVxcbm1tL2h1Z2V0bGIuYy02Mjc1LVxcdCAqL1xcbm1tL2h1Z2V0bGIuYzo2Mjc2OlxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpb19ub2RlbWFzayhoLCBub2RlLCBub2RlbWFzaywgZ2ZwX21hc2ssIGZhbHNlKTtcXG5tbS9odWdldGxiLmMtNjI3Ny1cXHRtcG9sX2NvbmRfcHV0KG1wb2wpO1xcbi0tXFxubW0vaHVnZXRsYi5jPTYyODY9aW50IGh1Z2V0bGJfbWZpbGxfYXRvbWljX3B0ZShwdGVfdCAqZHN0X3B0ZSxcXG4tLVxcbm1tL2h1Z2V0bGIuYy02MzQyLVxcbm1tL2h1Z2V0bGIuYzo2MzQzOlxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBkc3RfYWRkciwgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy02MzQ0LVxcdFxcdGlmIChJU19FUlIoZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmMtNjM2OC1cXHRcXHRcXHQgKi9cXG5tbS9odWdldGxiLmM6NjM2OTpcXHRcXHRcXHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW9fdm1hKGgsIGRzdF92bWEsIGRzdF9hZGRyKTtcXG5tbS9odWdldGxiLmMtNjM3MC1cXHRcXHRcXHRpZiAoIWZvbGlvKSB7XFxuLS1cXG5tbS9odWdldGxiLmMtNjM4OS1cXG5tbS9odWdldGxiLmM6NjM5MDpcXHRcXHRmb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8oZHN0X3ZtYSwgZHN0X2FkZHIsIGZhbHNlKTtcXG5tbS9odWdldGxiLmMtNjM5MS1cXHRcXHRpZiAoSVNfRVJSKGZvbGlvKSkge1xcbi0tXFxubW0vaHVnZXRsYi5jPTY2ODM9bG9uZyBodWdldGxiX3Jlc2VydmVfcGFnZXMoc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbm1tL2h1Z2V0bGIuYy02ODAzLVxcdFxcdFxcdCAqIG1hcCBiZXR3ZWVuIHJlZ2lvbl9jaGcgYW5kIHJlZ2lvbl9hZGQuICBUaGlzXFxubW0vaHVnZXRsYi5jOjY4MDQ6XFx0XFx0XFx0ICogaW5kaWNhdGVzIGEgcmFjZSB3aXRoIGFsbG9jX2h1Z2V0bGJfZm9saW8uICBBZGp1c3RcXG5tbS9odWdldGxiLmMtNjgwNS1cXHRcXHRcXHQgKiB0aGUgc3VicG9vbCBhbmQgcmVzZXJ2ZSBjb3VudHMgbW9kaWZpZWQgYWJvdmVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzg6NTkuNjg5NDA0MTIyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgwMjAyMjkxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGh1Z2V0bGIgYWxsb2NhdGlvbiBpc3N1ZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlIGBhbGxvY19odWdldGxiX2ZvbGlvYCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQuIEl0J3MgdGhlIGNvcmUgb2YgaG93IHdlIGhhbmRsZSBodWdldGxiIGFsbG9jYXRpb25zLCBzbyB1bmRlcnN0YW5kaW5nIGl0IGlzIGNydWNpYWwuIFRoZSBwYXRjaCBmb2N1c2VzIG9uIGEgYnVnIHdoZXJlIGB1c2VkX2hwYWdlc2AgaXNuJ3QgcHJvcGVybHkgcmVzdG9yZWQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIOKAkyBzcGVjaWZpY2FsbHksIHdoZW4gYGdibF9jaGdgIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBgc3Bvb2xgIGlzIGFjdGl2ZSwgYnV0IHdlIGZhaWwgdG8gc291cmNlIGZyb20gdGhlIGdsb2JhbCBwb29sLiBUaGF0J3MgYSBjbGFzc2ljIHJhY2UtY29uZGl0aW9uIHNjZW5hcmlvLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gd2h5IHRoZSBjaGVjayBhbmQgcmVzdG9yYXRpb24gYXJlIGZhaWxpbmcuXG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSdtIGdvaW5nIHRvIGp1bXAgaW50byBgbW0vaHVnZXRsYi5jYCB0byBleGFtaW5lIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgZnVuY3Rpb24gZGlyZWN0bHkuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIHNwZWNpZmljYWxseSBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIHRvIGVuc3VyZSBteSBlbnZpcm9ubWVudCBpcyBzZXQgdXAgcHJvcGVybHkgZm9yIGRlYnVnZ2luZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGJlaW5nIHByb3Blcmx5IGNvbmZpZ3VyZWQgc28gSSBjYW4gcmVwcm9kdWNlIHRoZSBmYWlsdXJlIGFuZCB0cmFjayBkb3duIHRoZSByb290IGNhdXNlLiBUaGlzIGluZm9ybWF0aW9uIHNob3VsZCBwcm92aWRlIGNvbnRleHQgZm9yIGRlYnVnZ2luZyB0aGUgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNjMsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6Mzk6NTcuNzA5NjM1Mjc3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODk4OTY4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfSFVHRVRMQl9QQUdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT04ND1lbmRpZlxcbm1tL01ha2VmaWxlOjg1Om9iai0kKENPTkZJR19IVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUClcXHQrPSBodWdldGxiX3ZtZW1tYXAub1xcbm1tL01ha2VmaWxlLTg2LW9iai0kKENPTkZJR19OVU1BKSBcXHQrPSBtZW1wb2xpY3kub1xcbi0tXFxubW0vZGFtb24vdmFkZHIuYz0yNjc9c3RhdGljIGludCBkYW1vbl9ta29sZF9wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy0yOTMtXFxubW0vZGFtb24vdmFkZHIuYzoyOTQ6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5tbS9kYW1vbi92YWRkci5jLTI5NS1zdGF0aWMgdm9pZCBkYW1vbl9odWdldGxiX21rb2xkKHB0ZV90ICpwdGUsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYz0zMjI9c3RhdGljIGludCBkYW1vbl9ta29sZF9odWdldGxiX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgaG1hc2ssXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTM0Mi0jZGVmaW5lIGRhbW9uX21rb2xkX2h1Z2V0bGJfZW50cnkgTlVMTFxcbm1tL2RhbW9uL3ZhZGRyLmM6MzQzOiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxubW0vZGFtb24vdmFkZHIuYy0zNDQtXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jPTM5MD1zdGF0aWMgaW50IGRhbW9uX3lvdW5nX3BtZF9lbnRyeShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTQzNy1cXG5tbS9kYW1vbi92YWRkci5jOjQzODojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL2RhbW9uL3ZhZGRyLmMtNDM5LXN0YXRpYyBpbnQgZGFtb25feW91bmdfaHVnZXRsYl9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy00NjktI2RlZmluZSBkYW1vbl95b3VuZ19odWdldGxiX2VudHJ5IE5VTExcXG5tbS9kYW1vbi92YWRkci5jOjQ3MDojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbm1tL2RhbW9uL3ZhZGRyLmMtNDcxLVxcbi0tXFxubW0vZGVidWdfdm1fcGd0YWJsZS5jPTg0ND1zdGF0aWMgdm9pZCBfX2luaXQgc3dhcF9taWdyYXRpb25fdGVzdHMoc3RydWN0IHBndGFibGVfZGVidWdfYXJncyAqYXJncylcXG4tLVxcbm1tL2RlYnVnX3ZtX3BndGFibGUuYy04ODMtXFxubW0vZGVidWdfdm1fcGd0YWJsZS5jOjg4NDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL2RlYnVnX3ZtX3BndGFibGUuYy04ODUtc3RhdGljIHZvaWQgX19pbml0IGh1Z2V0bGJfYmFzaWNfdGVzdHMoc3RydWN0IHBndGFibGVfZGVidWdfYXJncyAqYXJncylcXG4tLVxcbm1tL2RlYnVnX3ZtX3BndGFibGUuYy04OTktfVxcbm1tL2RlYnVnX3ZtX3BndGFibGUuYzo5MDA6I2Vsc2UgIC8qICFDT05GSUdfSFVHRVRMQl9QQUdFICovXFxubW0vZGVidWdfdm1fcGd0YWJsZS5jLTkwMS1zdGF0aWMgdm9pZCBfX2luaXQgaHVnZXRsYl9iYXNpY190ZXN0cyhzdHJ1Y3QgcGd0YWJsZV9kZWJ1Z19hcmdzICphcmdzKSB7IH1cXG5tbS9kZWJ1Z192bV9wZ3RhYmxlLmM6OTAyOiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxubW0vZGVidWdfdm1fcGd0YWJsZS5jLTkwMy1cXG4tLVxcbm1tL2htbS5jPTQ4ND1zdGF0aWMgaW50IGhtbV92bWFfd2Fsa19wdWQocHVkX3QgKnB1ZHAsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxubW0vaG1tLmMtNTQxLVxcbm1tL2htbS5jOjU0MjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL2htbS5jLTU0My1zdGF0aWMgaW50IGhtbV92bWFfd2Fsa19odWdldGxiX2VudHJ5KHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgaG1hc2ssXFxuLS1cXG5tbS9obW0uYy01OTQtI2RlZmluZSBobW1fdm1hX3dhbGtfaHVnZXRsYl9lbnRyeSBOVUxMXFxubW0vaG1tLmM6NTk1OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxubW0vaG1tLmMtNTk2LVxcbi0tXFxubW0vaHVnZXRsYi5jPTMzNTg9dm9pZCBfX2luaXQgaHVnZXRsYl9ib290bWVtX3N0cnVjdF9wYWdlX2luaXQodm9pZClcXG4tLVxcbm1tL2h1Z2V0bGIuYy0zMzY5LVxcdH07XFxubW0vaHVnZXRsYi5jOjMzNzA6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUFxcbm1tL2h1Z2V0bGIuYy0zMzcxLVxcdHN0cnVjdCB6b25lICp6b25lO1xcbi0tXFxubW0vaHVnZXRsYl92bWVtbWFwLmM9MzcyPXN0YXRpYyBpbnQgdm1lbW1hcF9yZW1hcF9hbGxvYyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbm1tL2h1Z2V0bGJfdm1lbW1hcC5jLTM4Ny1cXG5tbS9odWdldGxiX3ZtZW1tYXAuYzozODg6c3RhdGljIGJvb2wgdm1lbW1hcF9vcHRpbWl6ZV9lbmFibGVkID0gSVNfRU5BQkxFRChDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBfREVGQVVMVF9PTik7XFxubW0vaHVnZXRsYl92bWVtbWFwLmMtMzg5LXN0YXRpYyBpbnQgX19pbml0IGh1Z2V0bGJfdm1lbW1hcF9vcHRpbWl6ZV9wYXJhbShjaGFyICpidWYpXFxuLS1cXG5tbS9odWdldGxiX3ZtZW1tYXAuaC0yMS1cXG5tbS9odWdldGxiX3ZtZW1tYXAuaDoyMjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXFxubW0vaHVnZXRsYl92bWVtbWFwLmgtMjMtaW50IGh1Z2V0bGJfdm1lbW1hcF9yZXN0b3JlX2ZvbGlvKGNvbnN0IHN0cnVjdCBoc3RhdGUgKmgsIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbi0tXFxubW0vaHVnZXRsYl92bWVtbWFwLmg9ODM9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaHVnZXRsYl92bWVtbWFwX29wdGltaXphYmxlX3NpemUoY29uc3Qgc3RydWN0IGhzdGF0ZSAqaClcXG4tLVxcbm1tL2h1Z2V0bGJfdm1lbW1hcC5oLTg2LX1cXG5tbS9odWdldGxiX3ZtZW1tYXAuaDo4NzojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQICovXFxubW0vaHVnZXRsYl92bWVtbWFwLmgtODgtXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MzcyPXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWVtY2dfbm9kZV9zdGF0X2l0ZW1zW10gPSB7XFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNDIyLVxcdFBHUkVGSUxMLFxcbm1tL21lbWNvbnRyb2wuYzo0MjM6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5tbS9tZW1jb250cm9sLmMtNDI0LVxcdE5SX0hVR0VUTEIsXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MTU0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IG1lbW9yeV9zdGF0IG1lbW9yeV9zdGF0c1tdID0ge1xcbi0tXFxubW0vbWVtY29udHJvbC5jLTE1NzktXFx0eyBcXFwic2xhYl91bnJlY2xhaW1hYmxlXFxcIixcXHRcXHROUl9TTEFCX1VOUkVDTEFJTUFCTEVfQlxcdFxcdH0sXFxubW0vbWVtY29udHJvbC5jOjE1ODA6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5tbS9tZW1jb250cm9sLmMtMTU4MS1cXHR7IFxcXCJodWdldGxiXFxcIixcXHRcXHRcXHROUl9IVUdFVExCXFx0XFx0XFx0fSxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0xNjc0PXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9sb2NhbF9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xNjgwLVxcbm1tL21lbWNvbnRyb2wuYzoxNjgxOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vbWVtY29udHJvbC5jLTE2ODItc3RhdGljIGJvb2wgbWVtY2dfYWNjb3VudHNfaHVnZXRsYih2b2lkKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTE2ODUtfVxcbm1tL21lbWNvbnRyb2wuYzoxNjg2OiNlbHNlIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5tbS9tZW1jb250cm9sLmMtMTY4Ny1zdGF0aWMgYm9vbCBtZW1jZ19hY2NvdW50c19odWdldGxiKHZvaWQpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTY5MC19XFxubW0vbWVtY29udHJvbC5jOjE2OTE6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5tbS9tZW1jb250cm9sLmMtMTY5Mi1cXG5tbS9tZW1jb250cm9sLmM9MTY5Mz1zdGF0aWMgdm9pZCBtZW1jZ19zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTE3MTEtXFxubW0vbWVtY29udHJvbC5jOjE3MTI6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5tbS9tZW1jb250cm9sLmMtMTcxMy1cXHRcXHRpZiAodW5saWtlbHkobWVtb3J5X3N0YXRzW2ldLmlkeCA9PSBOUl9IVUdFVExCKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubW0vbWVtZmQuYz02OD1zdHJ1Y3QgZm9saW8gKm1lbWZkX2FsbG9jX2ZvbGlvKHN0cnVjdCBmaWxlICptZW1mZCwgcGdvZmZfdCBpZHgpXFxubW0vbWVtZmQuYy02OS17XFxubW0vbWVtZmQuYzo3MDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21lbWZkLmMtNzEtXFx0c3RydWN0IGZvbGlvICpmb2xpbztcXG4tLVxcbm1tL21lbW9yeS1mYWlsdXJlLmM9NzQyPXN0YXRpYyBpbnQgaHdwb2lzb25fcHRlX3JhbmdlKHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9tZW1vcnktZmFpbHVyZS5jLTc3My1cXG5tbS9tZW1vcnktZmFpbHVyZS5jOjc3NDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21lbW9yeS1mYWlsdXJlLmMtNzc1LXN0YXRpYyBpbnQgaHdwb2lzb25faHVnZXRsYl9yYW5nZShwdGVfdCAqcHRlcCwgdW5zaWduZWQgbG9uZyBobWFzayxcXG4tLVxcbm1tL21lbW9yeS1mYWlsdXJlLmM9MTg2ND1FWFBPUlRfU1lNQk9MX0dQTChtZl9kYXhfa2lsbF9wcm9jcyk7XFxuLS1cXG5tbS9tZW1vcnktZmFpbHVyZS5jLTE4NjYtXFxubW0vbWVtb3J5LWZhaWx1cmUuYzoxODY3OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vbWVtb3J5LWZhaWx1cmUuYy0xODY4LVxcbi0tXFxubW0vbWVtb3J5LWZhaWx1cmUuYz0yMTYxPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBmb2xpb19mcmVlX3Jhd19od3Aoc3RydWN0IGZvbGlvICpmb2xpbywgYm9vbCBmbGFnKVxcbi0tXFxubW0vbWVtb3J5LWZhaWx1cmUuYy0yMTY0LX1cXG5tbS9tZW1vcnktZmFpbHVyZS5jOjIxNjU6I2VuZGlmXFx0LyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbm1tL21lbW9yeS1mYWlsdXJlLmMtMjE2Ni1cXG4tLVxcbm1tL21lbXBvbGljeS5jPTc3Mj1zdGF0aWMgaW50IHF1ZXVlX2ZvbGlvc19odWdldGxiKHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgaG1hc2ssXFxuLS1cXG5tbS9tZW1wb2xpY3kuYy03NzUte1xcbm1tL21lbXBvbGljeS5jOjc3NjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21lbXBvbGljeS5jLTc3Ny1cXHRzdHJ1Y3QgcXVldWVfcGFnZXMgKnFwID0gd2Fsay1cXHUwMDNlcHJpdmF0ZTtcXG4tLVxcbm1tL21pZ3JhdGUuYz0zNTE9c3RhdGljIGJvb2wgcmVtb3ZlX21pZ3JhdGlvbl9wdGUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbm1tL21pZ3JhdGUuYy00MjYtXFxubW0vbWlncmF0ZS5jOjQyNzojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21pZ3JhdGUuYy00MjgtXFx0XFx0aWYgKGZvbGlvX3Rlc3RfaHVnZXRsYihmb2xpbykpIHtcXG4tLVxcbm1tL21pZ3JhdGUuYz00OTQ9dm9pZCBtaWdyYXRpb25fZW50cnlfd2FpdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZCxcXG4tLVxcbm1tL21pZ3JhdGUuYy01MjEtXFxubW0vbWlncmF0ZS5jOjUyMjojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21pZ3JhdGUuYy01MjMtLypcXG4tLVxcbm1tL21pbmNvcmUuYz0yNj1zdGF0aWMgaW50IG1pbmNvcmVfaHVnZXRsYihwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGhtYXNrLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9taW5jb3JlLmMtMjgte1xcbm1tL21pbmNvcmUuYzoyOTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21pbmNvcmUuYy0zMC1cXHR1bnNpZ25lZCBjaGFyIHByZXNlbnQ7XFxuLS1cXG5tbS9tbV9pbml0LmM9MTQyOD1zdGF0aWMgaW5saW5lIHZvaWQgc2V0dXBfdXNlbWFwKHN0cnVjdCB6b25lICp6b25lKSB7fVxcbi0tXFxubW0vbW1faW5pdC5jLTE0MzAtXFxubW0vbW1faW5pdC5jOjE0MzE6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxcbm1tL21tX2luaXQuYy0xNDMyLVxcbi0tXFxubW0vbW1faW5pdC5jPTE0MzQ9c3RhdGljIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcXG4tLVxcbm1tL21tX2luaXQuYy0xNDUxLX1cXG5tbS9tbV9pbml0LmM6MTQ1MjojZWxzZSAvKiBDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEUgKi9cXG5tbS9tbV9pbml0LmMtMTQ1My1cXG5tbS9tbV9pbml0LmMtMTQ1NC0vKlxcbm1tL21tX2luaXQuYzoxNDU1OiAqIFdoZW4gQ09ORklHX0hVR0VUTEJfUEFHRV9TSVpFX1ZBUklBQkxFIGlzIG5vdCBzZXQsIHNldF9wYWdlYmxvY2tfb3JkZXIoKVxcbm1tL21tX2luaXQuYy0xNDU2LSAqIGlzIHVudXNlZCBhcyBwYWdlYmxvY2tfb3JkZXIgaXMgc2V0IGF0IGNvbXBpbGUtdGltZS4gU2VlXFxuLS1cXG5tbS9tbV9pbml0LmM9MTQ2MD1zdGF0aWMgaW5saW5lIHZvaWQgX19pbml0IHNldF9wYWdlYmxvY2tfb3JkZXIodm9pZClcXG4tLVxcbm1tL21tX2luaXQuYy0xNDYzLVxcbm1tL21tX2luaXQuYzoxNDY0OiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFX1NJWkVfVkFSSUFCTEUgKi9cXG5tbS9tbV9pbml0LmMtMTQ2NS1cXG4tLVxcbm1tL21wcm90ZWN0LmM9NzMwPXN0YXRpYyBpbnQgcHJvdF9ub25lX3B0ZV9lbnRyeShwdGVfdCAqcHRlLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9tcHJvdGVjdC5jLTczNy1cXG5tbS9tcHJvdGVjdC5jOjczODojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL21wcm90ZWN0LmMtNzM5LXN0YXRpYyBpbnQgcHJvdF9ub25lX2h1Z2V0bGJfZW50cnkocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9uZyBobWFzayxcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0yMDg9Z2ZwX3QgZ2ZwX2FsbG93ZWRfbWFzayBfX3JlYWRfbW9zdGx5ID0gR0ZQX0JPT1RfTUFTSztcXG5tbS9wYWdlX2FsbG9jLmMtMjA5LVxcbm1tL3BhZ2VfYWxsb2MuYzoyMTA6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxcbm1tL3BhZ2VfYWxsb2MuYy0yMTEtdW5zaWduZWQgaW50IHBhZ2VibG9ja19vcmRlciBfX3JlYWRfbW9zdGx5O1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTEwOTA9c3RhdGljIGludCBmcmVlX3RhaWxfcGFnZV9wcmVwYXJlKHN0cnVjdCBwYWdlICpoZWFkX3BhZ2UsIHN0cnVjdCBwYWdlICpwYWdlKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTExNTYtXFx0XFx0LyogdGhlIHRoaXJkIHRhaWwgcGFnZTogaHVnZXRsYiBzcGVjaWZpY3Mgb3ZlcmxhcCAtXFx1MDAzZW1hcHBpbmdzICovXFxubW0vcGFnZV9hbGxvYy5jOjExNTc6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0hVR0VUTEJfUEFHRSkpXFxubW0vcGFnZV9hbGxvYy5jLTExNTgtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5tbS9wYWdld2Fsay5jPTI4OD1zdGF0aWMgaW50IHdhbGtfcGdkX3JhbmdlKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5tbS9wYWdld2Fsay5jLTMyOC1cXG5tbS9wYWdld2Fsay5jOjMyOTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL3BhZ2V3YWxrLmMtMzMwLXN0YXRpYyB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZW50cnlfZW5kKHN0cnVjdCBoc3RhdGUgKmgsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL3BhZ2V3YWxrLmM9MzM4PXN0YXRpYyBpbnQgd2Fsa19odWdldGxiX3JhbmdlKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5tbS9wYWdld2Fsay5jLTM2NS1cXG5tbS9wYWdld2Fsay5jOjM2NjojZWxzZSAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxubW0vcGFnZXdhbGsuYy0zNjctc3RhdGljIGludCB3YWxrX2h1Z2V0bGJfcmFuZ2UodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbm1tL3BhZ2V3YWxrLmMtMzcyLVxcbm1tL3BhZ2V3YWxrLmM6MzczOiNlbmRpZiAvKiBDT05GSUdfSFVHRVRMQl9QQUdFICovXFxubW0vcGFnZXdhbGsuYy0zNzQtXFxuLS1cXG5tbS9ybWFwLmM9MzExND12b2lkIHJtYXBfd2Fsa19sb2NrZWQoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IHJtYXBfd2Fsa19jb250cm9sICpyd2MpXFxuLS1cXG5tbS9ybWFwLmMtMzEyMy1cXG5tbS9ybWFwLmM6MzEyNDojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL3JtYXAuYy0zMTI1LS8qXFxuLS1cXG5tbS9ybWFwLmM9MzE0ND12b2lkIGh1Z2V0bGJfYWRkX25ld19hbm9uX3JtYXAoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tLVxcbm1tL3JtYXAuYy0zMTU2LX1cXG5tbS9ybWFwLmM6MzE1NzojZW5kaWYgLyogQ09ORklHX0hVR0VUTEJfUEFHRSAqL1xcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYz0zMTE9dm9pZCB2bWVtbWFwX3dycHJvdGVjdF9odm8odW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbm1tL3NwYXJzZS12bWVtbWFwLmMtMzIyLVxcbm1tL3NwYXJzZS12bWVtbWFwLmM6MzIzOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFX09QVElNSVpFX1ZNRU1NQVBcXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTMyNC1zdGF0aWMgX19tZW1pbml0IHN0cnVjdCBwYWdlICp2bWVtbWFwX2dldF90YWlsKHVuc2lnbmVkIGludCBvcmRlciwgc3RydWN0IHpvbmUgKnpvbmUpXFxuLS1cXG5tbS91c2VyZmF1bHRmZC5jPTczND1zdGF0aWMgaW50IG1maWxsX2F0b21pY19wdGVfcG9pc29uKHN0cnVjdCBtZmlsbF9zdGF0ZSAqc3RhdGUpXFxuLS1cXG5tbS91c2VyZmF1bHRmZC5jLTc3MC1cXG5tbS91c2VyZmF1bHRmZC5jOjc3MTojaWZkZWYgQ09ORklHX0hVR0VUTEJfUEFHRVxcbm1tL3VzZXJmYXVsdGZkLmMtNzcyLS8qXFxuLS1cXG5tbS91c2VyZmF1bHRmZC5jPTc3Nz1zdGF0aWMgX19hbHdheXNfaW5saW5lIHNzaXplX3QgbWZpbGxfYXRvbWljX2h1Z2V0bGIoXFxuLS1cXG5tbS91c2VyZmF1bHRmZC5jLTkzNC19XFxubW0vdXNlcmZhdWx0ZmQuYzo5MzU6I2Vsc2UgLyogIUNPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5tbS91c2VyZmF1bHRmZC5jLTkzNi0vKiBmYWlsIGF0IGJ1aWxkIHRpbWUgaWYgZ2NjIGF0dGVtcHRzIHRvIHVzZSB0aGlzICovXFxubW0vdXNlcmZhdWx0ZmQuYz05Mzc9ZXh0ZXJuIHNzaXplX3QgbWZpbGxfYXRvbWljX2h1Z2V0bGIoc3RydWN0IHVzZXJmYXVsdGZkX2N0eCAqY3R4LFxcbi0tXFxubW0vdXNlcmZhdWx0ZmQuYy05NDItXFx0XFx0XFx0XFx0ICAgIHVmZmRfZmxhZ3NfdCBmbGFncyk7XFxubW0vdXNlcmZhdWx0ZmQuYzo5NDM6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5tbS91c2VyZmF1bHRmZC5jLTk0NC1cXG4tLVxcbm1tL3VzZXJmYXVsdGZkLmM9MjYxMz1zdGF0aWMgaW5saW5lIHN0cnVjdCB1ZmZkX21zZyB1c2VyZmF1bHRfbXNnKHVuc2lnbmVkIGxvbmcgYWRkcmVzcyxcXG4tLVxcbm1tL3VzZXJmYXVsdGZkLmMtMjY0OC1cXG5tbS91c2VyZmF1bHRmZC5jOjI2NDk6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5tbS91c2VyZmF1bHRmZC5jLTI2NTAtLypcXG4tLVxcbm1tL3VzZXJmYXVsdGZkLmM9MjcwNT1zdGF0aWMgaW5saW5lIGJvb2wgdXNlcmZhdWx0ZmRfaHVnZV9tdXN0X3dhaXQoc3RydWN0IHVzZXJmYXVsdGZkX2N0eCAqY3R4LFxcbi0tXFxubW0vdXNlcmZhdWx0ZmQuYy0yNzEyLX1cXG5tbS91c2VyZmF1bHRmZC5jOjI3MTM6I2VuZGlmIC8qIENPTkZJR19IVUdFVExCX1BBR0UgKi9cXG5tbS91c2VyZmF1bHRmZC5jLTI3MTQtXFxuLS1cXG5tbS92bWFsbG9jLmM9OTQ9c3RhdGljIGludCB2bWFwX3B0ZV9yYW5nZShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxubW0vdm1hbGxvYy5jLTEyMS1cXG5tbS92bWFsbG9jLmM6MTIyOiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vdm1hbGxvYy5jLTEyMy1cXHRcXHRzaXplID0gYXJjaF92bWFwX3B0ZV9yYW5nZV9tYXBfc2l6ZShhZGRyLCBlbmQsIHBmbiwgbWF4X3BhZ2Vfc2hpZnQpO1xcbi0tXFxubW0vdm1hbGxvYy5jPTM2Nj1zdGF0aWMgdm9pZCB2dW5tYXBfcHRlX3JhbmdlKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5tbS92bWFsbG9jLmMtMzc2LVxcdGRvIHtcXG5tbS92bWFsbG9jLmM6Mzc3OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vdm1hbGxvYy5jLTM3OC1cXHRcXHRzaXplID0gYXJjaF92bWFwX3B0ZV9yYW5nZV91bm1hcF9zaXplKGFkZHIsIHB0ZSk7XFxuLS1cXG5tbS92bXN0YXQuYz0xMTg4PWNvbnN0IGNoYXIgKiBjb25zdCB2bXN0YXRfdGV4dFtdID0ge1xcbi0tXFxubW0vdm1zdGF0LmMtMTI5My1cXHRbSShQR1JFRklMTCldXFx0XFx0XFx0XFx0PSBcXFwicGdyZWZpbGxcXFwiLFxcbm1tL3Ztc3RhdC5jOjEyOTQ6I2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0VcXG5tbS92bXN0YXQuYy0xMjk1LVxcdFtJKE5SX0hVR0VUTEIpXVxcdFxcdFxcdFxcdD0gXFxcIm5yX2h1Z2V0bGJcXFwiLFxcbi0tXFxubW0vdm1zdGF0LmMtMTM4My1cXG5tbS92bXN0YXQuYzoxMzg0OiNpZmRlZiBDT05GSUdfSFVHRVRMQl9QQUdFXFxubW0vdm1zdGF0LmMtMTM4NS1cXHRbSShIVExCX0JVRERZX1BHQUxMT0MpXVxcdFxcdFxcdD0gXFxcImh0bGJfYnVkZHlfYWxsb2Nfc3VjY2Vzc1xcXCIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjM5OjU3LjgxODYzMTEyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjkyNzgxODAzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhVR0VUTEJfUEFHRSBDb25maWd1cmF0aW9uIGFuZCBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBoZXJlIGlzIGBIVUdFVExCX1BBR0VgLiBNeSBwcmltYXJ5IGZvY3VzIGlzIG9uIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgZnVuY3Rpb24uIEhvbGQgb24gYSBzZWNvbmQsIGlzIHRoaXMgYSAqcmVhbGx5KiBob3QtcGF0aCBmdW5jdGlvbj8gTGV0IG1lIHRoaW5rLi4uIGl0J3MgY2FsbGVkIGR1cmluZyBodWdldGxiIGZvbGlvIGFsbG9jYXRpb24sIHNwZWNpZmljYWxseSBkdXJpbmcgcGFnZSBmYXVsdHMgb24gaHVnZXRsYmZzIG9yIHdoZW4gdXNpbmcgYG1tYXBgIHdpdGggYE1BUF9IVUdFVExCYC4gQWxyaWdodCwgaXQncyBub3QgYSAqZ2VuZXJpYyogaG90LXBhdGggbGlrZSBga21hbGxvY2Agb3IgYHBhZ2VfZmF1bHRgLiBJdCdzIGRlZmluaXRlbHkgc3BlY2lmaWMgdG8gdGhlIGh1Z2V0bGIgc3Vic3lzdGVtLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQsIHRob3VnaC4gUmlnaHQsIHRoZSBwYXRjaCBtb2RpZmllcyBgYWxsb2NfaHVnZXRsYl9mb2xpb2AuIFRoZSBidWcgYmVpbmcgZml4ZWQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBgdXNlZF9ocGFnZXNgIG5vdCBiZWluZyBjb3JyZWN0bHkgcmVzdG9yZWQgdW5kZXIgdmVyeSBzcGVjaWZpYyBjb25kaXRpb25zIHdpdGhpbiBodWdldGxiIGZvbGlvIGFsbG9jYXRpb246IHdoZW4gYG1hcF9jaGdgLCBgZ2JsX2NoZyBcdTAwM2UgMGAsIGFuZCBgc3Bvb2xgIGFyZSBhbGwgdHJ1ZS4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBmdXp6aW5nIGlzIGRlZmluaXRlbHkgd2FycmFudGVkIGhlcmUuXG5cbkp1c3QgdG8gYmUgc3VyZSwgbGV0J3MgZG91YmxlLWNoZWNrIHRoZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2Agc2lnbmF0dXJlIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBJJ20gbWlzc2luZy4gTm9wZSwgc2VlbXMgbGlrZSBgYWxsb2NfaHVnZXRsYl9mb2xpb2AgaXMgdGhlIHByaW1hcnkgb25lIHRvIGV4YW1pbmUuIE9oLCB3YWl0Li4uIGlzIHRoaXMgZnVuY3Rpb24gYHN0YXRpY2Agb3IgZXhwb3J0ZWQ/IExldCBtZSBzZWUuIEFoLCBmb3VuZCBpdCwgaXQncyBkZWZpbmVkIGluIGBtbS9odWdldGxiLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDk5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE1OjQwOjA0Ljc0NjQ1MDk3NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU4MDY2MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWxsb2NfaHVnZXRsYl9mb2xpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9odWdldGxiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZXRsYi5jPTIxNDk9c3RydWN0IGZvbGlvICphbGxvY19idWRkeV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxuLS1cXG5tbS9odWdldGxiLmMtMjE3Mi1cXG5tbS9odWdldGxiLmM6MjE3MzpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fcmVzZXJ2ZShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgcHJlZmVycmVkX25pZCxcXG5tbS9odWdldGxiLmMtMjE3NC1cXHRcXHRub2RlbWFza190ICpubWFzaywgZ2ZwX3QgZ2ZwX21hc2spXFxuLS1cXG5tbS9odWdldGxiLmMtMjE5My0vKiBmb2xpbyBtaWdyYXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gKi9cXG5tbS9odWdldGxiLmM6MjE5NDpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soc3RydWN0IGhzdGF0ZSAqaCwgaW50IHByZWZlcnJlZF9uaWQsXFxubW0vaHVnZXRsYi5jLTIxOTUtXFx0XFx0bm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrLCBib29sIGFsbG93X2FsbG9jX2ZhbGxiYWNrKVxcbi0tXFxubW0vaHVnZXRsYi5jPTI1Mjc9c3RhdGljIGxvbmcgdm1hX2RlbF9yZXNlcnZhdGlvbihzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTI1MzQtICogVGhpcyByb3V0aW5lIGlzIGNhbGxlZCB0byByZXN0b3JlIHJlc2VydmF0aW9uIGluZm9ybWF0aW9uIG9uIGVycm9yIHBhdGhzLlxcbm1tL2h1Z2V0bGIuYzoyNTM1OiAqIEl0IHNob3VsZCBPTkxZIGJlIGNhbGxlZCBmb3IgZm9saW9zIGFsbG9jYXRlZCB2aWEgYWxsb2NfaHVnZXRsYl9mb2xpbygpLFxcbm1tL2h1Z2V0bGIuYy0yNTM2LSAqIGFuZCB0aGUgaHVnZXRsYiBtdXRleCBzaG91bGQgcmVtYWluIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgcm91dGluZS5cXG4tLVxcbm1tL2h1Z2V0bGIuYy0yNTQxLSAqIDIpIE5vIHJlc2VydmF0aW9uIHdhcyBpbiBwbGFjZSBmb3IgdGhlIHBhZ2UsIHNvIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIGlzXFxubW0vaHVnZXRsYi5jOjI1NDI6ICogICAgbm90IHNldC4gIEhvd2V2ZXIsIGFsbG9jX2h1Z2V0bGJfZm9saW8gYWx3YXlzIHVwZGF0ZXMgdGhlIHJlc2VydmUgbWFwLlxcbm1tL2h1Z2V0bGIuYy0yNTQzLSAqXFxuLS1cXG5tbS9odWdldGxiLmMtMjU1MC0gKlxcbm1tL2h1Z2V0bGIuYzoyNTUxOiAqIEluIGNhc2UgMiwgc2ltcGx5IHVuZG8gcmVzZXJ2ZSBtYXAgbW9kaWZpY2F0aW9ucyBkb25lIGJ5IGFsbG9jX2h1Z2V0bGJfZm9saW8uXFxubW0vaHVnZXRsYi5jLTI1NTItICovXFxubW0vaHVnZXRsYi5jPTI1NTM9dm9pZCByZXN0b3JlX3Jlc2VydmVfb25fZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9odWdldGxiLmMtMjU3OS1cXHRcXHRcXHQgKiBUaGlzIGluZGljYXRlcyB0aGVyZSBpcyBhbiBlbnRyeSBpbiB0aGUgcmVzZXJ2ZSBtYXBcXG5tbS9odWdldGxiLmM6MjU4MDpcXHRcXHRcXHQgKiBub3QgYWRkZWQgYnkgYWxsb2NfaHVnZXRsYl9mb2xpby4gIFdlIGtub3cgaXQgd2FzIGFkZGVkXFxubW0vaHVnZXRsYi5jOjI1ODE6XFx0XFx0XFx0ICogYmVmb3JlIHRoZSBhbGxvY19odWdldGxiX2ZvbGlvIGNhbGwsIG90aGVyd2lzZVxcbm1tL2h1Z2V0bGIuYy0yNTgyLVxcdFxcdFxcdCAqIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIHdvdWxkIGJlIHNldCBvbiB0aGUgZm9saW8uXFxuLS1cXG5tbS9odWdldGxiLmM9MjkyMD10eXBlZGVmIGVudW0ge1xcbi0tXFxubW0vaHVnZXRsYi5jLTI5NDUtICovXFxubW0vaHVnZXRsYi5jOjI5NDY6c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbm1tL2h1Z2V0bGIuYy0yOTQ3LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgY293X2Zyb21fb3duZXIpXFxuLS1cXG5tbS9odWdldGxiLmM9NDkxMT1pbnQgY29weV9odWdldGxiX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmMsXFxuLS1cXG5tbS9odWdldGxiLmMtNTAzMi1cXHRcXHRcXHRcXHQvKiBEbyBub3QgdXNlIHJlc2VydmUgYXMgaXQncyBwcml2YXRlIG93bmVkICovXFxubW0vaHVnZXRsYi5jOjUwMzM6XFx0XFx0XFx0XFx0bmV3X2ZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBhZGRyLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTUwMzQtXFx0XFx0XFx0XFx0aWYgKElTX0VSUihuZXdfZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmM9NTUwMT1zdGF0aWMgdm1fZmF1bHRfdCBodWdldGxiX3dwKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxubW0vaHVnZXRsYi5jLTU1ODItXFx0c3Bpbl91bmxvY2sodm1mLVxcdTAwM2VwdGwpO1xcbm1tL2h1Z2V0bGIuYzo1NTgzOlxcdG5ld19mb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8odm1hLCB2bWYtXFx1MDAzZWFkZHJlc3MsIGNvd19mcm9tX293bmVyKTtcXG5tbS9odWdldGxiLmMtNTU4NC1cXG4tLVxcbm1tL2h1Z2V0bGIuYz01NzczPXN0YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJfbm9fcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbm1tL2h1Z2V0bGIuYy01ODQyLVxcbm1tL2h1Z2V0bGIuYzo1ODQzOlxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyh2bWEsIHZtZi1cXHUwMDNlYWRkcmVzcywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy01ODQ0LVxcdFxcdGlmIChJU19FUlIoZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmM9NjAyMz12bV9mYXVsdF90IGh1Z2V0bGJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vaHVnZXRsYi5jLTYyNTgtICovXFxubW0vaHVnZXRsYi5jOjYyNTk6c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb192bWEoc3RydWN0IGhzdGF0ZSAqaCxcXG5tbS9odWdldGxiLmMtNjI2MC1cXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKVxcbi0tXFxubW0vaHVnZXRsYi5jLTYyNzUtXFx0ICovXFxubW0vaHVnZXRsYi5jOjYyNzY6XFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKGgsIG5vZGUsIG5vZGVtYXNrLCBnZnBfbWFzaywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy02Mjc3LVxcdG1wb2xfY29uZF9wdXQobXBvbCk7XFxuLS1cXG5tbS9odWdldGxiLmM9NjI4Nj1pbnQgaHVnZXRsYl9tZmlsbF9hdG9taWNfcHRlKHB0ZV90ICpkc3RfcHRlLFxcbi0tXFxubW0vaHVnZXRsYi5jLTYzNDItXFxubW0vaHVnZXRsYi5jOjYzNDM6XFx0XFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGRzdF9hZGRyLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTYzNDQtXFx0XFx0aWYgKElTX0VSUihmb2xpbykpIHtcXG4tLVxcbm1tL2h1Z2V0bGIuYy02MzY4LVxcdFxcdFxcdCAqL1xcbm1tL2h1Z2V0bGIuYzo2MzY5OlxcdFxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpb192bWEoaCwgZHN0X3ZtYSwgZHN0X2FkZHIpO1xcbm1tL2h1Z2V0bGIuYy02MzcwLVxcdFxcdFxcdGlmICghZm9saW8pIHtcXG4tLVxcbm1tL2h1Z2V0bGIuYy02Mzg5LVxcbm1tL2h1Z2V0bGIuYzo2MzkwOlxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBkc3RfYWRkciwgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy02MzkxLVxcdFxcdGlmIChJU19FUlIoZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmM9NjY4Mz1sb25nIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxubW0vaHVnZXRsYi5jLTY4MDMtXFx0XFx0XFx0ICogbWFwIGJldHdlZW4gcmVnaW9uX2NoZyBhbmQgcmVnaW9uX2FkZC4gIFRoaXNcXG5tbS9odWdldGxiLmM6NjgwNDpcXHRcXHRcXHQgKiBpbmRpY2F0ZXMgYSByYWNlIHdpdGggYWxsb2NfaHVnZXRsYl9mb2xpby4gIEFkanVzdFxcbm1tL2h1Z2V0bGIuYy02ODA1LVxcdFxcdFxcdCAqIHRoZSBzdWJwb29sIGFuZCByZXNlcnZlIGNvdW50cyBtb2RpZmllZCBhYm92ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTo0MDowNS4wMDIyNjYwMTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njk0OTEyMTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGBhbGxvY19odWdldGxiX2ZvbGlvYCdzIFNjb3BlIGFuZCBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGFsbG9jX2h1Z2V0bGJfZm9saW9gIGZ1bmN0aW9uLiBJbnRlcmVzdGluZywgaXQncyAqbm90KiBzdGF0aWMsIG1lYW5pbmcgaXQncyBwb3RlbnRpYWxseSB1c2VkIG91dHNpZGUgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdC4gSG9sZCBvbiwgbGV0IG1lIHJlZnJlc2ggbXkgbWVtb3J5LiBSaWdodCwgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBgc3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgY293X2Zyb21fb3duZXIpYC4gTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5ICpleHBvcnRlZCogdG8gb3RoZXIgbW9kdWxlcywgb3IgaXMgaXQganVzdCB1c2VkIGludGVybmFsbHkgd2l0aGluIGl0cyBkZWZpbmluZyBmaWxlPyBJdCdzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBJIG5lZWQgdG8gcXVpY2tseSBjaGVjayB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLCB0byBhc2NlcnRhaW4gd2hldGhlciBpdCdzIHNhZmUgdG8gbW9kaWZ5IG9yIG5vdC4gTGV0J3Mgc2VlLi4uIGEgcXVpY2sgY3Jvc3MtcmVmZXJlbmNlIGNoZWNrIHNob3VsZCBkbyB0aGUgdHJpY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDYxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6NDA6MTEuNjk3MTgxMjcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk3MTIzMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFsbG9jX2h1Z2V0bGJfZm9saW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q9MTgxPWFyZSBhbGxvY2F0ZWQgYW5kIGluc3RhbnRpYXRlZCBpbiB0aGUgY29ycmVzcG9uZGluZyBtYXBwaW5nLiAgVGhlIGFsbG9jYXRpb25cXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE4MjppcyBwZXJmb3JtZWQgd2l0aGluIHRoZSByb3V0aW5lIGFsbG9jX2h1Z2V0bGJfZm9saW8oKTo6XFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0xODMtXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoxODQ6XFx0c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3QtMTg1LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgbG9uZyBhZGRyLCBpbnQgYXZvaWRfcmVzZXJ2ZSlcXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE4Ni1cXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE4NzphbGxvY19odWdldGxiX2ZvbGlvIGlzIHBhc3NlZCBhIFZNQSBwb2ludGVyIGFuZCBhIHZpcnR1YWwgYWRkcmVzcywgc28gaXQgY2FuXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0xODgtY29uc3VsdCB0aGUgcmVzZXJ2YXRpb24gbWFwIHRvIGRldGVybWluZSBpZiBhIHJlc2VydmF0aW9uIGV4aXN0cy4gIEluIGFkZGl0aW9uLFxcbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q6MTg5OmFsbG9jX2h1Z2V0bGJfZm9saW8gdGFrZXMgdGhlIGFyZ3VtZW50IGF2b2lkX3Jlc2VydmUgd2hpY2ggaW5kaWNhdGVzIHJlc2VydmVzXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0xOTAtc2hvdWxkIG5vdCBiZSB1c2VkIGV2ZW4gaWYgaXQgYXBwZWFycyB0aGV5IGhhdmUgYmVlbiBzZXQgYXNpZGUgZm9yIHRoZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdD0yMDc9aXMgY2FsbGVkLiAgVGhpcyByb3V0aW5lIHRha2VzIHR3byBhcmd1bWVudHMgcmVsYXRlZCB0byByZXNlcnZhdGlvbnM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTIwOS0tIGF2b2lkX3Jlc2VydmUsIHRoaXMgaXMgdGhlIHNhbWUgdmFsdWUvYXJndW1lbnQgcGFzc2VkIHRvXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoyMTA6ICBhbGxvY19odWdldGxiX2ZvbGlvKCkuXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0yMTEtLSBjaGcsIGV2ZW4gdGhvdWdoIHRoaXMgYXJndW1lbnQgaXMgb2YgdHlwZSBsb25nIG9ubHkgdGhlIHZhbHVlcyAwIG9yIDEgYXJlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0PTI0Nz1JdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSByZXNlcnZlIG1hcCBjb3VsZCBoYXZlIGJlZW4gY2hhbmdlZCBiZXR3ZWVuIHRoZSBjYWxsXFxuRG9jdW1lbnRhdGlvbi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoyNDg6dG8gdm1hX25lZWRzX3Jlc2VydmF0aW9uKCkgYXQgdGhlIGJlZ2lubmluZyBvZiBhbGxvY19odWdldGxiX2ZvbGlvKCkgYW5kIHRoZVxcbkRvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3QtMjQ5LWNhbGwgdG8gdm1hX2NvbW1pdF9yZXNlcnZhdGlvbigpIGFmdGVyIHRoZSBmb2xpbyB3YXMgYWxsb2NhdGVkLiAgVGhpcyB3b3VsZFxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q9MTE2PUhQQUdFX1JFU1ZfT1dORVLmoIflv5fooqvorr7nva7vvIzku6XooajmmI7or6VWTUHmi6XmnInpooTnlZnjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE0NS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoxNDY65b2T5LiO6aKE55WZ55u45YWz55qE5beo6aG15Zyo55u45bqU55qE5pig5bCE5Lit6KKr5YiG6YWN5ZKM5a6e5L6L5YyW5pe277yM6aKE55WZ5bCx6KKr5raI6ICX5LqG44CC6K+l5YiG6YWN5piv5Zyo5Ye95pWwYWxsb2NfaHVnZXRsYl9mb2xpby4uLlxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE0Ny3kuK3ov5vooYznmoQ6OlxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE0OC1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoxNDk6XFx0c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE1MC1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IGF2b2lkX3Jlc2VydmUpXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3QtMTUxLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0OjE1MjphbGxvY19odWdldGxiX2ZvbGlv6KKr5Lyg6YCS57uZ5LiA5LiqVk1B5oyH6ZKI5ZKM5LiA5Liq6Jma5ouf5Zyw5Z2A77yM5Zug5q2k5a6D5Y+v5Lul5p+l6ZiF6aKE55WZ5pig5bCE5Lul56Gu5a6a5piv5ZCm5a2Y5Zyo6aKE55WZ44CCXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3Q6MTUzOuatpOWklu+8jGFsbG9jX2h1Z2V0bGJfZm9saW/pnIDopoHkuIDkuKrlj4LmlbBhdm9pZF9yZXNlcnZl77yM6K+l5Y+C5pWw6KGo56S65Y2z5L2/55yL6LW35p2l5bey57uP5Li65oyH5a6a55qE5Zyw5Z2A6aKE55WZ5LqGXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaHVnZXRsYmZzX3Jlc2Vydi5yc3QtMTU0LemihOeVme+8jOS5n+S4jeW6lOivpeS9v+eUqOmihOeVmeOAgmF2b2lkX3Jlc2VydmXlj4LmlbDmnIDluLjooqvnlKjkuo7lhpnml7bmi7fotJ3lkozpobXpnaLov4Hnp7vnmoTmg4XlhrXkuIvvvIzljbPnjrDmnInpobXpnaLnmoTpop1cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0PTE2MD12bWFfbmVlZHNfcmVzZXJ2YXRpb24oKei/lOWbnueahOWAvOmAmuW4uOS4ujDmiJYx44CC5aaC5p6c6K+l5Zyw5Z2A5a2Y5Zyo6aKE55WZ77yM5YiZ5Li6MO+8jOWmguaenOS4jeWtmOWcqOmihOeVme+8jOWImeS4ujHjgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE2NS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoxNjY6LSBhdm9pZF9yZXNlcnZl77yM6L+Z5piv5Lyg6YCS57uZYWxsb2NfaHVnZXRsYl9mb2xpbygp55qE5ZCM5LiA5Liq5YC8L+WPguaVsOOAglxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTE2Ny0tIGNoZ++8jOWwveeuoei/meS4quWPguaVsOeahOexu+Wei+aYr2xvbmfvvIzkvYblj6rmnIkw5oiWMeeahOWAvOiiq+S8oOmAkue7mWRlcXVldWVfaHVnZV9wYWdlX3ZtYeOAguWmguaenOivpeWAvOS4ujDvvIxcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0PTE5Mz1TZXRQYWdlUHJpdmF0ZShwYWdlKeWSjHJlc3ZfaHVnZV9wYWdlcy3jgIJcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2h1Z2V0bGJmc19yZXNlcnYucnN0LTIwMi1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdDoyMDM65ZyoYWxsb2NfaHVnZXRsYl9mb2xpbygp5byA5aeL6LCD55Sodm1hX25lZWRzX3Jlc2VydmF0aW9uKCnlkozpobXpnaLliIbphY3lkI7osIPnlKhcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9odWdldGxiZnNfcmVzZXJ2LnJzdC0yMDQtdm1hX2NvbW1pdF9yZXNlcnZhdGlvbigp5LmL6Ze077yM6aKE55WZ5pig5bCE5pyJ5Y+v6IO96KKr5pS55Y+Y44CC5aaC5p6caHVnZXRsYl9yZXNlcnZlX3BhZ2Vz5Zyo5YWxXFxuLS1cXG5mcy9odWdldGxiZnMvaW5vZGUuYz03MDA9c3RhdGljIGxvbmcgaHVnZXRsYmZzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQsXFxuLS1cXG5mcy9odWdldGxiZnMvaW5vZGUuYy03OTItXFx0XFx0ICovXFxuZnMvaHVnZXRsYmZzL2lub2RlLmM6NzkzOlxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhcXHUwMDI2cHNldWRvX3ZtYSwgYWRkciwgZmFsc2UpO1xcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTc5NC1cXHRcXHRpZiAoSVNfRVJSKGZvbGlvKSkge1xcbi0tXFxuZnMvaHVnZXRsYmZzL2lub2RlLmMtODEzLVxcdFxcdCAqIGZvbGlvX3VubG9jayBiZWNhdXNlIGxvY2tlZCBieSBodWdldGxiX2FkZF90b19wYWdlX2NhY2hlKClcXG5mcy9odWdldGxiZnMvaW5vZGUuYzo4MTQ6XFx0XFx0ICogZm9saW9fcHV0KCkgZHVlIHRvIHJlZmVyZW5jZSBmcm9tIGFsbG9jX2h1Z2V0bGJfZm9saW8oKVxcbmZzL2h1Z2V0bGJmcy9pbm9kZS5jLTgxNS1cXHRcXHQgKi9cXG4tLVxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oPTcwMT1zdHJ1Y3QgZm9saW8gKmh1Z2V0bGJfYWxsb2NfZm9saW8oc3RydWN0IGhzdGF0ZSAqaCxcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC03MDItXFx0XFx0c3RydWN0IG1lbXBvbGljeV9pbnRlcnByZXRlZCAqbXBvbGksIHU4IGFsbG9jX2ZsYWdzKTtcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaDo3MDM6c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTcwNC1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgY293X2Zyb21fb3duZXIpO1xcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oOjcwNTpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soc3RydWN0IGhzdGF0ZSAqaCwgaW50IHByZWZlcnJlZF9uaWQsXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtNzA2LVxcdFxcdFxcdFxcdG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzayxcXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaC03MDctXFx0XFx0XFx0XFx0Ym9vbCBhbGxvd19hbGxvY19mYWxsYmFjayk7XFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6NzA4OnN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb19yZXNlcnZlKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTcwOS1cXHRcXHRcXHRcXHRcXHQgIG5vZGVtYXNrX3QgKm5tYXNrLCBnZnBfdCBnZnBfbWFzayk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaD0xMTIzPXN0YXRpYyBpbmxpbmUgdm9pZCB3YWl0X2Zvcl9mcmVlZF9odWdldGxiX2ZvbGlvcyh2b2lkKVxcbi0tXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMTEyNi1cXG5pbmNsdWRlL2xpbnV4L2h1Z2V0bGIuaDoxMTI3OnN0YXRpYyBpbmxpbmUgc3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTExMjgtXFx0XFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg9MTEzND1zdGF0aWMgaW5saW5lIHN0cnVjdCBmb2xpbyAqXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MTEzNTphbGxvY19odWdldGxiX2ZvbGlvX3Jlc2VydmUoc3RydWN0IGhzdGF0ZSAqaCwgaW50IHByZWZlcnJlZF9uaWQsXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmgtMTEzNi1cXHRcXHRcXHQgICAgbm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrKVxcbi0tXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg9MTE0MT1zdGF0aWMgaW5saW5lIHN0cnVjdCBmb2xpbyAqXFxuaW5jbHVkZS9saW51eC9odWdldGxiLmg6MTE0MjphbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKHN0cnVjdCBoc3RhdGUgKmgsIGludCBwcmVmZXJyZWRfbmlkLFxcbmluY2x1ZGUvbGludXgvaHVnZXRsYi5oLTExNDMtXFx0XFx0XFx0bm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrLFxcbi0tXFxubW0vaHVnZXRsYi5jPTIxNDk9c3RydWN0IGZvbGlvICphbGxvY19idWRkeV9odWdldGxiX2ZvbGlvKHN0cnVjdCBoc3RhdGUgKmgsXFxuLS1cXG5tbS9odWdldGxiLmMtMjE3Mi1cXG5tbS9odWdldGxiLmM6MjE3MzpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fcmVzZXJ2ZShzdHJ1Y3QgaHN0YXRlICpoLCBpbnQgcHJlZmVycmVkX25pZCxcXG5tbS9odWdldGxiLmMtMjE3NC1cXHRcXHRub2RlbWFza190ICpubWFzaywgZ2ZwX3QgZ2ZwX21hc2spXFxuLS1cXG5tbS9odWdldGxiLmMtMjE5My0vKiBmb2xpbyBtaWdyYXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gKi9cXG5tbS9odWdldGxiLmM6MjE5NDpzdHJ1Y3QgZm9saW8gKmFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soc3RydWN0IGhzdGF0ZSAqaCwgaW50IHByZWZlcnJlZF9uaWQsXFxubW0vaHVnZXRsYi5jLTIxOTUtXFx0XFx0bm9kZW1hc2tfdCAqbm1hc2ssIGdmcF90IGdmcF9tYXNrLCBib29sIGFsbG93X2FsbG9jX2ZhbGxiYWNrKVxcbi0tXFxubW0vaHVnZXRsYi5jPTI1Mjc9c3RhdGljIGxvbmcgdm1hX2RlbF9yZXNlcnZhdGlvbihzdHJ1Y3QgaHN0YXRlICpoLFxcbi0tXFxubW0vaHVnZXRsYi5jLTI1MzQtICogVGhpcyByb3V0aW5lIGlzIGNhbGxlZCB0byByZXN0b3JlIHJlc2VydmF0aW9uIGluZm9ybWF0aW9uIG9uIGVycm9yIHBhdGhzLlxcbm1tL2h1Z2V0bGIuYzoyNTM1OiAqIEl0IHNob3VsZCBPTkxZIGJlIGNhbGxlZCBmb3IgZm9saW9zIGFsbG9jYXRlZCB2aWEgYWxsb2NfaHVnZXRsYl9mb2xpbygpLFxcbm1tL2h1Z2V0bGIuYy0yNTM2LSAqIGFuZCB0aGUgaHVnZXRsYiBtdXRleCBzaG91bGQgcmVtYWluIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgcm91dGluZS5cXG4tLVxcbm1tL2h1Z2V0bGIuYy0yNTQxLSAqIDIpIE5vIHJlc2VydmF0aW9uIHdhcyBpbiBwbGFjZSBmb3IgdGhlIHBhZ2UsIHNvIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIGlzXFxubW0vaHVnZXRsYi5jOjI1NDI6ICogICAgbm90IHNldC4gIEhvd2V2ZXIsIGFsbG9jX2h1Z2V0bGJfZm9saW8gYWx3YXlzIHVwZGF0ZXMgdGhlIHJlc2VydmUgbWFwLlxcbm1tL2h1Z2V0bGIuYy0yNTQzLSAqXFxuLS1cXG5tbS9odWdldGxiLmMtMjU1MC0gKlxcbm1tL2h1Z2V0bGIuYzoyNTUxOiAqIEluIGNhc2UgMiwgc2ltcGx5IHVuZG8gcmVzZXJ2ZSBtYXAgbW9kaWZpY2F0aW9ucyBkb25lIGJ5IGFsbG9jX2h1Z2V0bGJfZm9saW8uXFxubW0vaHVnZXRsYi5jLTI1NTItICovXFxubW0vaHVnZXRsYi5jPTI1NTM9dm9pZCByZXN0b3JlX3Jlc2VydmVfb25fZXJyb3Ioc3RydWN0IGhzdGF0ZSAqaCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5tbS9odWdldGxiLmMtMjU3OS1cXHRcXHRcXHQgKiBUaGlzIGluZGljYXRlcyB0aGVyZSBpcyBhbiBlbnRyeSBpbiB0aGUgcmVzZXJ2ZSBtYXBcXG5tbS9odWdldGxiLmM6MjU4MDpcXHRcXHRcXHQgKiBub3QgYWRkZWQgYnkgYWxsb2NfaHVnZXRsYl9mb2xpby4gIFdlIGtub3cgaXQgd2FzIGFkZGVkXFxubW0vaHVnZXRsYi5jOjI1ODE6XFx0XFx0XFx0ICogYmVmb3JlIHRoZSBhbGxvY19odWdldGxiX2ZvbGlvIGNhbGwsIG90aGVyd2lzZVxcbm1tL2h1Z2V0bGIuYy0yNTgyLVxcdFxcdFxcdCAqIGh1Z2V0bGJfcmVzdG9yZV9yZXNlcnZlIHdvdWxkIGJlIHNldCBvbiB0aGUgZm9saW8uXFxuLS1cXG5tbS9odWdldGxiLmM9MjkyMD10eXBlZGVmIGVudW0ge1xcbi0tXFxubW0vaHVnZXRsYi5jLTI5NDUtICovXFxubW0vaHVnZXRsYi5jOjI5NDY6c3RydWN0IGZvbGlvICphbGxvY19odWdldGxiX2ZvbGlvKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbm1tL2h1Z2V0bGIuYy0yOTQ3LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIGFkZHIsIGJvb2wgY293X2Zyb21fb3duZXIpXFxuLS1cXG5tbS9odWdldGxiLmM9NDkxMT1pbnQgY29weV9odWdldGxiX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmMsXFxuLS1cXG5tbS9odWdldGxiLmMtNTAzMi1cXHRcXHRcXHRcXHQvKiBEbyBub3QgdXNlIHJlc2VydmUgYXMgaXQncyBwcml2YXRlIG93bmVkICovXFxubW0vaHVnZXRsYi5jOjUwMzM6XFx0XFx0XFx0XFx0bmV3X2ZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBhZGRyLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTUwMzQtXFx0XFx0XFx0XFx0aWYgKElTX0VSUihuZXdfZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmM9NTUwMT1zdGF0aWMgdm1fZmF1bHRfdCBodWdldGxiX3dwKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxubW0vaHVnZXRsYi5jLTU1ODItXFx0c3Bpbl91bmxvY2sodm1mLVxcdTAwM2VwdGwpO1xcbm1tL2h1Z2V0bGIuYzo1NTgzOlxcdG5ld19mb2xpbyA9IGFsbG9jX2h1Z2V0bGJfZm9saW8odm1hLCB2bWYtXFx1MDAzZWFkZHJlc3MsIGNvd19mcm9tX293bmVyKTtcXG5tbS9odWdldGxiLmMtNTU4NC1cXG4tLVxcbm1tL2h1Z2V0bGIuYz01NzczPXN0YXRpYyB2bV9mYXVsdF90IGh1Z2V0bGJfbm9fcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG4tLVxcbm1tL2h1Z2V0bGIuYy01ODQyLVxcbm1tL2h1Z2V0bGIuYzo1ODQzOlxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyh2bWEsIHZtZi1cXHUwMDNlYWRkcmVzcywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy01ODQ0LVxcdFxcdGlmIChJU19FUlIoZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmM9NjAyMz12bV9mYXVsdF90IGh1Z2V0bGJfZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxubW0vaHVnZXRsYi5jLTYyNTgtICovXFxubW0vaHVnZXRsYi5jOjYyNTk6c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfaHVnZXRsYl9mb2xpb192bWEoc3RydWN0IGhzdGF0ZSAqaCxcXG5tbS9odWdldGxiLmMtNjI2MC1cXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKVxcbi0tXFxubW0vaHVnZXRsYi5jLTYyNzUtXFx0ICovXFxubW0vaHVnZXRsYi5jOjYyNzY6XFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKGgsIG5vZGUsIG5vZGVtYXNrLCBnZnBfbWFzaywgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy02Mjc3LVxcdG1wb2xfY29uZF9wdXQobXBvbCk7XFxuLS1cXG5tbS9odWdldGxiLmM9NjI4Nj1pbnQgaHVnZXRsYl9tZmlsbF9hdG9taWNfcHRlKHB0ZV90ICpkc3RfcHRlLFxcbi0tXFxubW0vaHVnZXRsYi5jLTYzNDItXFxubW0vaHVnZXRsYi5jOjYzNDM6XFx0XFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvKGRzdF92bWEsIGRzdF9hZGRyLCBmYWxzZSk7XFxubW0vaHVnZXRsYi5jLTYzNDQtXFx0XFx0aWYgKElTX0VSUihmb2xpbykpIHtcXG4tLVxcbm1tL2h1Z2V0bGIuYy02MzY4LVxcdFxcdFxcdCAqL1xcbm1tL2h1Z2V0bGIuYzo2MzY5OlxcdFxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpb192bWEoaCwgZHN0X3ZtYSwgZHN0X2FkZHIpO1xcbm1tL2h1Z2V0bGIuYy02MzcwLVxcdFxcdFxcdGlmICghZm9saW8pIHtcXG4tLVxcbm1tL2h1Z2V0bGIuYy02Mzg5LVxcbm1tL2h1Z2V0bGIuYzo2MzkwOlxcdFxcdGZvbGlvID0gYWxsb2NfaHVnZXRsYl9mb2xpbyhkc3Rfdm1hLCBkc3RfYWRkciwgZmFsc2UpO1xcbm1tL2h1Z2V0bGIuYy02MzkxLVxcdFxcdGlmIChJU19FUlIoZm9saW8pKSB7XFxuLS1cXG5tbS9odWdldGxiLmM9NjY4Mz1sb25nIGh1Z2V0bGJfcmVzZXJ2ZV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxubW0vaHVnZXRsYi5jLTY4MDMtXFx0XFx0XFx0ICogbWFwIGJldHdlZW4gcmVnaW9uX2NoZyBhbmQgcmVnaW9uX2FkZC4gIFRoaXNcXG5tbS9odWdldGxiLmM6NjgwNDpcXHRcXHRcXHQgKiBpbmRpY2F0ZXMgYSByYWNlIHdpdGggYWxsb2NfaHVnZXRsYl9mb2xpby4gIEFkanVzdFxcbm1tL2h1Z2V0bGIuYy02ODA1LVxcdFxcdFxcdCAqIHRoZSBzdWJwb29sIGFuZCByZXNlcnZlIGNvdW50cyBtb2RpZmllZCBhYm92ZVxcbi0tXFxubW0vbWVtZmQuYz02OD1zdHJ1Y3QgZm9saW8gKm1lbWZkX2FsbG9jX2ZvbGlvKHN0cnVjdCBmaWxlICptZW1mZCwgcGdvZmZfdCBpZHgpXFxuLS1cXG5tbS9tZW1mZC5jLTkzLVxcbm1tL21lbWZkLmM6OTQ6XFx0XFx0Zm9saW8gPSBhbGxvY19odWdldGxiX2ZvbGlvX3Jlc2VydmUoaCxcXG5tbS9tZW1mZC5jLTk1LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBudW1hX25vZGVfaWQoKSxcXG4tLVxcbm1tL21lbXBvbGljeS5jPTE0MzU9c3RhdGljIHN0cnVjdCBmb2xpbyAqYWxsb2NfbWlncmF0aW9uX3RhcmdldF9ieV9tcG9sKHN0cnVjdCBmb2xpbyAqc3JjLFxcbi0tXFxubW0vbWVtcG9saWN5LmMtMTQ1NC1cXHRcXHRub2RlbWFzayA9IHBvbGljeV9ub2RlbWFzayhnZnAsIHBvbCwgaWx4LCBcXHUwMDI2bmlkKTtcXG5tbS9tZW1wb2xpY3kuYzoxNDU1OlxcdFxcdHJldHVybiBhbGxvY19odWdldGxiX2ZvbGlvX25vZGVtYXNrKGgsIG5pZCwgbm9kZW1hc2ssIGdmcCxcXG5tbS9tZW1wb2xpY3kuYy0xNDU2LVxcdFxcdFxcdFxcdGh0bGJfYWxsb3dfYWxsb2NfZmFsbGJhY2soTVJfTUVNUE9MSUNZX01CSU5EKSk7XFxuLS1cXG5tbS9taWdyYXRlLmM9MjE5OT1zdHJ1Y3QgZm9saW8gKmFsbG9jX21pZ3JhdGlvbl90YXJnZXQoc3RydWN0IGZvbGlvICpzcmMsIHVuc2lnbmVkIGxvbmcgcHJpdmF0ZSlcXG4tLVxcbm1tL21pZ3JhdGUuYy0yMjE2LVxcdFxcdGdmcF9tYXNrID0gaHRsYl9tb2RpZnlfYWxsb2NfbWFzayhoLCBnZnBfbWFzayk7XFxubW0vbWlncmF0ZS5jOjIyMTc6XFx0XFx0cmV0dXJuIGFsbG9jX2h1Z2V0bGJfZm9saW9fbm9kZW1hc2soaCwgbmlkLFxcbm1tL21pZ3JhdGUuYy0yMjE4LVxcdFxcdFxcdFxcdFxcdFxcdG10Yy1cXHUwMDNlbm1hc2ssIGdmcF9tYXNrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTo0MDoxMy43OTQzMTA1ODZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxODgwMDYxODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBgYWxsb2NfaHVnZXRsYl9mb2xpb2AuLi4gdGhhdCdzIHRoZSBrZXkgZnVuY3Rpb24uIEl0J3MgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2Q7IG1ha2VzIGl0IGFjY2Vzc2libGUsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBlbnRyeSBwb2ludC4gVGhlIGluY2x1ZGUgZmlsZSBgaW5jbHVkZS9saW51eC9odWdldGxiLmhgIHRlbGxzIG1lIGl0cyBkZWZpbml0aW9uLCBhbmQgdGhlIHVzYWdlcyBpbiBgZnMvaHVnZXRsYmZzL2lub2RlLmNgIGFuZCBgbW0vaHVnZXRsYi5jYCBnaXZlIG1lIHNvbWUgY29udGV4dC4gSXQncyBkZWZpbml0ZWx5IGEgdmlhYmxlIGZ1enppbmcgdGFyZ2V0LCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSBwYXRjaCBpcyBmb2N1c2VkIG9uIGl0LlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0gdGhlcmUgYXJlbid0IGFueSBvdGhlciBmdW5jdGlvbnMgaGlkaW5nIGluIHRoZSBzaGFkb3dzIHRoYXQgdGhpcyBwYXRjaCBpbmRpcmVjdGx5IHRvdWNoZXMuIE5vcGUsIGBhbGxvY19odWdldGxiX2ZvbGlvYCBzZWVtcyB0byBiZSB0aGUgb25seSBmdW5jdGlvbiB0byBmb2N1cyBvbi4gXG5cblJpZ2h0LCB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBgQ09ORklHX0hVR0VUTEJfUEFHRWAsIGFuZCBpdCdzIHRoZSByaWdodCBvbmUuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMsIHByb2JhYmx5IGBmcy9odWdldGxiZnMvS2NvbmZpZ2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIGp1c3QgdG8gYmUgY2VydGFpbi4gSnVzdCBtYWtpbmcgc3VyZSBubyBvdGhlciBvcHRpb25zIGFyZSByZWxldmFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwMTcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6NDA6MjMuOTgyMzE5MzA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQwNjcyMzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBIVUdFVExCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3NoL21tL0tjb25maWc9MTU4PWNob2ljZVxcbi0tXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE2My1cXG5hcmNoL3NoL21tL0tjb25maWc6MTY0OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV82NEtcXG5hcmNoL3NoL21tL0tjb25maWctMTY1LVxcdGJvb2wgXFxcIjY0a0JcXFwiXFxuLS1cXG5hcmNoL3NoL21tL0tjb25maWctMTY3LVxcbmFyY2gvc2gvbW0vS2NvbmZpZzoxNjg6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzI1NktcXG5hcmNoL3NoL21tL0tjb25maWctMTY5LVxcdGJvb2wgXFxcIjI1NmtCXFxcIlxcbi0tXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3MS1cXG5hcmNoL3NoL21tL0tjb25maWc6MTcyOmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV8xTUJcXG5hcmNoL3NoL21tL0tjb25maWctMTczLVxcdGJvb2wgXFxcIjFNQlxcXCJcXG5hcmNoL3NoL21tL0tjb25maWctMTc0LVxcbmFyY2gvc2gvbW0vS2NvbmZpZzoxNzU6Y29uZmlnIEhVR0VUTEJfUEFHRV9TSVpFXzRNQlxcbmFyY2gvc2gvbW0vS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiNE1CXFxcIlxcbi0tXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE3OC1cXG5hcmNoL3NoL21tL0tjb25maWc6MTc5OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV82NE1CXFxuYXJjaC9zaC9tbS9LY29uZmlnLTE4MC1cXHRib29sIFxcXCI2NE1CXFxcIlxcbi0tXFxuZnMvS2NvbmZpZz0yNDc9Y29uZmlnIEFSQ0hfU1VQUE9SVFNfSFVHRVRMQkZTXFxuLS1cXG5mcy9LY29uZmlnLTI0OS1cXG5mcy9LY29uZmlnOjI1MDptZW51Y29uZmlnIEhVR0VUTEJGU1xcbmZzL0tjb25maWctMjUxLVxcdGJvb2wgXFxcIkh1Z2VUTEIgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL0tjb25maWc9MjYyPWlmIEhVR0VUTEJGU1xcbmZzL0tjb25maWc6MjYzOmNvbmZpZyBIVUdFVExCX1BBR0VfT1BUSU1JWkVfVk1FTU1BUF9ERUZBVUxUX09OXFxuZnMvS2NvbmZpZy0yNjQtXFx0Ym9vbCBcXFwiSHVnZVRMQiBWbWVtbWFwIE9wdGltaXphdGlvbiAoSFZPKSBkZWZhdWx0cyB0byBvblxcXCJcXG4tLVxcbmZzL0tjb25maWc9MjcxPWVuZGlmICMgSFVHRVRMQkZTXFxuZnMvS2NvbmZpZy0yNzItXFxuZnMvS2NvbmZpZzoyNzM6Y29uZmlnIEhVR0VUTEJfUEFHRVxcbmZzL0tjb25maWctMjc0LVxcdGRlZl9ib29sIEhVR0VUTEJGU1xcbi0tXFxuZnMvS2NvbmZpZy0yNzYtXFxuZnMvS2NvbmZpZzoyNzc6Y29uZmlnIEhVR0VUTEJfUEFHRV9PUFRJTUlaRV9WTUVNTUFQXFxuZnMvS2NvbmZpZy0yNzgtXFx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXFxuLS1cXG5mcy9LY29uZmlnLTI4Mi1cXG5mcy9LY29uZmlnOjI4Mzpjb25maWcgSFVHRVRMQl9QTURfUEFHRV9UQUJMRV9TSEFSSU5HXFxuZnMvS2NvbmZpZy0yODQtXFx0ZGVmX2Jvb2wgSFVHRVRMQl9QQUdFXFxuLS1cXG5tbS9LY29uZmlnPTcwNj1jb25maWcgQVJDSF9IQVNfUE1EX1NPRlRMRUFWRVNcXG4tLVxcbm1tL0tjb25maWctNzA4LVxcbm1tL0tjb25maWc6NzA5OmNvbmZpZyBIVUdFVExCX1BBR0VfU0laRV9WQVJJQUJMRVxcbm1tL0tjb25maWctNzEwLVxcdGRlZl9ib29sIG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTU6NDA6MjYuMTIzMDE1NzM5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NzQyMzQ3NzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBIVUdFVExCRlMgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB0aGUgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgaXQncyBjbGVhciB0aGF0IGBIVUdFVExCRlNgIGlzIHRoZSAqcHJpbWFyeSogY29uZmlndXJhdGlvbiBpdGVtIG9mIGludGVyZXN0LiBUaGUgZGVmaW5pdGlvbiBvZiBgSFVHRVRMQl9QQUdFYCAoYGRlZl9ib29sIEhVR0VUTEJGU2ApIGNvbmZpcm1zIHRoYXQgYEhVR0VUTEJGU2AgaXMgdGhlIGNvcmUgY29udHJvbC4gVGhlcmVmb3JlLCBlbmFibGluZyBgSFVHRVRMQkZTYCBpcyB0aGUga2V5IGFjdGlvbi5cblxuSSdsbCByZXR1cm4gYm90aCBgSFVHRVRMQkZTYCBhbmQgYEhVR0VUTEJfUEFHRWAgaW4gdGhlIG91dHB1dCwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgY292ZXIgYW55IGVkZ2UgY2FzZXMuIEhvd2V2ZXIsIHVuZGVyc3RhbmRpbmcgdGhlIGNvcmUgaXMgZXNzZW50aWFsOiBlbmFibGluZyBgSFVHRVRMQkZTYCBpcyBlbm91Z2ggdG8gdHJpZ2dlciB0aGUgZGVzaXJlZCBiZWhhdmlvci5cblxuSGVyZSdzIG15IGRpc3RpbGxlZCBzdW1tYXJ5OiB0aGlzIHBhdGNoIGlzIHJlbGV2YW50IHRvIGZ1enppbmcgYmVjYXVzZSBvZiB0aGUgY2hhbmdlcyBpdCBpbnRyb2R1Y2VzIGluIGZvbGlvIGFsbG9jYXRpb24gZm9yIGh1Z2UgcGFnZXMuIFRoZSBrZXkgZnVuY3Rpb24gaXMgYGFsbG9jX2h1Z2V0bGJfZm9saW9gLiBFbmFibGluZyB0aGUgY29uZmlncyBgSFVHRVRMQkZTYCBhbmQgYEhVR0VUTEJfUEFHRWAgd2lsbCBiZSBuZWNlc3NhcnkuIFRoZSBidWcgZml4ZWQgaXMgYSBmdW5jdGlvbmFsIGlzc3VlIHdpdGhpbiB0aGUgaHVnZXRsYiBzdWJzeXN0ZW0sIGRlYWxpbmcgd2l0aCBjb3JyZWN0IHJlc3RvcmF0aW9uIG9mIHVzZWQgaHBhZ2VzIGR1cmluZyBlcnJvciBwYXRocyB3aGVuIGFsbG9jYXRpbmcgZnJvbSB0aGUgZ2xvYmFsIHBvb2wuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTc4LCJPdXRwdXRUb2tlbnMiOjEwMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNTo0MDo1NS44NjUzNjYxOTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODg0OTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSFVHRVRMQkZTXCIsXG4gICAgXCJIVUdFVExCX1BBR0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbGxvY19odWdldGxiX2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gaHVnZXRsYiBmb2xpbyBhbGxvY2F0aW9uIHdoZXJlIHVzZWRfaHBhZ2VzIGlzIG5vdCBjb3JyZWN0bHkgcmVzdG9yZWQgb24gYSBzcGVjaWZpYyBlcnJvciBwYXRoIHdoZW4gZmFpbGluZyB0byBiYWNrIGZyb20gdGhlIGdsb2JhbCBwb29sLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGh1Z2V0bGIgc3Vic3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhVR0VUTEJGU1wiLFxuICAgIFwiSFVHRVRMQl9QQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxsb2NfaHVnZXRsYl9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGh1Z2V0bGIgZm9saW8gYWxsb2NhdGlvbiB3aGVyZSB1c2VkX2hwYWdlcyBpcyBub3QgY29ycmVjdGx5IHJlc3RvcmVkIG9uIGEgc3BlY2lmaWMgZXJyb3IgcGF0aCB3aGVuIGZhaWxpbmcgdG8gYmFjayBmcm9tIHRoZSBnbG9iYWwgcG9vbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBodWdldGxiIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdch2h[1] Phase: Succeeded StartedAt: 2026-07-13 15:42:11 +0000 UTC FinishedAt: 2026-07-13 15:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-13 15:42:11 +0000 UTC FinishedAt: 2026-07-13 15:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2] Phase: Succeeded StartedAt: 2026-07-13 15:42:11 +0000 UTC FinishedAt: 2026-07-13 20:12:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-13 15:42:11 +0000 UTC FinishedAt: 2026-07-13 20:12:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-13 15:42:11 +0000 UTC FinishedAt: 2026-07-13 15:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-13 15:42:11 +0000 UTC FinishedAt: 2026-07-13 15:42:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdch2h/series-workflowdch2h-convert-artifact-3589857145/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-13 15:42:51 +0000 UTC FinishedAt: 2026-07-13 16:20:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-13 15:42:51 +0000 UTC FinishedAt: 2026-07-13 16:20:25 +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:*7f684501-4366-4760-b932-38f047145c60,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-workflowdch2h/series-workflowdch2h-convert-artifact-3589857145/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": "3ab8ab8d-5bc0-4dba-9e73-e02d1fb6fdff", "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-workflowdch2h/series-workflowdch2h-build-action-1947302039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-13 15:42:51 +0000 UTC FinishedAt: 2026-07-13 16:20:15 +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:*7f684501-4366-4760-b932-38f047145c60,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-workflowdch2h/series-workflowdch2h-convert-artifact-3589857145/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": "3ab8ab8d-5bc0-4dba-9e73-e02d1fb6fdff", "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-workflowdch2h/series-workflowdch2h-build-action-1947302039/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-13 16:20:25 +0000 UTC FinishedAt: 2026-07-13 16:20:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-13 16:20:25 +0000 UTC FinishedAt: 2026-07-13 16:20:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-13 16:20:25 +0000 UTC FinishedAt: 2026-07-13 16:20:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-13 16:20:25 +0000 UTC FinishedAt: 2026-07-13 16:20:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdch2h/series-workflowdch2h-convert-artifact-3280597580/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-13 16:20:35 +0000 UTC FinishedAt: 2026-07-13 16:23:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-13 16:20:35 +0000 UTC FinishedAt: 2026-07-13 16:22:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3ab8ab8d-5bc0-4dba-9e73-e02d1fb6fdff,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-workflowdch2h/series-workflowdch2h-build-action-1947302039/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-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-13 16:23:00 +0000 UTC FinishedAt: 2026-07-13 16:23:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-13 16:23:00 +0000 UTC FinishedAt: 2026-07-13 16:23:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-13 16:23:00 +0000 UTC FinishedAt: 2026-07-13 17:05:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-13 16:23:00 +0000 UTC FinishedAt: 2026-07-13 17:05:20 +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:*7f684501-4366-4760-b932-38f047145c60,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-workflowdch2h/series-workflowdch2h-convert-artifact-3280597580/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": "c8a058bc-6a8d-4230-8fb9-8b47b39c8e80", "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-workflowdch2h/series-workflowdch2h-build-action-2783199336/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-13 16:23:00 +0000 UTC FinishedAt: 2026-07-13 17:05:10 +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:*7f684501-4366-4760-b932-38f047145c60,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-workflowdch2h/series-workflowdch2h-convert-artifact-3280597580/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": "c8a058bc-6a8d-4230-8fb9-8b47b39c8e80", "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-workflowdch2h/series-workflowdch2h-build-action-2783199336/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-13 17:05:20 +0000 UTC FinishedAt: 2026-07-13 17:05:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-13 17:05:20 +0000 UTC FinishedAt: 2026-07-13 17:05:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-13 17:05:20 +0000 UTC FinishedAt: 2026-07-13 17:06:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-13 17:05:20 +0000 UTC FinishedAt: 2026-07-13 17:06:45 +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:*c8a058bc-6a8d-4230-8fb9-8b47b39c8e80,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-workflowdch2h/series-workflowdch2h-build-action-2783199336/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-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-13 17:06:55 +0000 UTC FinishedAt: 2026-07-13 20:12:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-13 17:06:55 +0000 UTC FinishedAt: 2026-07-13 20:12:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_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:*3ab8ab8d-5bc0-4dba-9e73-e02d1fb6fdff,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c8a058bc-6a8d-4230-8fb9-8b47b39c8e80,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-workflowdch2h/series-workflowdch2h-build-action-1947302039/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-workflowdch2h/series-workflowdch2h-build-action-2783199336/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-13 17:06:55 +0000 UTC FinishedAt: 2026-07-13 17:07:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-13 17:06:55 +0000 UTC FinishedAt: 2026-07-13 17:07:00 +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_hugetlb_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-workflowdch2h/series-workflowdch2h-convert-artifact-3987602869/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-13 17:06:55 +0000 UTC FinishedAt: 2026-07-13 17:06:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-13 17:06:55 +0000 UTC FinishedAt: 2026-07-13 17:06:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-13 17:06:55 +0000 UTC FinishedAt: 2026-07-13 17:06:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-13 17:07:05 +0000 UTC FinishedAt: 2026-07-13 20:12:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdch2h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["alloc_hugetlb_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bee763d5f341b99cf472afeb508d4988f62a6ca1","config_name":"upstream-apparmor-kasan.config","enable_configs":["HUGETLBFS","HUGETLB_PAGE"],"series_id":"1684777d-75fd-426b-9abb-a0c70a28e739","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-13 17:07:05 +0000 UTC FinishedAt: 2026-07-13 20:12:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3ab8ab8d-5bc0-4dba-9e73-e02d1fb6fdff,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c8a058bc-6a8d-4230-8fb9-8b47b39c8e80,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-workflowdch2h/series-workflowdch2h-build-action-1947302039/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-workflowdch2h/series-workflowdch2h-build-action-2783199336/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-workflowdch2h/series-workflowdch2h-convert-artifact-3987602869/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,}