Name: series-workflowx9rmk Phase: Succeeded StartedAt: 2026-07-26 02:33:26 +0000 UTC FinishedAt: 2026-07-26 07:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[0] Phase: Succeeded StartedAt: 2026-07-26 02:33:26 +0000 UTC FinishedAt: 2026-07-26 02:53:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 02:33:26 +0000 UTC FinishedAt: 2026-07-26 02:53:46 +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": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "series_id": "9b512916-943a-4248-a1ec-6b28e780e7c8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_rt_send_redirect" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDAyOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgSVB2NCBwYWNrZXQgZm9yd2FyZGluZyBieSByZW1vdmluZyBhbiBgaWNtcF9zZW5kYCBjYWxsIGluIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCB3aGVuIGBpbmV0X2dldHBlZXJfdjRgIGZhaWxzIHRvIGFsbG9jYXRlIG9yIGZpbmQgYSBwZWVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCByb3V0aW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAyOjUzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTIyNTg4NzYxODc0YmMxOWIyYmYyNzYwNTA2YWExZWRlYjIxOTYxZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDAyOjUzOjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jXG5pbmRleCAzZjNkZTUxNjRkNmU1OC4uMTUyZDhjYjI4ZjY1YWEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9yb3V0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9yb3V0ZS5jXG5AQCAtODkyLDggJiM0Mzs4OTIsNiBAQCB2b2lkIGlwX3J0X3NlbmRfcmVkaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHBlZXIgPSBpbmV0X2dldHBlZXJfdjQobmV0LVx1MDAzZWlwdjQucGVlcnMsIGlwX2hkcihza2IpLVx1MDAzZXNhZGRyLCB2aWYpO1xuIFx0aWYgKCFwZWVyKSB7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuLVx0XHRpY21wX3NlbmQoc2tiLCBJQ01QX1JFRElSRUNULCBJQ01QX1JFRElSX0hPU1QsXG4tXHRcdFx0ICBydF9uZXh0aG9wKHJ0LCBpcF9oZHIoc2tiKS1cdTAwM2VkYWRkcikpO1xuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgSVB2NCBwYWNrZXQgZm9yd2FyZGluZyBieSByZW1vdmluZyBhbiBgaWNtcF9zZW5kYCBjYWxsIGluIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCB3aGVuIGBpbmV0X2dldHBlZXJfdjRgIGZhaWxzIHRvIGFsbG9jYXRlIG9yIGZpbmQgYSBwZWVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCByb3V0aW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTIyNTg4NzYxODc0YmMxOWIyYmYyNzYwNTA2YWExZWRlYjIxOTYxZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDI2IDAyOjUzOjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcm91dGUuYyBiL25ldC9pcHY0L3JvdXRlLmMKaW5kZXggM2YzZGU1MTY0ZDZlNTguLjE1MmQ4Y2IyOGY2NWFhIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9yb3V0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3JvdXRlLmMKQEAgLTg5Miw4ICYjNDM7ODkyLDYgQEAgdm9pZCBpcF9ydF9zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IpCiAJcGVlciA9IGluZXRfZ2V0cGVlcl92NChuZXQtJmd0O2lwdjQucGVlcnMsIGlwX2hkcihza2IpLSZndDtzYWRkciwgdmlmKTsKIAlpZiAoIXBlZXIpIHsKIAkJcmN1X3JlYWRfdW5sb2NrKCk7Ci0JCWljbXBfc2VuZChza2IsIElDTVBfUkVESVJFQ1QsIElDTVBfUkVESVJfSE9TVCwKLQkJCSAgcnRfbmV4dGhvcChydCwgaXBfaGRyKHNrYiktJmd0O2RhZGRyKSk7CiAJCXJldHVybjsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJvdXRpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvaXB2NC9yb3V0ZS5jYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGNydWNpYWwgZm9yIHJvdXRpbmcgc3RhYmlsaXR5LiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRhcmdldHMgdGhlIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2UsIHNvIEkgZGlnIGludG8gdGhlIGxvZ2ljLiBJdCBzZWVtcyB0aGF0IHRoZSBwYXRjaCBpcyByZW1vdmluZyBhbiBgaWNtcF9zZW5kYCBjYWxsIOKAkyB0aGUgb25lIHRoYXQgZ2VuZXJhdGVzIGFuIElDTVAgcmVkaXJlY3QgbWVzc2FnZSDigJMgc3BlY2lmaWNhbGx5IHdoZW4gdGhlIGBwZWVyYCBwYXJhbWV0ZXIgd2l0aGluIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCBpcyBOVUxMLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzaXR1YXRpb25zIHRyaWdnZXIgdGhpcyBgcGVlcmAgdG8gYmUgTlVMTCBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIG9mICpub3QqIHNlbmRpbmcgdGhpcyByZWRpcmVjdCBhcmUuIEl0IG1ha2VzIHNlbnNlIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgZnVuY3Rpb24gaXRzZWxmIHRvIGZ1bGx5IGdyYXNwIGl0cyBiZWhhdmlvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlYXNvbiBiZWhpbmQgdGhlIGNvbmRpdGlvbmFsIHJlbW92YWwgb2YgdGhlIHJlZGlyZWN0LiBJcyB0aGlzIGEgYnVnIGZpeCwgYW4gb3B0aW1pemF0aW9uLCBvciBzb21ldGhpbmcgbW9yZSBudWFuY2VkPyBXaGF0IHNjZW5hcmlvcyBhcmUgYmVpbmcgY29uc2lkZXJlZCB3aGVuIHRoZSByZWRpcmVjdCBpcyBub3Qgc2VudD8gVGhpcyBhbGwgZGVwZW5kcyBvbiB0aGUgY2lyY3Vtc3RhbmNlcyB3aGVyZSBhIE5VTEwgcGVlciBleGlzdHMgYW5kIHdoYXQgdGhhdCBpbmRpY2F0ZXMgYWJvdXQgdGhlIHBhY2tldCYjMzk7cyBpbnRlbmRlZCBwYXRoLiBJIHdpbGwgbmVlZCB0byBkZWx2ZSBkZWVwZXIgaW50byB0aGUgY29kZSB0byBlbnN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgcmVtb3ZpbmcgdGhpcyBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3J0X3NlbmRfcmVkaXJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9yb3V0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3JvdXRlLmM9ODQ2PXN0YXRpYyB2b2lkIGlwdjRfbmVnYXRpdmVfYWR2aWNlKHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jLTg3Mi1cbm5ldC9pcHY0L3JvdXRlLmM6ODczOnZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2lwdjQvcm91dGUuYy04NzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAyOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdW5kZXJzdGFuZGluZyB0aGUgZmxvdyBvZiB0aG91Z2h0OgoKKipEaXNzZWN0aW5nIHRoZSBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgRnVuY3Rpb24qKgoKQWxyaWdodCwgdGhlIGltbWVkaWF0ZSBuZWVkIGlzIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgYGlwX3J0X3NlbmRfcmVkaXJlY3RgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gc2VlIHRoZSBlbnRpcmUgZnVuY3Rpb24gZGVmaW5pdGlvbiB0byBncmFzcCB0aGUgaW50cmljYWNpZXMgb2YgaXRzIG9wZXJhdGlvbi4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZnVsbCBwaWN0dXJlIOKAkyB0aGUgcGFyYW1ldGVycyBpdCB0YWtlcywgdGhlIGxvZ2ljIGl0IGltcGxlbWVudHMsIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgbWFuaXB1bGF0ZXMsIGFuZCBpdHMgc2lkZSBlZmZlY3RzLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBiZSBjcnVjaWFsIGZvciBhbnkgZnVydGhlciBhbmFseXNpcyBvciBkZWJ1Z2dpbmcuIFNlZWluZyB0aGUgd2hvbGUgZnVuY3Rpb24gZ2l2ZXMgbWUgdGhlIGNoYW5jZSB0byBsb29rIGZvciBpbmVmZmljaWVuY2llcyBhbmQgcG9zc2libGUgZWRnZS1jYXNlcy4gU28sIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvcm91dGUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODcwOlx0ICogYW5kIFwmIzM0O2ZyYWcuIG5lZWRcJiMzNDsgKGJyZWFrcyBQTVRVIGRpc2NvdmVyeSkgaW4gaWNtcC5jLlxuIDg3MTpcdCAqL1xuIDg3MjpcdFxuIDg3MzpcdHZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIDg3NDpcdHtcbiA4NzU6XHRcdHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0YWJsZShza2IpO1xuIDg3NjpcdFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2O1xuIDg3NzpcdFx0c3RydWN0IGluZXRfcGVlciAqcGVlcjtcbiA4Nzg6XHRcdHN0cnVjdCBuZXQgKm5ldDtcbiA4Nzk6XHRcdGludCBsb2dfbWFydGlhbnM7XG4gODgwOlx0XHRpbnQgdmlmO1xuIDg4MTpcdFxuIDg4MjpcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDg4MzpcdFx0aW5fZGV2ID0gX19pbl9kZXZfZ2V0X3JjdShydC1cdTAwM2Vkc3QuZGV2KTtcbiA4ODQ6XHRcdGlmICghaW5fZGV2IHx8ICFJTl9ERVZfVFhfUkVESVJFQ1RTKGluX2RldikpIHtcbiA4ODU6XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gODg2Olx0XHRcdHJldHVybjtcbiA4ODc6XHRcdH1cbiA4ODg6XHRcdGxvZ19tYXJ0aWFucyA9IElOX0RFVl9MT0dfTUFSVElBTlMoaW5fZGV2KTtcbiA4ODk6XHRcdHZpZiA9IGwzbWRldl9tYXN0ZXJfaWZpbmRleF9yY3UocnQtXHUwMDNlZHN0LmRldik7XG4gODkwOlx0XG4gODkxOlx0XHRuZXQgPSBkZXZfbmV0KHJ0LVx1MDAzZWRzdC5kZXYpO1xuIDg5MjpcdFx0cGVlciA9IGluZXRfZ2V0cGVlcl92NChuZXQtXHUwMDNlaXB2NC5wZWVycywgaXBfaGRyKHNrYiktXHUwMDNlc2FkZHIsIHZpZik7XG4gODkzOlx0XHRpZiAoIXBlZXIpIHtcbiA4OTQ6XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gODk1Olx0XHRcdHJldHVybjtcbiA4OTY6XHRcdH1cbiA4OTc6XHRcbiA4OTg6XHRcdC8qIE5vIHJlZGlyZWN0ZWQgcGFja2V0cyBkdXJpbmcgaXBfcnRfcmVkaXJlY3Rfc2lsZW5jZTtcbiA4OTk6XHRcdCAqIHJlc2V0IHRoZSBhbGdvcml0aG0uXG4gOTAwOlx0XHQgKi9cbiA5MDE6XHRcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHBlZXItXHUwMDNlcmF0ZV9sYXN0ICYjNDM7IGlwX3J0X3JlZGlyZWN0X3NpbGVuY2UpKSB7XG4gOTAyOlx0XHRcdHBlZXItXHUwMDNlcmF0ZV90b2tlbnMgPSAwO1xuIDkwMzpcdFx0XHRwZWVyLVx1MDAzZW5fcmVkaXJlY3RzID0gMDtcbiA5MDQ6XHRcdH1cbiA5MDU6XHRcbiA5MDY6XHRcdC8qIFRvbyBtYW55IGlnbm9yZWQgcmVkaXJlY3RzOyBkbyBub3Qgc2VuZCBhbnl0aGluZ1xuIDkwNzpcdFx0ICogc2V0IGRzdC5yYXRlX2xhc3QgdG8gdGhlIGxhc3Qgc2VlbiByZWRpcmVjdGVkIHBhY2tldC5cbiA5MDg6XHRcdCAqL1xuIDkwOTpcdFx0aWYgKHBlZXItXHUwMDNlbl9yZWRpcmVjdHMgXHUwMDNlPSBpcF9ydF9yZWRpcmVjdF9udW1iZXIpIHtcbiA5MTA6XHRcdFx0cGVlci1cdTAwM2VyYXRlX2xhc3QgPSBqaWZmaWVzO1xuIDkxMTpcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4gOTEyOlx0XHR9XG4gOTEzOlx0XG4gOTE0Olx0XHQvKiBDaGVjayBmb3IgbG9hZCBsaW1pdDsgc2V0IHJhdGVfbGFzdCB0byB0aGUgbGF0ZXN0IHNlbnRcbiA5MTU6XHRcdCAqIHJlZGlyZWN0LlxuIDkxNjpcdFx0ICovXG4gOTE3Olx0XHRpZiAocGVlci1cdTAwM2VuX3JlZGlyZWN0cyA9PSAwIHx8XG4gOTE4Olx0XHQgICAgdGltZV9hZnRlcihqaWZmaWVzLFxuIDkxOTpcdFx0XHQgICAgICAgKHBlZXItXHUwMDNlcmF0ZV9sYXN0ICYjNDM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUyMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIFJvdXRpbmcgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcmVtb3ZpbmcgYSBjYWxsIHRvIGBpY21wX3NlbmRgIHdpdGhpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhbiBpbnRlcmVzdGluZyBjaGFuZ2UgYmVjYXVzZSBpdCYjMzk7cyBkaXJlY3RseSBhZmZlY3RpbmcgSVB2NCByb3V0aW5nIGFuZCwgbW9yZSBzcGVjaWZpY2FsbHksIGhvdyB3ZSBoYW5kbGUgSUNNUCByZWRpcmVjdCBtZXNzYWdlcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IHRoaXMgYGlwX3J0X3NlbmRfcmVkaXJlY3RgIGZ1bmN0aW9uIGl0c2VsZiBqdXN0IGJlY2FtZSBhIGhpZ2hlciBwcmlvcml0eSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBjaGFuZ2Ugc3VnZ2VzdHMgdGhlcmUmIzM5O3MgYSBwb3RlbnRpYWwgZm9yIHN1YnRsZSByb3V0aW5nIGJlaGF2aW9yIGFsdGVyYXRpb25zLCB3aGljaCBhbHdheXMgcGlxdWVzIG15IGludGVyZXN0LgoKTGV0IG1lIHRoaW5rIGFib3V0IHJlbGV2YW50IGtlcm5lbCBjb25maWdzLiBHaXZlbiBpdCYjMzk7cyBzdGFuZGFyZCBJUHY0IHJvdXRpbmcsIEkgZG9uJiMzOTt0IHRoaW5rIGBJUF9ST1VURV9DTEFTU0lEYCBvciBgSVBfTVVMVElQTEVfVEFCTEVTYCBhcmUgZGlyZWN0bHkgcmVsZXZhbnQgaGVyZSwganVzdCBwbGFpbiBvbGQgYElORVRgIHNob3VsZCBzdWZmaWNlLgoKTm93LCBJIHJlYWxseSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBjYWxsIGNoYWluLiBMZXQgbWUgY2hlY2sgdGhlIGNhbGxlcnMgb2YgYGlwX3J0X3NlbmRfcmVkaXJlY3RgLiBJIHdhbnQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIHdpdGhpbiB0aGUgYnJvYWRlciBuZXR3b3JraW5nIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9mb3J3YXJkLmM9ODM9aW50IGlwX2ZvcndhcmQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9pcF9mb3J3YXJkLmMtMTU2LVx0ICAgICFza2Jfc2VjX3BhdGgoc2tiKSlcbm5ldC9pcHY0L2lwX2ZvcndhcmQuYzoxNTc6XHRcdGlwX3J0X3NlbmRfcmVkaXJlY3Qoc2tiKTtcbm5ldC9pcHY0L2lwX2ZvcndhcmQuYy0xNTgtXG4tLVxubmV0L2lwdjQvcm91dGUuYz04NDY9c3RhdGljIHZvaWQgaXB2NF9uZWdhdGl2ZV9hZHZpY2Uoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3JvdXRlLmMtODcyLVxubmV0L2lwdjQvcm91dGUuYzo4NzM6dm9pZCBpcF9ydF9zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvaXB2NC9yb3V0ZS5jLTg3NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA3NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqRGl2aW5nIGludG8gdGhlIElQIFJlZGlyZWN0IEZ1bmN0aW9uYWxpdHkqKgoKUmlnaHQsIHNvIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgaXBfZm9yd2FyZGAuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydGluZyBwb2ludDsgaXQgbWVhbnMgdGhlIHJlZGlyZWN0IGZ1bmN0aW9uYWxpdHkgaXMgZGVmaW5pdGVseSAqbGl2ZSogYW5kLCBhdCBsZWFzdCBpbiBzb21lIGNpcmN1bXN0YW5jZXMsIHdvcmtpbmcgYXMgaW50ZW5kZWQgd2l0aGluIHRoZSBuZXR3b3JrIGZvcndhcmRpbmcgcGF0aC4gR29vZCwgZ29vZC4KCk5vdywgbXkgZm9jdXMgbmFycm93cyB0byBgaXBfcnRfc2VuZF9yZWRpcmVjdGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCB0cmlnZ2VyIGFuZCBhbnkgY29uZmlndXJhdGlvbiBrbm9icyBhc3NvY2lhdGVkIHdpdGggaXQuIFNwZWNpZmljYWxseSwgaXMgdGhpcyBmdW5jdGlvbmFsaXR5IGRlcGVuZGVudCBzb2xlbHkgb24gYElQX1JPVVRFUmAgb3IgYElQX0ZPUldBUkRgLCBvciBhcmUgdGhlcmUgbW9yZSBncmFudWxhciBzZXR0aW5ncyBpbiBwbGF5PyBJIGhhdmUgdG8gZGVsdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3Mg4oCTIHRoZSBzdGFuZGFyZCBvbmVzLCBtYXliZSBzb21lIG9ic2N1cmUgb25lcyDigJMgdG8gYmUgc3VyZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaWYgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBmbGFnIHJlbGF0ZWQgdG8gZm9yd2FyZGluZyAqd2l0aCogcmVkaXJlY3RzIGVuYWJsZWQuIEkmIzM5O2xsIGNoZWNrIGFsbCB0aGUgbGlrZWx5IHN1c3BlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9mb3J3YXJkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTE1PWNvbmZpZyBJUF9BRFZBTkNFRF9ST1VURVJcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMxLVxubmV0L2lwdjQvS2NvbmZpZzozMjpcdCAgZWNobyBcJiMzNDsxXCYjMzQ7IFx1MDAzZSAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfZm9yd2FyZFxubmV0L2lwdjQvS2NvbmZpZy0zMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmV0d29yayBSb3V0aW5nIENvbmZpZ3VyYXRpb24gQ2hlY2sqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBJUCBmb3J3YXJkaW5nIGhlcmUuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyB0aGF0IHRoZSBzeXN0ZW0mIzM5O3MgbGlrZWx5IHVzaW5nIGBzeXNjdGxgIHRvIGVuYWJsZSB0aGlzIOKAkyBub3QgYSBkZWRpY2F0ZWQgY29uZmlnIGZpbGUgaW4gdGhlIHRyYWRpdGlvbmFsIHNlbnNlLiBUaGF0JiMzOTtzIGEga2V5IGRpc3RpbmN0aW9uIGFuZCBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIHdoZW4gdHJvdWJsZXNob290aW5nLgoKVGhlIGNvcmUgb2YgdGhpcyBjb25maWd1cmF0aW9uLCBsb2dpY2FsbHksIHdvdWxkIGJlIHVuZGVyIHRoZSBgSU5FVGAgbmFtZXNwYWNlLiBHb3R0YSByZW1lbWJlciB0aGUgZnVuZGFtZW50YWxzLiBOb3csIGJlZm9yZSBJIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgbWFpbiByb3V0aW5nIHRhYmxlcywgYSBxdWljayBjaGVjayBuZWVkcyB0byBiZSBkb25lLiBJIG5lZWQgdG8gY29uZmlybSBpZiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgaXMgZXZlbiBleHBvcnRlZCwgYXMgdGhhdCBjYW4gZ2l2ZSBhbiBpbmRpY2F0aW9uIG9mIHJvdXRpbmcgY29uZmlndXJhdGlvbiBjb21wbGV4aXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmlwX3J0X3NlbmRfcmVkaXJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzIxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqQW5hbHl6aW5nIHRoZSBSb3V0ZSBEZWNsYXJhdGlvbioqCgpIbW0sIGludGVyZXN0aW5nLiBTbywgdGhpcyBkYXRhIHN0cnVjdHVyZSwgd2hhdGV2ZXIgJiMzNDtpdCYjMzQ7IHJlZmVycyB0bywgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0JiMzOTtzIGV4cGxpY2l0bHkgbWFya2VkIGZvciBleHRlcm5hbCB1c2Ug4oCTIGl0JiMzOTtzIG5vdCBleHBvcnRlZCBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UuIEJ1dCwgYW5kIHRoaXMgaXMga2V5LCBpdCYjMzk7cyBhbHNvIG5vdCBhICpzdGF0aWMqIGRlY2xhcmF0aW9uIGNvbmZpbmVkIHRvIGEgc2luZ2xlIHRyYW5zbGF0aW9uIHVuaXQuIFRoYXQgc3VnZ2VzdHMgaXQgaGFzIHNvbWUgYnJvYWRlciBzY29wZSB0aGFuIGp1c3QgYSBsb2NhbCBmdW5jdGlvbiBvciBmaWxlLiBUaGUgY2x1ZSBsaWVzIGluIHdoZXJlIGl0JiMzOTtzICpkZWNsYXJlZDoqIGBpbmNsdWRlL25ldC9yb3V0ZS5oYC4gVGhhdCYjMzk7cyBhIGhlYWRlciBmaWxlLiBUaGUgaW1wbGljYXRpb24gaXMsIGl0IGlzIGF2YWlsYWJsZSBmb3IgdXNlIHdpdGhpbiB0aGUgJiMzOTtuZXQmIzM5OyBtb2R1bGUsIGJlY2F1c2UgaXQgaXMgaW5jbHVkZWQgYXMgYSBoZWFkZXIsIGJ1dCBub3QgcGFydCBvZiB0aGUgcHVibGljIEFQSSBwZXIgc2UuIFRoaXMgbWlnaHQgbWVhbiBpdCYjMzk7cyBhbiBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSB1c2VkIHRocm91Z2hvdXQgdGhlIG5ldHdvcmsgY29kZSwgYnV0IG5vdCBpbnRlbmRlZCBmb3IgZGlyZWN0LCBnZW5lcmFsIGNvbnN1bXB0aW9uIGJ5IGV4dGVybmFsIHByb2dyYW1zIG9yIG1vZHVsZXMuIEl0IGhpbnRzIGF0IGEgY2FyZWZ1bGx5IGNvbnNpZGVyZWQgZGVzaWduIGRlY2lzaW9uLCBsaWtlbHkgdG8gbWFpbnRhaW4gZW5jYXBzdWxhdGlvbiBhbmQgcG90ZW50aWFsbHkgY29udHJvbCBhY2Nlc3MgdG8gaW50ZXJuYWwgcm91dGluZyBpbmZvcm1hdGlvbi4gVGhpcyByZXF1aXJlcyBmdXJ0aGVyIGV4YW1pbmF0aW9uIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3J0X3NlbmRfcmVkaXJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvcm91dGUuaD0yNTA9dm9pZCBpcHY0X3NrX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzayk7XG5pbmNsdWRlL25ldC9yb3V0ZS5oOjI1MTp2b2lkIGlwX3J0X3NlbmRfcmVkaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL25ldC9yb3V0ZS5oLTI1Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA4OAoJCQkJCQkJb3V0cHV0OiAxMDAKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElQdjQgUmVkaXJlY3QgSGFuZGxpbmcgUGF0Y2gqKgoKT2theSwgc28gYGlwX3J0X3NlbmRfcmVkaXJlY3RgIHNlZW1zIGxpa2UgdGhlIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBoZXJlLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgaWYgdGhpcyBwYXRjaCBpbnRlcmFjdHMgd2l0aCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgSU5FVGAgaXMgdGhlIGJhc2VsaW5lLCBubyBzdXJwcmlzZXMgdGhlcmUuIExldCBtZSBjaGVjayBmb3IgYElQX01VTFRJQ0FTVGAgb3IgYElQX0FEVkFOQ0VEX1JPVVRFUmAuLi4gbm9wZSwgbmVpdGhlciBhcmUgcmVsZXZhbnQuCgpOb3csIHRoZSBwYXRjaC4uLiBpdCBsb29rcyBsaWtlIGl0IGFkZHJlc3NlcyBhIGJ1ZyB3aGVyZSBgaWNtcF9zZW5kYCB3YXMgYmVpbmcgY2FsbGVkIHdpdGggYSBOVUxMIGBwZWVyYC4gSSByZW1lbWJlciB0aGF0IGtpbmQgb2YgdGhpbmcgaGFwcGVuaW5nIGlmIGBpbmV0X2dldHBlZXJfdjRgIGZhaWxlZCwgbWF5YmUgZHVlIHRvIGFuIG91dC1vZi1tZW1vcnkgY29uZGl0aW9uIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBXYWl0LCBoYW5nIG9uLi4uIHRoZSBwYXRjaCAqcmVtb3ZlcyogdGhlIGBpY21wX3NlbmRgIGNhbGwgZW50aXJlbHk/CgpBaGEhIFByZXZpb3VzbHksIGlmIGBpbmV0X2dldHBlZXJfdjRgIHJldHVybmVkIE5VTEwsIHRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIGNhbGwgYGljbXBfc2VuZGAgYW5kIHRoZW4gcmV0dXJuLiBUaGlzIHBhdGNoIGNoYW5nZXMgdGhhdDogaWYgYGluZXRfZ2V0cGVlcl92NGAgcmV0dXJucyBOVUxMLCB0aGUgYGljbXBfc2VuZGAgY2FsbCBpcyBzaW1wbHkgc2tpcHBlZCwgYW5kIHRoZSBjb2RlIHJldHVybnMgaW1tZWRpYXRlbHkuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIElQdjQgcGFja2V0IGZvcndhcmRpbmcgYW5kIElDTVAgcmVkaXJlY3QgZ2VuZXJhdGlvbi4KClRoaXMgaXMgd29ydGggZnV6emluZywgcGFydGljdWxhcmx5IGFyb3VuZCBlcnJvciBjb25kaXRpb25zIGZyb20gYGluZXRfZ2V0cGVlcl92NGAuIFRoZSBmb2N1cyByZW1haW5zIG9uIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYW5kIHN0YW5kYXJkIElQdjQgcm91dGluZyBjb25maWd1cmF0aW9uIGlzIHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcuIE5vIG5lZWQgdG8gd29ycnkgYWJvdXQgZW5hYmxpbmcgYW55IHNwZWNpYWwgb3B0aW9ucyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgSVB2NCBwYWNrZXQgZm9yd2FyZGluZyBieSByZW1vdmluZyBhbiBgaWNtcF9zZW5kYCBjYWxsIGluIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCB3aGVuIGBpbmV0X2dldHBlZXJfdjRgIGZhaWxzIHRvIGFsbG9jYXRlIG9yIGZpbmQgYSBwZWVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCByb3V0aW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3J0X3NlbmRfcmVkaXJlY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIElQdjQgcGFja2V0IGZvcndhcmRpbmcgYnkgcmVtb3ZpbmcgYW4gYGljbXBfc2VuZGAgY2FsbCBpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgd2hlbiBgaW5ldF9nZXRwZWVyX3Y0YCBmYWlscyB0byBhbGxvY2F0ZSBvciBmaW5kIGEgcGVlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgcm91dGluZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAyOjUzOjA5Ljk3ODQ0OTYyOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjEwOTM1OTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgSVB2NCBwYWNrZXQgZm9yd2FyZGluZyBieSByZW1vdmluZyBhbiBgaWNtcF9zZW5kYCBjYWxsIGluIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCB3aGVuIGBpbmV0X2dldHBlZXJfdjRgIGZhaWxzIHRvIGFsbG9jYXRlIG9yIGZpbmQgYSBwZWVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCByb3V0aW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMjo1MzowOS45Nzg0NTQ3MjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTYyNzUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkyMjU4ODc2MTg3NGJjMTliMmJmMjc2MDUwNmFhMWVkZWIyMTk2MWZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMjYgMDI6NTM6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcm91dGUuYyBiL25ldC9pcHY0L3JvdXRlLmNcXG5pbmRleCAzZjNkZTUxNjRkNmU1OC4uMTUyZDhjYjI4ZjY1YWEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvcm91dGUuY1xcbisrKyBiL25ldC9pcHY0L3JvdXRlLmNcXG5AQCAtODkyLDggKzg5Miw2IEBAIHZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRwZWVyID0gaW5ldF9nZXRwZWVyX3Y0KG5ldC1cXHUwMDNlaXB2NC5wZWVycywgaXBfaGRyKHNrYiktXFx1MDAzZXNhZGRyLCB2aWYpO1xcbiBcXHRpZiAoIXBlZXIpIHtcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLVxcdFxcdGljbXBfc2VuZChza2IsIElDTVBfUkVESVJFQ1QsIElDTVBfUkVESVJfSE9TVCxcXG4tXFx0XFx0XFx0ICBydF9uZXh0aG9wKHJ0LCBpcF9oZHIoc2tiKS1cXHUwMDNlZGFkZHIpKTtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMjo1MzoxMC40NDA2NzIxOTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNDc0ODcwNjUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9ydF9zZW5kX3JlZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIElQdjQgcGFja2V0IGZvcndhcmRpbmcgYnkgcmVtb3ZpbmcgYW4gYGljbXBfc2VuZGAgY2FsbCBpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgd2hlbiBgaW5ldF9nZXRwZWVyX3Y0YCBmYWlscyB0byBhbGxvY2F0ZSBvciBmaW5kIGEgcGVlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgcm91dGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTIyNTg4NzYxODc0YmMxOWIyYmYyNzYwNTA2YWExZWRlYjIxOTYxZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDAyOjUzOjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcm91dGUuYyBiL25ldC9pcHY0L3JvdXRlLmNcbmluZGV4IDNmM2RlNTE2NGQ2ZTU4Li4xNTJkOGNiMjhmNjVhYSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3JvdXRlLmNcbisrKyBiL25ldC9pcHY0L3JvdXRlLmNcbkBAIC04OTIsOCArODkyLDYgQEAgdm9pZCBpcF9ydF9zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRwZWVyID0gaW5ldF9nZXRwZWVyX3Y0KG5ldC1cdTAwM2VpcHY0LnBlZXJzLCBpcF9oZHIoc2tiKS1cdTAwM2VzYWRkciwgdmlmKTtcbiBcdGlmICghcGVlcikge1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbi1cdFx0aWNtcF9zZW5kKHNrYiwgSUNNUF9SRURJUkVDVCwgSUNNUF9SRURJUl9IT1NULFxuLVx0XHRcdCAgcnRfbmV4dGhvcChydCwgaXBfaGRyKHNrYiktXHUwMDNlZGFkZHIpKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDI6NTM6MTAuNDQwNjc0MDczWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyMzM4MTQ4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSb3V0aW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9pcHY0L3JvdXRlLmNgLiBJdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBjcnVjaWFsIGZvciByb3V0aW5nIHN0YWJpbGl0eS4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIHRoZSBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlLCBzbyBJIGRpZyBpbnRvIHRoZSBsb2dpYy4gSXQgc2VlbXMgdGhhdCB0aGUgcGF0Y2ggaXMgcmVtb3ZpbmcgYW4gYGljbXBfc2VuZGAgY2FsbCDigJMgdGhlIG9uZSB0aGF0IGdlbmVyYXRlcyBhbiBJQ01QIHJlZGlyZWN0IG1lc3NhZ2Ug4oCTIHNwZWNpZmljYWxseSB3aGVuIHRoZSBgcGVlcmAgcGFyYW1ldGVyIHdpdGhpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgaXMgTlVMTC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzaXR1YXRpb25zIHRyaWdnZXIgdGhpcyBgcGVlcmAgdG8gYmUgTlVMTCBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIG9mICpub3QqIHNlbmRpbmcgdGhpcyByZWRpcmVjdCBhcmUuIEl0IG1ha2VzIHNlbnNlIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgZnVuY3Rpb24gaXRzZWxmIHRvIGZ1bGx5IGdyYXNwIGl0cyBiZWhhdmlvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlYXNvbiBiZWhpbmQgdGhlIGNvbmRpdGlvbmFsIHJlbW92YWwgb2YgdGhlIHJlZGlyZWN0LiBJcyB0aGlzIGEgYnVnIGZpeCwgYW4gb3B0aW1pemF0aW9uLCBvciBzb21ldGhpbmcgbW9yZSBudWFuY2VkPyBXaGF0IHNjZW5hcmlvcyBhcmUgYmVpbmcgY29uc2lkZXJlZCB3aGVuIHRoZSByZWRpcmVjdCBpcyBub3Qgc2VudD8gVGhpcyBhbGwgZGVwZW5kcyBvbiB0aGUgY2lyY3Vtc3RhbmNlcyB3aGVyZSBhIE5VTEwgcGVlciBleGlzdHMgYW5kIHdoYXQgdGhhdCBpbmRpY2F0ZXMgYWJvdXQgdGhlIHBhY2tldCdzIGludGVuZGVkIHBhdGguIEkgd2lsbCBuZWVkIHRvIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiByZW1vdmluZyB0aGlzIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAyOjUzOjEzLjg2NDA1ODI0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDA5MTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvcm91dGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9yb3V0ZS5jPTg0Nj1zdGF0aWMgdm9pZCBpcHY0X25lZ2F0aXZlX2FkdmljZShzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jLTg3Mi1cXG5uZXQvaXB2NC9yb3V0ZS5jOjg3Mzp2b2lkIGlwX3J0X3NlbmRfcmVkaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2NC9yb3V0ZS5jLTg3NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAyOjUzOjEzLjkyNTA3Mzg2NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0NzA4NjU2ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB1bmRlcnN0YW5kaW5nIHRoZSBmbG93IG9mIHRob3VnaHQ6XG5cbioqRGlzc2VjdGluZyB0aGUgYGlwX3J0X3NlbmRfcmVkaXJlY3RgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgdGhlIGltbWVkaWF0ZSBuZWVkIGlzIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgYGlwX3J0X3NlbmRfcmVkaXJlY3RgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gc2VlIHRoZSBlbnRpcmUgZnVuY3Rpb24gZGVmaW5pdGlvbiB0byBncmFzcCB0aGUgaW50cmljYWNpZXMgb2YgaXRzIG9wZXJhdGlvbi4gSSdtIGxvb2tpbmcgZm9yIHRoZSBmdWxsIHBpY3R1cmUg4oCTIHRoZSBwYXJhbWV0ZXJzIGl0IHRha2VzLCB0aGUgbG9naWMgaXQgaW1wbGVtZW50cywgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCBtYW5pcHVsYXRlcywgYW5kIGl0cyBzaWRlIGVmZmVjdHMuIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNydWNpYWwgZm9yIGFueSBmdXJ0aGVyIGFuYWx5c2lzIG9yIGRlYnVnZ2luZy4gU2VlaW5nIHRoZSB3aG9sZSBmdW5jdGlvbiBnaXZlcyBtZSB0aGUgY2hhbmNlIHRvIGxvb2sgZm9yIGluZWZmaWNpZW5jaWVzIGFuZCBwb3NzaWJsZSBlZGdlLWNhc2VzLiBTbywgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAyOjUzOjE2LjM5NTk1OTE4NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9yb3V0ZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDg3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDg3MDpcXHQgKiBhbmQgXFxcImZyYWcuIG5lZWRcXFwiIChicmVha3MgUE1UVSBkaXNjb3ZlcnkpIGluIGljbXAuYy5cXG4gODcxOlxcdCAqL1xcbiA4NzI6XFx0XFxuIDg3MzpcXHR2b2lkIGlwX3J0X3NlbmRfcmVkaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gODc0OlxcdHtcXG4gODc1OlxcdFxcdHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0YWJsZShza2IpO1xcbiA4NzY6XFx0XFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2O1xcbiA4Nzc6XFx0XFx0c3RydWN0IGluZXRfcGVlciAqcGVlcjtcXG4gODc4OlxcdFxcdHN0cnVjdCBuZXQgKm5ldDtcXG4gODc5OlxcdFxcdGludCBsb2dfbWFydGlhbnM7XFxuIDg4MDpcXHRcXHRpbnQgdmlmO1xcbiA4ODE6XFx0XFxuIDg4MjpcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIDg4MzpcXHRcXHRpbl9kZXYgPSBfX2luX2Rldl9nZXRfcmN1KHJ0LVxcdTAwM2Vkc3QuZGV2KTtcXG4gODg0OlxcdFxcdGlmICghaW5fZGV2IHx8ICFJTl9ERVZfVFhfUkVESVJFQ1RTKGluX2RldikpIHtcXG4gODg1OlxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiA4ODY6XFx0XFx0XFx0cmV0dXJuO1xcbiA4ODc6XFx0XFx0fVxcbiA4ODg6XFx0XFx0bG9nX21hcnRpYW5zID0gSU5fREVWX0xPR19NQVJUSUFOUyhpbl9kZXYpO1xcbiA4ODk6XFx0XFx0dmlmID0gbDNtZGV2X21hc3Rlcl9pZmluZGV4X3JjdShydC1cXHUwMDNlZHN0LmRldik7XFxuIDg5MDpcXHRcXG4gODkxOlxcdFxcdG5ldCA9IGRldl9uZXQocnQtXFx1MDAzZWRzdC5kZXYpO1xcbiA4OTI6XFx0XFx0cGVlciA9IGluZXRfZ2V0cGVlcl92NChuZXQtXFx1MDAzZWlwdjQucGVlcnMsIGlwX2hkcihza2IpLVxcdTAwM2VzYWRkciwgdmlmKTtcXG4gODkzOlxcdFxcdGlmICghcGVlcikge1xcbiA4OTQ6XFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIDg5NTpcXHRcXHRcXHRyZXR1cm47XFxuIDg5NjpcXHRcXHR9XFxuIDg5NzpcXHRcXG4gODk4OlxcdFxcdC8qIE5vIHJlZGlyZWN0ZWQgcGFja2V0cyBkdXJpbmcgaXBfcnRfcmVkaXJlY3Rfc2lsZW5jZTtcXG4gODk5OlxcdFxcdCAqIHJlc2V0IHRoZSBhbGdvcml0aG0uXFxuIDkwMDpcXHRcXHQgKi9cXG4gOTAxOlxcdFxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHBlZXItXFx1MDAzZXJhdGVfbGFzdCArIGlwX3J0X3JlZGlyZWN0X3NpbGVuY2UpKSB7XFxuIDkwMjpcXHRcXHRcXHRwZWVyLVxcdTAwM2VyYXRlX3Rva2VucyA9IDA7XFxuIDkwMzpcXHRcXHRcXHRwZWVyLVxcdTAwM2VuX3JlZGlyZWN0cyA9IDA7XFxuIDkwNDpcXHRcXHR9XFxuIDkwNTpcXHRcXG4gOTA2OlxcdFxcdC8qIFRvbyBtYW55IGlnbm9yZWQgcmVkaXJlY3RzOyBkbyBub3Qgc2VuZCBhbnl0aGluZ1xcbiA5MDc6XFx0XFx0ICogc2V0IGRzdC5yYXRlX2xhc3QgdG8gdGhlIGxhc3Qgc2VlbiByZWRpcmVjdGVkIHBhY2tldC5cXG4gOTA4OlxcdFxcdCAqL1xcbiA5MDk6XFx0XFx0aWYgKHBlZXItXFx1MDAzZW5fcmVkaXJlY3RzIFxcdTAwM2U9IGlwX3J0X3JlZGlyZWN0X251bWJlcikge1xcbiA5MTA6XFx0XFx0XFx0cGVlci1cXHUwMDNlcmF0ZV9sYXN0ID0gamlmZmllcztcXG4gOTExOlxcdFxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4gOTEyOlxcdFxcdH1cXG4gOTEzOlxcdFxcbiA5MTQ6XFx0XFx0LyogQ2hlY2sgZm9yIGxvYWQgbGltaXQ7IHNldCByYXRlX2xhc3QgdG8gdGhlIGxhdGVzdCBzZW50XFxuIDkxNTpcXHRcXHQgKiByZWRpcmVjdC5cXG4gOTE2OlxcdFxcdCAqL1xcbiA5MTc6XFx0XFx0aWYgKHBlZXItXFx1MDAzZW5fcmVkaXJlY3RzID09IDAgfHxcXG4gOTE4OlxcdFxcdCAgICB0aW1lX2FmdGVyKGppZmZpZXMsXFxuIDkxOTpcXHRcXHRcXHQgICAgICAgKHBlZXItXFx1MDAzZXJhdGVfbGFzdCArXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAyOjUzOjE2LjM5NjEyMTYwNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NzExMTIwNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBSb3V0aW5nIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcmVtb3ZpbmcgYSBjYWxsIHRvIGBpY21wX3NlbmRgIHdpdGhpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhbiBpbnRlcmVzdGluZyBjaGFuZ2UgYmVjYXVzZSBpdCdzIGRpcmVjdGx5IGFmZmVjdGluZyBJUHY0IHJvdXRpbmcgYW5kLCBtb3JlIHNwZWNpZmljYWxseSwgaG93IHdlIGhhbmRsZSBJQ01QIHJlZGlyZWN0IG1lc3NhZ2VzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhpcyBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgZnVuY3Rpb24gaXRzZWxmIGp1c3QgYmVjYW1lIGEgaGlnaGVyIHByaW9yaXR5IHRhcmdldCBmb3IgZnV6emluZy4gVGhlIGNoYW5nZSBzdWdnZXN0cyB0aGVyZSdzIGEgcG90ZW50aWFsIGZvciBzdWJ0bGUgcm91dGluZyBiZWhhdmlvciBhbHRlcmF0aW9ucywgd2hpY2ggYWx3YXlzIHBpcXVlcyBteSBpbnRlcmVzdC5cblxuTGV0IG1lIHRoaW5rIGFib3V0IHJlbGV2YW50IGtlcm5lbCBjb25maWdzLiBHaXZlbiBpdCdzIHN0YW5kYXJkIElQdjQgcm91dGluZywgSSBkb24ndCB0aGluayBgSVBfUk9VVEVfQ0xBU1NJRGAgb3IgYElQX01VTFRJUExFX1RBQkxFU2AgYXJlIGRpcmVjdGx5IHJlbGV2YW50IGhlcmUsIGp1c3QgcGxhaW4gb2xkIGBJTkVUYCBzaG91bGQgc3VmZmljZS5cblxuTm93LCBJIHJlYWxseSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBjYWxsIGNoYWluLiBMZXQgbWUgY2hlY2sgdGhlIGNhbGxlcnMgb2YgYGlwX3J0X3NlbmRfcmVkaXJlY3RgLiBJIHdhbnQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIHdpdGhpbiB0aGUgYnJvYWRlciBuZXR3b3JraW5nIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMjo1MzoyMC4yNjcyMzYwMDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI1MTg5NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfcnRfc2VuZF9yZWRpcmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfZm9yd2FyZC5jPTgzPWludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9pcF9mb3J3YXJkLmMtMTU2LVxcdCAgICAhc2tiX3NlY19wYXRoKHNrYikpXFxubmV0L2lwdjQvaXBfZm9yd2FyZC5jOjE1NzpcXHRcXHRpcF9ydF9zZW5kX3JlZGlyZWN0KHNrYik7XFxubmV0L2lwdjQvaXBfZm9yd2FyZC5jLTE1OC1cXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmM9ODQ2PXN0YXRpYyB2b2lkIGlwdjRfbmVnYXRpdmVfYWR2aWNlKHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmMtODcyLVxcbm5ldC9pcHY0L3JvdXRlLmM6ODczOnZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY0L3JvdXRlLmMtODc0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDI6NTM6MjAuMzI5NzYwNDI0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NjM2MzYyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipEaXZpbmcgaW50byB0aGUgSVAgUmVkaXJlY3QgRnVuY3Rpb25hbGl0eSoqXG5cblJpZ2h0LCBzbyBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgaXMgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGlwX2ZvcndhcmRgLiBUaGF0J3MgYSBzb2xpZCBzdGFydGluZyBwb2ludDsgaXQgbWVhbnMgdGhlIHJlZGlyZWN0IGZ1bmN0aW9uYWxpdHkgaXMgZGVmaW5pdGVseSAqbGl2ZSogYW5kLCBhdCBsZWFzdCBpbiBzb21lIGNpcmN1bXN0YW5jZXMsIHdvcmtpbmcgYXMgaW50ZW5kZWQgd2l0aGluIHRoZSBuZXR3b3JrIGZvcndhcmRpbmcgcGF0aC4gR29vZCwgZ29vZC5cblxuTm93LCBteSBmb2N1cyBuYXJyb3dzIHRvIGBpcF9ydF9zZW5kX3JlZGlyZWN0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IHRyaWdnZXIgYW5kIGFueSBjb25maWd1cmF0aW9uIGtub2JzIGFzc29jaWF0ZWQgd2l0aCBpdC4gU3BlY2lmaWNhbGx5LCBpcyB0aGlzIGZ1bmN0aW9uYWxpdHkgZGVwZW5kZW50IHNvbGVseSBvbiBgSVBfUk9VVEVSYCBvciBgSVBfRk9SV0FSRGAsIG9yIGFyZSB0aGVyZSBtb3JlIGdyYW51bGFyIHNldHRpbmdzIGluIHBsYXk/IEkgaGF2ZSB0byBkZWx2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlncyDigJMgdGhlIHN0YW5kYXJkIG9uZXMsIG1heWJlIHNvbWUgb2JzY3VyZSBvbmVzIOKAkyB0byBiZSBzdXJlLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGlmIHRoZXJlJ3MgYSBzcGVjaWZpYyBmbGFnIHJlbGF0ZWQgdG8gZm9yd2FyZGluZyAqd2l0aCogcmVkaXJlY3RzIGVuYWJsZWQuIEknbGwgY2hlY2sgYWxsIHRoZSBsaWtlbHkgc3VzcGVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNzcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMjo1MzoyMy41ODYxMjY0OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk4MDM5OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfZm9yd2FyZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MTU9Y29uZmlnIElQX0FEVkFOQ0VEX1JPVVRFUlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMS1cXG5uZXQvaXB2NC9LY29uZmlnOjMyOlxcdCAgZWNobyBcXFwiMVxcXCIgXFx1MDAzZSAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfZm9yd2FyZFxcbm5ldC9pcHY0L0tjb25maWctMzMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAyOjUzOjIzLjY0NTkzNzQ2NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA1NzA4Mjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5ldHdvcmsgUm91dGluZyBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIElQIGZvcndhcmRpbmcgaGVyZS4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGF0IG1lIGlzIHRoYXQgdGhlIHN5c3RlbSdzIGxpa2VseSB1c2luZyBgc3lzY3RsYCB0byBlbmFibGUgdGhpcyDigJMgbm90IGEgZGVkaWNhdGVkIGNvbmZpZyBmaWxlIGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZS4gVGhhdCdzIGEga2V5IGRpc3RpbmN0aW9uIGFuZCBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIHdoZW4gdHJvdWJsZXNob290aW5nLlxuXG5UaGUgY29yZSBvZiB0aGlzIGNvbmZpZ3VyYXRpb24sIGxvZ2ljYWxseSwgd291bGQgYmUgdW5kZXIgdGhlIGBJTkVUYCBuYW1lc3BhY2UuIEdvdHRhIHJlbWVtYmVyIHRoZSBmdW5kYW1lbnRhbHMuIE5vdywgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBtYWluIHJvdXRpbmcgdGFibGVzLCBhIHF1aWNrIGNoZWNrIG5lZWRzIHRvIGJlIGRvbmUuIEkgbmVlZCB0byBjb25maXJtIGlmIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCBpcyBldmVuIGV4cG9ydGVkLCBhcyB0aGF0IGNhbiBnaXZlIGFuIGluZGljYXRpb24gb2Ygcm91dGluZyBjb25maWd1cmF0aW9uIGNvbXBsZXhpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMjo1MzoyNi42NTE2NDg4NDVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMTk2NjI2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLippcF9ydF9zZW5kX3JlZGlyZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDI6NTM6MjYuNzE0ODUzOTIyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTYzNTU3NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LlxuXG4qKkFuYWx5emluZyB0aGUgUm91dGUgRGVjbGFyYXRpb24qKlxuXG5IbW0sIGludGVyZXN0aW5nLiBTbywgdGhpcyBkYXRhIHN0cnVjdHVyZSwgd2hhdGV2ZXIgXCJpdFwiIHJlZmVycyB0bywgaXNuJ3Qgc29tZXRoaW5nIHRoYXQncyBleHBsaWNpdGx5IG1hcmtlZCBmb3IgZXh0ZXJuYWwgdXNlIOKAkyBpdCdzIG5vdCBleHBvcnRlZCBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UuIEJ1dCwgYW5kIHRoaXMgaXMga2V5LCBpdCdzIGFsc28gbm90IGEgKnN0YXRpYyogZGVjbGFyYXRpb24gY29uZmluZWQgdG8gYSBzaW5nbGUgdHJhbnNsYXRpb24gdW5pdC4gVGhhdCBzdWdnZXN0cyBpdCBoYXMgc29tZSBicm9hZGVyIHNjb3BlIHRoYW4ganVzdCBhIGxvY2FsIGZ1bmN0aW9uIG9yIGZpbGUuIFRoZSBjbHVlIGxpZXMgaW4gd2hlcmUgaXQncyAqZGVjbGFyZWQ6KiBgaW5jbHVkZS9uZXQvcm91dGUuaGAuIFRoYXQncyBhIGhlYWRlciBmaWxlLiBUaGUgaW1wbGljYXRpb24gaXMsIGl0IGlzIGF2YWlsYWJsZSBmb3IgdXNlIHdpdGhpbiB0aGUgJ25ldCcgbW9kdWxlLCBiZWNhdXNlIGl0IGlzIGluY2x1ZGVkIGFzIGEgaGVhZGVyLCBidXQgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgcGVyIHNlLiBUaGlzIG1pZ2h0IG1lYW4gaXQncyBhbiBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSB1c2VkIHRocm91Z2hvdXQgdGhlIG5ldHdvcmsgY29kZSwgYnV0IG5vdCBpbnRlbmRlZCBmb3IgZGlyZWN0LCBnZW5lcmFsIGNvbnN1bXB0aW9uIGJ5IGV4dGVybmFsIHByb2dyYW1zIG9yIG1vZHVsZXMuIEl0IGhpbnRzIGF0IGEgY2FyZWZ1bGx5IGNvbnNpZGVyZWQgZGVzaWduIGRlY2lzaW9uLCBsaWtlbHkgdG8gbWFpbnRhaW4gZW5jYXBzdWxhdGlvbiBhbmQgcG90ZW50aWFsbHkgY29udHJvbCBhY2Nlc3MgdG8gaW50ZXJuYWwgcm91dGluZyBpbmZvcm1hdGlvbi4gVGhpcyByZXF1aXJlcyBmdXJ0aGVyIGV4YW1pbmF0aW9uIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MjEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMjo1MzoyOS44MzEyMTIyMzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTk0ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3JvdXRlLmg9MjUwPXZvaWQgaXB2NF9za19yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29jayAqc2spO1xcbmluY2x1ZGUvbmV0L3JvdXRlLmg6MjUxOnZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5pbmNsdWRlL25ldC9yb3V0ZS5oLTI1Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDI6NTM6MjkuODkxODExNjkyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyOTc1MzcwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQdjQgUmVkaXJlY3QgSGFuZGxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgc2VlbXMgbGlrZSB0aGUga2V5IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGhlcmUuIExldCdzIGRpZyBpbiBhbmQgc2VlIGlmIHRoaXMgcGF0Y2ggaW50ZXJhY3RzIHdpdGggYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gYElORVRgIGlzIHRoZSBiYXNlbGluZSwgbm8gc3VycHJpc2VzIHRoZXJlLiBMZXQgbWUgY2hlY2sgZm9yIGBJUF9NVUxUSUNBU1RgIG9yIGBJUF9BRFZBTkNFRF9ST1VURVJgLi4uIG5vcGUsIG5laXRoZXIgYXJlIHJlbGV2YW50LlxuXG5Ob3csIHRoZSBwYXRjaC4uLiBpdCBsb29rcyBsaWtlIGl0IGFkZHJlc3NlcyBhIGJ1ZyB3aGVyZSBgaWNtcF9zZW5kYCB3YXMgYmVpbmcgY2FsbGVkIHdpdGggYSBOVUxMIGBwZWVyYC4gSSByZW1lbWJlciB0aGF0IGtpbmQgb2YgdGhpbmcgaGFwcGVuaW5nIGlmIGBpbmV0X2dldHBlZXJfdjRgIGZhaWxlZCwgbWF5YmUgZHVlIHRvIGFuIG91dC1vZi1tZW1vcnkgY29uZGl0aW9uIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBXYWl0LCBoYW5nIG9uLi4uIHRoZSBwYXRjaCAqcmVtb3ZlcyogdGhlIGBpY21wX3NlbmRgIGNhbGwgZW50aXJlbHk/XG5cbkFoYSEgUHJldmlvdXNseSwgaWYgYGluZXRfZ2V0cGVlcl92NGAgcmV0dXJuZWQgTlVMTCwgdGhlIG9yaWdpbmFsIGNvZGUgd291bGQgY2FsbCBgaWNtcF9zZW5kYCBhbmQgdGhlbiByZXR1cm4uIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGF0OiBpZiBgaW5ldF9nZXRwZWVyX3Y0YCByZXR1cm5zIE5VTEwsIHRoZSBgaWNtcF9zZW5kYCBjYWxsIGlzIHNpbXBseSBza2lwcGVkLCBhbmQgdGhlIGNvZGUgcmV0dXJucyBpbW1lZGlhdGVseS4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHRlcmluZyB0aGUgYmVoYXZpb3Igb2YgSVB2NCBwYWNrZXQgZm9yd2FyZGluZyBhbmQgSUNNUCByZWRpcmVjdCBnZW5lcmF0aW9uLlxuXG5UaGlzIGlzIHdvcnRoIGZ1enppbmcsIHBhcnRpY3VsYXJseSBhcm91bmQgZXJyb3IgY29uZGl0aW9ucyBmcm9tIGBpbmV0X2dldHBlZXJfdjRgLiBUaGUgZm9jdXMgcmVtYWlucyBvbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAsIGFuZCBzdGFuZGFyZCBJUHY0IHJvdXRpbmcgY29uZmlndXJhdGlvbiBpcyBzdWZmaWNpZW50IGZvciB0ZXN0aW5nLiBObyBuZWVkIHRvIHdvcnJ5IGFib3V0IGVuYWJsaW5nIGFueSBzcGVjaWFsIG9wdGlvbnMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA4OCwiT3V0cHV0VG9rZW5zIjoxMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDI6NTM6MzUuMTg5MzUxNTQ5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9ydF9zZW5kX3JlZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIElQdjQgcGFja2V0IGZvcndhcmRpbmcgYnkgcmVtb3ZpbmcgYW4gYGljbXBfc2VuZGAgY2FsbCBpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgd2hlbiBgaW5ldF9nZXRwZWVyX3Y0YCBmYWlscyB0byBhbGxvY2F0ZSBvciBmaW5kIGEgcGVlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgcm91dGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9ydF9zZW5kX3JlZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIElQdjQgcGFja2V0IGZvcndhcmRpbmcgYnkgcmVtb3ZpbmcgYW4gYGljbXBfc2VuZGAgY2FsbCBpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgd2hlbiBgaW5ldF9nZXRwZWVyX3Y0YCBmYWlscyB0byBhbGxvY2F0ZSBvciBmaW5kIGEgcGVlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgcm91dGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9rmk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 02:33:26 +0000 UTC FinishedAt: 2026-07-26 02:53:36 +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": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "series_id": "9b512916-943a-4248-a1ec-6b28e780e7c8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_rt_send_redirect" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDAyOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgSVB2NCBwYWNrZXQgZm9yd2FyZGluZyBieSByZW1vdmluZyBhbiBgaWNtcF9zZW5kYCBjYWxsIGluIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCB3aGVuIGBpbmV0X2dldHBlZXJfdjRgIGZhaWxzIHRvIGFsbG9jYXRlIG9yIGZpbmQgYSBwZWVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCByb3V0aW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAyOjUzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTIyNTg4NzYxODc0YmMxOWIyYmYyNzYwNTA2YWExZWRlYjIxOTYxZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDAyOjUzOjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jXG5pbmRleCAzZjNkZTUxNjRkNmU1OC4uMTUyZDhjYjI4ZjY1YWEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9yb3V0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9yb3V0ZS5jXG5AQCAtODkyLDggJiM0Mzs4OTIsNiBAQCB2b2lkIGlwX3J0X3NlbmRfcmVkaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHBlZXIgPSBpbmV0X2dldHBlZXJfdjQobmV0LVx1MDAzZWlwdjQucGVlcnMsIGlwX2hkcihza2IpLVx1MDAzZXNhZGRyLCB2aWYpO1xuIFx0aWYgKCFwZWVyKSB7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuLVx0XHRpY21wX3NlbmQoc2tiLCBJQ01QX1JFRElSRUNULCBJQ01QX1JFRElSX0hPU1QsXG4tXHRcdFx0ICBydF9uZXh0aG9wKHJ0LCBpcF9oZHIoc2tiKS1cdTAwM2VkYWRkcikpO1xuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgSVB2NCBwYWNrZXQgZm9yd2FyZGluZyBieSByZW1vdmluZyBhbiBgaWNtcF9zZW5kYCBjYWxsIGluIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCB3aGVuIGBpbmV0X2dldHBlZXJfdjRgIGZhaWxzIHRvIGFsbG9jYXRlIG9yIGZpbmQgYSBwZWVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCByb3V0aW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTIyNTg4NzYxODc0YmMxOWIyYmYyNzYwNTA2YWExZWRlYjIxOTYxZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDI2IDAyOjUzOjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcm91dGUuYyBiL25ldC9pcHY0L3JvdXRlLmMKaW5kZXggM2YzZGU1MTY0ZDZlNTguLjE1MmQ4Y2IyOGY2NWFhIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9yb3V0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3JvdXRlLmMKQEAgLTg5Miw4ICYjNDM7ODkyLDYgQEAgdm9pZCBpcF9ydF9zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IpCiAJcGVlciA9IGluZXRfZ2V0cGVlcl92NChuZXQtJmd0O2lwdjQucGVlcnMsIGlwX2hkcihza2IpLSZndDtzYWRkciwgdmlmKTsKIAlpZiAoIXBlZXIpIHsKIAkJcmN1X3JlYWRfdW5sb2NrKCk7Ci0JCWljbXBfc2VuZChza2IsIElDTVBfUkVESVJFQ1QsIElDTVBfUkVESVJfSE9TVCwKLQkJCSAgcnRfbmV4dGhvcChydCwgaXBfaGRyKHNrYiktJmd0O2RhZGRyKSk7CiAJCXJldHVybjsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJvdXRpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvaXB2NC9yb3V0ZS5jYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGNydWNpYWwgZm9yIHJvdXRpbmcgc3RhYmlsaXR5LiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRhcmdldHMgdGhlIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2UsIHNvIEkgZGlnIGludG8gdGhlIGxvZ2ljLiBJdCBzZWVtcyB0aGF0IHRoZSBwYXRjaCBpcyByZW1vdmluZyBhbiBgaWNtcF9zZW5kYCBjYWxsIOKAkyB0aGUgb25lIHRoYXQgZ2VuZXJhdGVzIGFuIElDTVAgcmVkaXJlY3QgbWVzc2FnZSDigJMgc3BlY2lmaWNhbGx5IHdoZW4gdGhlIGBwZWVyYCBwYXJhbWV0ZXIgd2l0aGluIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCBpcyBOVUxMLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzaXR1YXRpb25zIHRyaWdnZXIgdGhpcyBgcGVlcmAgdG8gYmUgTlVMTCBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIG9mICpub3QqIHNlbmRpbmcgdGhpcyByZWRpcmVjdCBhcmUuIEl0IG1ha2VzIHNlbnNlIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgZnVuY3Rpb24gaXRzZWxmIHRvIGZ1bGx5IGdyYXNwIGl0cyBiZWhhdmlvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlYXNvbiBiZWhpbmQgdGhlIGNvbmRpdGlvbmFsIHJlbW92YWwgb2YgdGhlIHJlZGlyZWN0LiBJcyB0aGlzIGEgYnVnIGZpeCwgYW4gb3B0aW1pemF0aW9uLCBvciBzb21ldGhpbmcgbW9yZSBudWFuY2VkPyBXaGF0IHNjZW5hcmlvcyBhcmUgYmVpbmcgY29uc2lkZXJlZCB3aGVuIHRoZSByZWRpcmVjdCBpcyBub3Qgc2VudD8gVGhpcyBhbGwgZGVwZW5kcyBvbiB0aGUgY2lyY3Vtc3RhbmNlcyB3aGVyZSBhIE5VTEwgcGVlciBleGlzdHMgYW5kIHdoYXQgdGhhdCBpbmRpY2F0ZXMgYWJvdXQgdGhlIHBhY2tldCYjMzk7cyBpbnRlbmRlZCBwYXRoLiBJIHdpbGwgbmVlZCB0byBkZWx2ZSBkZWVwZXIgaW50byB0aGUgY29kZSB0byBlbnN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgcmVtb3ZpbmcgdGhpcyBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3J0X3NlbmRfcmVkaXJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9yb3V0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3JvdXRlLmM9ODQ2PXN0YXRpYyB2b2lkIGlwdjRfbmVnYXRpdmVfYWR2aWNlKHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvaXB2NC9yb3V0ZS5jLTg3Mi1cbm5ldC9pcHY0L3JvdXRlLmM6ODczOnZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L2lwdjQvcm91dGUuYy04NzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAyOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdW5kZXJzdGFuZGluZyB0aGUgZmxvdyBvZiB0aG91Z2h0OgoKKipEaXNzZWN0aW5nIHRoZSBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgRnVuY3Rpb24qKgoKQWxyaWdodCwgdGhlIGltbWVkaWF0ZSBuZWVkIGlzIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgYGlwX3J0X3NlbmRfcmVkaXJlY3RgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gc2VlIHRoZSBlbnRpcmUgZnVuY3Rpb24gZGVmaW5pdGlvbiB0byBncmFzcCB0aGUgaW50cmljYWNpZXMgb2YgaXRzIG9wZXJhdGlvbi4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZnVsbCBwaWN0dXJlIOKAkyB0aGUgcGFyYW1ldGVycyBpdCB0YWtlcywgdGhlIGxvZ2ljIGl0IGltcGxlbWVudHMsIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgbWFuaXB1bGF0ZXMsIGFuZCBpdHMgc2lkZSBlZmZlY3RzLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBiZSBjcnVjaWFsIGZvciBhbnkgZnVydGhlciBhbmFseXNpcyBvciBkZWJ1Z2dpbmcuIFNlZWluZyB0aGUgd2hvbGUgZnVuY3Rpb24gZ2l2ZXMgbWUgdGhlIGNoYW5jZSB0byBsb29rIGZvciBpbmVmZmljaWVuY2llcyBhbmQgcG9zc2libGUgZWRnZS1jYXNlcy4gU28sIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvcm91dGUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODcwOlx0ICogYW5kIFwmIzM0O2ZyYWcuIG5lZWRcJiMzNDsgKGJyZWFrcyBQTVRVIGRpc2NvdmVyeSkgaW4gaWNtcC5jLlxuIDg3MTpcdCAqL1xuIDg3MjpcdFxuIDg3MzpcdHZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIDg3NDpcdHtcbiA4NzU6XHRcdHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0YWJsZShza2IpO1xuIDg3NjpcdFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2O1xuIDg3NzpcdFx0c3RydWN0IGluZXRfcGVlciAqcGVlcjtcbiA4Nzg6XHRcdHN0cnVjdCBuZXQgKm5ldDtcbiA4Nzk6XHRcdGludCBsb2dfbWFydGlhbnM7XG4gODgwOlx0XHRpbnQgdmlmO1xuIDg4MTpcdFxuIDg4MjpcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDg4MzpcdFx0aW5fZGV2ID0gX19pbl9kZXZfZ2V0X3JjdShydC1cdTAwM2Vkc3QuZGV2KTtcbiA4ODQ6XHRcdGlmICghaW5fZGV2IHx8ICFJTl9ERVZfVFhfUkVESVJFQ1RTKGluX2RldikpIHtcbiA4ODU6XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gODg2Olx0XHRcdHJldHVybjtcbiA4ODc6XHRcdH1cbiA4ODg6XHRcdGxvZ19tYXJ0aWFucyA9IElOX0RFVl9MT0dfTUFSVElBTlMoaW5fZGV2KTtcbiA4ODk6XHRcdHZpZiA9IGwzbWRldl9tYXN0ZXJfaWZpbmRleF9yY3UocnQtXHUwMDNlZHN0LmRldik7XG4gODkwOlx0XG4gODkxOlx0XHRuZXQgPSBkZXZfbmV0KHJ0LVx1MDAzZWRzdC5kZXYpO1xuIDg5MjpcdFx0cGVlciA9IGluZXRfZ2V0cGVlcl92NChuZXQtXHUwMDNlaXB2NC5wZWVycywgaXBfaGRyKHNrYiktXHUwMDNlc2FkZHIsIHZpZik7XG4gODkzOlx0XHRpZiAoIXBlZXIpIHtcbiA4OTQ6XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gODk1Olx0XHRcdHJldHVybjtcbiA4OTY6XHRcdH1cbiA4OTc6XHRcbiA4OTg6XHRcdC8qIE5vIHJlZGlyZWN0ZWQgcGFja2V0cyBkdXJpbmcgaXBfcnRfcmVkaXJlY3Rfc2lsZW5jZTtcbiA4OTk6XHRcdCAqIHJlc2V0IHRoZSBhbGdvcml0aG0uXG4gOTAwOlx0XHQgKi9cbiA5MDE6XHRcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHBlZXItXHUwMDNlcmF0ZV9sYXN0ICYjNDM7IGlwX3J0X3JlZGlyZWN0X3NpbGVuY2UpKSB7XG4gOTAyOlx0XHRcdHBlZXItXHUwMDNlcmF0ZV90b2tlbnMgPSAwO1xuIDkwMzpcdFx0XHRwZWVyLVx1MDAzZW5fcmVkaXJlY3RzID0gMDtcbiA5MDQ6XHRcdH1cbiA5MDU6XHRcbiA5MDY6XHRcdC8qIFRvbyBtYW55IGlnbm9yZWQgcmVkaXJlY3RzOyBkbyBub3Qgc2VuZCBhbnl0aGluZ1xuIDkwNzpcdFx0ICogc2V0IGRzdC5yYXRlX2xhc3QgdG8gdGhlIGxhc3Qgc2VlbiByZWRpcmVjdGVkIHBhY2tldC5cbiA5MDg6XHRcdCAqL1xuIDkwOTpcdFx0aWYgKHBlZXItXHUwMDNlbl9yZWRpcmVjdHMgXHUwMDNlPSBpcF9ydF9yZWRpcmVjdF9udW1iZXIpIHtcbiA5MTA6XHRcdFx0cGVlci1cdTAwM2VyYXRlX2xhc3QgPSBqaWZmaWVzO1xuIDkxMTpcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4gOTEyOlx0XHR9XG4gOTEzOlx0XG4gOTE0Olx0XHQvKiBDaGVjayBmb3IgbG9hZCBsaW1pdDsgc2V0IHJhdGVfbGFzdCB0byB0aGUgbGF0ZXN0IHNlbnRcbiA5MTU6XHRcdCAqIHJlZGlyZWN0LlxuIDkxNjpcdFx0ICovXG4gOTE3Olx0XHRpZiAocGVlci1cdTAwM2VuX3JlZGlyZWN0cyA9PSAwIHx8XG4gOTE4Olx0XHQgICAgdGltZV9hZnRlcihqaWZmaWVzLFxuIDkxOTpcdFx0XHQgICAgICAgKHBlZXItXHUwMDNlcmF0ZV9sYXN0ICYjNDM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUyMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIFJvdXRpbmcgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcmVtb3ZpbmcgYSBjYWxsIHRvIGBpY21wX3NlbmRgIHdpdGhpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhbiBpbnRlcmVzdGluZyBjaGFuZ2UgYmVjYXVzZSBpdCYjMzk7cyBkaXJlY3RseSBhZmZlY3RpbmcgSVB2NCByb3V0aW5nIGFuZCwgbW9yZSBzcGVjaWZpY2FsbHksIGhvdyB3ZSBoYW5kbGUgSUNNUCByZWRpcmVjdCBtZXNzYWdlcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IHRoaXMgYGlwX3J0X3NlbmRfcmVkaXJlY3RgIGZ1bmN0aW9uIGl0c2VsZiBqdXN0IGJlY2FtZSBhIGhpZ2hlciBwcmlvcml0eSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBjaGFuZ2Ugc3VnZ2VzdHMgdGhlcmUmIzM5O3MgYSBwb3RlbnRpYWwgZm9yIHN1YnRsZSByb3V0aW5nIGJlaGF2aW9yIGFsdGVyYXRpb25zLCB3aGljaCBhbHdheXMgcGlxdWVzIG15IGludGVyZXN0LgoKTGV0IG1lIHRoaW5rIGFib3V0IHJlbGV2YW50IGtlcm5lbCBjb25maWdzLiBHaXZlbiBpdCYjMzk7cyBzdGFuZGFyZCBJUHY0IHJvdXRpbmcsIEkgZG9uJiMzOTt0IHRoaW5rIGBJUF9ST1VURV9DTEFTU0lEYCBvciBgSVBfTVVMVElQTEVfVEFCTEVTYCBhcmUgZGlyZWN0bHkgcmVsZXZhbnQgaGVyZSwganVzdCBwbGFpbiBvbGQgYElORVRgIHNob3VsZCBzdWZmaWNlLgoKTm93LCBJIHJlYWxseSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBjYWxsIGNoYWluLiBMZXQgbWUgY2hlY2sgdGhlIGNhbGxlcnMgb2YgYGlwX3J0X3NlbmRfcmVkaXJlY3RgLiBJIHdhbnQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIHdpdGhpbiB0aGUgYnJvYWRlciBuZXR3b3JraW5nIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9mb3J3YXJkLmM9ODM9aW50IGlwX2ZvcndhcmQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9pcF9mb3J3YXJkLmMtMTU2LVx0ICAgICFza2Jfc2VjX3BhdGgoc2tiKSlcbm5ldC9pcHY0L2lwX2ZvcndhcmQuYzoxNTc6XHRcdGlwX3J0X3NlbmRfcmVkaXJlY3Qoc2tiKTtcbm5ldC9pcHY0L2lwX2ZvcndhcmQuYy0xNTgtXG4tLVxubmV0L2lwdjQvcm91dGUuYz04NDY9c3RhdGljIHZvaWQgaXB2NF9uZWdhdGl2ZV9hZHZpY2Uoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3JvdXRlLmMtODcyLVxubmV0L2lwdjQvcm91dGUuYzo4NzM6dm9pZCBpcF9ydF9zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvaXB2NC9yb3V0ZS5jLTg3NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA3NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqRGl2aW5nIGludG8gdGhlIElQIFJlZGlyZWN0IEZ1bmN0aW9uYWxpdHkqKgoKUmlnaHQsIHNvIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgaXBfZm9yd2FyZGAuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydGluZyBwb2ludDsgaXQgbWVhbnMgdGhlIHJlZGlyZWN0IGZ1bmN0aW9uYWxpdHkgaXMgZGVmaW5pdGVseSAqbGl2ZSogYW5kLCBhdCBsZWFzdCBpbiBzb21lIGNpcmN1bXN0YW5jZXMsIHdvcmtpbmcgYXMgaW50ZW5kZWQgd2l0aGluIHRoZSBuZXR3b3JrIGZvcndhcmRpbmcgcGF0aC4gR29vZCwgZ29vZC4KCk5vdywgbXkgZm9jdXMgbmFycm93cyB0byBgaXBfcnRfc2VuZF9yZWRpcmVjdGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCB0cmlnZ2VyIGFuZCBhbnkgY29uZmlndXJhdGlvbiBrbm9icyBhc3NvY2lhdGVkIHdpdGggaXQuIFNwZWNpZmljYWxseSwgaXMgdGhpcyBmdW5jdGlvbmFsaXR5IGRlcGVuZGVudCBzb2xlbHkgb24gYElQX1JPVVRFUmAgb3IgYElQX0ZPUldBUkRgLCBvciBhcmUgdGhlcmUgbW9yZSBncmFudWxhciBzZXR0aW5ncyBpbiBwbGF5PyBJIGhhdmUgdG8gZGVsdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3Mg4oCTIHRoZSBzdGFuZGFyZCBvbmVzLCBtYXliZSBzb21lIG9ic2N1cmUgb25lcyDigJMgdG8gYmUgc3VyZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaWYgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBmbGFnIHJlbGF0ZWQgdG8gZm9yd2FyZGluZyAqd2l0aCogcmVkaXJlY3RzIGVuYWJsZWQuIEkmIzM5O2xsIGNoZWNrIGFsbCB0aGUgbGlrZWx5IHN1c3BlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9mb3J3YXJkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTE1PWNvbmZpZyBJUF9BRFZBTkNFRF9ST1VURVJcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMxLVxubmV0L2lwdjQvS2NvbmZpZzozMjpcdCAgZWNobyBcJiMzNDsxXCYjMzQ7IFx1MDAzZSAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfZm9yd2FyZFxubmV0L2lwdjQvS2NvbmZpZy0zMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmV0d29yayBSb3V0aW5nIENvbmZpZ3VyYXRpb24gQ2hlY2sqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBJUCBmb3J3YXJkaW5nIGhlcmUuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyB0aGF0IHRoZSBzeXN0ZW0mIzM5O3MgbGlrZWx5IHVzaW5nIGBzeXNjdGxgIHRvIGVuYWJsZSB0aGlzIOKAkyBub3QgYSBkZWRpY2F0ZWQgY29uZmlnIGZpbGUgaW4gdGhlIHRyYWRpdGlvbmFsIHNlbnNlLiBUaGF0JiMzOTtzIGEga2V5IGRpc3RpbmN0aW9uIGFuZCBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIHdoZW4gdHJvdWJsZXNob290aW5nLgoKVGhlIGNvcmUgb2YgdGhpcyBjb25maWd1cmF0aW9uLCBsb2dpY2FsbHksIHdvdWxkIGJlIHVuZGVyIHRoZSBgSU5FVGAgbmFtZXNwYWNlLiBHb3R0YSByZW1lbWJlciB0aGUgZnVuZGFtZW50YWxzLiBOb3csIGJlZm9yZSBJIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgbWFpbiByb3V0aW5nIHRhYmxlcywgYSBxdWljayBjaGVjayBuZWVkcyB0byBiZSBkb25lLiBJIG5lZWQgdG8gY29uZmlybSBpZiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgaXMgZXZlbiBleHBvcnRlZCwgYXMgdGhhdCBjYW4gZ2l2ZSBhbiBpbmRpY2F0aW9uIG9mIHJvdXRpbmcgY29uZmlndXJhdGlvbiBjb21wbGV4aXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmlwX3J0X3NlbmRfcmVkaXJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzIxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqQW5hbHl6aW5nIHRoZSBSb3V0ZSBEZWNsYXJhdGlvbioqCgpIbW0sIGludGVyZXN0aW5nLiBTbywgdGhpcyBkYXRhIHN0cnVjdHVyZSwgd2hhdGV2ZXIgJiMzNDtpdCYjMzQ7IHJlZmVycyB0bywgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0JiMzOTtzIGV4cGxpY2l0bHkgbWFya2VkIGZvciBleHRlcm5hbCB1c2Ug4oCTIGl0JiMzOTtzIG5vdCBleHBvcnRlZCBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UuIEJ1dCwgYW5kIHRoaXMgaXMga2V5LCBpdCYjMzk7cyBhbHNvIG5vdCBhICpzdGF0aWMqIGRlY2xhcmF0aW9uIGNvbmZpbmVkIHRvIGEgc2luZ2xlIHRyYW5zbGF0aW9uIHVuaXQuIFRoYXQgc3VnZ2VzdHMgaXQgaGFzIHNvbWUgYnJvYWRlciBzY29wZSB0aGFuIGp1c3QgYSBsb2NhbCBmdW5jdGlvbiBvciBmaWxlLiBUaGUgY2x1ZSBsaWVzIGluIHdoZXJlIGl0JiMzOTtzICpkZWNsYXJlZDoqIGBpbmNsdWRlL25ldC9yb3V0ZS5oYC4gVGhhdCYjMzk7cyBhIGhlYWRlciBmaWxlLiBUaGUgaW1wbGljYXRpb24gaXMsIGl0IGlzIGF2YWlsYWJsZSBmb3IgdXNlIHdpdGhpbiB0aGUgJiMzOTtuZXQmIzM5OyBtb2R1bGUsIGJlY2F1c2UgaXQgaXMgaW5jbHVkZWQgYXMgYSBoZWFkZXIsIGJ1dCBub3QgcGFydCBvZiB0aGUgcHVibGljIEFQSSBwZXIgc2UuIFRoaXMgbWlnaHQgbWVhbiBpdCYjMzk7cyBhbiBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSB1c2VkIHRocm91Z2hvdXQgdGhlIG5ldHdvcmsgY29kZSwgYnV0IG5vdCBpbnRlbmRlZCBmb3IgZGlyZWN0LCBnZW5lcmFsIGNvbnN1bXB0aW9uIGJ5IGV4dGVybmFsIHByb2dyYW1zIG9yIG1vZHVsZXMuIEl0IGhpbnRzIGF0IGEgY2FyZWZ1bGx5IGNvbnNpZGVyZWQgZGVzaWduIGRlY2lzaW9uLCBsaWtlbHkgdG8gbWFpbnRhaW4gZW5jYXBzdWxhdGlvbiBhbmQgcG90ZW50aWFsbHkgY29udHJvbCBhY2Nlc3MgdG8gaW50ZXJuYWwgcm91dGluZyBpbmZvcm1hdGlvbi4gVGhpcyByZXF1aXJlcyBmdXJ0aGVyIGV4YW1pbmF0aW9uIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDAyOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwX3J0X3NlbmRfcmVkaXJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvcm91dGUuaD0yNTA9dm9pZCBpcHY0X3NrX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzayk7XG5pbmNsdWRlL25ldC9yb3V0ZS5oOjI1MTp2b2lkIGlwX3J0X3NlbmRfcmVkaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL25ldC9yb3V0ZS5oLTI1Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA4OAoJCQkJCQkJb3V0cHV0OiAxMDAKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElQdjQgUmVkaXJlY3QgSGFuZGxpbmcgUGF0Y2gqKgoKT2theSwgc28gYGlwX3J0X3NlbmRfcmVkaXJlY3RgIHNlZW1zIGxpa2UgdGhlIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBoZXJlLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgaWYgdGhpcyBwYXRjaCBpbnRlcmFjdHMgd2l0aCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgSU5FVGAgaXMgdGhlIGJhc2VsaW5lLCBubyBzdXJwcmlzZXMgdGhlcmUuIExldCBtZSBjaGVjayBmb3IgYElQX01VTFRJQ0FTVGAgb3IgYElQX0FEVkFOQ0VEX1JPVVRFUmAuLi4gbm9wZSwgbmVpdGhlciBhcmUgcmVsZXZhbnQuCgpOb3csIHRoZSBwYXRjaC4uLiBpdCBsb29rcyBsaWtlIGl0IGFkZHJlc3NlcyBhIGJ1ZyB3aGVyZSBgaWNtcF9zZW5kYCB3YXMgYmVpbmcgY2FsbGVkIHdpdGggYSBOVUxMIGBwZWVyYC4gSSByZW1lbWJlciB0aGF0IGtpbmQgb2YgdGhpbmcgaGFwcGVuaW5nIGlmIGBpbmV0X2dldHBlZXJfdjRgIGZhaWxlZCwgbWF5YmUgZHVlIHRvIGFuIG91dC1vZi1tZW1vcnkgY29uZGl0aW9uIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBXYWl0LCBoYW5nIG9uLi4uIHRoZSBwYXRjaCAqcmVtb3ZlcyogdGhlIGBpY21wX3NlbmRgIGNhbGwgZW50aXJlbHk/CgpBaGEhIFByZXZpb3VzbHksIGlmIGBpbmV0X2dldHBlZXJfdjRgIHJldHVybmVkIE5VTEwsIHRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIGNhbGwgYGljbXBfc2VuZGAgYW5kIHRoZW4gcmV0dXJuLiBUaGlzIHBhdGNoIGNoYW5nZXMgdGhhdDogaWYgYGluZXRfZ2V0cGVlcl92NGAgcmV0dXJucyBOVUxMLCB0aGUgYGljbXBfc2VuZGAgY2FsbCBpcyBzaW1wbHkgc2tpcHBlZCwgYW5kIHRoZSBjb2RlIHJldHVybnMgaW1tZWRpYXRlbHkuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIElQdjQgcGFja2V0IGZvcndhcmRpbmcgYW5kIElDTVAgcmVkaXJlY3QgZ2VuZXJhdGlvbi4KClRoaXMgaXMgd29ydGggZnV6emluZywgcGFydGljdWxhcmx5IGFyb3VuZCBlcnJvciBjb25kaXRpb25zIGZyb20gYGluZXRfZ2V0cGVlcl92NGAuIFRoZSBmb2N1cyByZW1haW5zIG9uIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCwgYW5kIHN0YW5kYXJkIElQdjQgcm91dGluZyBjb25maWd1cmF0aW9uIGlzIHN1ZmZpY2llbnQgZm9yIHRlc3RpbmcuIE5vIG5lZWQgdG8gd29ycnkgYWJvdXQgZW5hYmxpbmcgYW55IHNwZWNpYWwgb3B0aW9ucyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfcnRfc2VuZF9yZWRpcmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgSVB2NCBwYWNrZXQgZm9yd2FyZGluZyBieSByZW1vdmluZyBhbiBgaWNtcF9zZW5kYCBjYWxsIGluIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCB3aGVuIGBpbmV0X2dldHBlZXJfdjRgIGZhaWxzIHRvIGFsbG9jYXRlIG9yIGZpbmQgYSBwZWVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCByb3V0aW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3J0X3NlbmRfcmVkaXJlY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIElQdjQgcGFja2V0IGZvcndhcmRpbmcgYnkgcmVtb3ZpbmcgYW4gYGljbXBfc2VuZGAgY2FsbCBpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgd2hlbiBgaW5ldF9nZXRwZWVyX3Y0YCBmYWlscyB0byBhbGxvY2F0ZSBvciBmaW5kIGEgcGVlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgcm91dGluZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAyOjUzOjA5Ljk3ODQ0OTYyOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjEwOTM1OTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgSVB2NCBwYWNrZXQgZm9yd2FyZGluZyBieSByZW1vdmluZyBhbiBgaWNtcF9zZW5kYCBjYWxsIGluIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCB3aGVuIGBpbmV0X2dldHBlZXJfdjRgIGZhaWxzIHRvIGFsbG9jYXRlIG9yIGZpbmQgYSBwZWVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVB2NCByb3V0aW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMjo1MzowOS45Nzg0NTQ3MjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTYyNzUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkyMjU4ODc2MTg3NGJjMTliMmJmMjc2MDUwNmFhMWVkZWIyMTk2MWZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMjYgMDI6NTM6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcm91dGUuYyBiL25ldC9pcHY0L3JvdXRlLmNcXG5pbmRleCAzZjNkZTUxNjRkNmU1OC4uMTUyZDhjYjI4ZjY1YWEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvcm91dGUuY1xcbisrKyBiL25ldC9pcHY0L3JvdXRlLmNcXG5AQCAtODkyLDggKzg5Miw2IEBAIHZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRwZWVyID0gaW5ldF9nZXRwZWVyX3Y0KG5ldC1cXHUwMDNlaXB2NC5wZWVycywgaXBfaGRyKHNrYiktXFx1MDAzZXNhZGRyLCB2aWYpO1xcbiBcXHRpZiAoIXBlZXIpIHtcXG4gXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLVxcdFxcdGljbXBfc2VuZChza2IsIElDTVBfUkVESVJFQ1QsIElDTVBfUkVESVJfSE9TVCxcXG4tXFx0XFx0XFx0ICBydF9uZXh0aG9wKHJ0LCBpcF9oZHIoc2tiKS1cXHUwMDNlZGFkZHIpKTtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMjo1MzoxMC40NDA2NzIxOTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNDc0ODcwNjUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9ydF9zZW5kX3JlZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIElQdjQgcGFja2V0IGZvcndhcmRpbmcgYnkgcmVtb3ZpbmcgYW4gYGljbXBfc2VuZGAgY2FsbCBpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgd2hlbiBgaW5ldF9nZXRwZWVyX3Y0YCBmYWlscyB0byBhbGxvY2F0ZSBvciBmaW5kIGEgcGVlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgcm91dGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTIyNTg4NzYxODc0YmMxOWIyYmYyNzYwNTA2YWExZWRlYjIxOTYxZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDAyOjUzOjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcm91dGUuYyBiL25ldC9pcHY0L3JvdXRlLmNcbmluZGV4IDNmM2RlNTE2NGQ2ZTU4Li4xNTJkOGNiMjhmNjVhYSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3JvdXRlLmNcbisrKyBiL25ldC9pcHY0L3JvdXRlLmNcbkBAIC04OTIsOCArODkyLDYgQEAgdm9pZCBpcF9ydF9zZW5kX3JlZGlyZWN0KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRwZWVyID0gaW5ldF9nZXRwZWVyX3Y0KG5ldC1cdTAwM2VpcHY0LnBlZXJzLCBpcF9oZHIoc2tiKS1cdTAwM2VzYWRkciwgdmlmKTtcbiBcdGlmICghcGVlcikge1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbi1cdFx0aWNtcF9zZW5kKHNrYiwgSUNNUF9SRURJUkVDVCwgSUNNUF9SRURJUl9IT1NULFxuLVx0XHRcdCAgcnRfbmV4dGhvcChydCwgaXBfaGRyKHNrYiktXHUwMDNlZGFkZHIpKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDI6NTM6MTAuNDQwNjc0MDczWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyMzM4MTQ4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSb3V0aW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9pcHY0L3JvdXRlLmNgLiBJdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBjcnVjaWFsIGZvciByb3V0aW5nIHN0YWJpbGl0eS4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSB0YXJnZXRzIHRoZSBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlLCBzbyBJIGRpZyBpbnRvIHRoZSBsb2dpYy4gSXQgc2VlbXMgdGhhdCB0aGUgcGF0Y2ggaXMgcmVtb3ZpbmcgYW4gYGljbXBfc2VuZGAgY2FsbCDigJMgdGhlIG9uZSB0aGF0IGdlbmVyYXRlcyBhbiBJQ01QIHJlZGlyZWN0IG1lc3NhZ2Ug4oCTIHNwZWNpZmljYWxseSB3aGVuIHRoZSBgcGVlcmAgcGFyYW1ldGVyIHdpdGhpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgaXMgTlVMTC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzaXR1YXRpb25zIHRyaWdnZXIgdGhpcyBgcGVlcmAgdG8gYmUgTlVMTCBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIG9mICpub3QqIHNlbmRpbmcgdGhpcyByZWRpcmVjdCBhcmUuIEl0IG1ha2VzIHNlbnNlIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgZnVuY3Rpb24gaXRzZWxmIHRvIGZ1bGx5IGdyYXNwIGl0cyBiZWhhdmlvci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlYXNvbiBiZWhpbmQgdGhlIGNvbmRpdGlvbmFsIHJlbW92YWwgb2YgdGhlIHJlZGlyZWN0LiBJcyB0aGlzIGEgYnVnIGZpeCwgYW4gb3B0aW1pemF0aW9uLCBvciBzb21ldGhpbmcgbW9yZSBudWFuY2VkPyBXaGF0IHNjZW5hcmlvcyBhcmUgYmVpbmcgY29uc2lkZXJlZCB3aGVuIHRoZSByZWRpcmVjdCBpcyBub3Qgc2VudD8gVGhpcyBhbGwgZGVwZW5kcyBvbiB0aGUgY2lyY3Vtc3RhbmNlcyB3aGVyZSBhIE5VTEwgcGVlciBleGlzdHMgYW5kIHdoYXQgdGhhdCBpbmRpY2F0ZXMgYWJvdXQgdGhlIHBhY2tldCdzIGludGVuZGVkIHBhdGguIEkgd2lsbCBuZWVkIHRvIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBjb2RlIHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiByZW1vdmluZyB0aGlzIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAyOjUzOjEzLjg2NDA1ODI0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDA5MTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvcm91dGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9yb3V0ZS5jPTg0Nj1zdGF0aWMgdm9pZCBpcHY0X25lZ2F0aXZlX2FkdmljZShzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC9yb3V0ZS5jLTg3Mi1cXG5uZXQvaXB2NC9yb3V0ZS5jOjg3Mzp2b2lkIGlwX3J0X3NlbmRfcmVkaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2NC9yb3V0ZS5jLTg3NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAyOjUzOjEzLjkyNTA3Mzg2NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0NzA4NjU2ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB1bmRlcnN0YW5kaW5nIHRoZSBmbG93IG9mIHRob3VnaHQ6XG5cbioqRGlzc2VjdGluZyB0aGUgYGlwX3J0X3NlbmRfcmVkaXJlY3RgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgdGhlIGltbWVkaWF0ZSBuZWVkIGlzIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgYGlwX3J0X3NlbmRfcmVkaXJlY3RgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gc2VlIHRoZSBlbnRpcmUgZnVuY3Rpb24gZGVmaW5pdGlvbiB0byBncmFzcCB0aGUgaW50cmljYWNpZXMgb2YgaXRzIG9wZXJhdGlvbi4gSSdtIGxvb2tpbmcgZm9yIHRoZSBmdWxsIHBpY3R1cmUg4oCTIHRoZSBwYXJhbWV0ZXJzIGl0IHRha2VzLCB0aGUgbG9naWMgaXQgaW1wbGVtZW50cywgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCBtYW5pcHVsYXRlcywgYW5kIGl0cyBzaWRlIGVmZmVjdHMuIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNydWNpYWwgZm9yIGFueSBmdXJ0aGVyIGFuYWx5c2lzIG9yIGRlYnVnZ2luZy4gU2VlaW5nIHRoZSB3aG9sZSBmdW5jdGlvbiBnaXZlcyBtZSB0aGUgY2hhbmNlIHRvIGxvb2sgZm9yIGluZWZmaWNpZW5jaWVzIGFuZCBwb3NzaWJsZSBlZGdlLWNhc2VzLiBTbywgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAyOjUzOjE2LjM5NTk1OTE4NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MDY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9yb3V0ZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDg3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDg3MDpcXHQgKiBhbmQgXFxcImZyYWcuIG5lZWRcXFwiIChicmVha3MgUE1UVSBkaXNjb3ZlcnkpIGluIGljbXAuYy5cXG4gODcxOlxcdCAqL1xcbiA4NzI6XFx0XFxuIDg3MzpcXHR2b2lkIGlwX3J0X3NlbmRfcmVkaXJlY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gODc0OlxcdHtcXG4gODc1OlxcdFxcdHN0cnVjdCBydGFibGUgKnJ0ID0gc2tiX3J0YWJsZShza2IpO1xcbiA4NzY6XFx0XFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2O1xcbiA4Nzc6XFx0XFx0c3RydWN0IGluZXRfcGVlciAqcGVlcjtcXG4gODc4OlxcdFxcdHN0cnVjdCBuZXQgKm5ldDtcXG4gODc5OlxcdFxcdGludCBsb2dfbWFydGlhbnM7XFxuIDg4MDpcXHRcXHRpbnQgdmlmO1xcbiA4ODE6XFx0XFxuIDg4MjpcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIDg4MzpcXHRcXHRpbl9kZXYgPSBfX2luX2Rldl9nZXRfcmN1KHJ0LVxcdTAwM2Vkc3QuZGV2KTtcXG4gODg0OlxcdFxcdGlmICghaW5fZGV2IHx8ICFJTl9ERVZfVFhfUkVESVJFQ1RTKGluX2RldikpIHtcXG4gODg1OlxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiA4ODY6XFx0XFx0XFx0cmV0dXJuO1xcbiA4ODc6XFx0XFx0fVxcbiA4ODg6XFx0XFx0bG9nX21hcnRpYW5zID0gSU5fREVWX0xPR19NQVJUSUFOUyhpbl9kZXYpO1xcbiA4ODk6XFx0XFx0dmlmID0gbDNtZGV2X21hc3Rlcl9pZmluZGV4X3JjdShydC1cXHUwMDNlZHN0LmRldik7XFxuIDg5MDpcXHRcXG4gODkxOlxcdFxcdG5ldCA9IGRldl9uZXQocnQtXFx1MDAzZWRzdC5kZXYpO1xcbiA4OTI6XFx0XFx0cGVlciA9IGluZXRfZ2V0cGVlcl92NChuZXQtXFx1MDAzZWlwdjQucGVlcnMsIGlwX2hkcihza2IpLVxcdTAwM2VzYWRkciwgdmlmKTtcXG4gODkzOlxcdFxcdGlmICghcGVlcikge1xcbiA4OTQ6XFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIDg5NTpcXHRcXHRcXHRyZXR1cm47XFxuIDg5NjpcXHRcXHR9XFxuIDg5NzpcXHRcXG4gODk4OlxcdFxcdC8qIE5vIHJlZGlyZWN0ZWQgcGFja2V0cyBkdXJpbmcgaXBfcnRfcmVkaXJlY3Rfc2lsZW5jZTtcXG4gODk5OlxcdFxcdCAqIHJlc2V0IHRoZSBhbGdvcml0aG0uXFxuIDkwMDpcXHRcXHQgKi9cXG4gOTAxOlxcdFxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHBlZXItXFx1MDAzZXJhdGVfbGFzdCArIGlwX3J0X3JlZGlyZWN0X3NpbGVuY2UpKSB7XFxuIDkwMjpcXHRcXHRcXHRwZWVyLVxcdTAwM2VyYXRlX3Rva2VucyA9IDA7XFxuIDkwMzpcXHRcXHRcXHRwZWVyLVxcdTAwM2VuX3JlZGlyZWN0cyA9IDA7XFxuIDkwNDpcXHRcXHR9XFxuIDkwNTpcXHRcXG4gOTA2OlxcdFxcdC8qIFRvbyBtYW55IGlnbm9yZWQgcmVkaXJlY3RzOyBkbyBub3Qgc2VuZCBhbnl0aGluZ1xcbiA5MDc6XFx0XFx0ICogc2V0IGRzdC5yYXRlX2xhc3QgdG8gdGhlIGxhc3Qgc2VlbiByZWRpcmVjdGVkIHBhY2tldC5cXG4gOTA4OlxcdFxcdCAqL1xcbiA5MDk6XFx0XFx0aWYgKHBlZXItXFx1MDAzZW5fcmVkaXJlY3RzIFxcdTAwM2U9IGlwX3J0X3JlZGlyZWN0X251bWJlcikge1xcbiA5MTA6XFx0XFx0XFx0cGVlci1cXHUwMDNlcmF0ZV9sYXN0ID0gamlmZmllcztcXG4gOTExOlxcdFxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4gOTEyOlxcdFxcdH1cXG4gOTEzOlxcdFxcbiA5MTQ6XFx0XFx0LyogQ2hlY2sgZm9yIGxvYWQgbGltaXQ7IHNldCByYXRlX2xhc3QgdG8gdGhlIGxhdGVzdCBzZW50XFxuIDkxNTpcXHRcXHQgKiByZWRpcmVjdC5cXG4gOTE2OlxcdFxcdCAqL1xcbiA5MTc6XFx0XFx0aWYgKHBlZXItXFx1MDAzZW5fcmVkaXJlY3RzID09IDAgfHxcXG4gOTE4OlxcdFxcdCAgICB0aW1lX2FmdGVyKGppZmZpZXMsXFxuIDkxOTpcXHRcXHRcXHQgICAgICAgKHBlZXItXFx1MDAzZXJhdGVfbGFzdCArXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAyOjUzOjE2LjM5NjEyMTYwNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NzExMTIwNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBSb3V0aW5nIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcmVtb3ZpbmcgYSBjYWxsIHRvIGBpY21wX3NlbmRgIHdpdGhpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhbiBpbnRlcmVzdGluZyBjaGFuZ2UgYmVjYXVzZSBpdCdzIGRpcmVjdGx5IGFmZmVjdGluZyBJUHY0IHJvdXRpbmcgYW5kLCBtb3JlIHNwZWNpZmljYWxseSwgaG93IHdlIGhhbmRsZSBJQ01QIHJlZGlyZWN0IG1lc3NhZ2VzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhpcyBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgZnVuY3Rpb24gaXRzZWxmIGp1c3QgYmVjYW1lIGEgaGlnaGVyIHByaW9yaXR5IHRhcmdldCBmb3IgZnV6emluZy4gVGhlIGNoYW5nZSBzdWdnZXN0cyB0aGVyZSdzIGEgcG90ZW50aWFsIGZvciBzdWJ0bGUgcm91dGluZyBiZWhhdmlvciBhbHRlcmF0aW9ucywgd2hpY2ggYWx3YXlzIHBpcXVlcyBteSBpbnRlcmVzdC5cblxuTGV0IG1lIHRoaW5rIGFib3V0IHJlbGV2YW50IGtlcm5lbCBjb25maWdzLiBHaXZlbiBpdCdzIHN0YW5kYXJkIElQdjQgcm91dGluZywgSSBkb24ndCB0aGluayBgSVBfUk9VVEVfQ0xBU1NJRGAgb3IgYElQX01VTFRJUExFX1RBQkxFU2AgYXJlIGRpcmVjdGx5IHJlbGV2YW50IGhlcmUsIGp1c3QgcGxhaW4gb2xkIGBJTkVUYCBzaG91bGQgc3VmZmljZS5cblxuTm93LCBJIHJlYWxseSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBjYWxsIGNoYWluLiBMZXQgbWUgY2hlY2sgdGhlIGNhbGxlcnMgb2YgYGlwX3J0X3NlbmRfcmVkaXJlY3RgLiBJIHdhbnQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIHdpdGhpbiB0aGUgYnJvYWRlciBuZXR3b3JraW5nIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMjo1MzoyMC4yNjcyMzYwMDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI1MTg5NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfcnRfc2VuZF9yZWRpcmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfZm9yd2FyZC5jPTgzPWludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9pcF9mb3J3YXJkLmMtMTU2LVxcdCAgICAhc2tiX3NlY19wYXRoKHNrYikpXFxubmV0L2lwdjQvaXBfZm9yd2FyZC5jOjE1NzpcXHRcXHRpcF9ydF9zZW5kX3JlZGlyZWN0KHNrYik7XFxubmV0L2lwdjQvaXBfZm9yd2FyZC5jLTE1OC1cXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmM9ODQ2PXN0YXRpYyB2b2lkIGlwdjRfbmVnYXRpdmVfYWR2aWNlKHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9pcHY0L3JvdXRlLmMtODcyLVxcbm5ldC9pcHY0L3JvdXRlLmM6ODczOnZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY0L3JvdXRlLmMtODc0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDI6NTM6MjAuMzI5NzYwNDI0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NjM2MzYyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipEaXZpbmcgaW50byB0aGUgSVAgUmVkaXJlY3QgRnVuY3Rpb25hbGl0eSoqXG5cblJpZ2h0LCBzbyBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgaXMgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGlwX2ZvcndhcmRgLiBUaGF0J3MgYSBzb2xpZCBzdGFydGluZyBwb2ludDsgaXQgbWVhbnMgdGhlIHJlZGlyZWN0IGZ1bmN0aW9uYWxpdHkgaXMgZGVmaW5pdGVseSAqbGl2ZSogYW5kLCBhdCBsZWFzdCBpbiBzb21lIGNpcmN1bXN0YW5jZXMsIHdvcmtpbmcgYXMgaW50ZW5kZWQgd2l0aGluIHRoZSBuZXR3b3JrIGZvcndhcmRpbmcgcGF0aC4gR29vZCwgZ29vZC5cblxuTm93LCBteSBmb2N1cyBuYXJyb3dzIHRvIGBpcF9ydF9zZW5kX3JlZGlyZWN0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IHRyaWdnZXIgYW5kIGFueSBjb25maWd1cmF0aW9uIGtub2JzIGFzc29jaWF0ZWQgd2l0aCBpdC4gU3BlY2lmaWNhbGx5LCBpcyB0aGlzIGZ1bmN0aW9uYWxpdHkgZGVwZW5kZW50IHNvbGVseSBvbiBgSVBfUk9VVEVSYCBvciBgSVBfRk9SV0FSRGAsIG9yIGFyZSB0aGVyZSBtb3JlIGdyYW51bGFyIHNldHRpbmdzIGluIHBsYXk/IEkgaGF2ZSB0byBkZWx2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlncyDigJMgdGhlIHN0YW5kYXJkIG9uZXMsIG1heWJlIHNvbWUgb2JzY3VyZSBvbmVzIOKAkyB0byBiZSBzdXJlLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGlmIHRoZXJlJ3MgYSBzcGVjaWZpYyBmbGFnIHJlbGF0ZWQgdG8gZm9yd2FyZGluZyAqd2l0aCogcmVkaXJlY3RzIGVuYWJsZWQuIEknbGwgY2hlY2sgYWxsIHRoZSBsaWtlbHkgc3VzcGVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNzcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMjo1MzoyMy41ODYxMjY0OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk4MDM5OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfZm9yd2FyZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MTU9Y29uZmlnIElQX0FEVkFOQ0VEX1JPVVRFUlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMS1cXG5uZXQvaXB2NC9LY29uZmlnOjMyOlxcdCAgZWNobyBcXFwiMVxcXCIgXFx1MDAzZSAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfZm9yd2FyZFxcbm5ldC9pcHY0L0tjb25maWctMzMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDAyOjUzOjIzLjY0NTkzNzQ2NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA1NzA4Mjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5ldHdvcmsgUm91dGluZyBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIElQIGZvcndhcmRpbmcgaGVyZS4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGF0IG1lIGlzIHRoYXQgdGhlIHN5c3RlbSdzIGxpa2VseSB1c2luZyBgc3lzY3RsYCB0byBlbmFibGUgdGhpcyDigJMgbm90IGEgZGVkaWNhdGVkIGNvbmZpZyBmaWxlIGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZS4gVGhhdCdzIGEga2V5IGRpc3RpbmN0aW9uIGFuZCBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIHdoZW4gdHJvdWJsZXNob290aW5nLlxuXG5UaGUgY29yZSBvZiB0aGlzIGNvbmZpZ3VyYXRpb24sIGxvZ2ljYWxseSwgd291bGQgYmUgdW5kZXIgdGhlIGBJTkVUYCBuYW1lc3BhY2UuIEdvdHRhIHJlbWVtYmVyIHRoZSBmdW5kYW1lbnRhbHMuIE5vdywgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBtYWluIHJvdXRpbmcgdGFibGVzLCBhIHF1aWNrIGNoZWNrIG5lZWRzIHRvIGJlIGRvbmUuIEkgbmVlZCB0byBjb25maXJtIGlmIGBpcF9ydF9zZW5kX3JlZGlyZWN0YCBpcyBldmVuIGV4cG9ydGVkLCBhcyB0aGF0IGNhbiBnaXZlIGFuIGluZGljYXRpb24gb2Ygcm91dGluZyBjb25maWd1cmF0aW9uIGNvbXBsZXhpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMjo1MzoyNi42NTE2NDg4NDVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMTk2NjI2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLippcF9ydF9zZW5kX3JlZGlyZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDI6NTM6MjYuNzE0ODUzOTIyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTYzNTU3NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LlxuXG4qKkFuYWx5emluZyB0aGUgUm91dGUgRGVjbGFyYXRpb24qKlxuXG5IbW0sIGludGVyZXN0aW5nLiBTbywgdGhpcyBkYXRhIHN0cnVjdHVyZSwgd2hhdGV2ZXIgXCJpdFwiIHJlZmVycyB0bywgaXNuJ3Qgc29tZXRoaW5nIHRoYXQncyBleHBsaWNpdGx5IG1hcmtlZCBmb3IgZXh0ZXJuYWwgdXNlIOKAkyBpdCdzIG5vdCBleHBvcnRlZCBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UuIEJ1dCwgYW5kIHRoaXMgaXMga2V5LCBpdCdzIGFsc28gbm90IGEgKnN0YXRpYyogZGVjbGFyYXRpb24gY29uZmluZWQgdG8gYSBzaW5nbGUgdHJhbnNsYXRpb24gdW5pdC4gVGhhdCBzdWdnZXN0cyBpdCBoYXMgc29tZSBicm9hZGVyIHNjb3BlIHRoYW4ganVzdCBhIGxvY2FsIGZ1bmN0aW9uIG9yIGZpbGUuIFRoZSBjbHVlIGxpZXMgaW4gd2hlcmUgaXQncyAqZGVjbGFyZWQ6KiBgaW5jbHVkZS9uZXQvcm91dGUuaGAuIFRoYXQncyBhIGhlYWRlciBmaWxlLiBUaGUgaW1wbGljYXRpb24gaXMsIGl0IGlzIGF2YWlsYWJsZSBmb3IgdXNlIHdpdGhpbiB0aGUgJ25ldCcgbW9kdWxlLCBiZWNhdXNlIGl0IGlzIGluY2x1ZGVkIGFzIGEgaGVhZGVyLCBidXQgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgcGVyIHNlLiBUaGlzIG1pZ2h0IG1lYW4gaXQncyBhbiBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSB1c2VkIHRocm91Z2hvdXQgdGhlIG5ldHdvcmsgY29kZSwgYnV0IG5vdCBpbnRlbmRlZCBmb3IgZGlyZWN0LCBnZW5lcmFsIGNvbnN1bXB0aW9uIGJ5IGV4dGVybmFsIHByb2dyYW1zIG9yIG1vZHVsZXMuIEl0IGhpbnRzIGF0IGEgY2FyZWZ1bGx5IGNvbnNpZGVyZWQgZGVzaWduIGRlY2lzaW9uLCBsaWtlbHkgdG8gbWFpbnRhaW4gZW5jYXBzdWxhdGlvbiBhbmQgcG90ZW50aWFsbHkgY29udHJvbCBhY2Nlc3MgdG8gaW50ZXJuYWwgcm91dGluZyBpbmZvcm1hdGlvbi4gVGhpcyByZXF1aXJlcyBmdXJ0aGVyIGV4YW1pbmF0aW9uIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MjEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwMjo1MzoyOS44MzEyMTIyMzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTk0ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3J0X3NlbmRfcmVkaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3JvdXRlLmg9MjUwPXZvaWQgaXB2NF9za19yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29jayAqc2spO1xcbmluY2x1ZGUvbmV0L3JvdXRlLmg6MjUxOnZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5pbmNsdWRlL25ldC9yb3V0ZS5oLTI1Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDI6NTM6MjkuODkxODExNjkyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyOTc1MzcwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQdjQgUmVkaXJlY3QgSGFuZGxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgc2VlbXMgbGlrZSB0aGUga2V5IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGhlcmUuIExldCdzIGRpZyBpbiBhbmQgc2VlIGlmIHRoaXMgcGF0Y2ggaW50ZXJhY3RzIHdpdGggYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gYElORVRgIGlzIHRoZSBiYXNlbGluZSwgbm8gc3VycHJpc2VzIHRoZXJlLiBMZXQgbWUgY2hlY2sgZm9yIGBJUF9NVUxUSUNBU1RgIG9yIGBJUF9BRFZBTkNFRF9ST1VURVJgLi4uIG5vcGUsIG5laXRoZXIgYXJlIHJlbGV2YW50LlxuXG5Ob3csIHRoZSBwYXRjaC4uLiBpdCBsb29rcyBsaWtlIGl0IGFkZHJlc3NlcyBhIGJ1ZyB3aGVyZSBgaWNtcF9zZW5kYCB3YXMgYmVpbmcgY2FsbGVkIHdpdGggYSBOVUxMIGBwZWVyYC4gSSByZW1lbWJlciB0aGF0IGtpbmQgb2YgdGhpbmcgaGFwcGVuaW5nIGlmIGBpbmV0X2dldHBlZXJfdjRgIGZhaWxlZCwgbWF5YmUgZHVlIHRvIGFuIG91dC1vZi1tZW1vcnkgY29uZGl0aW9uIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBXYWl0LCBoYW5nIG9uLi4uIHRoZSBwYXRjaCAqcmVtb3ZlcyogdGhlIGBpY21wX3NlbmRgIGNhbGwgZW50aXJlbHk/XG5cbkFoYSEgUHJldmlvdXNseSwgaWYgYGluZXRfZ2V0cGVlcl92NGAgcmV0dXJuZWQgTlVMTCwgdGhlIG9yaWdpbmFsIGNvZGUgd291bGQgY2FsbCBgaWNtcF9zZW5kYCBhbmQgdGhlbiByZXR1cm4uIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGF0OiBpZiBgaW5ldF9nZXRwZWVyX3Y0YCByZXR1cm5zIE5VTEwsIHRoZSBgaWNtcF9zZW5kYCBjYWxsIGlzIHNpbXBseSBza2lwcGVkLCBhbmQgdGhlIGNvZGUgcmV0dXJucyBpbW1lZGlhdGVseS4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHRlcmluZyB0aGUgYmVoYXZpb3Igb2YgSVB2NCBwYWNrZXQgZm9yd2FyZGluZyBhbmQgSUNNUCByZWRpcmVjdCBnZW5lcmF0aW9uLlxuXG5UaGlzIGlzIHdvcnRoIGZ1enppbmcsIHBhcnRpY3VsYXJseSBhcm91bmQgZXJyb3IgY29uZGl0aW9ucyBmcm9tIGBpbmV0X2dldHBlZXJfdjRgLiBUaGUgZm9jdXMgcmVtYWlucyBvbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAsIGFuZCBzdGFuZGFyZCBJUHY0IHJvdXRpbmcgY29uZmlndXJhdGlvbiBpcyBzdWZmaWNpZW50IGZvciB0ZXN0aW5nLiBObyBuZWVkIHRvIHdvcnJ5IGFib3V0IGVuYWJsaW5nIGFueSBzcGVjaWFsIG9wdGlvbnMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA4OCwiT3V0cHV0VG9rZW5zIjoxMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDI6NTM6MzUuMTg5MzUxNTQ5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9ydF9zZW5kX3JlZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIElQdjQgcGFja2V0IGZvcndhcmRpbmcgYnkgcmVtb3ZpbmcgYW4gYGljbXBfc2VuZGAgY2FsbCBpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgd2hlbiBgaW5ldF9nZXRwZWVyX3Y0YCBmYWlscyB0byBhbGxvY2F0ZSBvciBmaW5kIGEgcGVlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgcm91dGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF9ydF9zZW5kX3JlZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIElQdjQgcGFja2V0IGZvcndhcmRpbmcgYnkgcmVtb3ZpbmcgYW4gYGljbXBfc2VuZGAgY2FsbCBpbiBgaXBfcnRfc2VuZF9yZWRpcmVjdGAgd2hlbiBgaW5ldF9nZXRwZWVyX3Y0YCBmYWlscyB0byBhbGxvY2F0ZSBvciBmaW5kIGEgcGVlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQdjQgcm91dGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9rmk[1] Phase: Succeeded StartedAt: 2026-07-26 02:53:46 +0000 UTC FinishedAt: 2026-07-26 02:53:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 02:53:46 +0000 UTC FinishedAt: 2026-07-26 02:53:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2] Phase: Succeeded StartedAt: 2026-07-26 02:53:46 +0000 UTC FinishedAt: 2026-07-26 07:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 02:53:46 +0000 UTC FinishedAt: 2026-07-26 07:18:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 02:53:46 +0000 UTC FinishedAt: 2026-07-26 02:54:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 02:53:46 +0000 UTC FinishedAt: 2026-07-26 02:54:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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-workflowx9rmk/series-workflowx9rmk-convert-artifact-2166108209/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 02:54:08 +0000 UTC FinishedAt: 2026-07-26 03:32:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 02:54:08 +0000 UTC FinishedAt: 2026-07-26 03:32: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:*a7dc7db2-33e3-470a-8960-2ff27382725e,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-workflowx9rmk/series-workflowx9rmk-convert-artifact-2166108209/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": "c33cbad2-782a-4118-afd3-da586fdf7cd2", "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-workflowx9rmk/series-workflowx9rmk-build-action-2433797727/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 02:54:08 +0000 UTC FinishedAt: 2026-07-26 03:32:21 +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:*a7dc7db2-33e3-470a-8960-2ff27382725e,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-workflowx9rmk/series-workflowx9rmk-convert-artifact-2166108209/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": "c33cbad2-782a-4118-afd3-da586fdf7cd2", "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-workflowx9rmk/series-workflowx9rmk-build-action-2433797727/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 03:32:55 +0000 UTC FinishedAt: 2026-07-26 03:32:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 03:32:55 +0000 UTC FinishedAt: 2026-07-26 03:32:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 03:32:55 +0000 UTC FinishedAt: 2026-07-26 03:33:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 03:32:55 +0000 UTC FinishedAt: 2026-07-26 03:33:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-workflowx9rmk/series-workflowx9rmk-convert-artifact-1356692356/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 03:33:05 +0000 UTC FinishedAt: 2026-07-26 03:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 03:33:05 +0000 UTC FinishedAt: 2026-07-26 03:35:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c33cbad2-782a-4118-afd3-da586fdf7cd2,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-workflowx9rmk/series-workflowx9rmk-build-action-2433797727/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-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 03:35:12 +0000 UTC FinishedAt: 2026-07-26 03:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 03:35:12 +0000 UTC FinishedAt: 2026-07-26 03:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 03:35:12 +0000 UTC FinishedAt: 2026-07-26 04:13:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 03:35:12 +0000 UTC FinishedAt: 2026-07-26 04:13:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a7dc7db2-33e3-470a-8960-2ff27382725e,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-workflowx9rmk/series-workflowx9rmk-convert-artifact-1356692356/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": "888db3bd-427f-42a5-87e8-868f2be0b422", "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-workflowx9rmk/series-workflowx9rmk-build-action-842233232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 03:35:12 +0000 UTC FinishedAt: 2026-07-26 04:13:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a7dc7db2-33e3-470a-8960-2ff27382725e,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-workflowx9rmk/series-workflowx9rmk-convert-artifact-1356692356/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": "888db3bd-427f-42a5-87e8-868f2be0b422", "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-workflowx9rmk/series-workflowx9rmk-build-action-842233232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:13:31 +0000 UTC FinishedAt: 2026-07-26 04:13:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:13:31 +0000 UTC FinishedAt: 2026-07-26 04:13:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:13:31 +0000 UTC FinishedAt: 2026-07-26 04:15:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:13:32 +0000 UTC FinishedAt: 2026-07-26 04:15:26 +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:*888db3bd-427f-42a5-87e8-868f2be0b422,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-workflowx9rmk/series-workflowx9rmk-build-action-842233232/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-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:15:39 +0000 UTC FinishedAt: 2026-07-26 07:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:15:39 +0000 UTC FinishedAt: 2026-07-26 07:18:41 +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":["ip_rt_send_redirect"],"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:*c33cbad2-782a-4118-afd3-da586fdf7cd2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*888db3bd-427f-42a5-87e8-868f2be0b422,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-workflowx9rmk/series-workflowx9rmk-build-action-2433797727/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-workflowx9rmk/series-workflowx9rmk-build-action-842233232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:15:39 +0000 UTC FinishedAt: 2026-07-26 04:15:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:15:39 +0000 UTC FinishedAt: 2026-07-26 04:15:45 +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":["ip_rt_send_redirect"],"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-workflowx9rmk/series-workflowx9rmk-convert-artifact-1106648205/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:15:39 +0000 UTC FinishedAt: 2026-07-26 04:15:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:15:39 +0000 UTC FinishedAt: 2026-07-26 04:15:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:15:39 +0000 UTC FinishedAt: 2026-07-26 04:15:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:15:51 +0000 UTC FinishedAt: 2026-07-26 07:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9rmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","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":["ip_rt_send_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","series_id":"9b512916-943a-4248-a1ec-6b28e780e7c8","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-26 04:15:51 +0000 UTC FinishedAt: 2026-07-26 07:18:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c33cbad2-782a-4118-afd3-da586fdf7cd2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*888db3bd-427f-42a5-87e8-868f2be0b422,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-workflowx9rmk/series-workflowx9rmk-build-action-2433797727/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-workflowx9rmk/series-workflowx9rmk-build-action-842233232/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-workflowx9rmk/series-workflowx9rmk-convert-artifact-1106648205/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,}