Name: series-workflowl9jf4 Phase: Succeeded StartedAt: 2026-07-29 02:57:26 +0000 UTC FinishedAt: 2026-07-29 04:56:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[0] Phase: Succeeded StartedAt: 2026-07-29 02:57:26 +0000 UTC FinishedAt: 2026-07-29 03:19:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 02:57:26 +0000 UTC FinishedAt: 2026-07-29 03:19:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e095f249e2209674f6366f6db0383a2b96e19239", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e095f249e2209674f6366f6db0383a2b96e19239", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH" ], "series_id": "f7042f7b-2a08-4870-a9fc-cdba29e9fac4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ovs_execute_actions", "ovs_dp_process_packet", "ovs_packet_cmd_execute" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZzX2V4ZWN1dGVfYWN0aW9ucyYjMzQ7LAogICAgJiMzNDtvdnNfZHBfcHJvY2Vzc19wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgcmVjdXJzaW9uIGxpbWl0IGNoZWNrIGluIGBjbG9uZV9leGVjdXRlYCB0byBwcmV2ZW50IHN0YWNrIG92ZXJmbG93IG9yIGV4Y2Vzc2l2ZSByZWN1cnNpb24gd2hlbiBleGVjdXRpbmcgT3BlbiB2U3dpdGNoIGFjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBPVlMgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzNmExZGQ3NzM1Mjc2MGJiNmIzYTkzYTQ2MmYxNzYwMDEwMmFkOGE5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDM6MTg6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcbmluZGV4IDUxM2ZjYTZhOGU4YTQuLjA1ZmJmNWMwNzIwMGEgMTAwNjQ0XG4tLS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG5AQCAtMTQ5NywxNCAmIzQzOzE0OTcsMTkgQEAgc3RhdGljIGludCBjbG9uZV9leGVjdXRlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpZiAoY2xvbmUpIHtcbiBcdFx0aW50IGVyciA9IDA7XG4gXHRcdGlmIChhY3Rpb25zKSB7IC8qIFNhbXBsZSBhY3Rpb24gKi9cbi1cdFx0XHRpZiAoY2xvbmVfZmxvd19rZXkpXG4tXHRcdFx0XHRfX3RoaXNfY3B1X2luYyhvdnNfcGNwdV9zdG9yYWdlLVx1MDAzZWV4ZWNfbGV2ZWwpO1xuJiM0MztcdFx0XHRfX3RoaXNfY3B1X2luYyhvdnNfcGNwdV9zdG9yYWdlLVx1MDAzZWV4ZWNfbGV2ZWwpO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKHVubGlrZWx5KF9fdGhpc19jcHVfcmVhZChvdnNfcGNwdV9zdG9yYWdlLVx1MDAzZWV4ZWNfbGV2ZWwpIFx1MDAzZVxuJiM0MztcdFx0XHRcdCAgICAgT1ZTX1JFQ1VSU0lPTl9MSU1JVCkpIHtcbiYjNDM7XHRcdFx0XHRfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLVx1MDAzZWV4ZWNfbGV2ZWwpO1xuJiM0MztcdFx0XHRcdG92c19rZnJlZV9za2JfcmVhc29uKHNrYiwgT1ZTX0RST1BfUkVDVVJTSU9OX0xJTUlUKTtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVORVRET1dOO1xuJiM0MztcdFx0XHR9XG4gXG4gXHRcdFx0ZXJyID0gZG9fZXhlY3V0ZV9hY3Rpb25zKGRwLCBza2IsIGNsb25lLFxuIFx0XHRcdFx0XHRcdCBhY3Rpb25zLCBsZW4pO1xuIFxuLVx0XHRcdGlmIChjbG9uZV9mbG93X2tleSlcbi1cdFx0XHRcdF9fdGhpc19jcHVfZGVjKG92c19wY3B1X3N0b3JhZ2UtXHUwMDNlZXhlY19sZXZlbCk7XG4mIzQzO1x0XHRcdF9fdGhpc19jcHVfZGVjKG92c19wY3B1X3N0b3JhZ2UtXHUwMDNlZXhlY19sZXZlbCk7XG4gXHRcdH0gZWxzZSB7IC8qIFJlY2lyYyBhY3Rpb24gKi9cbiBcdFx0XHRjbG9uZS1cdTAwM2VyZWNpcmNfaWQgPSByZWNpcmNfaWQ7XG4gXHRcdFx0b3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHNrYiwgY2xvbmUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPUEVOVlNXSVRDSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292c19leGVjdXRlX2FjdGlvbnMmIzM0OywKICAgICYjMzQ7b3ZzX2RwX3Byb2Nlc3NfcGFja2V0JiMzNDssCiAgICAmIzM0O292c19wYWNrZXRfY21kX2V4ZWN1dGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHJlY3Vyc2lvbiBsaW1pdCBjaGVjayBpbiBgY2xvbmVfZXhlY3V0ZWAgdG8gcHJldmVudCBzdGFjayBvdmVyZmxvdyBvciBleGNlc3NpdmUgcmVjdXJzaW9uIHdoZW4gZXhlY3V0aW5nIE9wZW4gdlN3aXRjaCBhY3Rpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgT1ZTIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzZhMWRkNzczNTI3NjBiYjZiM2E5M2E0NjJmMTc2MDAxMDJhZDhhOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDI5IDAzOjE4OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMKaW5kZXggNTEzZmNhNmE4ZThhNC4uMDVmYmY1YzA3MjAwYSAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCkBAIC0xNDk3LDE0ICYjNDM7MTQ5NywxOSBAQCBzdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpZiAoY2xvbmUpIHsKIAkJaW50IGVyciA9IDA7CiAJCWlmIChhY3Rpb25zKSB7IC8qIFNhbXBsZSBhY3Rpb24gKi8KLQkJCWlmIChjbG9uZV9mbG93X2tleSkKLQkJCQlfX3RoaXNfY3B1X2luYyhvdnNfcGNwdV9zdG9yYWdlLSZndDtleGVjX2xldmVsKTsKJiM0MzsJCQlfX3RoaXNfY3B1X2luYyhvdnNfcGNwdV9zdG9yYWdlLSZndDtleGVjX2xldmVsKTsKJiM0MzsKJiM0MzsJCQlpZiAodW5saWtlbHkoX190aGlzX2NwdV9yZWFkKG92c19wY3B1X3N0b3JhZ2UtJmd0O2V4ZWNfbGV2ZWwpICZndDsKJiM0MzsJCQkJICAgICBPVlNfUkVDVVJTSU9OX0xJTUlUKSkgewomIzQzOwkJCQlfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLSZndDtleGVjX2xldmVsKTsKJiM0MzsJCQkJb3ZzX2tmcmVlX3NrYl9yZWFzb24oc2tiLCBPVlNfRFJPUF9SRUNVUlNJT05fTElNSVQpOwomIzQzOwkJCQlyZXR1cm4gLUVORVRET1dOOwomIzQzOwkJCX0KIAogCQkJZXJyID0gZG9fZXhlY3V0ZV9hY3Rpb25zKGRwLCBza2IsIGNsb25lLAogCQkJCQkJIGFjdGlvbnMsIGxlbik7CiAKLQkJCWlmIChjbG9uZV9mbG93X2tleSkKLQkJCQlfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLSZndDtleGVjX2xldmVsKTsKJiM0MzsJCQlfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLSZndDtleGVjX2xldmVsKTsKIAkJfSBlbHNlIHsgLyogUmVjaXJjIGFjdGlvbiAqLwogCQkJY2xvbmUtJmd0O3JlY2lyY19pZCA9IHJlY2lyY19pZDsKIAkJCW92c19kcF9wcm9jZXNzX3BhY2tldChza2IsIGNsb25lKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBjbG9uZV9leGVjdXRlYCBNb2RpZmljYXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBjbG9uZV9leGVjdXRlYCBmdW5jdGlvbi4gSXQgc2VlbXMgbGlrZSB0aGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGhvdyB3ZSBoYW5kbGUgcmVjdXJzaW9uIHdpdGhpbiBgY2xvbmVfZXhlY3V0ZWAsIGVzcGVjaWFsbHkgd2hlbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoICYjMzQ7U2FtcGxlJiMzNDsgYWN0aW9ucyDigJMgdGhlIG9uZXMgd2hlcmUgYGFjdGlvbnNgIGlzIHRydWUuCgpQcmV2aW91c2x5LCB0aGUgY29kZSB3b3VsZCBpbmNyZW1lbnQgYG92c19wY3B1X3N0b3JhZ2UtJmd0O2V4ZWNfbGV2ZWxgICh3aGljaCBJIGFzc3VtZSB0cmFja3Mgb3VyIGV4ZWN1dGlvbiBkZXB0aCkgb25seSBpZiBgY2xvbmVfZmxvd19rZXlgIHdhcyBhbHNvIHRydWUuIE5vdywgdGhlIHBhdGNoIGlzIG1ha2luZyB0aGF0IGluY3JlbWVudCB1bmNvbmRpdGlvbmFsICppZiogYGFjdGlvbnNgIGlzIHRydWUsIGVzc2VudGlhbGx5IGZvciBldmVyeSAmIzM0O1NhbXBsZSYjMzQ7IGFjdGlvbi4gVGhlIGNyaXRpY2FsIGFkZGl0aW9uLCB0aG91Z2gsIGlzIGEgY2hlY2sgYWdhaW5zdCBgT1ZTX1JFQ1VSU0lPTl9MSU1JVGAuIEl0IG1ha2VzIHNlbnNlOyB3ZSBkZWZpbml0ZWx5IG5lZWQgdG8gcHJldmVudCBydW5hd2F5IHJlY3Vyc2lvbiBpbiB0aGlzIGNvbnRleHQsIGVzcGVjaWFsbHkgaWYgYWN0aW9ucyBhcmUgaW52b2x2ZWQuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiBmb3IgcHJldmVudGluZyBkZW5pYWwgb2Ygc2VydmljZSBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1ZSB0byBpbmZpbml0ZSBsb29wcyBpbiBhY3Rpb24gcHJvY2Vzc2luZy4gV2UmIzM5O3JlIGVzdGFibGlzaGluZyBhIGhhcmQgbGltaXQgb24gaG93IGRlZXBseSB3ZSYjMzk7bGwgbmVzdCB0aGVzZSBhY3Rpb25zLgoKSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgZXhhY3QgZGV0YWlscyBvZiBgY2xvbmVfZXhlY3V0ZWAgaW4gYG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNgIHRvIGZ1bGx5IGdyYXNwIHRoZSByYW1pZmljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSB3aXNlIHRvIHJlZnJlc2ggbXlzZWxmIG9uIGhvdyB0aGUgYFNhbXBsZWAgYWN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBleGVjdXRpb24gZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjbG9uZV9leGVjdXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTExNT1zdGF0aWMgYm9vbCBpc19mbG93X2tleV92YWxpZChjb25zdCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSlcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTExOS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTIwOnN0YXRpYyBpbnQgY2xvbmVfZXhlY3V0ZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjEtXHRcdFx0IHN0cnVjdCBzd19mbG93X2tleSAqa2V5LFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9OTE4PXN0YXRpYyBpbnQgZGVjX3R0bF9leGNlcHRpb25faGFuZGxlcihzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtOTI1LVx0aWYgKG5sYV9sZW4oYWN0aW9ucykpXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjkyNjpcdFx0cmV0dXJuIGNsb25lX2V4ZWN1dGUoZHAsIHNrYiwga2V5LCAwLCBubGFfZGF0YShhY3Rpb25zKSxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtOTI3LVx0XHRcdFx0ICAgICBubGFfbGVuKGFjdGlvbnMpLCB0cnVlLCBmYWxzZSk7XG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz05Mzc9c3RhdGljIGludCBzYW1wbGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTk2NC1cdGNsb25lX2Zsb3dfa2V5ID0gIWFyZy1cdTAwM2VleGVjO1xubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzo5NjU6XHRlcnIgPSBjbG9uZV9leGVjdXRlKGRwLCBza2IsIGtleSwgMCwgYWN0aW9ucywgcmVtLCBsYXN0LFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy05NjYtXHRcdFx0ICAgIGNsb25lX2Zsb3dfa2V5KTtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTk3OD1zdGF0aWMgaW50IGNsb25lKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy05OTEtXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjk5MjpcdHJldHVybiBjbG9uZV9leGVjdXRlKGRwLCBza2IsIGtleSwgMCwgYWN0aW9ucywgcmVtLCBsYXN0LFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy05OTMtXHRcdFx0ICAgICAhZG9udF9jbG9uZV9mbG93X2tleSk7XG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMTExPXN0YXRpYyBpbnQgZXhlY3V0ZV9yZWNpcmMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTExMjYtXHRyZWNpcmNfaWQgPSBubGFfZ2V0X3UzMihhKTtcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTEyNzpcdHJldHVybiBjbG9uZV9leGVjdXRlKGRwLCBza2IsIGtleSwgcmVjaXJjX2lkLCBOVUxMLCAwLCBsYXN0LCB0cnVlKTtcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTEyOC19XG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMTMwPXN0YXRpYyBpbnQgZXhlY3V0ZV9jaGVja19wa3RfbGVuKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMTY0LVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxMTY1Olx0cmV0dXJuIGNsb25lX2V4ZWN1dGUoZHAsIHNrYiwga2V5LCAwLCBubGFfZGF0YShhY3Rpb25zKSxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTE2Ni1cdFx0XHQgICAgIG5sYV9sZW4oYWN0aW9ucyksIGxhc3QsIGNsb25lX2Zsb3dfa2V5KTtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyNDc9c3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE0NzQtICovXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE0NzU6c3RhdGljIGludCBjbG9uZV9leGVjdXRlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE0NzYtXHRcdFx0IHN0cnVjdCBzd19mbG93X2tleSAqa2V5LCB1MzIgcmVjaXJjX2lkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBhIGBjbG9uZV9leGVjdXRlYCBNb2RpZmljYXRpb24gaW4gT3BlbiB2U3dpdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gemVyb2VzIGluIG9uIGBjbG9uZV9leGVjdXRlYCBpbiBgbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY2AuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBjaGFuZ2VzIHRvIGEgY29yZSBmdW5jdGlvbiBsaWtlIHRoaXMgY2FuIGhhdmUgZmFyLXJlYWNoaW5nIGltcGxpY2F0aW9ucywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgc3RhY2suCgpSaWdodCwgc28gYGNsb25lX2V4ZWN1dGVgIGlzIGNhbGxlZCBieSBhIGZldyBrZXkgYWN0aW9uIGhhbmRsZXJzOiBgZGVjX3R0bF9leGNlcHRpb25faGFuZGxlcmAsIGBzYW1wbGVgLCBgY2xvbmVgLCBgZXhlY3V0ZV9yZWNpcmNgLCBhbmQgYGV4ZWN1dGVfY2hlY2tfcGt0X2xlbmAuIE5vdCBzdXJwcmlzaW5nLCBpdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQgdGhhdCBhIGNsb25lIG9wZXJhdGlvbiB3b3VsZCBiZSB1c2VmdWwgZm9yIGEgZmV3IG9wZXJhdGlvbnMuIEFsbCBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHRoZW4gdWx0aW1hdGVseSBjYWxsZWQgd2l0aGluIGBkb19leGVjdXRlX2FjdGlvbnNgLiBBbmQgKnRoYXQqIGZ1bmN0aW9uIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYG92c19leGVjdXRlX2FjdGlvbnNgLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBhY3Rpb24gZXhlY3V0aW9uLgoKVGhpcyBpcyBjcml0aWNhbCB0byBrZWVwIGluIG1pbmQsIGJlY2F1c2UgY2hhbmdlcyBpbiBgY2xvbmVfZXhlY3V0ZWAgd2lsbCByaXBwbGUgdXB3YXJkcy4gVGhpcyBwYXRjaCBjb3VsZCBwb3RlbnRpYWxseSBhZmZlY3QgYW55IGZsb3cgdGhhdCB1c2VzIHRoZXNlIGFjdGlvbnMuIElmIHRoaXMgaXMgbW9kaWZ5aW5nIHNvbWUga2luZCBvZiBwZXJmb3JtYW5jZSBjcml0aWNhbCBwYXRoLCBpdCBjb3VsZCBoYXZlIGFuIGVmZmVjdCBvbiBhIGxvdCBvZiBmbG93cyEgSSBzaG91bGQga2VlcCBhIGNsb3NlIGV5ZSBvbiB0aGUgcGVyZm9ybWFuY2UgbWV0cmljcyBhcm91bmQgYWxsIHRoZXNlIGFmZmVjdGVkIGZ1bmN0aW9ucy4KCk5vdywgSSBuZWVkIHRvIGdldCB0byB0aGUgT3BlbiB2U3dpdGNoIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE9QRU5WU1dJVENIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL0tjb25maWctNS1cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjY6Y29uZmlnIE9QRU5WU1dJVENIXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7T3BlbiB2U3dpdGNoXCYjMzQ7XG4tLVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNDMtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo0NDpjb25maWcgT1BFTlZTV0lUQ0hfR1JFXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy00NS1cdHRyaXN0YXRlIFwmIzM0O09wZW4gdlN3aXRjaCBHUkUgdHVubmVsaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy01Ni1cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjU3OmNvbmZpZyBPUEVOVlNXSVRDSF9WWExBTlxubmV0L29wZW52c3dpdGNoL0tjb25maWctNTgtXHR0cmlzdGF0ZSBcJiMzNDtPcGVuIHZTd2l0Y2ggVlhMQU4gdHVubmVsaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy02OC1cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjY5OmNvbmZpZyBPUEVOVlNXSVRDSF9HRU5FVkVcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTcwLVx0dHJpc3RhdGUgXCYjMzQ7T3BlbiB2U3dpdGNoIEdlbmV2ZSB0dW5uZWxpbmcgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyODQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIE9wZW4gdlN3aXRjaCBBY3Rpb24gRXhlY3V0aW9uKioKCkFscmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIGlzIGRlZmluaXRlbHkgc2V0IGZvciBgT1BFTlZTV0lUQ0hgLCB0aGF0IG11Y2ggaXMgY2xlYXIuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoZSBmbG93IG9mIGFjdGlvbiBleGVjdXRpb24sIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIE9WUyBjb250ZXh0LiBJJiMzOTttIGtleWluZyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBgY2xvbmVfZXhlY3V0ZWAsIGBkb19leGVjdXRlX2FjdGlvbnNgLCBhbmQgYG92c19leGVjdXRlX2FjdGlvbnNgLiBIbW0sIGhvbGQgb24gYSBzZWNvbmQuLi4gYGNsb25lX2V4ZWN1dGVgIHN0cmlrZXMgbWUgYXMgc29tZXRoaW5nIHRoYXQgbWlnaHQgYmUgc3RhdGljYWxseSBkZWZpbmVkLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQgcXVpY2tseS4gWWVzLCBjb25maXJtZWQhIGBzdGF0aWMgaW50IGNsb25lX2V4ZWN1dGVgLiBTbyB0aGF0JiMzOTtzIGxvY2FsIHNjb3BlIHdpdGhpbiB0aGUgbW9kdWxlLCBpbnRlcmVzdGluZy4gTm93LCBsZXQmIzM5O3Mgc2VlIGFib3V0IGBkb19leGVjdXRlX2FjdGlvbnNgLCB5ZXAsIHRoYXQmIzM5O3MgYWxzbyBzdGF0aWMuIE9rLCBzbyBib3RoIGBjbG9uZV9leGVjdXRlYCBhbmQgYGRvX2V4ZWN1dGVfYWN0aW9uc2AgYXJlIGludGVybmFsIGZ1bmN0aW9ucy4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aG9zZSBmdW5jdGlvbnMgYXJlIG9ubHkgbWVhbnQgdG8gYmUgY2FsbGVkIGluIG9uZSBwbGFjZS4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgZGlyZWN0ZWQgdG8gd2hlcmUgdGhleSBhcmUgaW52b2tlZC4gRmluYWxseSwgYG92c19leGVjdXRlX2FjdGlvbnNgIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBleHBvcnRlZC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgdG8gdGhpcyB3aG9sZSB0aGluZy4gVGhpcyBpcyB0aGUgY3JpdGljYWwsIHB1YmxpYyBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3ZzX2V4ZWN1dGVfYWN0aW9ucyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xNTQ2PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU3Mi0vKiBFeGVjdXRlIGEgbGlzdCBvZiBhY3Rpb25zIGFnYWluc3QgJiMzOTtza2ImIzM5Oy4gKi9cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTU3MzppbnQgb3ZzX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTc0LVx0XHRcdGNvbnN0IHN0cnVjdCBzd19mbG93X2FjdGlvbnMgKmFjdHMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc5MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqRGl2aW5nIGludG8gYG92c19kcF9wcm9jZXNzX3BhY2tldGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCByaWdodCB0byBpdC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgd2UmIzM5O3JlIGluIHRoZSB0aGljayBvZiB0aGUgT3BlbiB2U3dpdGNoIGRhdGEgcGF0aCwgZGVhbGluZyB3aXRoIGFjdHVhbCBwYWNrZXQgcHJvY2Vzc2luZy4mIzM0OyBJdCYjMzk7cyBsaWtlbHkgdGhpcyBmdW5jdGlvbiBpcyB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbSBvZiBob3cgcGFja2V0cyBtb3ZlIHRocm91Z2ggb3VyIHZpcnR1YWwgc3dpdGNoZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nICpyaWdodCBub3cqLiBJJiMzOTttIHRoaW5raW5nLCBpcyB0aGlzIGEgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgc2VlIHBvdGVudGlhbCBib3R0bGVuZWNrcz8gTWVtb3J5IGFsbG9jYXRpb24gaXNzdWVzPyBJcyBpdCBoYW5kbGluZyB0aGUgbWV0YWRhdGEgY29ycmVjdGx5IGFuZCBlZmZpY2llbnRseT8gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgaW4gdXNlPyBJcyB0aGVyZSBhIGZhc3QgcGF0aCBpbXBsZW1lbnRlZCwgb3IgYXJlIHdlIGdvaW5nIHRocm91Z2ggYSBsb3Qgb2YgY29tcGxleCBsb29rdXBzPyBNeSBpbnN0aW5jdCBpcywgdGhpcyBpcyBncm91bmQgemVybyBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIGFuZCBJIG5lZWQgdG8gc3RhcnQgdHJhY2luZyB0aHJvdWdoIGl0cyBleGVjdXRpb24gZmxvdy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgb3Igd2hlcmUgdGhpbmdzIGNhbiBmYWxsIGFwYXJ0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3ZzX2RwX3Byb2Nlc3NfcGFja2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9MjMzPXZvaWQgb3ZzX2RwX2RldGFjaF9wb3J0KHN0cnVjdCB2cG9ydCAqcClcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNDQtLyogTXVzdCBiZSBjYWxsZWQgd2l0aCByY3VfcmVhZF9sb2NrLiAqL1xubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6MjQ1OnZvaWQgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjQ2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE5MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqTXkgTWVudGFsIE1hcHBpbmcgb2YgUGFja2V0IFByb2Nlc3NpbmcgRW50cnkgUG9pbnRzKioKClJpZ2h0LCBsZXQgbWUgc2VlLi4uIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBwcm9jZXNzaW5nIGZsb3cgd2l0aGluIE9WUywgc3BlY2lmaWNhbGx5IHRoZSBkYXRhIHBsYW5lLiBUaGUgZmFjdCB0aGF0IGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgIGlzbiYjMzk7dCBhIHN0YXRpYyBmdW5jdGlvbiBpbW1lZGlhdGVseSB0cmlnZ2VycyBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBkeW5hbWljIG5hdHVyZS4gVGhpcyBtZWFucyB0aGVyZSYjMzk7cyBsaWtlbHkgbW9yZSB0byB1bnBhY2sgaGVyZTsgcG90ZW50aWFsbHkgc29tZSBkaXNwYXRjaGluZyBsb2dpYywgdGFibGUgbG9va3Vwcywgb3IgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgaW52b2x2ZWQgaW4gdGhlICphY3R1YWwqIHdvcmsuIEl0IG1lYW5zIEkgY2FuJiMzOTt0IGp1c3QgbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGRlZmluaXRpb24gYW5kIGFzc3VtZSBJIGhhdmUgdGhlIHdob2xlIHBpY3R1cmUgb2YgZGF0YSBwbGFuZSBwcm9jZXNzaW5nLgoKTm93LCB0aGF0JiMzOTtzIGNydWNpYWwgYmVjYXVzZSBJIGtub3cgaG93IGNyaXRpY2FsIHRoZSBlbnRyeSBwb2ludHMgYXJlLCBhbmQgdGhhdCBteSBpbnZlc3RpZ2F0aW9ucyBuZWVkIHRvIG1vdmUgYmV5b25kIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgLiBJdCYjMzk7cyBqdXN0IGEgc3RhcnRpbmcgcG9pbnQuIEl0JiMzOTtzIHRoZSBwb2ludCB3aGVyZSB0aGluZ3MgZ2V0ICppbnRvKiB0aGUgZGF0YSBwYXRoLCBidXQgSSBrbm93IGJldHRlciB0aGFuIHRvIGFzc3VtZSBpdCYjMzk7cyB0aGUgKm9ubHkqIGVudHJ5LgoKT2theS4uLnNvIEkgY2FuJiMzOTt0IGFzc3VtZSB0aGF0JiMzOTtzIHRoZSBvbmx5IHN0YXJ0aW5nIHBvaW50LiBXaGF0IGVsc2UgbWlnaHQgYmUgcmVsZXZhbnQ/IFRoZSB0ZXh0IHBvaW50cyBvdXQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLCB3aGljaCBtYWtlcyBzZW5zZS4gVGhhdCYjMzk7cyBhIHN0cm9uZyBpbmRpY2F0b3IsIGFzIEkmIzM5O2QgZXhwZWN0IGFuIGV4ZWN1dGlvbiBvciBjb21tYW5kIHByb2Nlc3NpbmcgZW50cnkgcG9pbnQgdG8gYmUgaW1wb3J0YW50IGZvciBtYW5hZ2luZyBwYWNrZXRzIGVudGVyaW5nIG9yIGJlaW5nIGNoYW5nZWQgaW4gdGhlIE9WUyBzeXN0ZW0uIFRoaXMgc3VnZ2VzdHMgYSBjb250cm9sIHBsYW5lIGludGVyYWN0aW9uLCBwYWNrZXQgY29tbWFuZHMsIGFuZCBwcm9jZXNzaW5nIHJlcXVlc3RzIG1pZ2h0IGJlIGxpbmtlZCB0byB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byBlbnRyeSBwb2ludHMuIEkgc2hvdWxkIG1hcCB0aGF0IHJlbGF0aW9uc2hpcCBhbmQgaG93IHRoaXMgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgIGlzIGludm9sdmVkIHdoZW4gY29tcGFyZWQgdG8gYG92c19kcF9wcm9jZXNzX3BhY2tldGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c19wYWNrZXRfY21kX2V4ZWN1dGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz00NTE9c3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNjExLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NjEyOnN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNjEzLXtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz03MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBkcF9wYWNrZXRfZ2VubF9vcHNbXSA9IHtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy03MzYtXHQgIC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sIC8qIFJlcXVpcmVzIENBUF9ORVRfQURNSU4gcHJpdmlsZWdlLiAqL1xubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NzM3Olx0ICAuZG9pdCA9IG92c19wYWNrZXRfY21kX2V4ZWN1dGVcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTczOC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg4MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIE9wZW4gdlN3aXRjaCBBY3Rpb24gRXhlY3V0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgb2YgcGFja2V0IHByb2Nlc3Npbmcgd2l0aGluIE9wZW4gdlN3aXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlIGFjdGlvbiBleGVjdXRpb24gYWN0dWFsbHkgKmhhcHBlbnMqLiBGcm9tIG15IGluaXRpYWwgdW5kZXJzdGFuZGluZywgYG92c19kcF9wcm9jZXNzX3BhY2tldGAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBzZWVtIGxpa2Ugc3Ryb25nIGVudHJ5IHBvaW50cy4gVGhleSYjMzk7cmUgZ29vZCBzdGFydGluZyBwb2ludHMgZm9yIHRyYWNpbmcgdGhlIGxvZ2ljLiBCdXQgd2FpdCwgbGV0JiMzOTtzIG5vdCBkaXNjb3VudCB0aGUgcG9zc2liaWxpdGllcy4gSSBhbHNvIHJlbWVtYmVyIGBvdnNfZXhlY3V0ZV9hY3Rpb25zYCBhcyBhIGxpa2VseSBjb250ZW5kZXIuCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgZGVlcGVyLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgYG92c19leGVjdXRlX2FjdGlvbnNgIGZ1bmN0aW9uLCBJJiMzOTtsbCBjaGVjayBgbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY2AgYW5kIHNlZSB3aGF0IGl0IHJldmVhbHMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bmRhbWVudGFsIHZpZXcgb2YgaG93IGFjdGlvbnMgYXJlIGludGVycHJldGVkIGFuZCBhcHBsaWVkIHRvIGEgZ2l2ZW4gcGFja2V0LiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMgdGhlIGNvcmUgb2Ygd2hhdCBJJiMzOTttIHNlZWtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c19leGVjdXRlX2FjdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTU0Nj1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcClcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE1NzItLyogRXhlY3V0ZSBhIGxpc3Qgb2YgYWN0aW9ucyBhZ2FpbnN0ICYjMzk7c2tiJiMzOTsuICovXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE1NzM6aW50IG92c19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU3NC1cdFx0XHRjb25zdCBzdHJ1Y3Qgc3dfZmxvd19hY3Rpb25zICphY3RzLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTI0NT12b2lkIG92c19kcF9wcm9jZXNzX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSlcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0zMDgtXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzozMDk6XHRlcnJvciA9IG92c19leGVjdXRlX2FjdGlvbnMoZHAsIHNrYiwgc2ZfYWN0cywga2V5KTtcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTMxMC1cdGlmICh1bmxpa2VseShlcnJvcikpXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9NjEyPXN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTcwMi1cdFx0dGhpc19jcHVfd3JpdGUob3ZzX3BjcHVfc3RvcmFnZS1cdTAwM2Vvd25lciwgY3VycmVudCk7XG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo3MDM6XHRlcnIgPSBvdnNfZXhlY3V0ZV9hY3Rpb25zKGRwLCBwYWNrZXQsIHNmX2FjdHMsIFx1MDAyNmZsb3ctXHUwMDNla2V5KTtcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTcwNC1cdGlmIChJU19FTkFCTEVEKENPTkZJR19QUkVFTVBUX1JUKSlcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaD0zMjk9c3RydWN0IHNrX2J1ZmYgKm92c192cG9ydF9jbWRfYnVpbGRfaW5mbyhzdHJ1Y3QgdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMzMxLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmg6MzMyOmludCBvdnNfZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaC0zMzMtXHRcdFx0Y29uc3Qgc3RydWN0IHN3X2Zsb3dfYWN0aW9ucyAqLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MzMKCQkJCQkJCW91dHB1dDogMTA4CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUGxhbjogT3BlbiB2U3dpdGNoIEFjdGlvbiBFeGVjdXRpb24qKgoKT2theSwgc28gYG92c19leGVjdXRlX2FjdGlvbnNgIGlzIGRlZmluaXRlbHkgZXhwb3NlZCBhbmQgYmVpbmcgdXRpbGl6ZWQg4oCTIHRoYXQmIzM5O3MgYSBrZXkgZW50cnkgcG9pbnQuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcmVjdXJzaW9uIGRlcHRoIGlzc3VlIHdpdGhpbiBgY2xvbmVfZXhlY3V0ZWAuIEl0JiMzOTtzIGEgY2xlYXIgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCB0aGF0IGhhcyBkaXJlY3QgaW1wYWN0IG9uIGhvdyBwYWNrZXQgcHJvY2Vzc2luZyBoYXBwZW5zLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGNvbXBsZXggYWN0aW9uIGNoYWlucy4KCkdpdmVuIHRoYXQsIEkmIzM5O20gY29uZmlkZW50IHRoaXMgaXMgc29tZXRoaW5nIHdlIHNob3VsZCBiZSBmdXp6aW5nLgoKTGV0JiMzOTtzIG5haWwgZG93biB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uIHRoZW4uCgpXZSBuZWVkIGBXb3J0aEZ1enppbmdgIHNldCB0byBgdHJ1ZWAsIG9mIGNvdXJzZS4gVGhlIHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIG9uIGBvdnNfZXhlY3V0ZV9hY3Rpb25zYCwgYnV0IHdlIHNob3VsZCBhbHNvIHRhcmdldCBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YCBhbmQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgIGFzIGxpa2VseSBwYXRocyB0aGF0IGludGVyYWN0IHdpdGggdGhlIHByb2JsZW1hdGljIGNvZGUuIFdlJiMzOTtsbCBlbmFibGUgYE9QRU5WU1dJVENIYCBjb25maWcsIHRoaXMgaXMgYSBjbGVhciByZXF1aXJlbWVudC4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgcmVjdXJzaW9uIGxpbWl0IHdpdGhpbiBgY2xvbmVfZXhlY3V0ZWAsIHNwZWNpZmljYWxseSB0byBzdG9wIHN0YWNrIG92ZXJmbG93cyBvciBvdGhlciByZWN1cnNpb24tcmVsYXRlZCBpc3N1ZXMgd2hlbiBPcGVuIHZTd2l0Y2ggYWN0aW9ucyBhcmUgZXhlY3V0ZWQuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRvdWNoaW5nIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgd2l0aGluIE9WUywgYW5kIGl0JiMzOTtzIGludGVuZGVkIHRvIGluY3JlYXNlIHRoZSByb2J1c3RuZXNzIGFuZCBzZWN1cml0eS4gSXQmIzM5O3MgcHJpbWUgZnV6emluZyBtYXRlcmlhbCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZzX2V4ZWN1dGVfYWN0aW9ucyYjMzQ7LAogICAgJiMzNDtvdnNfZHBfcHJvY2Vzc19wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgcmVjdXJzaW9uIGxpbWl0IGNoZWNrIGluIGBjbG9uZV9leGVjdXRlYCB0byBwcmV2ZW50IHN0YWNrIG92ZXJmbG93IG9yIGV4Y2Vzc2l2ZSByZWN1cnNpb24gd2hlbiBleGVjdXRpbmcgT3BlbiB2U3dpdGNoIGFjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBPVlMgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZzX2V4ZWN1dGVfYWN0aW9ucyYjMzQ7LAogICAgJiMzNDtvdnNfZHBfcHJvY2Vzc19wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgcmVjdXJzaW9uIGxpbWl0IGNoZWNrIGluIGBjbG9uZV9leGVjdXRlYCB0byBwcmV2ZW50IHN0YWNrIG92ZXJmbG93IG9yIGV4Y2Vzc2l2ZSByZWN1cnNpb24gd2hlbiBleGVjdXRpbmcgT3BlbiB2U3dpdGNoIGFjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBPVlMgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxODo0MS40NjQwODE1ODZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODAwNjU3MzE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm92c19leGVjdXRlX2FjdGlvbnNcIixcbiAgICBcIm92c19kcF9wcm9jZXNzX3BhY2tldFwiLFxuICAgIFwib3ZzX3BhY2tldF9jbWRfZXhlY3V0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSByZWN1cnNpb24gbGltaXQgY2hlY2sgaW4gYGNsb25lX2V4ZWN1dGVgIHRvIHByZXZlbnQgc3RhY2sgb3ZlcmZsb3cgb3IgZXhjZXNzaXZlIHJlY3Vyc2lvbiB3aGVuIGV4ZWN1dGluZyBPcGVuIHZTd2l0Y2ggYWN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIE9WUyBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6MTg6NDEuNDY0MDkwNDY2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQ0MTQ1NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzNmExZGQ3NzM1Mjc2MGJiNmIzYTkzYTQ2MmYxNzYwMDEwMmFkOGE5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDAzOjE4OjQwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXFxuaW5kZXggNTEzZmNhNmE4ZThhNC4uMDVmYmY1YzA3MjAwYSAxMDA2NDRcXG4tLS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXFxuKysrIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xcbkBAIC0xNDk3LDE0ICsxNDk3LDE5IEBAIHN0YXRpYyBpbnQgY2xvbmVfZXhlY3V0ZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRpZiAoY2xvbmUpIHtcXG4gXFx0XFx0aW50IGVyciA9IDA7XFxuIFxcdFxcdGlmIChhY3Rpb25zKSB7IC8qIFNhbXBsZSBhY3Rpb24gKi9cXG4tXFx0XFx0XFx0aWYgKGNsb25lX2Zsb3dfa2V5KVxcbi1cXHRcXHRcXHRcXHRfX3RoaXNfY3B1X2luYyhvdnNfcGNwdV9zdG9yYWdlLVxcdTAwM2VleGVjX2xldmVsKTtcXG4rXFx0XFx0XFx0X190aGlzX2NwdV9pbmMob3ZzX3BjcHVfc3RvcmFnZS1cXHUwMDNlZXhlY19sZXZlbCk7XFxuK1xcbitcXHRcXHRcXHRpZiAodW5saWtlbHkoX190aGlzX2NwdV9yZWFkKG92c19wY3B1X3N0b3JhZ2UtXFx1MDAzZWV4ZWNfbGV2ZWwpIFxcdTAwM2VcXG4rXFx0XFx0XFx0XFx0ICAgICBPVlNfUkVDVVJTSU9OX0xJTUlUKSkge1xcbitcXHRcXHRcXHRcXHRfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLVxcdTAwM2VleGVjX2xldmVsKTtcXG4rXFx0XFx0XFx0XFx0b3ZzX2tmcmVlX3NrYl9yZWFzb24oc2tiLCBPVlNfRFJPUF9SRUNVUlNJT05fTElNSVQpO1xcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVORVRET1dOO1xcbitcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRlcnIgPSBkb19leGVjdXRlX2FjdGlvbnMoZHAsIHNrYiwgY2xvbmUsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBhY3Rpb25zLCBsZW4pO1xcbiBcXG4tXFx0XFx0XFx0aWYgKGNsb25lX2Zsb3dfa2V5KVxcbi1cXHRcXHRcXHRcXHRfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLVxcdTAwM2VleGVjX2xldmVsKTtcXG4rXFx0XFx0XFx0X190aGlzX2NwdV9kZWMob3ZzX3BjcHVfc3RvcmFnZS1cXHUwMDNlZXhlY19sZXZlbCk7XFxuIFxcdFxcdH0gZWxzZSB7IC8qIFJlY2lyYyBhY3Rpb24gKi9cXG4gXFx0XFx0XFx0Y2xvbmUtXFx1MDAzZXJlY2lyY19pZCA9IHJlY2lyY19pZDtcXG4gXFx0XFx0XFx0b3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHNrYiwgY2xvbmUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxODo0MS45NDk0MjI4ODdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNzUyMTIyMjAxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm92c19leGVjdXRlX2FjdGlvbnNcIixcbiAgICBcIm92c19kcF9wcm9jZXNzX3BhY2tldFwiLFxuICAgIFwib3ZzX3BhY2tldF9jbWRfZXhlY3V0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSByZWN1cnNpb24gbGltaXQgY2hlY2sgaW4gYGNsb25lX2V4ZWN1dGVgIHRvIHByZXZlbnQgc3RhY2sgb3ZlcmZsb3cgb3IgZXhjZXNzaXZlIHJlY3Vyc2lvbiB3aGVuIGV4ZWN1dGluZyBPcGVuIHZTd2l0Y2ggYWN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIE9WUyBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzZhMWRkNzczNTI3NjBiYjZiM2E5M2E0NjJmMTc2MDAxMDJhZDhhOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDAzOjE4OjQwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcbmluZGV4IDUxM2ZjYTZhOGU4YTQuLjA1ZmJmNWMwNzIwMGEgMTAwNjQ0XG4tLS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG4rKysgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG5AQCAtMTQ5NywxNCArMTQ5NywxOSBAQCBzdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmIChjbG9uZSkge1xuIFx0XHRpbnQgZXJyID0gMDtcbiBcdFx0aWYgKGFjdGlvbnMpIHsgLyogU2FtcGxlIGFjdGlvbiAqL1xuLVx0XHRcdGlmIChjbG9uZV9mbG93X2tleSlcbi1cdFx0XHRcdF9fdGhpc19jcHVfaW5jKG92c19wY3B1X3N0b3JhZ2UtXHUwMDNlZXhlY19sZXZlbCk7XG4rXHRcdFx0X190aGlzX2NwdV9pbmMob3ZzX3BjcHVfc3RvcmFnZS1cdTAwM2VleGVjX2xldmVsKTtcbitcbitcdFx0XHRpZiAodW5saWtlbHkoX190aGlzX2NwdV9yZWFkKG92c19wY3B1X3N0b3JhZ2UtXHUwMDNlZXhlY19sZXZlbCkgXHUwMDNlXG4rXHRcdFx0XHQgICAgIE9WU19SRUNVUlNJT05fTElNSVQpKSB7XG4rXHRcdFx0XHRfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLVx1MDAzZWV4ZWNfbGV2ZWwpO1xuK1x0XHRcdFx0b3ZzX2tmcmVlX3NrYl9yZWFzb24oc2tiLCBPVlNfRFJPUF9SRUNVUlNJT05fTElNSVQpO1xuK1x0XHRcdFx0cmV0dXJuIC1FTkVURE9XTjtcbitcdFx0XHR9XG4gXG4gXHRcdFx0ZXJyID0gZG9fZXhlY3V0ZV9hY3Rpb25zKGRwLCBza2IsIGNsb25lLFxuIFx0XHRcdFx0XHRcdCBhY3Rpb25zLCBsZW4pO1xuIFxuLVx0XHRcdGlmIChjbG9uZV9mbG93X2tleSlcbi1cdFx0XHRcdF9fdGhpc19jcHVfZGVjKG92c19wY3B1X3N0b3JhZ2UtXHUwMDNlZXhlY19sZXZlbCk7XG4rXHRcdFx0X190aGlzX2NwdV9kZWMob3ZzX3BjcHVfc3RvcmFnZS1cdTAwM2VleGVjX2xldmVsKTtcbiBcdFx0fSBlbHNlIHsgLyogUmVjaXJjIGFjdGlvbiAqL1xuIFx0XHRcdGNsb25lLVx1MDAzZXJlY2lyY19pZCA9IHJlY2lyY19pZDtcbiBcdFx0XHRvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc2tiLCBjbG9uZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxODo0MS45NDk0MjQ5MTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ5ODU0MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGNsb25lX2V4ZWN1dGVgIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgY2xvbmVfZXhlY3V0ZWAgZnVuY3Rpb24uIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBob3cgd2UgaGFuZGxlIHJlY3Vyc2lvbiB3aXRoaW4gYGNsb25lX2V4ZWN1dGVgLCBlc3BlY2lhbGx5IHdoZW4gd2UncmUgZGVhbGluZyB3aXRoIFwiU2FtcGxlXCIgYWN0aW9ucyDigJMgdGhlIG9uZXMgd2hlcmUgYGFjdGlvbnNgIGlzIHRydWUuXG5cblByZXZpb3VzbHksIHRoZSBjb2RlIHdvdWxkIGluY3JlbWVudCBgb3ZzX3BjcHVfc3RvcmFnZS1cdTAwM2VleGVjX2xldmVsYCAod2hpY2ggSSBhc3N1bWUgdHJhY2tzIG91ciBleGVjdXRpb24gZGVwdGgpIG9ubHkgaWYgYGNsb25lX2Zsb3dfa2V5YCB3YXMgYWxzbyB0cnVlLiBOb3csIHRoZSBwYXRjaCBpcyBtYWtpbmcgdGhhdCBpbmNyZW1lbnQgdW5jb25kaXRpb25hbCAqaWYqIGBhY3Rpb25zYCBpcyB0cnVlLCBlc3NlbnRpYWxseSBmb3IgZXZlcnkgXCJTYW1wbGVcIiBhY3Rpb24uIFRoZSBjcml0aWNhbCBhZGRpdGlvbiwgdGhvdWdoLCBpcyBhIGNoZWNrIGFnYWluc3QgYE9WU19SRUNVUlNJT05fTElNSVRgLiBJdCBtYWtlcyBzZW5zZTsgd2UgZGVmaW5pdGVseSBuZWVkIHRvIHByZXZlbnQgcnVuYXdheSByZWN1cnNpb24gaW4gdGhpcyBjb250ZXh0LCBlc3BlY2lhbGx5IGlmIGFjdGlvbnMgYXJlIGludm9sdmVkLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gZm9yIHByZXZlbnRpbmcgZGVuaWFsIG9mIHNlcnZpY2Ugb3IgdW5leHBlY3RlZCBiZWhhdmlvciBkdWUgdG8gaW5maW5pdGUgbG9vcHMgaW4gYWN0aW9uIHByb2Nlc3NpbmcuIFdlJ3JlIGVzdGFibGlzaGluZyBhIGhhcmQgbGltaXQgb24gaG93IGRlZXBseSB3ZSdsbCBuZXN0IHRoZXNlIGFjdGlvbnMuXG5cbkkgbmVlZCB0byBkaXZlIGludG8gdGhlIGV4YWN0IGRldGFpbHMgb2YgYGNsb25lX2V4ZWN1dGVgIGluIGBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jYCB0byBmdWxseSBncmFzcCB0aGUgcmFtaWZpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gSXQgd291bGQgYmUgd2lzZSB0byByZWZyZXNoIG15c2VsZiBvbiBob3cgdGhlIGBTYW1wbGVgIGFjdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgZXhlY3V0aW9uIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxODo0Ni4wOTkyODE3NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzIwNjc1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjbG9uZV9leGVjdXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMTU9c3RhdGljIGJvb2wgaXNfZmxvd19rZXlfdmFsaWQoY29uc3Qgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTExOS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjEyMDpzdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyMS1cXHRcXHRcXHQgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXksXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTkxOD1zdGF0aWMgaW50IGRlY190dGxfZXhjZXB0aW9uX2hhbmRsZXIoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtOTI1LVxcdGlmIChubGFfbGVuKGFjdGlvbnMpKVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6OTI2OlxcdFxcdHJldHVybiBjbG9uZV9leGVjdXRlKGRwLCBza2IsIGtleSwgMCwgbmxhX2RhdGEoYWN0aW9ucyksXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy05MjctXFx0XFx0XFx0XFx0ICAgICBubGFfbGVuKGFjdGlvbnMpLCB0cnVlLCBmYWxzZSk7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTkzNz1zdGF0aWMgaW50IHNhbXBsZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy05NjQtXFx0Y2xvbmVfZmxvd19rZXkgPSAhYXJnLVxcdTAwM2VleGVjO1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6OTY1OlxcdGVyciA9IGNsb25lX2V4ZWN1dGUoZHAsIHNrYiwga2V5LCAwLCBhY3Rpb25zLCByZW0sIGxhc3QsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy05NjYtXFx0XFx0XFx0ICAgIGNsb25lX2Zsb3dfa2V5KTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9OTc4PXN0YXRpYyBpbnQgY2xvbmUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtOTkxLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6OTkyOlxcdHJldHVybiBjbG9uZV9leGVjdXRlKGRwLCBza2IsIGtleSwgMCwgYWN0aW9ucywgcmVtLCBsYXN0LFxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtOTkzLVxcdFxcdFxcdCAgICAgIWRvbnRfY2xvbmVfZmxvd19rZXkpO1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMTExPXN0YXRpYyBpbnQgZXhlY3V0ZV9yZWNpcmMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTEyNi1cXHRyZWNpcmNfaWQgPSBubGFfZ2V0X3UzMihhKTtcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjExMjc6XFx0cmV0dXJuIGNsb25lX2V4ZWN1dGUoZHAsIHNrYiwga2V5LCByZWNpcmNfaWQsIE5VTEwsIDAsIGxhc3QsIHRydWUpO1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTEyOC19XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTExMzA9c3RhdGljIGludCBleGVjdXRlX2NoZWNrX3BrdF9sZW4oc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTE2NC1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjExNjU6XFx0cmV0dXJuIGNsb25lX2V4ZWN1dGUoZHAsIHNrYiwga2V5LCAwLCBubGFfZGF0YShhY3Rpb25zKSxcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTExNjYtXFx0XFx0XFx0ICAgICBubGFfbGVuKGFjdGlvbnMpLCBsYXN0LCBjbG9uZV9mbG93X2tleSk7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyNDc9c3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTQ3NC0gKi9cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE0NzU6c3RhdGljIGludCBjbG9uZV9leGVjdXRlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNDc2LVxcdFxcdFxcdCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSwgdTMyIHJlY2lyY19pZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6MTg6NDYuMTUyNDk1NDQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcwNzM1MjgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNjb3BlIG9mIGEgYGNsb25lX2V4ZWN1dGVgIE1vZGlmaWNhdGlvbiBpbiBPcGVuIHZTd2l0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gemVyb2VzIGluIG9uIGBjbG9uZV9leGVjdXRlYCBpbiBgbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY2AuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBjaGFuZ2VzIHRvIGEgY29yZSBmdW5jdGlvbiBsaWtlIHRoaXMgY2FuIGhhdmUgZmFyLXJlYWNoaW5nIGltcGxpY2F0aW9ucywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgc3RhY2suXG5cblJpZ2h0LCBzbyBgY2xvbmVfZXhlY3V0ZWAgaXMgY2FsbGVkIGJ5IGEgZmV3IGtleSBhY3Rpb24gaGFuZGxlcnM6IGBkZWNfdHRsX2V4Y2VwdGlvbl9oYW5kbGVyYCwgYHNhbXBsZWAsIGBjbG9uZWAsIGBleGVjdXRlX3JlY2lyY2AsIGFuZCBgZXhlY3V0ZV9jaGVja19wa3RfbGVuYC4gTm90IHN1cnByaXNpbmcsIGl0J3MgcHJldHR5IHN0YW5kYXJkIHRoYXQgYSBjbG9uZSBvcGVyYXRpb24gd291bGQgYmUgdXNlZnVsIGZvciBhIGZldyBvcGVyYXRpb25zLiBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSB0aGVuIHVsdGltYXRlbHkgY2FsbGVkIHdpdGhpbiBgZG9fZXhlY3V0ZV9hY3Rpb25zYC4gQW5kICp0aGF0KiBmdW5jdGlvbiBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGBvdnNfZXhlY3V0ZV9hY3Rpb25zYC4gVGhhdCdzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBhY3Rpb24gZXhlY3V0aW9uLlxuXG5UaGlzIGlzIGNyaXRpY2FsIHRvIGtlZXAgaW4gbWluZCwgYmVjYXVzZSBjaGFuZ2VzIGluIGBjbG9uZV9leGVjdXRlYCB3aWxsIHJpcHBsZSB1cHdhcmRzLiBUaGlzIHBhdGNoIGNvdWxkIHBvdGVudGlhbGx5IGFmZmVjdCBhbnkgZmxvdyB0aGF0IHVzZXMgdGhlc2UgYWN0aW9ucy4gSWYgdGhpcyBpcyBtb2RpZnlpbmcgc29tZSBraW5kIG9mIHBlcmZvcm1hbmNlIGNyaXRpY2FsIHBhdGgsIGl0IGNvdWxkIGhhdmUgYW4gZWZmZWN0IG9uIGEgbG90IG9mIGZsb3dzISBJIHNob3VsZCBrZWVwIGEgY2xvc2UgZXllIG9uIHRoZSBwZXJmb3JtYW5jZSBtZXRyaWNzIGFyb3VuZCBhbGwgdGhlc2UgYWZmZWN0ZWQgZnVuY3Rpb25zLlxuXG5Ob3csIEkgbmVlZCB0byBnZXQgdG8gdGhlIE9wZW4gdlN3aXRjaCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjE4OjQ5Ljg1OTg1MTY3NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDk5MzcwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgT1BFTlZTV0lUQ0hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L29wZW52c3dpdGNoL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL0tjb25maWctNS1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OmNvbmZpZyBPUEVOVlNXSVRDSFxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaFxcXCJcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTQzLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjQ0OmNvbmZpZyBPUEVOVlNXSVRDSF9HUkVcXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy00NS1cXHR0cmlzdGF0ZSBcXFwiT3BlbiB2U3dpdGNoIEdSRSB0dW5uZWxpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTU2LVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjU3OmNvbmZpZyBPUEVOVlNXSVRDSF9WWExBTlxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTU4LVxcdHRyaXN0YXRlIFxcXCJPcGVuIHZTd2l0Y2ggVlhMQU4gdHVubmVsaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy02OC1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OTpjb25maWcgT1BFTlZTV0lUQ0hfR0VORVZFXFxubmV0L29wZW52c3dpdGNoL0tjb25maWctNzAtXFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaCBHZW5ldmUgdHVubmVsaW5nIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjE4OjQ5LjkyMDg1MTczM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTI3MjUwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIE9wZW4gdlN3aXRjaCBBY3Rpb24gRXhlY3V0aW9uKipcblxuQWxyaWdodCwgdGhlIGNvbmZpZ3VyYXRpb24gaXMgZGVmaW5pdGVseSBzZXQgZm9yIGBPUEVOVlNXSVRDSGAsIHRoYXQgbXVjaCBpcyBjbGVhci4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhlIGZsb3cgb2YgYWN0aW9uIGV4ZWN1dGlvbiwgcGFydGljdWxhcmx5IHdpdGhpbiB0aGUgT1ZTIGNvbnRleHQuIEknbSBrZXlpbmcgaW4gb24gdGhlc2Ugc3ltYm9sczogYGNsb25lX2V4ZWN1dGVgLCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCwgYW5kIGBvdnNfZXhlY3V0ZV9hY3Rpb25zYC4gSG1tLCBob2xkIG9uIGEgc2Vjb25kLi4uIGBjbG9uZV9leGVjdXRlYCBzdHJpa2VzIG1lIGFzIHNvbWV0aGluZyB0aGF0IG1pZ2h0IGJlIHN0YXRpY2FsbHkgZGVmaW5lZC4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IHF1aWNrbHkuIFllcywgY29uZmlybWVkISBgc3RhdGljIGludCBjbG9uZV9leGVjdXRlYC4gU28gdGhhdCdzIGxvY2FsIHNjb3BlIHdpdGhpbiB0aGUgbW9kdWxlLCBpbnRlcmVzdGluZy4gTm93LCBsZXQncyBzZWUgYWJvdXQgYGRvX2V4ZWN1dGVfYWN0aW9uc2AsIHllcCwgdGhhdCdzIGFsc28gc3RhdGljLiBPaywgc28gYm90aCBgY2xvbmVfZXhlY3V0ZWAgYW5kIGBkb19leGVjdXRlX2FjdGlvbnNgIGFyZSBpbnRlcm5hbCBmdW5jdGlvbnMuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhvc2UgZnVuY3Rpb25zIGFyZSBvbmx5IG1lYW50IHRvIGJlIGNhbGxlZCBpbiBvbmUgcGxhY2UuIE15IGZvY3VzIG5lZWRzIHRvIGJlIGRpcmVjdGVkIHRvIHdoZXJlIHRoZXkgYXJlIGludm9rZWQuIEZpbmFsbHksIGBvdnNfZXhlY3V0ZV9hY3Rpb25zYCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgZXhwb3J0ZWQuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgdG8gdGhpcyB3aG9sZSB0aGluZy4gVGhpcyBpcyB0aGUgY3JpdGljYWwsIHB1YmxpYyBpbnRlcmZhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxODo1My40MTM1Nzk2ODZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcwNjEyOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib3ZzX2V4ZWN1dGVfYWN0aW9uc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTU0Nj1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU3Mi0vKiBFeGVjdXRlIGEgbGlzdCBvZiBhY3Rpb25zIGFnYWluc3QgJ3NrYicuICovXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxNTczOmludCBvdnNfZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTc0LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBzd19mbG93X2FjdGlvbnMgKmFjdHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjE4OjUzLjQ3MDY1MjU5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDI5MzkyOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipEaXZpbmcgaW50byBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCByaWdodCB0byBpdC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgd2UncmUgaW4gdGhlIHRoaWNrIG9mIHRoZSBPcGVuIHZTd2l0Y2ggZGF0YSBwYXRoLCBkZWFsaW5nIHdpdGggYWN0dWFsIHBhY2tldCBwcm9jZXNzaW5nLlwiIEl0J3MgbGlrZWx5IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGNlbnRyYWwgbmVydm91cyBzeXN0ZW0gb2YgaG93IHBhY2tldHMgbW92ZSB0aHJvdWdoIG91ciB2aXJ0dWFsIHN3aXRjaGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nICpyaWdodCBub3cqLiBJJ20gdGhpbmtpbmcsIGlzIHRoaXMgYSBwbGFjZSB3aGVyZSB3ZSBtaWdodCBzZWUgcG90ZW50aWFsIGJvdHRsZW5lY2tzPyBNZW1vcnkgYWxsb2NhdGlvbiBpc3N1ZXM/IElzIGl0IGhhbmRsaW5nIHRoZSBtZXRhZGF0YSBjb3JyZWN0bHkgYW5kIGVmZmljaWVudGx5PyBXaGF0IGFyZSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBpbiB1c2U/IElzIHRoZXJlIGEgZmFzdCBwYXRoIGltcGxlbWVudGVkLCBvciBhcmUgd2UgZ29pbmcgdGhyb3VnaCBhIGxvdCBvZiBjb21wbGV4IGxvb2t1cHM/IE15IGluc3RpbmN0IGlzLCB0aGlzIGlzIGdyb3VuZCB6ZXJvIGZvciBwZXJmb3JtYW5jZSBhbmFseXNpcywgYW5kIEkgbmVlZCB0byBzdGFydCB0cmFjaW5nIHRocm91Z2ggaXRzIGV4ZWN1dGlvbiBmbG93LiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciB3aGVyZSB0aGluZ3MgY2FuIGZhbGwgYXBhcnQuIExldCdzIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc5MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjE4OjU2LjgxMzU5NTA5MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxNTczMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib3ZzX2RwX3Byb2Nlc3NfcGFja2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTIzMz12b2lkIG92c19kcF9kZXRhY2hfcG9ydChzdHJ1Y3QgdnBvcnQgKnApXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNDQtLyogTXVzdCBiZSBjYWxsZWQgd2l0aCByY3VfcmVhZF9sb2NrLiAqL1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjI0NTp2b2lkIG92c19kcF9wcm9jZXNzX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSlcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNDYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxODo1Ni44Njk3NjU0NjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyOTYyNTkzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipNeSBNZW50YWwgTWFwcGluZyBvZiBQYWNrZXQgUHJvY2Vzc2luZyBFbnRyeSBQb2ludHMqKlxuXG5SaWdodCwgbGV0IG1lIHNlZS4uLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBwcm9jZXNzaW5nIGZsb3cgd2l0aGluIE9WUywgc3BlY2lmaWNhbGx5IHRoZSBkYXRhIHBsYW5lLiBUaGUgZmFjdCB0aGF0IGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgIGlzbid0IGEgc3RhdGljIGZ1bmN0aW9uIGltbWVkaWF0ZWx5IHRyaWdnZXJzIG15IHVuZGVyc3RhbmRpbmcgb2YgaXRzIGR5bmFtaWMgbmF0dXJlLiBUaGlzIG1lYW5zIHRoZXJlJ3MgbGlrZWx5IG1vcmUgdG8gdW5wYWNrIGhlcmU7IHBvdGVudGlhbGx5IHNvbWUgZGlzcGF0Y2hpbmcgbG9naWMsIHRhYmxlIGxvb2t1cHMsIG9yIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIGludm9sdmVkIGluIHRoZSAqYWN0dWFsKiB3b3JrLiBJdCBtZWFucyBJIGNhbid0IGp1c3QgbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGRlZmluaXRpb24gYW5kIGFzc3VtZSBJIGhhdmUgdGhlIHdob2xlIHBpY3R1cmUgb2YgZGF0YSBwbGFuZSBwcm9jZXNzaW5nLlxuXG5Ob3csIHRoYXQncyBjcnVjaWFsIGJlY2F1c2UgSSBrbm93IGhvdyBjcml0aWNhbCB0aGUgZW50cnkgcG9pbnRzIGFyZSwgYW5kIHRoYXQgbXkgaW52ZXN0aWdhdGlvbnMgbmVlZCB0byBtb3ZlIGJleW9uZCBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YC4gSXQncyBqdXN0IGEgc3RhcnRpbmcgcG9pbnQuIEl0J3MgdGhlIHBvaW50IHdoZXJlIHRoaW5ncyBnZXQgKmludG8qIHRoZSBkYXRhIHBhdGgsIGJ1dCBJIGtub3cgYmV0dGVyIHRoYW4gdG8gYXNzdW1lIGl0J3MgdGhlICpvbmx5KiBlbnRyeS5cblxuT2theS4uLnNvIEkgY2FuJ3QgYXNzdW1lIHRoYXQncyB0aGUgb25seSBzdGFydGluZyBwb2ludC4gV2hhdCBlbHNlIG1pZ2h0IGJlIHJlbGV2YW50PyBUaGUgdGV4dCBwb2ludHMgb3V0IGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIFRoYXQncyBhIHN0cm9uZyBpbmRpY2F0b3IsIGFzIEknZCBleHBlY3QgYW4gZXhlY3V0aW9uIG9yIGNvbW1hbmQgcHJvY2Vzc2luZyBlbnRyeSBwb2ludCB0byBiZSBpbXBvcnRhbnQgZm9yIG1hbmFnaW5nIHBhY2tldHMgZW50ZXJpbmcgb3IgYmVpbmcgY2hhbmdlZCBpbiB0aGUgT1ZTIHN5c3RlbS4gVGhpcyBzdWdnZXN0cyBhIGNvbnRyb2wgcGxhbmUgaW50ZXJhY3Rpb24sIHBhY2tldCBjb21tYW5kcywgYW5kIHByb2Nlc3NpbmcgcmVxdWVzdHMgbWlnaHQgYmUgbGlua2VkIHRvIHRoaXMgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIGVudHJ5IHBvaW50cy4gSSBzaG91bGQgbWFwIHRoYXQgcmVsYXRpb25zaGlwIGFuZCBob3cgdGhpcyBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgaXMgaW52b2x2ZWQgd2hlbiBjb21wYXJlZCB0byBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE5MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjE5OjAwLjg5OTM5NTcxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzA5MjEyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvdnNfcGFja2V0X2NtZF9leGVjdXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTQ1MT1zdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTYxMS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo2MTI6c3RhdGljIGludCBvdnNfcGFja2V0X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNjEzLXtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTczMz1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIGRwX3BhY2tldF9nZW5sX29wc1tdID0ge1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNzM2LVxcdCAgLmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSwgLyogUmVxdWlyZXMgQ0FQX05FVF9BRE1JTiBwcml2aWxlZ2UuICovXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NzM3OlxcdCAgLmRvaXQgPSBvdnNfcGFja2V0X2NtZF9leGVjdXRlXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNzM4LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6MTk6MDAuOTU2NDk0OTQ5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjIwMjM4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIE9wZW4gdlN3aXRjaCBBY3Rpb24gRXhlY3V0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb3JlIG9mIHBhY2tldCBwcm9jZXNzaW5nIHdpdGhpbiBPcGVuIHZTd2l0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoZSBhY3Rpb24gZXhlY3V0aW9uIGFjdHVhbGx5ICpoYXBwZW5zKi4gRnJvbSBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcsIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgIGFuZCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgc2VlbSBsaWtlIHN0cm9uZyBlbnRyeSBwb2ludHMuIFRoZXkncmUgZ29vZCBzdGFydGluZyBwb2ludHMgZm9yIHRyYWNpbmcgdGhlIGxvZ2ljLiBCdXQgd2FpdCwgbGV0J3Mgbm90IGRpc2NvdW50IHRoZSBwb3NzaWJpbGl0aWVzLiBJIGFsc28gcmVtZW1iZXIgYG92c19leGVjdXRlX2FjdGlvbnNgIGFzIGEgbGlrZWx5IGNvbnRlbmRlci5cblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGRlZXBlci4gSSdsbCBmb2N1cyBvbiB0aGUgYG92c19leGVjdXRlX2FjdGlvbnNgIGZ1bmN0aW9uLCBJJ2xsIGNoZWNrIGBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jYCBhbmQgc2VlIHdoYXQgaXQgcmV2ZWFscy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZnVuZGFtZW50YWwgdmlldyBvZiBob3cgYWN0aW9ucyBhcmUgaW50ZXJwcmV0ZWQgYW5kIGFwcGxpZWQgdG8gYSBnaXZlbiBwYWNrZXQuIExldCdzIHNlZSBpZiB0aGlzIGlzIHRoZSBjb3JlIG9mIHdoYXQgSSdtIHNlZWtpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4ODEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxOTowNC4zNzg1MjE2NTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MzgwMDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm92c19leGVjdXRlX2FjdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L29wZW52c3dpdGNoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTE1NDY9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHApXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE1NzItLyogRXhlY3V0ZSBhIGxpc3Qgb2YgYWN0aW9ucyBhZ2FpbnN0ICdza2InLiAqL1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTU3MzppbnQgb3ZzX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU3NC1cXHRcXHRcXHRjb25zdCBzdHJ1Y3Qgc3dfZmxvd19hY3Rpb25zICphY3RzLFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9MjQ1PXZvaWQgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMzA4LVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjMwOTpcXHRlcnJvciA9IG92c19leGVjdXRlX2FjdGlvbnMoZHAsIHNrYiwgc2ZfYWN0cywga2V5KTtcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0zMTAtXFx0aWYgKHVubGlrZWx5KGVycm9yKSlcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTYxMj1zdGF0aWMgaW50IG92c19wYWNrZXRfY21kX2V4ZWN1dGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTcwMi1cXHRcXHR0aGlzX2NwdV93cml0ZShvdnNfcGNwdV9zdG9yYWdlLVxcdTAwM2Vvd25lciwgY3VycmVudCk7XFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NzAzOlxcdGVyciA9IG92c19leGVjdXRlX2FjdGlvbnMoZHAsIHBhY2tldCwgc2ZfYWN0cywgXFx1MDAyNmZsb3ctXFx1MDAzZWtleSk7XFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNzA0LVxcdGlmIChJU19FTkFCTEVEKENPTkZJR19QUkVFTVBUX1JUKSlcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oPTMyOT1zdHJ1Y3Qgc2tfYnVmZiAqb3ZzX3Zwb3J0X2NtZF9idWlsZF9pbmZvKHN0cnVjdCB2cG9ydCAqdnBvcnQsIHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oLTMzMS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaDozMzI6aW50IG92c19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaC0zMzMtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IHN3X2Zsb3dfYWN0aW9ucyAqLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjE5OjA0LjQzMjkxMDI5N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTQyOTEwODAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUGxhbjogT3BlbiB2U3dpdGNoIEFjdGlvbiBFeGVjdXRpb24qKlxuXG5Pa2F5LCBzbyBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AgaXMgZGVmaW5pdGVseSBleHBvc2VkIGFuZCBiZWluZyB1dGlsaXplZCDigJMgdGhhdCdzIGEga2V5IGVudHJ5IHBvaW50LiBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIHJlY3Vyc2lvbiBkZXB0aCBpc3N1ZSB3aXRoaW4gYGNsb25lX2V4ZWN1dGVgLiBJdCdzIGEgY2xlYXIgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCB0aGF0IGhhcyBkaXJlY3QgaW1wYWN0IG9uIGhvdyBwYWNrZXQgcHJvY2Vzc2luZyBoYXBwZW5zLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGNvbXBsZXggYWN0aW9uIGNoYWlucy5cblxuR2l2ZW4gdGhhdCwgSSdtIGNvbmZpZGVudCB0aGlzIGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgYmUgZnV6emluZy5cblxuTGV0J3MgbmFpbCBkb3duIHRoZSBmdXp6aW5nIGNvbmZpZ3VyYXRpb24gdGhlbi5cblxuV2UgbmVlZCBgV29ydGhGdXp6aW5nYCBzZXQgdG8gYHRydWVgLCBvZiBjb3Vyc2UuIFRoZSBwcmltYXJ5IGZvY3VzIHNob3VsZCBiZSBvbiBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AsIGJ1dCB3ZSBzaG91bGQgYWxzbyB0YXJnZXQgYG92c19kcF9wcm9jZXNzX3BhY2tldGAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBhcyBsaWtlbHkgcGF0aHMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBwcm9ibGVtYXRpYyBjb2RlLiBXZSdsbCBlbmFibGUgYE9QRU5WU1dJVENIYCBjb25maWcsIHRoaXMgaXMgYSBjbGVhciByZXF1aXJlbWVudC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSByZWN1cnNpb24gbGltaXQgd2l0aGluIGBjbG9uZV9leGVjdXRlYCwgc3BlY2lmaWNhbGx5IHRvIHN0b3Agc3RhY2sgb3ZlcmZsb3dzIG9yIG90aGVyIHJlY3Vyc2lvbi1yZWxhdGVkIGlzc3VlcyB3aGVuIE9wZW4gdlN3aXRjaCBhY3Rpb25zIGFyZSBleGVjdXRlZC4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB0b3VjaGluZyBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHdpdGhpbiBPVlMsIGFuZCBpdCdzIGludGVuZGVkIHRvIGluY3JlYXNlIHRoZSByb2J1c3RuZXNzIGFuZCBzZWN1cml0eS4gSXQncyBwcmltZSBmdXp6aW5nIG1hdGVyaWFsIVxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzMzLCJPdXRwdXRUb2tlbnMiOjEwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxOTowOS4zNzU4MjM2MDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDgxNjIxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfZXhlY3V0ZV9hY3Rpb25zXCIsXG4gICAgXCJvdnNfZHBfcHJvY2Vzc19wYWNrZXRcIixcbiAgICBcIm92c19wYWNrZXRfY21kX2V4ZWN1dGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgcmVjdXJzaW9uIGxpbWl0IGNoZWNrIGluIGBjbG9uZV9leGVjdXRlYCB0byBwcmV2ZW50IHN0YWNrIG92ZXJmbG93IG9yIGV4Y2Vzc2l2ZSByZWN1cnNpb24gd2hlbiBleGVjdXRpbmcgT3BlbiB2U3dpdGNoIGFjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBPVlMgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfZXhlY3V0ZV9hY3Rpb25zXCIsXG4gICAgXCJvdnNfZHBfcHJvY2Vzc19wYWNrZXRcIixcbiAgICBcIm92c19wYWNrZXRfY21kX2V4ZWN1dGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgcmVjdXJzaW9uIGxpbWl0IGNoZWNrIGluIGBjbG9uZV9leGVjdXRlYCB0byBwcmV2ZW50IHN0YWNrIG92ZXJmbG93IG9yIGV4Y2Vzc2l2ZSByZWN1cnNpb24gd2hlbiBleGVjdXRpbmcgT3BlbiB2U3dpdGNoIGFjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBPVlMgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl9jf4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 02:57:26 +0000 UTC FinishedAt: 2026-07-29 03:19:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e095f249e2209674f6366f6db0383a2b96e19239", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e095f249e2209674f6366f6db0383a2b96e19239", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH" ], "series_id": "f7042f7b-2a08-4870-a9fc-cdba29e9fac4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ovs_execute_actions", "ovs_dp_process_packet", "ovs_packet_cmd_execute" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZzX2V4ZWN1dGVfYWN0aW9ucyYjMzQ7LAogICAgJiMzNDtvdnNfZHBfcHJvY2Vzc19wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgcmVjdXJzaW9uIGxpbWl0IGNoZWNrIGluIGBjbG9uZV9leGVjdXRlYCB0byBwcmV2ZW50IHN0YWNrIG92ZXJmbG93IG9yIGV4Y2Vzc2l2ZSByZWN1cnNpb24gd2hlbiBleGVjdXRpbmcgT3BlbiB2U3dpdGNoIGFjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBPVlMgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzNmExZGQ3NzM1Mjc2MGJiNmIzYTkzYTQ2MmYxNzYwMDEwMmFkOGE5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDM6MTg6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcbmluZGV4IDUxM2ZjYTZhOGU4YTQuLjA1ZmJmNWMwNzIwMGEgMTAwNjQ0XG4tLS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG5AQCAtMTQ5NywxNCAmIzQzOzE0OTcsMTkgQEAgc3RhdGljIGludCBjbG9uZV9leGVjdXRlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpZiAoY2xvbmUpIHtcbiBcdFx0aW50IGVyciA9IDA7XG4gXHRcdGlmIChhY3Rpb25zKSB7IC8qIFNhbXBsZSBhY3Rpb24gKi9cbi1cdFx0XHRpZiAoY2xvbmVfZmxvd19rZXkpXG4tXHRcdFx0XHRfX3RoaXNfY3B1X2luYyhvdnNfcGNwdV9zdG9yYWdlLVx1MDAzZWV4ZWNfbGV2ZWwpO1xuJiM0MztcdFx0XHRfX3RoaXNfY3B1X2luYyhvdnNfcGNwdV9zdG9yYWdlLVx1MDAzZWV4ZWNfbGV2ZWwpO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKHVubGlrZWx5KF9fdGhpc19jcHVfcmVhZChvdnNfcGNwdV9zdG9yYWdlLVx1MDAzZWV4ZWNfbGV2ZWwpIFx1MDAzZVxuJiM0MztcdFx0XHRcdCAgICAgT1ZTX1JFQ1VSU0lPTl9MSU1JVCkpIHtcbiYjNDM7XHRcdFx0XHRfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLVx1MDAzZWV4ZWNfbGV2ZWwpO1xuJiM0MztcdFx0XHRcdG92c19rZnJlZV9za2JfcmVhc29uKHNrYiwgT1ZTX0RST1BfUkVDVVJTSU9OX0xJTUlUKTtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVORVRET1dOO1xuJiM0MztcdFx0XHR9XG4gXG4gXHRcdFx0ZXJyID0gZG9fZXhlY3V0ZV9hY3Rpb25zKGRwLCBza2IsIGNsb25lLFxuIFx0XHRcdFx0XHRcdCBhY3Rpb25zLCBsZW4pO1xuIFxuLVx0XHRcdGlmIChjbG9uZV9mbG93X2tleSlcbi1cdFx0XHRcdF9fdGhpc19jcHVfZGVjKG92c19wY3B1X3N0b3JhZ2UtXHUwMDNlZXhlY19sZXZlbCk7XG4mIzQzO1x0XHRcdF9fdGhpc19jcHVfZGVjKG92c19wY3B1X3N0b3JhZ2UtXHUwMDNlZXhlY19sZXZlbCk7XG4gXHRcdH0gZWxzZSB7IC8qIFJlY2lyYyBhY3Rpb24gKi9cbiBcdFx0XHRjbG9uZS1cdTAwM2VyZWNpcmNfaWQgPSByZWNpcmNfaWQ7XG4gXHRcdFx0b3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHNrYiwgY2xvbmUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPUEVOVlNXSVRDSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292c19leGVjdXRlX2FjdGlvbnMmIzM0OywKICAgICYjMzQ7b3ZzX2RwX3Byb2Nlc3NfcGFja2V0JiMzNDssCiAgICAmIzM0O292c19wYWNrZXRfY21kX2V4ZWN1dGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHJlY3Vyc2lvbiBsaW1pdCBjaGVjayBpbiBgY2xvbmVfZXhlY3V0ZWAgdG8gcHJldmVudCBzdGFjayBvdmVyZmxvdyBvciBleGNlc3NpdmUgcmVjdXJzaW9uIHdoZW4gZXhlY3V0aW5nIE9wZW4gdlN3aXRjaCBhY3Rpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgT1ZTIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzZhMWRkNzczNTI3NjBiYjZiM2E5M2E0NjJmMTc2MDAxMDJhZDhhOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDI5IDAzOjE4OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMKaW5kZXggNTEzZmNhNmE4ZThhNC4uMDVmYmY1YzA3MjAwYSAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jCkBAIC0xNDk3LDE0ICYjNDM7MTQ5NywxOSBAQCBzdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlpZiAoY2xvbmUpIHsKIAkJaW50IGVyciA9IDA7CiAJCWlmIChhY3Rpb25zKSB7IC8qIFNhbXBsZSBhY3Rpb24gKi8KLQkJCWlmIChjbG9uZV9mbG93X2tleSkKLQkJCQlfX3RoaXNfY3B1X2luYyhvdnNfcGNwdV9zdG9yYWdlLSZndDtleGVjX2xldmVsKTsKJiM0MzsJCQlfX3RoaXNfY3B1X2luYyhvdnNfcGNwdV9zdG9yYWdlLSZndDtleGVjX2xldmVsKTsKJiM0MzsKJiM0MzsJCQlpZiAodW5saWtlbHkoX190aGlzX2NwdV9yZWFkKG92c19wY3B1X3N0b3JhZ2UtJmd0O2V4ZWNfbGV2ZWwpICZndDsKJiM0MzsJCQkJICAgICBPVlNfUkVDVVJTSU9OX0xJTUlUKSkgewomIzQzOwkJCQlfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLSZndDtleGVjX2xldmVsKTsKJiM0MzsJCQkJb3ZzX2tmcmVlX3NrYl9yZWFzb24oc2tiLCBPVlNfRFJPUF9SRUNVUlNJT05fTElNSVQpOwomIzQzOwkJCQlyZXR1cm4gLUVORVRET1dOOwomIzQzOwkJCX0KIAogCQkJZXJyID0gZG9fZXhlY3V0ZV9hY3Rpb25zKGRwLCBza2IsIGNsb25lLAogCQkJCQkJIGFjdGlvbnMsIGxlbik7CiAKLQkJCWlmIChjbG9uZV9mbG93X2tleSkKLQkJCQlfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLSZndDtleGVjX2xldmVsKTsKJiM0MzsJCQlfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLSZndDtleGVjX2xldmVsKTsKIAkJfSBlbHNlIHsgLyogUmVjaXJjIGFjdGlvbiAqLwogCQkJY2xvbmUtJmd0O3JlY2lyY19pZCA9IHJlY2lyY19pZDsKIAkJCW92c19kcF9wcm9jZXNzX3BhY2tldChza2IsIGNsb25lKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBjbG9uZV9leGVjdXRlYCBNb2RpZmljYXRpb24qKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBjbG9uZV9leGVjdXRlYCBmdW5jdGlvbi4gSXQgc2VlbXMgbGlrZSB0aGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGhvdyB3ZSBoYW5kbGUgcmVjdXJzaW9uIHdpdGhpbiBgY2xvbmVfZXhlY3V0ZWAsIGVzcGVjaWFsbHkgd2hlbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoICYjMzQ7U2FtcGxlJiMzNDsgYWN0aW9ucyDigJMgdGhlIG9uZXMgd2hlcmUgYGFjdGlvbnNgIGlzIHRydWUuCgpQcmV2aW91c2x5LCB0aGUgY29kZSB3b3VsZCBpbmNyZW1lbnQgYG92c19wY3B1X3N0b3JhZ2UtJmd0O2V4ZWNfbGV2ZWxgICh3aGljaCBJIGFzc3VtZSB0cmFja3Mgb3VyIGV4ZWN1dGlvbiBkZXB0aCkgb25seSBpZiBgY2xvbmVfZmxvd19rZXlgIHdhcyBhbHNvIHRydWUuIE5vdywgdGhlIHBhdGNoIGlzIG1ha2luZyB0aGF0IGluY3JlbWVudCB1bmNvbmRpdGlvbmFsICppZiogYGFjdGlvbnNgIGlzIHRydWUsIGVzc2VudGlhbGx5IGZvciBldmVyeSAmIzM0O1NhbXBsZSYjMzQ7IGFjdGlvbi4gVGhlIGNyaXRpY2FsIGFkZGl0aW9uLCB0aG91Z2gsIGlzIGEgY2hlY2sgYWdhaW5zdCBgT1ZTX1JFQ1VSU0lPTl9MSU1JVGAuIEl0IG1ha2VzIHNlbnNlOyB3ZSBkZWZpbml0ZWx5IG5lZWQgdG8gcHJldmVudCBydW5hd2F5IHJlY3Vyc2lvbiBpbiB0aGlzIGNvbnRleHQsIGVzcGVjaWFsbHkgaWYgYWN0aW9ucyBhcmUgaW52b2x2ZWQuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiBmb3IgcHJldmVudGluZyBkZW5pYWwgb2Ygc2VydmljZSBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1ZSB0byBpbmZpbml0ZSBsb29wcyBpbiBhY3Rpb24gcHJvY2Vzc2luZy4gV2UmIzM5O3JlIGVzdGFibGlzaGluZyBhIGhhcmQgbGltaXQgb24gaG93IGRlZXBseSB3ZSYjMzk7bGwgbmVzdCB0aGVzZSBhY3Rpb25zLgoKSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgZXhhY3QgZGV0YWlscyBvZiBgY2xvbmVfZXhlY3V0ZWAgaW4gYG5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNgIHRvIGZ1bGx5IGdyYXNwIHRoZSByYW1pZmljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBJdCB3b3VsZCBiZSB3aXNlIHRvIHJlZnJlc2ggbXlzZWxmIG9uIGhvdyB0aGUgYFNhbXBsZWAgYWN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBleGVjdXRpb24gZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjbG9uZV9leGVjdXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTExNT1zdGF0aWMgYm9vbCBpc19mbG93X2tleV92YWxpZChjb25zdCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSlcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTExOS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTIwOnN0YXRpYyBpbnQgY2xvbmVfZXhlY3V0ZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMjEtXHRcdFx0IHN0cnVjdCBzd19mbG93X2tleSAqa2V5LFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9OTE4PXN0YXRpYyBpbnQgZGVjX3R0bF9leGNlcHRpb25faGFuZGxlcihzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtOTI1LVx0aWYgKG5sYV9sZW4oYWN0aW9ucykpXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjkyNjpcdFx0cmV0dXJuIGNsb25lX2V4ZWN1dGUoZHAsIHNrYiwga2V5LCAwLCBubGFfZGF0YShhY3Rpb25zKSxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtOTI3LVx0XHRcdFx0ICAgICBubGFfbGVuKGFjdGlvbnMpLCB0cnVlLCBmYWxzZSk7XG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz05Mzc9c3RhdGljIGludCBzYW1wbGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTk2NC1cdGNsb25lX2Zsb3dfa2V5ID0gIWFyZy1cdTAwM2VleGVjO1xubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzo5NjU6XHRlcnIgPSBjbG9uZV9leGVjdXRlKGRwLCBza2IsIGtleSwgMCwgYWN0aW9ucywgcmVtLCBsYXN0LFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy05NjYtXHRcdFx0ICAgIGNsb25lX2Zsb3dfa2V5KTtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTk3OD1zdGF0aWMgaW50IGNsb25lKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy05OTEtXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjk5MjpcdHJldHVybiBjbG9uZV9leGVjdXRlKGRwLCBza2IsIGtleSwgMCwgYWN0aW9ucywgcmVtLCBsYXN0LFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy05OTMtXHRcdFx0ICAgICAhZG9udF9jbG9uZV9mbG93X2tleSk7XG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMTExPXN0YXRpYyBpbnQgZXhlY3V0ZV9yZWNpcmMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTExMjYtXHRyZWNpcmNfaWQgPSBubGFfZ2V0X3UzMihhKTtcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTEyNzpcdHJldHVybiBjbG9uZV9leGVjdXRlKGRwLCBza2IsIGtleSwgcmVjaXJjX2lkLCBOVUxMLCAwLCBsYXN0LCB0cnVlKTtcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTEyOC19XG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMTMwPXN0YXRpYyBpbnQgZXhlY3V0ZV9jaGVja19wa3RfbGVuKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xMTY0LVxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxMTY1Olx0cmV0dXJuIGNsb25lX2V4ZWN1dGUoZHAsIHNrYiwga2V5LCAwLCBubGFfZGF0YShhY3Rpb25zKSxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTE2Ni1cdFx0XHQgICAgIG5sYV9sZW4oYWN0aW9ucyksIGxhc3QsIGNsb25lX2Zsb3dfa2V5KTtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyNDc9c3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE0NzQtICovXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE0NzU6c3RhdGljIGludCBjbG9uZV9leGVjdXRlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE0NzYtXHRcdFx0IHN0cnVjdCBzd19mbG93X2tleSAqa2V5LCB1MzIgcmVjaXJjX2lkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiBhIGBjbG9uZV9leGVjdXRlYCBNb2RpZmljYXRpb24gaW4gT3BlbiB2U3dpdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gemVyb2VzIGluIG9uIGBjbG9uZV9leGVjdXRlYCBpbiBgbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY2AuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBjaGFuZ2VzIHRvIGEgY29yZSBmdW5jdGlvbiBsaWtlIHRoaXMgY2FuIGhhdmUgZmFyLXJlYWNoaW5nIGltcGxpY2F0aW9ucywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgc3RhY2suCgpSaWdodCwgc28gYGNsb25lX2V4ZWN1dGVgIGlzIGNhbGxlZCBieSBhIGZldyBrZXkgYWN0aW9uIGhhbmRsZXJzOiBgZGVjX3R0bF9leGNlcHRpb25faGFuZGxlcmAsIGBzYW1wbGVgLCBgY2xvbmVgLCBgZXhlY3V0ZV9yZWNpcmNgLCBhbmQgYGV4ZWN1dGVfY2hlY2tfcGt0X2xlbmAuIE5vdCBzdXJwcmlzaW5nLCBpdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQgdGhhdCBhIGNsb25lIG9wZXJhdGlvbiB3b3VsZCBiZSB1c2VmdWwgZm9yIGEgZmV3IG9wZXJhdGlvbnMuIEFsbCBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHRoZW4gdWx0aW1hdGVseSBjYWxsZWQgd2l0aGluIGBkb19leGVjdXRlX2FjdGlvbnNgLiBBbmQgKnRoYXQqIGZ1bmN0aW9uIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYG92c19leGVjdXRlX2FjdGlvbnNgLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBhY3Rpb24gZXhlY3V0aW9uLgoKVGhpcyBpcyBjcml0aWNhbCB0byBrZWVwIGluIG1pbmQsIGJlY2F1c2UgY2hhbmdlcyBpbiBgY2xvbmVfZXhlY3V0ZWAgd2lsbCByaXBwbGUgdXB3YXJkcy4gVGhpcyBwYXRjaCBjb3VsZCBwb3RlbnRpYWxseSBhZmZlY3QgYW55IGZsb3cgdGhhdCB1c2VzIHRoZXNlIGFjdGlvbnMuIElmIHRoaXMgaXMgbW9kaWZ5aW5nIHNvbWUga2luZCBvZiBwZXJmb3JtYW5jZSBjcml0aWNhbCBwYXRoLCBpdCBjb3VsZCBoYXZlIGFuIGVmZmVjdCBvbiBhIGxvdCBvZiBmbG93cyEgSSBzaG91bGQga2VlcCBhIGNsb3NlIGV5ZSBvbiB0aGUgcGVyZm9ybWFuY2UgbWV0cmljcyBhcm91bmQgYWxsIHRoZXNlIGFmZmVjdGVkIGZ1bmN0aW9ucy4KCk5vdywgSSBuZWVkIHRvIGdldCB0byB0aGUgT3BlbiB2U3dpdGNoIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE9QRU5WU1dJVENIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL0tjb25maWctNS1cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjY6Y29uZmlnIE9QRU5WU1dJVENIXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7T3BlbiB2U3dpdGNoXCYjMzQ7XG4tLVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNDMtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo0NDpjb25maWcgT1BFTlZTV0lUQ0hfR1JFXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy00NS1cdHRyaXN0YXRlIFwmIzM0O09wZW4gdlN3aXRjaCBHUkUgdHVubmVsaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy01Ni1cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjU3OmNvbmZpZyBPUEVOVlNXSVRDSF9WWExBTlxubmV0L29wZW52c3dpdGNoL0tjb25maWctNTgtXHR0cmlzdGF0ZSBcJiMzNDtPcGVuIHZTd2l0Y2ggVlhMQU4gdHVubmVsaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy02OC1cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjY5OmNvbmZpZyBPUEVOVlNXSVRDSF9HRU5FVkVcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTcwLVx0dHJpc3RhdGUgXCYjMzQ7T3BlbiB2U3dpdGNoIEdlbmV2ZSB0dW5uZWxpbmcgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyODQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIE9wZW4gdlN3aXRjaCBBY3Rpb24gRXhlY3V0aW9uKioKCkFscmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIGlzIGRlZmluaXRlbHkgc2V0IGZvciBgT1BFTlZTV0lUQ0hgLCB0aGF0IG11Y2ggaXMgY2xlYXIuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoZSBmbG93IG9mIGFjdGlvbiBleGVjdXRpb24sIHBhcnRpY3VsYXJseSB3aXRoaW4gdGhlIE9WUyBjb250ZXh0LiBJJiMzOTttIGtleWluZyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBgY2xvbmVfZXhlY3V0ZWAsIGBkb19leGVjdXRlX2FjdGlvbnNgLCBhbmQgYG92c19leGVjdXRlX2FjdGlvbnNgLiBIbW0sIGhvbGQgb24gYSBzZWNvbmQuLi4gYGNsb25lX2V4ZWN1dGVgIHN0cmlrZXMgbWUgYXMgc29tZXRoaW5nIHRoYXQgbWlnaHQgYmUgc3RhdGljYWxseSBkZWZpbmVkLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQgcXVpY2tseS4gWWVzLCBjb25maXJtZWQhIGBzdGF0aWMgaW50IGNsb25lX2V4ZWN1dGVgLiBTbyB0aGF0JiMzOTtzIGxvY2FsIHNjb3BlIHdpdGhpbiB0aGUgbW9kdWxlLCBpbnRlcmVzdGluZy4gTm93LCBsZXQmIzM5O3Mgc2VlIGFib3V0IGBkb19leGVjdXRlX2FjdGlvbnNgLCB5ZXAsIHRoYXQmIzM5O3MgYWxzbyBzdGF0aWMuIE9rLCBzbyBib3RoIGBjbG9uZV9leGVjdXRlYCBhbmQgYGRvX2V4ZWN1dGVfYWN0aW9uc2AgYXJlIGludGVybmFsIGZ1bmN0aW9ucy4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aG9zZSBmdW5jdGlvbnMgYXJlIG9ubHkgbWVhbnQgdG8gYmUgY2FsbGVkIGluIG9uZSBwbGFjZS4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgZGlyZWN0ZWQgdG8gd2hlcmUgdGhleSBhcmUgaW52b2tlZC4gRmluYWxseSwgYG92c19leGVjdXRlX2FjdGlvbnNgIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBleHBvcnRlZC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgdG8gdGhpcyB3aG9sZSB0aGluZy4gVGhpcyBpcyB0aGUgY3JpdGljYWwsIHB1YmxpYyBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3ZzX2V4ZWN1dGVfYWN0aW9ucyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xNTQ2PXN0YXRpYyB2b2lkIHByb2Nlc3NfZGVmZXJyZWRfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU3Mi0vKiBFeGVjdXRlIGEgbGlzdCBvZiBhY3Rpb25zIGFnYWluc3QgJiMzOTtza2ImIzM5Oy4gKi9cbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTU3MzppbnQgb3ZzX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTc0LVx0XHRcdGNvbnN0IHN0cnVjdCBzd19mbG93X2FjdGlvbnMgKmFjdHMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc5MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqRGl2aW5nIGludG8gYG92c19kcF9wcm9jZXNzX3BhY2tldGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCByaWdodCB0byBpdC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgd2UmIzM5O3JlIGluIHRoZSB0aGljayBvZiB0aGUgT3BlbiB2U3dpdGNoIGRhdGEgcGF0aCwgZGVhbGluZyB3aXRoIGFjdHVhbCBwYWNrZXQgcHJvY2Vzc2luZy4mIzM0OyBJdCYjMzk7cyBsaWtlbHkgdGhpcyBmdW5jdGlvbiBpcyB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbSBvZiBob3cgcGFja2V0cyBtb3ZlIHRocm91Z2ggb3VyIHZpcnR1YWwgc3dpdGNoZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nICpyaWdodCBub3cqLiBJJiMzOTttIHRoaW5raW5nLCBpcyB0aGlzIGEgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgc2VlIHBvdGVudGlhbCBib3R0bGVuZWNrcz8gTWVtb3J5IGFsbG9jYXRpb24gaXNzdWVzPyBJcyBpdCBoYW5kbGluZyB0aGUgbWV0YWRhdGEgY29ycmVjdGx5IGFuZCBlZmZpY2llbnRseT8gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgaW4gdXNlPyBJcyB0aGVyZSBhIGZhc3QgcGF0aCBpbXBsZW1lbnRlZCwgb3IgYXJlIHdlIGdvaW5nIHRocm91Z2ggYSBsb3Qgb2YgY29tcGxleCBsb29rdXBzPyBNeSBpbnN0aW5jdCBpcywgdGhpcyBpcyBncm91bmQgemVybyBmb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIGFuZCBJIG5lZWQgdG8gc3RhcnQgdHJhY2luZyB0aHJvdWdoIGl0cyBleGVjdXRpb24gZmxvdy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgb3Igd2hlcmUgdGhpbmdzIGNhbiBmYWxsIGFwYXJ0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3ZzX2RwX3Byb2Nlc3NfcGFja2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9MjMzPXZvaWQgb3ZzX2RwX2RldGFjaF9wb3J0KHN0cnVjdCB2cG9ydCAqcClcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNDQtLyogTXVzdCBiZSBjYWxsZWQgd2l0aCByY3VfcmVhZF9sb2NrLiAqL1xubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6MjQ1OnZvaWQgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjQ2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE5MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqTXkgTWVudGFsIE1hcHBpbmcgb2YgUGFja2V0IFByb2Nlc3NpbmcgRW50cnkgUG9pbnRzKioKClJpZ2h0LCBsZXQgbWUgc2VlLi4uIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBwcm9jZXNzaW5nIGZsb3cgd2l0aGluIE9WUywgc3BlY2lmaWNhbGx5IHRoZSBkYXRhIHBsYW5lLiBUaGUgZmFjdCB0aGF0IGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgIGlzbiYjMzk7dCBhIHN0YXRpYyBmdW5jdGlvbiBpbW1lZGlhdGVseSB0cmlnZ2VycyBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBkeW5hbWljIG5hdHVyZS4gVGhpcyBtZWFucyB0aGVyZSYjMzk7cyBsaWtlbHkgbW9yZSB0byB1bnBhY2sgaGVyZTsgcG90ZW50aWFsbHkgc29tZSBkaXNwYXRjaGluZyBsb2dpYywgdGFibGUgbG9va3Vwcywgb3IgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgaW52b2x2ZWQgaW4gdGhlICphY3R1YWwqIHdvcmsuIEl0IG1lYW5zIEkgY2FuJiMzOTt0IGp1c3QgbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGRlZmluaXRpb24gYW5kIGFzc3VtZSBJIGhhdmUgdGhlIHdob2xlIHBpY3R1cmUgb2YgZGF0YSBwbGFuZSBwcm9jZXNzaW5nLgoKTm93LCB0aGF0JiMzOTtzIGNydWNpYWwgYmVjYXVzZSBJIGtub3cgaG93IGNyaXRpY2FsIHRoZSBlbnRyeSBwb2ludHMgYXJlLCBhbmQgdGhhdCBteSBpbnZlc3RpZ2F0aW9ucyBuZWVkIHRvIG1vdmUgYmV5b25kIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgLiBJdCYjMzk7cyBqdXN0IGEgc3RhcnRpbmcgcG9pbnQuIEl0JiMzOTtzIHRoZSBwb2ludCB3aGVyZSB0aGluZ3MgZ2V0ICppbnRvKiB0aGUgZGF0YSBwYXRoLCBidXQgSSBrbm93IGJldHRlciB0aGFuIHRvIGFzc3VtZSBpdCYjMzk7cyB0aGUgKm9ubHkqIGVudHJ5LgoKT2theS4uLnNvIEkgY2FuJiMzOTt0IGFzc3VtZSB0aGF0JiMzOTtzIHRoZSBvbmx5IHN0YXJ0aW5nIHBvaW50LiBXaGF0IGVsc2UgbWlnaHQgYmUgcmVsZXZhbnQ/IFRoZSB0ZXh0IHBvaW50cyBvdXQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgLCB3aGljaCBtYWtlcyBzZW5zZS4gVGhhdCYjMzk7cyBhIHN0cm9uZyBpbmRpY2F0b3IsIGFzIEkmIzM5O2QgZXhwZWN0IGFuIGV4ZWN1dGlvbiBvciBjb21tYW5kIHByb2Nlc3NpbmcgZW50cnkgcG9pbnQgdG8gYmUgaW1wb3J0YW50IGZvciBtYW5hZ2luZyBwYWNrZXRzIGVudGVyaW5nIG9yIGJlaW5nIGNoYW5nZWQgaW4gdGhlIE9WUyBzeXN0ZW0uIFRoaXMgc3VnZ2VzdHMgYSBjb250cm9sIHBsYW5lIGludGVyYWN0aW9uLCBwYWNrZXQgY29tbWFuZHMsIGFuZCBwcm9jZXNzaW5nIHJlcXVlc3RzIG1pZ2h0IGJlIGxpbmtlZCB0byB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byBlbnRyeSBwb2ludHMuIEkgc2hvdWxkIG1hcCB0aGF0IHJlbGF0aW9uc2hpcCBhbmQgaG93IHRoaXMgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgIGlzIGludm9sdmVkIHdoZW4gY29tcGFyZWQgdG8gYG92c19kcF9wcm9jZXNzX3BhY2tldGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c19wYWNrZXRfY21kX2V4ZWN1dGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz00NTE9c3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNjExLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NjEyOnN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNjEzLXtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz03MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBkcF9wYWNrZXRfZ2VubF9vcHNbXSA9IHtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy03MzYtXHQgIC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sIC8qIFJlcXVpcmVzIENBUF9ORVRfQURNSU4gcHJpdmlsZWdlLiAqL1xubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NzM3Olx0ICAuZG9pdCA9IG92c19wYWNrZXRfY21kX2V4ZWN1dGVcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTczOC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg4MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIE9wZW4gdlN3aXRjaCBBY3Rpb24gRXhlY3V0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGNvcmUgb2YgcGFja2V0IHByb2Nlc3Npbmcgd2l0aGluIE9wZW4gdlN3aXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlIGFjdGlvbiBleGVjdXRpb24gYWN0dWFsbHkgKmhhcHBlbnMqLiBGcm9tIG15IGluaXRpYWwgdW5kZXJzdGFuZGluZywgYG92c19kcF9wcm9jZXNzX3BhY2tldGAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBzZWVtIGxpa2Ugc3Ryb25nIGVudHJ5IHBvaW50cy4gVGhleSYjMzk7cmUgZ29vZCBzdGFydGluZyBwb2ludHMgZm9yIHRyYWNpbmcgdGhlIGxvZ2ljLiBCdXQgd2FpdCwgbGV0JiMzOTtzIG5vdCBkaXNjb3VudCB0aGUgcG9zc2liaWxpdGllcy4gSSBhbHNvIHJlbWVtYmVyIGBvdnNfZXhlY3V0ZV9hY3Rpb25zYCBhcyBhIGxpa2VseSBjb250ZW5kZXIuCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgZGVlcGVyLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgYG92c19leGVjdXRlX2FjdGlvbnNgIGZ1bmN0aW9uLCBJJiMzOTtsbCBjaGVjayBgbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY2AgYW5kIHNlZSB3aGF0IGl0IHJldmVhbHMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bmRhbWVudGFsIHZpZXcgb2YgaG93IGFjdGlvbnMgYXJlIGludGVycHJldGVkIGFuZCBhcHBsaWVkIHRvIGEgZ2l2ZW4gcGFja2V0LiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMgdGhlIGNvcmUgb2Ygd2hhdCBJJiMzOTttIHNlZWtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c19leGVjdXRlX2FjdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTU0Nj1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcClcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE1NzItLyogRXhlY3V0ZSBhIGxpc3Qgb2YgYWN0aW9ucyBhZ2FpbnN0ICYjMzk7c2tiJiMzOTsuICovXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE1NzM6aW50IG92c19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU3NC1cdFx0XHRjb25zdCBzdHJ1Y3Qgc3dfZmxvd19hY3Rpb25zICphY3RzLFxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTI0NT12b2lkIG92c19kcF9wcm9jZXNzX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSlcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0zMDgtXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzozMDk6XHRlcnJvciA9IG92c19leGVjdXRlX2FjdGlvbnMoZHAsIHNrYiwgc2ZfYWN0cywga2V5KTtcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTMxMC1cdGlmICh1bmxpa2VseShlcnJvcikpXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9NjEyPXN0YXRpYyBpbnQgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTcwMi1cdFx0dGhpc19jcHVfd3JpdGUob3ZzX3BjcHVfc3RvcmFnZS1cdTAwM2Vvd25lciwgY3VycmVudCk7XG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo3MDM6XHRlcnIgPSBvdnNfZXhlY3V0ZV9hY3Rpb25zKGRwLCBwYWNrZXQsIHNmX2FjdHMsIFx1MDAyNmZsb3ctXHUwMDNla2V5KTtcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTcwNC1cdGlmIChJU19FTkFCTEVEKENPTkZJR19QUkVFTVBUX1JUKSlcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaD0zMjk9c3RydWN0IHNrX2J1ZmYgKm92c192cG9ydF9jbWRfYnVpbGRfaW5mbyhzdHJ1Y3QgdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMzMxLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmg6MzMyOmludCBvdnNfZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaC0zMzMtXHRcdFx0Y29uc3Qgc3RydWN0IHN3X2Zsb3dfYWN0aW9ucyAqLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MzMKCQkJCQkJCW91dHB1dDogMTA4CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUGxhbjogT3BlbiB2U3dpdGNoIEFjdGlvbiBFeGVjdXRpb24qKgoKT2theSwgc28gYG92c19leGVjdXRlX2FjdGlvbnNgIGlzIGRlZmluaXRlbHkgZXhwb3NlZCBhbmQgYmVpbmcgdXRpbGl6ZWQg4oCTIHRoYXQmIzM5O3MgYSBrZXkgZW50cnkgcG9pbnQuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcmVjdXJzaW9uIGRlcHRoIGlzc3VlIHdpdGhpbiBgY2xvbmVfZXhlY3V0ZWAuIEl0JiMzOTtzIGEgY2xlYXIgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCB0aGF0IGhhcyBkaXJlY3QgaW1wYWN0IG9uIGhvdyBwYWNrZXQgcHJvY2Vzc2luZyBoYXBwZW5zLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGNvbXBsZXggYWN0aW9uIGNoYWlucy4KCkdpdmVuIHRoYXQsIEkmIzM5O20gY29uZmlkZW50IHRoaXMgaXMgc29tZXRoaW5nIHdlIHNob3VsZCBiZSBmdXp6aW5nLgoKTGV0JiMzOTtzIG5haWwgZG93biB0aGUgZnV6emluZyBjb25maWd1cmF0aW9uIHRoZW4uCgpXZSBuZWVkIGBXb3J0aEZ1enppbmdgIHNldCB0byBgdHJ1ZWAsIG9mIGNvdXJzZS4gVGhlIHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIG9uIGBvdnNfZXhlY3V0ZV9hY3Rpb25zYCwgYnV0IHdlIHNob3VsZCBhbHNvIHRhcmdldCBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YCBhbmQgYG92c19wYWNrZXRfY21kX2V4ZWN1dGVgIGFzIGxpa2VseSBwYXRocyB0aGF0IGludGVyYWN0IHdpdGggdGhlIHByb2JsZW1hdGljIGNvZGUuIFdlJiMzOTtsbCBlbmFibGUgYE9QRU5WU1dJVENIYCBjb25maWcsIHRoaXMgaXMgYSBjbGVhciByZXF1aXJlbWVudC4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgcmVjdXJzaW9uIGxpbWl0IHdpdGhpbiBgY2xvbmVfZXhlY3V0ZWAsIHNwZWNpZmljYWxseSB0byBzdG9wIHN0YWNrIG92ZXJmbG93cyBvciBvdGhlciByZWN1cnNpb24tcmVsYXRlZCBpc3N1ZXMgd2hlbiBPcGVuIHZTd2l0Y2ggYWN0aW9ucyBhcmUgZXhlY3V0ZWQuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRvdWNoaW5nIGNvcmUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgd2l0aGluIE9WUywgYW5kIGl0JiMzOTtzIGludGVuZGVkIHRvIGluY3JlYXNlIHRoZSByb2J1c3RuZXNzIGFuZCBzZWN1cml0eS4gSXQmIzM5O3MgcHJpbWUgZnV6emluZyBtYXRlcmlhbCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZzX2V4ZWN1dGVfYWN0aW9ucyYjMzQ7LAogICAgJiMzNDtvdnNfZHBfcHJvY2Vzc19wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgcmVjdXJzaW9uIGxpbWl0IGNoZWNrIGluIGBjbG9uZV9leGVjdXRlYCB0byBwcmV2ZW50IHN0YWNrIG92ZXJmbG93IG9yIGV4Y2Vzc2l2ZSByZWN1cnNpb24gd2hlbiBleGVjdXRpbmcgT3BlbiB2U3dpdGNoIGFjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBPVlMgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZzX2V4ZWN1dGVfYWN0aW9ucyYjMzQ7LAogICAgJiMzNDtvdnNfZHBfcHJvY2Vzc19wYWNrZXQmIzM0OywKICAgICYjMzQ7b3ZzX3BhY2tldF9jbWRfZXhlY3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgcmVjdXJzaW9uIGxpbWl0IGNoZWNrIGluIGBjbG9uZV9leGVjdXRlYCB0byBwcmV2ZW50IHN0YWNrIG92ZXJmbG93IG9yIGV4Y2Vzc2l2ZSByZWN1cnNpb24gd2hlbiBleGVjdXRpbmcgT3BlbiB2U3dpdGNoIGFjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBPVlMgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxODo0MS40NjQwODE1ODZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODAwNjU3MzE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm92c19leGVjdXRlX2FjdGlvbnNcIixcbiAgICBcIm92c19kcF9wcm9jZXNzX3BhY2tldFwiLFxuICAgIFwib3ZzX3BhY2tldF9jbWRfZXhlY3V0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSByZWN1cnNpb24gbGltaXQgY2hlY2sgaW4gYGNsb25lX2V4ZWN1dGVgIHRvIHByZXZlbnQgc3RhY2sgb3ZlcmZsb3cgb3IgZXhjZXNzaXZlIHJlY3Vyc2lvbiB3aGVuIGV4ZWN1dGluZyBPcGVuIHZTd2l0Y2ggYWN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIE9WUyBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6MTg6NDEuNDY0MDkwNDY2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQ0MTQ1NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzNmExZGQ3NzM1Mjc2MGJiNmIzYTkzYTQ2MmYxNzYwMDEwMmFkOGE5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDAzOjE4OjQwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXFxuaW5kZXggNTEzZmNhNmE4ZThhNC4uMDVmYmY1YzA3MjAwYSAxMDA2NDRcXG4tLS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXFxuKysrIGIvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY1xcbkBAIC0xNDk3LDE0ICsxNDk3LDE5IEBAIHN0YXRpYyBpbnQgY2xvbmVfZXhlY3V0ZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRpZiAoY2xvbmUpIHtcXG4gXFx0XFx0aW50IGVyciA9IDA7XFxuIFxcdFxcdGlmIChhY3Rpb25zKSB7IC8qIFNhbXBsZSBhY3Rpb24gKi9cXG4tXFx0XFx0XFx0aWYgKGNsb25lX2Zsb3dfa2V5KVxcbi1cXHRcXHRcXHRcXHRfX3RoaXNfY3B1X2luYyhvdnNfcGNwdV9zdG9yYWdlLVxcdTAwM2VleGVjX2xldmVsKTtcXG4rXFx0XFx0XFx0X190aGlzX2NwdV9pbmMob3ZzX3BjcHVfc3RvcmFnZS1cXHUwMDNlZXhlY19sZXZlbCk7XFxuK1xcbitcXHRcXHRcXHRpZiAodW5saWtlbHkoX190aGlzX2NwdV9yZWFkKG92c19wY3B1X3N0b3JhZ2UtXFx1MDAzZWV4ZWNfbGV2ZWwpIFxcdTAwM2VcXG4rXFx0XFx0XFx0XFx0ICAgICBPVlNfUkVDVVJTSU9OX0xJTUlUKSkge1xcbitcXHRcXHRcXHRcXHRfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLVxcdTAwM2VleGVjX2xldmVsKTtcXG4rXFx0XFx0XFx0XFx0b3ZzX2tmcmVlX3NrYl9yZWFzb24oc2tiLCBPVlNfRFJPUF9SRUNVUlNJT05fTElNSVQpO1xcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVORVRET1dOO1xcbitcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRlcnIgPSBkb19leGVjdXRlX2FjdGlvbnMoZHAsIHNrYiwgY2xvbmUsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCBhY3Rpb25zLCBsZW4pO1xcbiBcXG4tXFx0XFx0XFx0aWYgKGNsb25lX2Zsb3dfa2V5KVxcbi1cXHRcXHRcXHRcXHRfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLVxcdTAwM2VleGVjX2xldmVsKTtcXG4rXFx0XFx0XFx0X190aGlzX2NwdV9kZWMob3ZzX3BjcHVfc3RvcmFnZS1cXHUwMDNlZXhlY19sZXZlbCk7XFxuIFxcdFxcdH0gZWxzZSB7IC8qIFJlY2lyYyBhY3Rpb24gKi9cXG4gXFx0XFx0XFx0Y2xvbmUtXFx1MDAzZXJlY2lyY19pZCA9IHJlY2lyY19pZDtcXG4gXFx0XFx0XFx0b3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHNrYiwgY2xvbmUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxODo0MS45NDk0MjI4ODdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNzUyMTIyMjAxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm92c19leGVjdXRlX2FjdGlvbnNcIixcbiAgICBcIm92c19kcF9wcm9jZXNzX3BhY2tldFwiLFxuICAgIFwib3ZzX3BhY2tldF9jbWRfZXhlY3V0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSByZWN1cnNpb24gbGltaXQgY2hlY2sgaW4gYGNsb25lX2V4ZWN1dGVgIHRvIHByZXZlbnQgc3RhY2sgb3ZlcmZsb3cgb3IgZXhjZXNzaXZlIHJlY3Vyc2lvbiB3aGVuIGV4ZWN1dGluZyBPcGVuIHZTd2l0Y2ggYWN0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIE9WUyBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzZhMWRkNzczNTI3NjBiYjZiM2E5M2E0NjJmMTc2MDAxMDJhZDhhOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDAzOjE4OjQwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYyBiL25ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcbmluZGV4IDUxM2ZjYTZhOGU4YTQuLjA1ZmJmNWMwNzIwMGEgMTAwNjQ0XG4tLS0gYS9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG4rKysgYi9uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXG5AQCAtMTQ5NywxNCArMTQ5NywxOSBAQCBzdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmIChjbG9uZSkge1xuIFx0XHRpbnQgZXJyID0gMDtcbiBcdFx0aWYgKGFjdGlvbnMpIHsgLyogU2FtcGxlIGFjdGlvbiAqL1xuLVx0XHRcdGlmIChjbG9uZV9mbG93X2tleSlcbi1cdFx0XHRcdF9fdGhpc19jcHVfaW5jKG92c19wY3B1X3N0b3JhZ2UtXHUwMDNlZXhlY19sZXZlbCk7XG4rXHRcdFx0X190aGlzX2NwdV9pbmMob3ZzX3BjcHVfc3RvcmFnZS1cdTAwM2VleGVjX2xldmVsKTtcbitcbitcdFx0XHRpZiAodW5saWtlbHkoX190aGlzX2NwdV9yZWFkKG92c19wY3B1X3N0b3JhZ2UtXHUwMDNlZXhlY19sZXZlbCkgXHUwMDNlXG4rXHRcdFx0XHQgICAgIE9WU19SRUNVUlNJT05fTElNSVQpKSB7XG4rXHRcdFx0XHRfX3RoaXNfY3B1X2RlYyhvdnNfcGNwdV9zdG9yYWdlLVx1MDAzZWV4ZWNfbGV2ZWwpO1xuK1x0XHRcdFx0b3ZzX2tmcmVlX3NrYl9yZWFzb24oc2tiLCBPVlNfRFJPUF9SRUNVUlNJT05fTElNSVQpO1xuK1x0XHRcdFx0cmV0dXJuIC1FTkVURE9XTjtcbitcdFx0XHR9XG4gXG4gXHRcdFx0ZXJyID0gZG9fZXhlY3V0ZV9hY3Rpb25zKGRwLCBza2IsIGNsb25lLFxuIFx0XHRcdFx0XHRcdCBhY3Rpb25zLCBsZW4pO1xuIFxuLVx0XHRcdGlmIChjbG9uZV9mbG93X2tleSlcbi1cdFx0XHRcdF9fdGhpc19jcHVfZGVjKG92c19wY3B1X3N0b3JhZ2UtXHUwMDNlZXhlY19sZXZlbCk7XG4rXHRcdFx0X190aGlzX2NwdV9kZWMob3ZzX3BjcHVfc3RvcmFnZS1cdTAwM2VleGVjX2xldmVsKTtcbiBcdFx0fSBlbHNlIHsgLyogUmVjaXJjIGFjdGlvbiAqL1xuIFx0XHRcdGNsb25lLVx1MDAzZXJlY2lyY19pZCA9IHJlY2lyY19pZDtcbiBcdFx0XHRvdnNfZHBfcHJvY2Vzc19wYWNrZXQoc2tiLCBjbG9uZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxODo0MS45NDk0MjQ5MTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ5ODU0MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGNsb25lX2V4ZWN1dGVgIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgY2xvbmVfZXhlY3V0ZWAgZnVuY3Rpb24uIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBob3cgd2UgaGFuZGxlIHJlY3Vyc2lvbiB3aXRoaW4gYGNsb25lX2V4ZWN1dGVgLCBlc3BlY2lhbGx5IHdoZW4gd2UncmUgZGVhbGluZyB3aXRoIFwiU2FtcGxlXCIgYWN0aW9ucyDigJMgdGhlIG9uZXMgd2hlcmUgYGFjdGlvbnNgIGlzIHRydWUuXG5cblByZXZpb3VzbHksIHRoZSBjb2RlIHdvdWxkIGluY3JlbWVudCBgb3ZzX3BjcHVfc3RvcmFnZS1cdTAwM2VleGVjX2xldmVsYCAod2hpY2ggSSBhc3N1bWUgdHJhY2tzIG91ciBleGVjdXRpb24gZGVwdGgpIG9ubHkgaWYgYGNsb25lX2Zsb3dfa2V5YCB3YXMgYWxzbyB0cnVlLiBOb3csIHRoZSBwYXRjaCBpcyBtYWtpbmcgdGhhdCBpbmNyZW1lbnQgdW5jb25kaXRpb25hbCAqaWYqIGBhY3Rpb25zYCBpcyB0cnVlLCBlc3NlbnRpYWxseSBmb3IgZXZlcnkgXCJTYW1wbGVcIiBhY3Rpb24uIFRoZSBjcml0aWNhbCBhZGRpdGlvbiwgdGhvdWdoLCBpcyBhIGNoZWNrIGFnYWluc3QgYE9WU19SRUNVUlNJT05fTElNSVRgLiBJdCBtYWtlcyBzZW5zZTsgd2UgZGVmaW5pdGVseSBuZWVkIHRvIHByZXZlbnQgcnVuYXdheSByZWN1cnNpb24gaW4gdGhpcyBjb250ZXh0LCBlc3BlY2lhbGx5IGlmIGFjdGlvbnMgYXJlIGludm9sdmVkLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gZm9yIHByZXZlbnRpbmcgZGVuaWFsIG9mIHNlcnZpY2Ugb3IgdW5leHBlY3RlZCBiZWhhdmlvciBkdWUgdG8gaW5maW5pdGUgbG9vcHMgaW4gYWN0aW9uIHByb2Nlc3NpbmcuIFdlJ3JlIGVzdGFibGlzaGluZyBhIGhhcmQgbGltaXQgb24gaG93IGRlZXBseSB3ZSdsbCBuZXN0IHRoZXNlIGFjdGlvbnMuXG5cbkkgbmVlZCB0byBkaXZlIGludG8gdGhlIGV4YWN0IGRldGFpbHMgb2YgYGNsb25lX2V4ZWN1dGVgIGluIGBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jYCB0byBmdWxseSBncmFzcCB0aGUgcmFtaWZpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gSXQgd291bGQgYmUgd2lzZSB0byByZWZyZXNoIG15c2VsZiBvbiBob3cgdGhlIGBTYW1wbGVgIGFjdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgZXhlY3V0aW9uIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxODo0Ni4wOTkyODE3NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzIwNjc1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjbG9uZV9leGVjdXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMTU9c3RhdGljIGJvb2wgaXNfZmxvd19rZXlfdmFsaWQoY29uc3Qgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXkpXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTExOS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjEyMDpzdGF0aWMgaW50IGNsb25lX2V4ZWN1dGUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTEyMS1cXHRcXHRcXHQgc3RydWN0IHN3X2Zsb3dfa2V5ICprZXksXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTkxOD1zdGF0aWMgaW50IGRlY190dGxfZXhjZXB0aW9uX2hhbmRsZXIoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtOTI1LVxcdGlmIChubGFfbGVuKGFjdGlvbnMpKVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6OTI2OlxcdFxcdHJldHVybiBjbG9uZV9leGVjdXRlKGRwLCBza2IsIGtleSwgMCwgbmxhX2RhdGEoYWN0aW9ucyksXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy05MjctXFx0XFx0XFx0XFx0ICAgICBubGFfbGVuKGFjdGlvbnMpLCB0cnVlLCBmYWxzZSk7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTkzNz1zdGF0aWMgaW50IHNhbXBsZShzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy05NjQtXFx0Y2xvbmVfZmxvd19rZXkgPSAhYXJnLVxcdTAwM2VleGVjO1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6OTY1OlxcdGVyciA9IGNsb25lX2V4ZWN1dGUoZHAsIHNrYiwga2V5LCAwLCBhY3Rpb25zLCByZW0sIGxhc3QsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy05NjYtXFx0XFx0XFx0ICAgIGNsb25lX2Zsb3dfa2V5KTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9OTc4PXN0YXRpYyBpbnQgY2xvbmUoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtOTkxLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6OTkyOlxcdHJldHVybiBjbG9uZV9leGVjdXRlKGRwLCBza2IsIGtleSwgMCwgYWN0aW9ucywgcmVtLCBsYXN0LFxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtOTkzLVxcdFxcdFxcdCAgICAgIWRvbnRfY2xvbmVfZmxvd19rZXkpO1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYz0xMTExPXN0YXRpYyBpbnQgZXhlY3V0ZV9yZWNpcmMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTEyNi1cXHRyZWNpcmNfaWQgPSBubGFfZ2V0X3UzMihhKTtcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjExMjc6XFx0cmV0dXJuIGNsb25lX2V4ZWN1dGUoZHAsIHNrYiwga2V5LCByZWNpcmNfaWQsIE5VTEwsIDAsIGxhc3QsIHRydWUpO1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTEyOC19XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTExMzA9c3RhdGljIGludCBleGVjdXRlX2NoZWNrX3BrdF9sZW4oc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTE2NC1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjExNjU6XFx0cmV0dXJuIGNsb25lX2V4ZWN1dGUoZHAsIHNrYiwga2V5LCAwLCBubGFfZGF0YShhY3Rpb25zKSxcXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTExNjYtXFx0XFx0XFx0ICAgICBubGFfbGVuKGFjdGlvbnMpLCBsYXN0LCBjbG9uZV9mbG93X2tleSk7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTEyNDc9c3RhdGljIGludCBkb19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTQ3NC0gKi9cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jOjE0NzU6c3RhdGljIGludCBjbG9uZV9leGVjdXRlKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNDc2LVxcdFxcdFxcdCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSwgdTMyIHJlY2lyY19pZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6MTg6NDYuMTUyNDk1NDQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcwNzM1MjgzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNjb3BlIG9mIGEgYGNsb25lX2V4ZWN1dGVgIE1vZGlmaWNhdGlvbiBpbiBPcGVuIHZTd2l0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gemVyb2VzIGluIG9uIGBjbG9uZV9leGVjdXRlYCBpbiBgbmV0L29wZW52c3dpdGNoL2FjdGlvbnMuY2AuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBjaGFuZ2VzIHRvIGEgY29yZSBmdW5jdGlvbiBsaWtlIHRoaXMgY2FuIGhhdmUgZmFyLXJlYWNoaW5nIGltcGxpY2F0aW9ucywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgc3RhY2suXG5cblJpZ2h0LCBzbyBgY2xvbmVfZXhlY3V0ZWAgaXMgY2FsbGVkIGJ5IGEgZmV3IGtleSBhY3Rpb24gaGFuZGxlcnM6IGBkZWNfdHRsX2V4Y2VwdGlvbl9oYW5kbGVyYCwgYHNhbXBsZWAsIGBjbG9uZWAsIGBleGVjdXRlX3JlY2lyY2AsIGFuZCBgZXhlY3V0ZV9jaGVja19wa3RfbGVuYC4gTm90IHN1cnByaXNpbmcsIGl0J3MgcHJldHR5IHN0YW5kYXJkIHRoYXQgYSBjbG9uZSBvcGVyYXRpb24gd291bGQgYmUgdXNlZnVsIGZvciBhIGZldyBvcGVyYXRpb25zLiBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSB0aGVuIHVsdGltYXRlbHkgY2FsbGVkIHdpdGhpbiBgZG9fZXhlY3V0ZV9hY3Rpb25zYC4gQW5kICp0aGF0KiBmdW5jdGlvbiBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGBvdnNfZXhlY3V0ZV9hY3Rpb25zYC4gVGhhdCdzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBhY3Rpb24gZXhlY3V0aW9uLlxuXG5UaGlzIGlzIGNyaXRpY2FsIHRvIGtlZXAgaW4gbWluZCwgYmVjYXVzZSBjaGFuZ2VzIGluIGBjbG9uZV9leGVjdXRlYCB3aWxsIHJpcHBsZSB1cHdhcmRzLiBUaGlzIHBhdGNoIGNvdWxkIHBvdGVudGlhbGx5IGFmZmVjdCBhbnkgZmxvdyB0aGF0IHVzZXMgdGhlc2UgYWN0aW9ucy4gSWYgdGhpcyBpcyBtb2RpZnlpbmcgc29tZSBraW5kIG9mIHBlcmZvcm1hbmNlIGNyaXRpY2FsIHBhdGgsIGl0IGNvdWxkIGhhdmUgYW4gZWZmZWN0IG9uIGEgbG90IG9mIGZsb3dzISBJIHNob3VsZCBrZWVwIGEgY2xvc2UgZXllIG9uIHRoZSBwZXJmb3JtYW5jZSBtZXRyaWNzIGFyb3VuZCBhbGwgdGhlc2UgYWZmZWN0ZWQgZnVuY3Rpb25zLlxuXG5Ob3csIEkgbmVlZCB0byBnZXQgdG8gdGhlIE9wZW4gdlN3aXRjaCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjE4OjQ5Ljg1OTg1MTY3NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDk5MzcwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgT1BFTlZTV0lUQ0hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L29wZW52c3dpdGNoL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL0tjb25maWctNS1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OmNvbmZpZyBPUEVOVlNXSVRDSFxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaFxcXCJcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTQzLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjQ0OmNvbmZpZyBPUEVOVlNXSVRDSF9HUkVcXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy00NS1cXHR0cmlzdGF0ZSBcXFwiT3BlbiB2U3dpdGNoIEdSRSB0dW5uZWxpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTU2LVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjU3OmNvbmZpZyBPUEVOVlNXSVRDSF9WWExBTlxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTU4LVxcdHRyaXN0YXRlIFxcXCJPcGVuIHZTd2l0Y2ggVlhMQU4gdHVubmVsaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy02OC1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OTpjb25maWcgT1BFTlZTV0lUQ0hfR0VORVZFXFxubmV0L29wZW52c3dpdGNoL0tjb25maWctNzAtXFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaCBHZW5ldmUgdHVubmVsaW5nIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjE4OjQ5LjkyMDg1MTczM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0OTI3MjUwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIE9wZW4gdlN3aXRjaCBBY3Rpb24gRXhlY3V0aW9uKipcblxuQWxyaWdodCwgdGhlIGNvbmZpZ3VyYXRpb24gaXMgZGVmaW5pdGVseSBzZXQgZm9yIGBPUEVOVlNXSVRDSGAsIHRoYXQgbXVjaCBpcyBjbGVhci4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhlIGZsb3cgb2YgYWN0aW9uIGV4ZWN1dGlvbiwgcGFydGljdWxhcmx5IHdpdGhpbiB0aGUgT1ZTIGNvbnRleHQuIEknbSBrZXlpbmcgaW4gb24gdGhlc2Ugc3ltYm9sczogYGNsb25lX2V4ZWN1dGVgLCBgZG9fZXhlY3V0ZV9hY3Rpb25zYCwgYW5kIGBvdnNfZXhlY3V0ZV9hY3Rpb25zYC4gSG1tLCBob2xkIG9uIGEgc2Vjb25kLi4uIGBjbG9uZV9leGVjdXRlYCBzdHJpa2VzIG1lIGFzIHNvbWV0aGluZyB0aGF0IG1pZ2h0IGJlIHN0YXRpY2FsbHkgZGVmaW5lZC4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IHF1aWNrbHkuIFllcywgY29uZmlybWVkISBgc3RhdGljIGludCBjbG9uZV9leGVjdXRlYC4gU28gdGhhdCdzIGxvY2FsIHNjb3BlIHdpdGhpbiB0aGUgbW9kdWxlLCBpbnRlcmVzdGluZy4gTm93LCBsZXQncyBzZWUgYWJvdXQgYGRvX2V4ZWN1dGVfYWN0aW9uc2AsIHllcCwgdGhhdCdzIGFsc28gc3RhdGljLiBPaywgc28gYm90aCBgY2xvbmVfZXhlY3V0ZWAgYW5kIGBkb19leGVjdXRlX2FjdGlvbnNgIGFyZSBpbnRlcm5hbCBmdW5jdGlvbnMuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhvc2UgZnVuY3Rpb25zIGFyZSBvbmx5IG1lYW50IHRvIGJlIGNhbGxlZCBpbiBvbmUgcGxhY2UuIE15IGZvY3VzIG5lZWRzIHRvIGJlIGRpcmVjdGVkIHRvIHdoZXJlIHRoZXkgYXJlIGludm9rZWQuIEZpbmFsbHksIGBvdnNfZXhlY3V0ZV9hY3Rpb25zYCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgZXhwb3J0ZWQuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgdG8gdGhpcyB3aG9sZSB0aGluZy4gVGhpcyBpcyB0aGUgY3JpdGljYWwsIHB1YmxpYyBpbnRlcmZhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyODQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxODo1My40MTM1Nzk2ODZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcwNjEyOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib3ZzX2V4ZWN1dGVfYWN0aW9uc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM9MTU0Nj1zdGF0aWMgdm9pZCBwcm9jZXNzX2RlZmVycmVkX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU3Mi0vKiBFeGVjdXRlIGEgbGlzdCBvZiBhY3Rpb25zIGFnYWluc3QgJ3NrYicuICovXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYzoxNTczOmludCBvdnNfZXhlY3V0ZV9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L29wZW52c3dpdGNoL2FjdGlvbnMuYy0xNTc0LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBzd19mbG93X2FjdGlvbnMgKmFjdHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjE4OjUzLjQ3MDY1MjU5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDI5MzkyOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipEaXZpbmcgaW50byBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCByaWdodCB0byBpdC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgd2UncmUgaW4gdGhlIHRoaWNrIG9mIHRoZSBPcGVuIHZTd2l0Y2ggZGF0YSBwYXRoLCBkZWFsaW5nIHdpdGggYWN0dWFsIHBhY2tldCBwcm9jZXNzaW5nLlwiIEl0J3MgbGlrZWx5IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGNlbnRyYWwgbmVydm91cyBzeXN0ZW0gb2YgaG93IHBhY2tldHMgbW92ZSB0aHJvdWdoIG91ciB2aXJ0dWFsIHN3aXRjaGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nICpyaWdodCBub3cqLiBJJ20gdGhpbmtpbmcsIGlzIHRoaXMgYSBwbGFjZSB3aGVyZSB3ZSBtaWdodCBzZWUgcG90ZW50aWFsIGJvdHRsZW5lY2tzPyBNZW1vcnkgYWxsb2NhdGlvbiBpc3N1ZXM/IElzIGl0IGhhbmRsaW5nIHRoZSBtZXRhZGF0YSBjb3JyZWN0bHkgYW5kIGVmZmljaWVudGx5PyBXaGF0IGFyZSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBpbiB1c2U/IElzIHRoZXJlIGEgZmFzdCBwYXRoIGltcGxlbWVudGVkLCBvciBhcmUgd2UgZ29pbmcgdGhyb3VnaCBhIGxvdCBvZiBjb21wbGV4IGxvb2t1cHM/IE15IGluc3RpbmN0IGlzLCB0aGlzIGlzIGdyb3VuZCB6ZXJvIGZvciBwZXJmb3JtYW5jZSBhbmFseXNpcywgYW5kIEkgbmVlZCB0byBzdGFydCB0cmFjaW5nIHRocm91Z2ggaXRzIGV4ZWN1dGlvbiBmbG93LiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciB3aGVyZSB0aGluZ3MgY2FuIGZhbGwgYXBhcnQuIExldCdzIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc5MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjE4OjU2LjgxMzU5NTA5MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxNTczMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib3ZzX2RwX3Byb2Nlc3NfcGFja2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTIzMz12b2lkIG92c19kcF9kZXRhY2hfcG9ydChzdHJ1Y3QgdnBvcnQgKnApXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNDQtLyogTXVzdCBiZSBjYWxsZWQgd2l0aCByY3VfcmVhZF9sb2NrLiAqL1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjI0NTp2b2lkIG92c19kcF9wcm9jZXNzX3BhY2tldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSlcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNDYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxODo1Ni44Njk3NjU0NjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyOTYyNTkzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipNeSBNZW50YWwgTWFwcGluZyBvZiBQYWNrZXQgUHJvY2Vzc2luZyBFbnRyeSBQb2ludHMqKlxuXG5SaWdodCwgbGV0IG1lIHNlZS4uLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBwcm9jZXNzaW5nIGZsb3cgd2l0aGluIE9WUywgc3BlY2lmaWNhbGx5IHRoZSBkYXRhIHBsYW5lLiBUaGUgZmFjdCB0aGF0IGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgIGlzbid0IGEgc3RhdGljIGZ1bmN0aW9uIGltbWVkaWF0ZWx5IHRyaWdnZXJzIG15IHVuZGVyc3RhbmRpbmcgb2YgaXRzIGR5bmFtaWMgbmF0dXJlLiBUaGlzIG1lYW5zIHRoZXJlJ3MgbGlrZWx5IG1vcmUgdG8gdW5wYWNrIGhlcmU7IHBvdGVudGlhbGx5IHNvbWUgZGlzcGF0Y2hpbmcgbG9naWMsIHRhYmxlIGxvb2t1cHMsIG9yIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIGludm9sdmVkIGluIHRoZSAqYWN0dWFsKiB3b3JrLiBJdCBtZWFucyBJIGNhbid0IGp1c3QgbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGRlZmluaXRpb24gYW5kIGFzc3VtZSBJIGhhdmUgdGhlIHdob2xlIHBpY3R1cmUgb2YgZGF0YSBwbGFuZSBwcm9jZXNzaW5nLlxuXG5Ob3csIHRoYXQncyBjcnVjaWFsIGJlY2F1c2UgSSBrbm93IGhvdyBjcml0aWNhbCB0aGUgZW50cnkgcG9pbnRzIGFyZSwgYW5kIHRoYXQgbXkgaW52ZXN0aWdhdGlvbnMgbmVlZCB0byBtb3ZlIGJleW9uZCBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YC4gSXQncyBqdXN0IGEgc3RhcnRpbmcgcG9pbnQuIEl0J3MgdGhlIHBvaW50IHdoZXJlIHRoaW5ncyBnZXQgKmludG8qIHRoZSBkYXRhIHBhdGgsIGJ1dCBJIGtub3cgYmV0dGVyIHRoYW4gdG8gYXNzdW1lIGl0J3MgdGhlICpvbmx5KiBlbnRyeS5cblxuT2theS4uLnNvIEkgY2FuJ3QgYXNzdW1lIHRoYXQncyB0aGUgb25seSBzdGFydGluZyBwb2ludC4gV2hhdCBlbHNlIG1pZ2h0IGJlIHJlbGV2YW50PyBUaGUgdGV4dCBwb2ludHMgb3V0IGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIFRoYXQncyBhIHN0cm9uZyBpbmRpY2F0b3IsIGFzIEknZCBleHBlY3QgYW4gZXhlY3V0aW9uIG9yIGNvbW1hbmQgcHJvY2Vzc2luZyBlbnRyeSBwb2ludCB0byBiZSBpbXBvcnRhbnQgZm9yIG1hbmFnaW5nIHBhY2tldHMgZW50ZXJpbmcgb3IgYmVpbmcgY2hhbmdlZCBpbiB0aGUgT1ZTIHN5c3RlbS4gVGhpcyBzdWdnZXN0cyBhIGNvbnRyb2wgcGxhbmUgaW50ZXJhY3Rpb24sIHBhY2tldCBjb21tYW5kcywgYW5kIHByb2Nlc3NpbmcgcmVxdWVzdHMgbWlnaHQgYmUgbGlua2VkIHRvIHRoaXMgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIGVudHJ5IHBvaW50cy4gSSBzaG91bGQgbWFwIHRoYXQgcmVsYXRpb25zaGlwIGFuZCBob3cgdGhpcyBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgaXMgaW52b2x2ZWQgd2hlbiBjb21wYXJlZCB0byBgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0YC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE5MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjE5OjAwLjg5OTM5NTcxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzA5MjEyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvdnNfcGFja2V0X2NtZF9leGVjdXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTQ1MT1zdGF0aWMgaW50IHF1ZXVlX3VzZXJzcGFjZV9wYWNrZXQoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTYxMS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo2MTI6c3RhdGljIGludCBvdnNfcGFja2V0X2NtZF9leGVjdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNjEzLXtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTczMz1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIGRwX3BhY2tldF9nZW5sX29wc1tdID0ge1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNzM2LVxcdCAgLmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSwgLyogUmVxdWlyZXMgQ0FQX05FVF9BRE1JTiBwcml2aWxlZ2UuICovXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NzM3OlxcdCAgLmRvaXQgPSBvdnNfcGFja2V0X2NtZF9leGVjdXRlXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNzM4LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6MTk6MDAuOTU2NDk0OTQ5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjIwMjM4OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIE9wZW4gdlN3aXRjaCBBY3Rpb24gRXhlY3V0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb3JlIG9mIHBhY2tldCBwcm9jZXNzaW5nIHdpdGhpbiBPcGVuIHZTd2l0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoZSBhY3Rpb24gZXhlY3V0aW9uIGFjdHVhbGx5ICpoYXBwZW5zKi4gRnJvbSBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcsIGBvdnNfZHBfcHJvY2Vzc19wYWNrZXRgIGFuZCBgb3ZzX3BhY2tldF9jbWRfZXhlY3V0ZWAgc2VlbSBsaWtlIHN0cm9uZyBlbnRyeSBwb2ludHMuIFRoZXkncmUgZ29vZCBzdGFydGluZyBwb2ludHMgZm9yIHRyYWNpbmcgdGhlIGxvZ2ljLiBCdXQgd2FpdCwgbGV0J3Mgbm90IGRpc2NvdW50IHRoZSBwb3NzaWJpbGl0aWVzLiBJIGFsc28gcmVtZW1iZXIgYG92c19leGVjdXRlX2FjdGlvbnNgIGFzIGEgbGlrZWx5IGNvbnRlbmRlci5cblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGRlZXBlci4gSSdsbCBmb2N1cyBvbiB0aGUgYG92c19leGVjdXRlX2FjdGlvbnNgIGZ1bmN0aW9uLCBJJ2xsIGNoZWNrIGBuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jYCBhbmQgc2VlIHdoYXQgaXQgcmV2ZWFscy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZnVuZGFtZW50YWwgdmlldyBvZiBob3cgYWN0aW9ucyBhcmUgaW50ZXJwcmV0ZWQgYW5kIGFwcGxpZWQgdG8gYSBnaXZlbiBwYWNrZXQuIExldCdzIHNlZSBpZiB0aGlzIGlzIHRoZSBjb3JlIG9mIHdoYXQgSSdtIHNlZWtpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4ODEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxOTowNC4zNzg1MjE2NTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MzgwMDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm92c19leGVjdXRlX2FjdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L29wZW52c3dpdGNoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jPTE1NDY9c3RhdGljIHZvaWQgcHJvY2Vzc19kZWZlcnJlZF9hY3Rpb25zKHN0cnVjdCBkYXRhcGF0aCAqZHApXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvYWN0aW9ucy5jLTE1NzItLyogRXhlY3V0ZSBhIGxpc3Qgb2YgYWN0aW9ucyBhZ2FpbnN0ICdza2InLiAqL1xcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmM6MTU3MzppbnQgb3ZzX2V4ZWN1dGVfYWN0aW9ucyhzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9vcGVudnN3aXRjaC9hY3Rpb25zLmMtMTU3NC1cXHRcXHRcXHRjb25zdCBzdHJ1Y3Qgc3dfZmxvd19hY3Rpb25zICphY3RzLFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9MjQ1PXZvaWQgb3ZzX2RwX3Byb2Nlc3NfcGFja2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5KVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMzA4LVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjMwOTpcXHRlcnJvciA9IG92c19leGVjdXRlX2FjdGlvbnMoZHAsIHNrYiwgc2ZfYWN0cywga2V5KTtcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0zMTAtXFx0aWYgKHVubGlrZWx5KGVycm9yKSlcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTYxMj1zdGF0aWMgaW50IG92c19wYWNrZXRfY21kX2V4ZWN1dGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTcwMi1cXHRcXHR0aGlzX2NwdV93cml0ZShvdnNfcGNwdV9zdG9yYWdlLVxcdTAwM2Vvd25lciwgY3VycmVudCk7XFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NzAzOlxcdGVyciA9IG92c19leGVjdXRlX2FjdGlvbnMoZHAsIHBhY2tldCwgc2ZfYWN0cywgXFx1MDAyNmZsb3ctXFx1MDAzZWtleSk7XFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNzA0LVxcdGlmIChJU19FTkFCTEVEKENPTkZJR19QUkVFTVBUX1JUKSlcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oPTMyOT1zdHJ1Y3Qgc2tfYnVmZiAqb3ZzX3Zwb3J0X2NtZF9idWlsZF9pbmZvKHN0cnVjdCB2cG9ydCAqdnBvcnQsIHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oLTMzMS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaDozMzI6aW50IG92c19leGVjdXRlX2FjdGlvbnMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaC0zMzMtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IHN3X2Zsb3dfYWN0aW9ucyAqLCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjE5OjA0LjQzMjkxMDI5N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTQyOTEwODAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUGxhbjogT3BlbiB2U3dpdGNoIEFjdGlvbiBFeGVjdXRpb24qKlxuXG5Pa2F5LCBzbyBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AgaXMgZGVmaW5pdGVseSBleHBvc2VkIGFuZCBiZWluZyB1dGlsaXplZCDigJMgdGhhdCdzIGEga2V5IGVudHJ5IHBvaW50LiBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIHJlY3Vyc2lvbiBkZXB0aCBpc3N1ZSB3aXRoaW4gYGNsb25lX2V4ZWN1dGVgLiBJdCdzIGEgY2xlYXIgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCB0aGF0IGhhcyBkaXJlY3QgaW1wYWN0IG9uIGhvdyBwYWNrZXQgcHJvY2Vzc2luZyBoYXBwZW5zLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGNvbXBsZXggYWN0aW9uIGNoYWlucy5cblxuR2l2ZW4gdGhhdCwgSSdtIGNvbmZpZGVudCB0aGlzIGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgYmUgZnV6emluZy5cblxuTGV0J3MgbmFpbCBkb3duIHRoZSBmdXp6aW5nIGNvbmZpZ3VyYXRpb24gdGhlbi5cblxuV2UgbmVlZCBgV29ydGhGdXp6aW5nYCBzZXQgdG8gYHRydWVgLCBvZiBjb3Vyc2UuIFRoZSBwcmltYXJ5IGZvY3VzIHNob3VsZCBiZSBvbiBgb3ZzX2V4ZWN1dGVfYWN0aW9uc2AsIGJ1dCB3ZSBzaG91bGQgYWxzbyB0YXJnZXQgYG92c19kcF9wcm9jZXNzX3BhY2tldGAgYW5kIGBvdnNfcGFja2V0X2NtZF9leGVjdXRlYCBhcyBsaWtlbHkgcGF0aHMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoZSBwcm9ibGVtYXRpYyBjb2RlLiBXZSdsbCBlbmFibGUgYE9QRU5WU1dJVENIYCBjb25maWcsIHRoaXMgaXMgYSBjbGVhciByZXF1aXJlbWVudC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSByZWN1cnNpb24gbGltaXQgd2l0aGluIGBjbG9uZV9leGVjdXRlYCwgc3BlY2lmaWNhbGx5IHRvIHN0b3Agc3RhY2sgb3ZlcmZsb3dzIG9yIG90aGVyIHJlY3Vyc2lvbi1yZWxhdGVkIGlzc3VlcyB3aGVuIE9wZW4gdlN3aXRjaCBhY3Rpb25zIGFyZSBleGVjdXRlZC4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB0b3VjaGluZyBjb3JlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHdpdGhpbiBPVlMsIGFuZCBpdCdzIGludGVuZGVkIHRvIGluY3JlYXNlIHRoZSByb2J1c3RuZXNzIGFuZCBzZWN1cml0eS4gSXQncyBwcmltZSBmdXp6aW5nIG1hdGVyaWFsIVxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzMzLCJPdXRwdXRUb2tlbnMiOjEwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzoxOTowOS4zNzU4MjM2MDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDgxNjIxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfZXhlY3V0ZV9hY3Rpb25zXCIsXG4gICAgXCJvdnNfZHBfcHJvY2Vzc19wYWNrZXRcIixcbiAgICBcIm92c19wYWNrZXRfY21kX2V4ZWN1dGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgcmVjdXJzaW9uIGxpbWl0IGNoZWNrIGluIGBjbG9uZV9leGVjdXRlYCB0byBwcmV2ZW50IHN0YWNrIG92ZXJmbG93IG9yIGV4Y2Vzc2l2ZSByZWN1cnNpb24gd2hlbiBleGVjdXRpbmcgT3BlbiB2U3dpdGNoIGFjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBPVlMgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfZXhlY3V0ZV9hY3Rpb25zXCIsXG4gICAgXCJvdnNfZHBfcHJvY2Vzc19wYWNrZXRcIixcbiAgICBcIm92c19wYWNrZXRfY21kX2V4ZWN1dGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgcmVjdXJzaW9uIGxpbWl0IGNoZWNrIGluIGBjbG9uZV9leGVjdXRlYCB0byBwcmV2ZW50IHN0YWNrIG92ZXJmbG93IG9yIGV4Y2Vzc2l2ZSByZWN1cnNpb24gd2hlbiBleGVjdXRpbmcgT3BlbiB2U3dpdGNoIGFjdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBPVlMgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl9jf4[1] Phase: Succeeded StartedAt: 2026-07-29 03:19:21 +0000 UTC FinishedAt: 2026-07-29 03:19:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 03:19:21 +0000 UTC FinishedAt: 2026-07-29 03:19:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2] Phase: Succeeded StartedAt: 2026-07-29 03:19:21 +0000 UTC FinishedAt: 2026-07-29 04:56:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 03:19:21 +0000 UTC FinishedAt: 2026-07-29 04:56:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 03:19:21 +0000 UTC FinishedAt: 2026-07-29 03:19:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 03:19:21 +0000 UTC FinishedAt: 2026-07-29 03:19:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl9jf4/series-workflowl9jf4-convert-artifact-371830780/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 03:19:31 +0000 UTC FinishedAt: 2026-07-29 03:41:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 03:19:31 +0000 UTC FinishedAt: 2026-07-29 03:41:06 +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:*37d7fa6e-35a8-40a7-be75-fe9368fa05f1,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-workflowl9jf4/series-workflowl9jf4-convert-artifact-371830780/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": "d4a9b3dc-1178-4b03-8262-8e7b56ce1b47", "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-workflowl9jf4/series-workflowl9jf4-build-action-2564139818/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 03:19:31 +0000 UTC FinishedAt: 2026-07-29 03:40:55 +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:*37d7fa6e-35a8-40a7-be75-fe9368fa05f1,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-workflowl9jf4/series-workflowl9jf4-convert-artifact-371830780/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": "d4a9b3dc-1178-4b03-8262-8e7b56ce1b47", "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-workflowl9jf4/series-workflowl9jf4-build-action-2564139818/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 03:41:06 +0000 UTC FinishedAt: 2026-07-29 03:41:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 03:41:06 +0000 UTC FinishedAt: 2026-07-29 03:41:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 03:41:06 +0000 UTC FinishedAt: 2026-07-29 03:41:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 03:41:06 +0000 UTC FinishedAt: 2026-07-29 03:41:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl9jf4/series-workflowl9jf4-convert-artifact-2516026683/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 03:41:17 +0000 UTC FinishedAt: 2026-07-29 03:43:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 03:41:17 +0000 UTC FinishedAt: 2026-07-29 03:43:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d4a9b3dc-1178-4b03-8262-8e7b56ce1b47,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-workflowl9jf4/series-workflowl9jf4-build-action-2564139818/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-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 03:43:20 +0000 UTC FinishedAt: 2026-07-29 03:43:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 03:43:20 +0000 UTC FinishedAt: 2026-07-29 03:43:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 03:43:20 +0000 UTC FinishedAt: 2026-07-29 04:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 03:43:20 +0000 UTC FinishedAt: 2026-07-29 04:04:36 +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:*37d7fa6e-35a8-40a7-be75-fe9368fa05f1,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-workflowl9jf4/series-workflowl9jf4-convert-artifact-2516026683/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": "69bae5a9-9075-439b-a008-0d9659bc660e", "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-workflowl9jf4/series-workflowl9jf4-build-action-1829765215/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 03:43:20 +0000 UTC FinishedAt: 2026-07-29 04:04:26 +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:*37d7fa6e-35a8-40a7-be75-fe9368fa05f1,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-workflowl9jf4/series-workflowl9jf4-convert-artifact-2516026683/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": "69bae5a9-9075-439b-a008-0d9659bc660e", "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-workflowl9jf4/series-workflowl9jf4-build-action-1829765215/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 04:04:36 +0000 UTC FinishedAt: 2026-07-29 04:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 04:04:36 +0000 UTC FinishedAt: 2026-07-29 04:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 04:04:36 +0000 UTC FinishedAt: 2026-07-29 04:06:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 04:04:36 +0000 UTC FinishedAt: 2026-07-29 04:06:27 +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:*69bae5a9-9075-439b-a008-0d9659bc660e,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-workflowl9jf4/series-workflowl9jf4-build-action-1829765215/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-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 04:06:36 +0000 UTC FinishedAt: 2026-07-29 04:56:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 04:06:36 +0000 UTC FinishedAt: 2026-07-29 04:56:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*d4a9b3dc-1178-4b03-8262-8e7b56ce1b47,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*69bae5a9-9075-439b-a008-0d9659bc660e,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-workflowl9jf4/series-workflowl9jf4-build-action-2564139818/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-workflowl9jf4/series-workflowl9jf4-build-action-1829765215/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 04:06:36 +0000 UTC FinishedAt: 2026-07-29 04:06:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 04:06:36 +0000 UTC FinishedAt: 2026-07-29 04:06:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl9jf4/series-workflowl9jf4-convert-artifact-2935468852/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 04:06:36 +0000 UTC FinishedAt: 2026-07-29 04:06:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 04:06:36 +0000 UTC FinishedAt: 2026-07-29 04:06:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 04:06:36 +0000 UTC FinishedAt: 2026-07-29 04:06:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 04:06:56 +0000 UTC FinishedAt: 2026-07-29 04:56:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl9jf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_execute_actions","ovs_dp_process_packet","ovs_packet_cmd_execute"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e095f249e2209674f6366f6db0383a2b96e19239","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH"],"series_id":"f7042f7b-2a08-4870-a9fc-cdba29e9fac4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 04:06:56 +0000 UTC FinishedAt: 2026-07-29 04:56:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d4a9b3dc-1178-4b03-8262-8e7b56ce1b47,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*69bae5a9-9075-439b-a008-0d9659bc660e,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-workflowl9jf4/series-workflowl9jf4-build-action-2564139818/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-workflowl9jf4/series-workflowl9jf4-build-action-1829765215/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-workflowl9jf4/series-workflowl9jf4-convert-artifact-2935468852/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,}